{
  "task_id": "task-2705",
  "captured_at": "2026-05-28T17:59:53.258335",
  "source": "memory/tasks/task-2705.md",
  "source_sha256": "3e3b15e9d5d5889bbcc1aeadda966e71607f97090743f9b4dfc521e70dce6647",
  "allowed_resources": {
    "paths": [
      "scripts/harness/v36/task_md_sha_*.py (신규)",
      "tests/harness/test_v36_task_md_sha_*.py (신규)",
      "tests/harness/fixtures/v36_task_md_sha_*.json (신규)",
      "dispatch/__init__.py (★ 최소 결선 한정 · safe-fail 강제 · L1879/L2837/L2994/dispatch exit)",
      "scripts/harness/v36/dispatch_marker_writer.py (★ 3 sha 필드 추가 결선)",
      "memory/events/task-2705.* (보고/마커)",
      "memory/reports/task-2705.md"
    ],
    "forbidden_paths": [
      "scripts/finish-task.sh / scripts/session-watchdog.sh",
      ".claude/settings.json (양 path)",
      "merge executor / real_merge_hooks activation",
      "Goal-to-Done / PHASE_AUTO / Core-Work / finish-task profile / actor attribution 관련 파일",
      "PR #158/#159/#160 / task-2700·2700+1·2703·2704 branch",
      "workspace_root 외부",
      "memory/capabilities/**"
    ],
    "commands": [
      "구현: 신규 py/json/test · dispatch.py 최소 결선 (safe-fail 강제)",
      "검증: pytest fixture/mock · production load evidence · marker schema validation",
      "★ real GitHub write 0 · merge 0 · branch push 0 · PR 생성 0 · finish-task.sh/watchdog.sh/settings.json 수정 0",
      "★ task-timers 위조 0 · manual .done 0 · G4 marker 삭제 0"
    ],
    "merge_policy": "task_md_sha_contract_p1a_local_verification_no_remote_writes_no_finish_task_no_settings_change",
    "ttl_hours": 12
  }
}