{
  "task_id": "task-2720+3",
  "phase": "P0-a",
  "increment": "+3 (보강 — 회장 명시)",
  "supersedes": "task-2720.done / task-2720.md (lock-기반 +1 서술) — 본 +3 가 최종 상태",
  "status": "implemented+verified+wired_candidate",
  "active": false,
  "active_note": "active 는 P0-b(OS-level event driver) 별도 승인 후 판단 — 본 task 미주장. active/운영중/완료(active) 표현 0.",
  "base": "origin/main 5e714887 (merge-base 확인)",
  "head_commit": "93bf053c76042fa022b1026691c50ee1152bccca",
  "finalize": "local_commit_only",
  "push": false,
  "pr": false,
  "merge": false,
  "force_push_or_rebase": false,
  "admin_override": false,
  "finish_task_action_pr": false,
  "pr163_preserved": true,
  "os_level_install": false,
  "new_watcher_activated": false,
  "primary_fix": "pickup runner 파일락 완전 제거 (High#209 stale-lock liveness 결함 소멸)",
  "lock_symbol_gate": {
    "command": "grep -E 'pickup\\.lock|_lock_acquired|_STALE_LOCK|lock.?steal|O_EXCL' dispatch/anu_result_pickup_runner.py",
    "count": 0,
    "verdict": "PASS"
  },
  "idempotency_mechanism": {
    "dedupe_ledger": "memory/events/callback_4tuple_index.jsonl 재사용 — (event=PICKUP_WAKE_BUILT, task_id, sha256) 키 매칭으로 중복 wake 0",
    "terminal_marker": "<task_id>.pickup.done / .pickup.acked 존재 시 no-op(SKIP_TERMINAL)",
    "idempotent_no_op": "중복/터미널/디듀프 모든 경로가 wake_built=False, argv=None no-op PickupResult 반환 — 부수효과 0",
    "lock_free": true
  },
  "high_209_liveness": "lock 자체가 없으므로 stale-lock 영구잔존 차단 결함 발생 불가 — 결함 소멸(설계상 dissolve, 회복코드 불요)",
  "timezone_fromisoformat_retained": {
    "module": "dispatch/anu_owned_callback_enforcement.py",
    "function": "_parse_timestamp_value (L430)",
    "fromisoformat_lines": [440, 462, 468],
    "note": "+2 에서 적용한 tz-offset/Z-suffix 파싱 유지 — 본 +3 미변경. blob identity 는 +2 tz-fix 로 b257f2aa 와 더 이상 동일하지 않음(인가된 변경)."
  },
  "finish_task_semantic_acceptance": {
    "T2626_ANU_KEY_count": 0,
    "callback_launch_json_creation": 0,
    "result_json_write": 1,
    "verdict": "PASS"
  },
  "anu_key_literal_leak_gate": {
    "literal": "ANU 독립키 (sealed, literal 미기재)",
    "scripts/finish-task.sh": 0,
    "dispatch/anu_result_pickup_runner.py": 0,
    "dispatch/anu_owned_callback_enforcement.py": 0,
    "tests/regression/test_anu_result_pickup_runner_2720.py": 0,
    "tests/regression/test_anu_owned_callback_enforcement_2717.py": 0,
    "memory/events/task-2720+3.done": 0,
    "memory/reports/task-2720+3.md": 0,
    "verdict": "PASS_no_task2720_introduction",
    "auto_fix": false,
    "preexisting_other_files_observation": "트리 내 과거 정상인가 파일(anu_v3/*, config/*, dispatch/callback_owner_enforcer.py, memory/backups/*, 과거 task report 등)에 동 literal 존재 — scope 외, 과거 ANU key sanitize 금지 원칙에 따라 무수정, 회장 보고만"
  },
  "expected_files_changed_code_only_5": [
    "dispatch/anu_owned_callback_enforcement.py",
    "dispatch/anu_result_pickup_runner.py",
    "scripts/finish-task.sh",
    "tests/regression/test_anu_owned_callback_enforcement_2717.py",
    "tests/regression/test_anu_result_pickup_runner_2720.py"
  ],
  "evidence_files": [
    "memory/events/task-2720.done",
    "memory/reports/task-2720.md",
    "memory/events/task-2720+3.done",
    "memory/reports/task-2720+3.md"
  ],
  "scope_guard": "code diff vs origin/main = 5 (PASS). evidence(.done/report) 는 코드 scope 외 별도 허용.",
  "no_cron_layer_a": {
    "subprocess": 0,
    "crontab_systemd_inotify_install": 0,
    "merge": 0,
    "note": "runner 내 subprocess/cron/merge 미사용 — grep 매치 2건은 전부 부재를 명시한 docstring negation(L7,L16)"
  },
  "regression": {
    "command": "pytest tests/regression/test_anu_result_pickup_runner_2720.py tests/regression/test_anu_owned_callback_enforcement_2717.py -q",
    "result": "32 passed",
    "pickup_runner_tests": 12,
    "enforcement_tests": 20,
    "network": 0
  },
  "loop_boundary_policy": "본 +3 가 3차 fix. 이후 동일 semantic(pickup runner lock/liveness/멱등성) 신규 High 재발 시 추가 fix 금지 → LOOP_BOUNDARY 보고만 (회장 verbatim).",
  "completion_definition": "완료 = ANU key normal callback. 이후 ANU governance(push→gemini→resolve→MERGE_READY 판정)은 봇 아님·본 task 범위 외.",
  "verified_at": "2026-06-01T06:19:23+09:00"
}
