{
  "id": "OS_LEVEL_PICKUP_RUNNER_EXTERNAL_LINT_APPROVED_ACTIVE_FALSE",
  "ts_kst": "2026-06-09 23:55 KST",
  "lint_tool": "Codex CLI 0.106.0 (codex exec --sandbox read-only), independent external lint (D-SPEC-EXACTNESS stage)",
  "spec_linted": "memory/plans/p0b-pickup/os_level_pickup_runner_corrected_spec_packet_260609.md",
  "full_output": "tool-results/biyj1fqwm.txt (265KB, rg node_modules noise 포함 — 보고서는 끝부분)",
  "overall": "FAIL",
  "high_or_critical_present": "yes (HIGH 5: items 4·5·6·9·10 / MEDIUM 1: item 8)",
  "must_fix_items": [4, 5, 6, 8, 9, 10],
  "per_item": {
    "1_drift1_signature": "PASS NONE — process_one(L399) dry_run 파라미터 없음, spec dry-run=launcher_fn=None+isolated temp 일치",
    "2_drift2_owner_l1l2": "PASS NONE — OWNER_* 4종+VERDICT_AUTHORITATIVE verbatim 일치, collector_result 둘다 기록 정합",
    "3_drift3_marker": "PASS NONE — runner L185-186 <task_id>.pickup.done+pickup.acked 사용, 팀 .done 미사용",
    "4_expected_files_scope": "FAIL HIGH must-fix — anu_result_pickup_runner.py 수정0 낙관. 그 모듈이 ledger append+.pickup.done 생성 소유(L272-355)→process_one 새 closeout 이 중복 or 공유 helper 추출 필요",
    "5_closeout_insertion": "FAIL HIGH must-fix — 삽입위치 실제 제어흐름 불일치. launcher_fn 분기는 pickup_fn 이 WAKE_BUILT 반환 후에만 도달(L589-623). 'AUTHORITATIVE 직후 launcher 직전'은 기존 done/acked/dedupe 경로 건너뜀→체크 뒤로 재배치 or 공유 closeout 루틴",
    "6_surface_only_invariant": "FAIL HIGH must-fix — launcher_fn=None invariant 과장. 실코드 launcher_fn=None='no wake'만. process_one 은 여전히 quarantine/move + pickup_once 경유 ledger·.pickup.done write 가능(L604-623, runner L272-355). ACTIVE=false 는 scan_once(L681-692)서 enforce, process_one 아님",
    "7_owner_readonly": "PASS NONE — RealCokacdirCronHistoryProbe 가 cokacdir --cron-history 만(L184-205). green/closeout 에 --cron fire 도입 0 유지 명시 권고",
    "8_relay_reasons": "FAIL MEDIUM must-fix — quarantine_reason 만 코드 근거. gemini_finding/merge_ready_ambiguous/critical7/consolidated_report 4종은 검사 모듈에 없음→result.json 필드 or producer-contract 참조 명시 필요",
    "9_relay_static_block": "FAIL HIGH must-fix — anu_terminal_relay.py 부재로 static block 미enforce. allowlist-only relay(shell passthrough 0·merge/dispatch/PR import·call 0) 하드 요구 필요. prompt-only 부족",
    "10_idempotency_ordering": "FAIL HIGH must-fix — flock+terminal marker+ledger dedupe 재료는 좋으나 closeout 이 pickup_once durability ordering(ledger before terminal marker, runner L272-355) 보존 필수. 아니면 concurrent/crash double-closeout",
    "11_legacy_epoch": "PASS NONE — _legacy_cutoff_check 이미 fail-closed(epoch_absent/pre_activation_epoch→NOOP_LEGACY_SKIP, L335-350·463-476)",
    "12_callback_enforce_split": "PASS LOW — 즉시 관측/후속 hook 분리 합리적. hook 은 executor-session cokacdir --cron 생성 deny 로 좁게 한정 조건"
  },
  "recommendations": [
    "1. closeout 설계를 terminal-state 로직 실소유 기준 재작업: anu_result_pickup_runner.py 수정 or ledger+marker+collector_result durability 공유 helper 추출",
    "2. 삽입위치 표현 정정: 기존 done/acked/dedupe 게이트를 terminal closeout 전에 보존하도록 명시",
    "3. launcher_fn=None 표현을 'no wake' 한정으로 축소. process_one 완전 side-effect-free 주장 금지",
    "4. relay trigger schema 정의: 4 non-quarantine 예외가 어느 result.json 필드/허용값에서 나오는지",
    "5. relay guard 하드 구현 요구: allowlist-only terminal action·일반 command 실행 0·merge/dispatch/PR entrypoint 0",
    "6. pickup_once idempotency ordering 보존: durable dedupe 먼저, terminal marker 나중→path+timer·crash 단일 closeout"
  ],
  "spec_lock_ready": "no — closeout 삽입위치/side-effect invariant/relay enforcement/idempotency 세부가 현코드 대비 아직 부정확",
  "remaining_before_dispatch": [
    "1. process_one↔pickup_once closeout state write 소유 경계 해소",
    "2. launcher_fn=None / ACTIVE=false 문장을 실동작에 맞게 정정",
    "3. relay trigger 필드+terminal-only enforcement 메커니즘 명시",
    "4. closeout write order+crash/idempotency contract 고정",
    "5. 정정 후 external lint 재실행, HIGH/CRITICAL=0 요구"
  ],
  "assessment": "external lint 정확 작동. self-check(PASS_WITH_CORRECTIONS 3 DRIFT)가 놓친 실제 제어흐름 결함 4종(closeout ownership 경계·삽입위치·side-effect invariant 과장·relay/idempotency enforcement)을 코드 라인 근거로 적발. task-2591/2592/2595 박제('self-check는 필요조건이지 충분조건 아님') 실증. DRIFT 정정 3건은 전부 PASS 확인(외부 검증 통과).",
  "capability_matrix": {
    "external_lint": "EXECUTED_FAIL",
    "self_check_vs_external": "SELF_PASS_BUT_EXTERNAL_CAUGHT_4_FLOW_DEFECTS",
    "spec_status": "NOT_LOCKED (FAIL — v2 정정 필요)",
    "ACTIVE": "false", "production_activation_gate": "HARD BLOCK"
  },
  "forbidden_now": ["구현", "dispatch", "PR 생성", "systemd 설치", "ACTIVE=true", "production queue 처리", "canary 실행"],
  "state_preserved": "canonical HEAD 75fdf540(task-2716) 무손상 / events 무변동 / p0b flags ABSENT / systemd NOT installed / 구현 0 / lint 임시파일 정리.",
  "verdict": "OS_LEVEL_PICKUP_RUNNER_EXTERNAL_LINT_RESULT=FAIL — HIGH 5+MEDIUM 1, must-fix 6(items 4·5·6·8·9·10). DRIFT 1/2/3 정정+owner-proof read-only+legacy fail-closed+callback split 6항 PASS. spec lock 불가. v2 정정(closeout ownership·삽입위치·invariant·relay·idempotency) 후 lint 재실행 HIGH/CRITICAL=0 필요. 다음=회장 v2 정정 승인."
}
