{
  "task_id": "task-2704",
  "captured_at": "2026-05-28T15:41:07.204929",
  "source": "memory/tasks/task-2704.md",
  "source_sha256": "e333b64417221fde07d18acfe00daf9fbf67f927a9ad858eed63c21992037452",
  "allowed_resources": {
    "expected_files_new": [
      "scripts/harness/v36/dispatch_marker_writer.py (layer 1 · safe-fail 강제)",
      "scripts/harness/v36/spawn_detector.py (layer 2 · 9-state machine · UNKNOWN 강제)",
      "scripts/harness/v36/watchdog_suppression_gate.py (layer 3 · alive 신호 OR 7)",
      "scripts/harness/v36/closeout_marker_watcher.py (layer 4 · daemon 또는 hook)",
      "scripts/harness/v36/runtime_decision_logger.py (JSONL writer · schema 검증)",
      "scripts/harness/v36/__init__.py (기존 있으면 확장 · 없으면 신규)",
      "tests/harness/test_v36_dispatch_marker_*.py",
      "tests/harness/test_v36_spawn_detector_*.py",
      "tests/harness/test_v36_watchdog_suppression_*.py",
      "tests/harness/test_v36_closeout_watcher_*.py",
      "tests/harness/test_v36_integration_*.py",
      "tests/harness/fixtures/v36_*.json (mock fixture)",
      "memory/events/task-2704.* (보고/마커)",
      "memory/reports/task-2704.md"
    ],
    "allowed_existing_file_edits": [
      "dispatch.py (★ B 옵션 회장 verbatim 허용 · 최소 결선 한정 · marker 생성 결선만 · 기존 dispatch 동작 변경 0 · marker write 실패 시 safe-fail)",
      "scripts/session-watchdog.sh (★ B 옵션 회장 verbatim 허용 · 최소 결선 한정 · hb_age=-1/ev_age=-1 기반 false stalled chat 억제 + alive 신호 교차 확인 + ESCALATE_CHAIR 외 chat 0)"
    ],
    "conditional_pending_separate_chair_approval": [
      "/home/jay/.claude/settings.json (★ 기본 금지 · 정말 필요 시 '기존 v3.6 hook 결선으로 부족한 사유' 먼저 보고 + 별도 명시 승인 후)",
      "/home/jay/workspace/.claude/settings.json (★ 동상)"
    ],
    "forbidden_files": [
      "scripts/finish-task.sh (★ 회장 verbatim 절대 금지 · 영향 범위 큼)",
      "utils/merge_queue_executor.py (★ activation 0)",
      "utils/real_merge_hooks.py (★ activation 0)",
      "anu_v3/goal_loop_planner.py (★ Goal-to-Done 범위 밖)",
      "anu_v3/phase_auto*.py (★ PHASE_AUTO 범위 밖)",
      "anu_v3/core*.py · anu_v3/work*.py (★ Core/Work 이원화 범위 밖)",
      "PR #158 / PR #159 / PR #160 branch",
      "task-2700 / task-2700+1 / task-2703 branch",
      "workspace_root 외부 (★ /home/jay/workspace 만)"
    ],
    "commands": [
      "구현: 신규 py/sh/json/schema/test · fixture · 기존 dispatch.py/watchdog.sh 최소 결선",
      "검증: pytest fixture/mock · production load evidence (실제 dispatch fire → marker 생성 · watchdog cycle → chat 0 · closeout marker → ANU signal)",
      "★ real GitHub write 0 · merge 0 · branch push 0 · PR 생성 0 · finish-task.sh 수정 0",
      "★ task-timers 직접 위조 0 · manual .done 0 · G4 marker 삭제 0",
      "★ dispatch.py 수정 시 safe-fail 강제 · 기존 dispatch 동작 변경 0",
      "★ watchdog 수정 시 ESCALATE_CHAIR 외 chat 발사 0"
    ],
    "merge_policy": "control_plane_p0_mvp_local_verification_no_remote_writes_no_finish_task_change_b_option",
    "ttl_hours": 18,
    "forbidden_paths": [
      "memory/capabilities/**"
    ]
  }
}