{
  "marker_version": "v1",
  "marker_type": "chair_verbatim_7_decisions_accepted_pr149_x1_r7_pr151_readonly_hold_task2686_fallback",
  "recorded_at": "2026-05-26T12:43:00+09:00",
  "recorded_by": "ANU_chair_facing_session",
  "source_attribution": "RECEIVED_INBOUND_THIS_SESSION (★ chair verbatim 7 결정 ANU 피드백 반영 확정)",
  "chair_directive_origin": "회장 verbatim 2026-05-26 — 'ANU 피드백을 검토했고, 아래처럼 확정한다' (★ 7 결정 + 끝 sentinel)",

  "decision_1_pr151_readonly_hold_3_merge_gates": {
    "status": "ACCEPTED ✅",
    "pr151_state": "READ_ONLY_HOLD",
    "merge_qualification_3_gates_must_all_pass": [
      "task-2686 결과 반영 후 overlap/rebase 전략 확정",
      "PR #151 자체 Gemini unresolved 3건 해소",
      "gemini-review-gate / phase3-merge-gate PASS"
    ],
    "forbidden_until_3_gates": [
      "PR #151 merge",
      "PR #151 branch sync",
      "PR #151 code modification",
      "auto-merge",
      "task-2686 파일과 수동 혼합"
    ]
  },

  "decision_2_pr149_glob_semantic_4_anchor": {
    "status": "ACCEPTED ✅",
    "anchor_1": "`*` = same-directory-only",
    "anchor_2": "`**` = recursive",
    "anchor_3": "path separator 는 `*` 로 암묵 매칭하지 않는다",
    "anchor_4": "cross-platform separator 는 정규화하되 recursive 여부는 `**` 로만 표현",
    "mandatory_regression_4": [
      "`*` 가 path separator 를 넘지 않는 케이스",
      "`**` 가 recursive match 하는 케이스",
      "Windows / POSIX separator 정규화 케이스",
      "기존 PASS 경로 회귀 0"
    ]
  },

  "decision_3_pr149_x1_r7_executor_authorization": {
    "status": "ACCEPTED + DISPATCHED ✅",
    "executor": "dev2 오딘 (Odin)",
    "chair_authorization_id": "CHAIR-AUTH-PR149-X1-R7-THREAD-1-2-3-20260526-JJONGS-IMPLEMENT-001",
    "scope": "Thread 1+2+3 묶음 X1 R7만 · expected_files 내부 수정만 허용",
    "task_id": "task-2688",
    "dispatch_schedule_id": "02DEC36B",
    "dispatch_fire_kst": "2026-05-26 12:41:56",
    "model": "claude-sonnet-4-6",
    "bot": "bot-c",
    "spawn_verified": true,
    "spawn_workspace": "/home/jay/.cokacdir/workspace/02DEC36B/",
    "spawn_pid": 129155,
    "forbidden_12": [
      "PR #149 merge",
      "auto-merge",
      "PR #151 코드 혼합",
      "task-2686 코드 혼합",
      "branch sync",
      "rebase",
      "merge-main",
      "expected_files 밖 수정",
      "dispatch.py 변경",
      "live settings.json 변경",
      "hooks live 변경",
      "Axis runtime 변경 / HARNESS_ENFORCED 전체 선언"
    ]
  },

  "decision_4_pr149_x1_r7_watcher_after_push": {
    "status": "ACCEPTED + PREPARED (★ task-2688 push 후 회장 verbatim 발사 대기)",
    "watcher_executor": "dev3 다그다 (Dagda)",
    "task_id": "task-2689",
    "chair_authorization_id_pending": "CHAIR-AUTH-PR149-X1-R7-NEW-HEAD-WATCHER-20260526-JJONGS-WATCH-001",
    "trigger_sequence": [
      "1. task-2688 X1 R7 push 완료 + new_head_sha 도착",
      "2. per-head nudge count 0 확인",
      "3. OWNER_GEMINI_TRIGGER_ROUTER nudge 1회 (★ hard limit)",
      "4. watcher 재부착 (poll 120s / max 60min)",
      "5. terminal_state 도달 시 ANU normal callback --session 53e89540... 적용"
    ],
    "watcher_role": "read-only only · 코드 수정 / merge / auto-merge / 추가 nudge 금지",
    "watcher_dispatch_status": "PREPARED_NOT_YET_DISPATCHED (★ task-2688 envelope 의 new_head_sha 도착 후 회장 verbatim 발사 명령 대기)"
  },

  "decision_5_task2686_dogfood_fallback_4_stage": {
    "status": "ACCEPTED + REGISTERED ✅",
    "validation_3_field": [
      "chair_facing_session_id",
      "collector_session_id",
      "delivery_session_id"
    ],
    "classification_3_enum": {
      "3field_match": "dogfood_PASS",
      "anu_key_session_mismatch": "AUTHORITATIVE_BUT_SESSION_DISCONTINUITY",
      "self_key": "NON_AUTHORITATIVE_SELF_COLLECTOR"
    },
    "fallback_safety_net_4_stage": {
      "0_dogfood_pass": "callback inbound + 3 field 일치 시 즉시 PASS",
      "2h_no_callback": {
        "action": "WARN marker 생성",
        "cron_id": "F87C9368",
        "cron_fire_kst": "2026-05-26 14:42:00",
        "marker_path": "memory/events/task-2686-fallback-2h-warn-260526.json",
        "cancel_on_success": true
      },
      "4h_no_callback": {
        "action": "HOLD_FOR_CHAIR + 회장 즉시 보고",
        "cron_id": "D6774D53",
        "cron_fire_kst": "2026-05-26 16:42:00",
        "marker_path": "memory/events/task-2686-fallback-4h-hold-260526.json",
        "cancel_on_success": true
      },
      "24h_forbidden": "24h 대기 금지 (★ 회장 verbatim)"
    },
    "fallback_cron_anu_key_session_propagation_dogfood": "양 fallback cron 모두 ANU key c119085addb0f8b7 + --session 53e89540-5bed-4692-a726-ed857820758a (★ dogfood 보조)"
  },

  "decision_6_pr151_unresolved_evaluation_timing": {
    "status": "ACCEPTED (★ 평가 시점 박제)",
    "evaluation_trigger": "task-2686 결과 도착 후",
    "evaluator_pool": "ANU 본 세션 read-only audit 또는 별도 idle 봇",
    "forbidden_until_chair_decision": "PR #151 코드 수정 금지 (★ 회장 별도 결정 전)"
  },

  "decision_7_common_isolation_per_track": {
    "status": "ACCEPTED ✅",
    "rule": "PR #149 / PR #151 / task-2686 은 서로 혼합하지 말 것 · 각각 독립 보고",
    "isolation_anchor": "Track A (PR #149 X1 R7 dev2 오딘) · Track B (PR #151 READ_ONLY_HOLD) · Track C (task-2686 dev8 라) 3 트랙 분리"
  },

  "anu_actions_count": {
    "code_change": 0,
    "new_dispatch": 1,
    "task_md_drafted": 2,
    "fallback_cron_registered": 2,
    "marker_written": 1,
    "git_fetch": 1,
    "git_push": 0,
    "polling": 0
  },

  "compliance_chair_verbatim_11_forbidden_maintained": [
    "PR merge 0",
    "auto-merge 0",
    "branch 삭제 0",
    "live settings.json 변경 0",
    "hooks live 변경 0",
    "dispatch.py 변경 0",
    "Axis runtime 변경 0",
    "HARNESS_ENFORCED 전체 선언 0",
    "policy 승격 0",
    "BLOCK 확대 0",
    "PR #149 / PR #151 / task-2686 혼합 0"
  ],

  "linked_markers": [
    "memory/tasks/task-2688.md (★ PR #149 X1 R7 dev2 오딘 dispatched)",
    "memory/tasks/task-2689.md (★ X1 R7 new head watcher dev3 다그다 발사 대기)",
    "memory/tasks/task-2686.md (★ session propagation wiring fix dev8 라 진행 중)",
    "memory/events/callback-session-continuity-doctrine-accepted-260526.json (★ 5 결정 ACCEPTED 사전 박제)",
    "memory/feedback_callback_session_continuity_doctrine_260526.md (★ doctrine)",
    "memory/specs/system_callback_session_routing_modular_wiring_gap_analysis_260526.md (★ RCA spec)"
  ]
}
