{
  "id": "OS_LEVEL_PICKUP_RUNNER_CORRECTED_SPEC_PENDING_ACTIVE_FALSE",
  "ts_kst": "2026-06-09 23:25 KST",
  "packet_doc": "memory/plans/p0b-pickup/os_level_pickup_runner_corrected_spec_packet_260609.md",
  "basis": "VALIDATION self-check PASS_WITH_CORRECTIONS + 회장 DRIFT-1/2/3 정정 승인 2026-06-09. corrected spec 보고만(구현/dispatch/lint 실행 0).",
  "drift_corrections_applied": {
    "DRIFT_1": "신규 dry_run 플래그 미도입. dry-run=launcher_fn=None+relay_fn 미주입+isolated temp dir(quarantine/processed/ledger/evidence) 주입. process_one 시그니처 무변경",
    "DRIFT_2": "owner outcome=L1(resolve_authoritative_owner: OWNER_ANU/NOT_ANU/QUERY_FAILED/PENDING). process_one 분기=L2(verify.verdict==VERDICT_AUTHORITATIVE). collector_result 에 L1 outcome+L2 verdict 둘 다 기록",
    "DRIFT_3": "pickup ack 마커=<task_id>.pickup.done+acked_path(runner 기존). 팀 완료 .done/.done.acked(CLAUDE.md) 와 별개 문서화·혼용 금지"
  },
  "11_items_summary": {
    "1_drift_reflection": "DRIFT-1 dry_run 미추가 / DRIFT-2 L1·L2 분리+둘다기록 / DRIFT-3 pickup.done·acked_path 팀.done 분리",
    "2_expected_files": "신규5(anu-pickup.timer/anu_collector_result.py/anu_terminal_relay.py/test 2~3) + 수정2(anu_pickup_driver.py process_one 시그니처무변경/devbot prompt) + 재사용수정0 5(owned_callback_enforcement/result_pickup_runner/entrypoint/path/service) + 후속1(PreToolUse hook)",
    "3_closeout_insert": "process_one L2 AUTHORITATIVE 확인(L563경) 직후↔launcher_fn 분기(L604) 직전 삽입. agent_relay.required=false→CLOSEOUT_DONE(collector_result done_acked+pickup.done+ledger, launcher 미호출 wake0) / true→기존 launcher 분기를 relay 분기로. pickup.done(L571) 보존",
    "4_surface_only_safety": "launcher_fn=None→relay/wake 둘다 0. green-path 는 launcher 무관 collector_result+pickup.done 결정론종료. 예외는 relay_fn 주입시만. flag OFF+미주입→side-effect 0. closeout 삽입이 기존 안전게이트 무파괴",
    "5_owner_l1_l2": "OWNER_ANU→AUTHORITATIVE→green(또는 relay예외) / NOT_ANU→≠AUTH fail-closed QUARANTINE+quarantine_reason / QUERY_FAILED→≠AUTH fail-closed QUARANTINE / PENDING→≠AUTH retry NOOP_NOT_READY. self_key_used 거부·stale REJECT·read-only coupling 무관. collector_result owner_proof{l1,l2,schedule_id,query_ok}",
    "6_idempotency": "pickup ack=<task_id>.pickup.done+acked_path(runner L187). 팀 .done/.done.acked 별개·혼용금지. 3중: dedupe ledger(task_id,sha256)+pickup.done/acked+flock. path재발화/timer중복/재부팅→SKIP 1회",
    "7_collector_schema": "memory/events/task-<id>.collector_result.json(원본 1:1·atomic). task_id/source_result_sha256/verdict/owner_proof{l1_outcome,l2_verdict,schedule_id,query_ok}/dedupe{hit,ledger_key}/scope{pass,detail}/closeout_action{none|done_acked|quarantined|deferred}/agent_relay{required,reason}/contract_violation/ts_kst/runner_version. raw key0",
    "8_agent_relay": "false(green)→CLOSEOUT_DONE wake0+선택 sendfile. true 5(quarantine_reason/gemini_finding/merge_ready_ambiguous/critical7/consolidated_report)→cron ANU relay 1회(merge/dispatch/PR 금지). 2-tier 기본 sendfile/예외 cron. relay 주경로 아님",
    "9_callback_enforce": "3위치: devbot prompt 명문/result.json 필수필드 callback_schedule_created:false/runner 검증(부재·true→contract_violation 기록). 즉시=관측, 차단=후속 hook",
    "10_lint_checklist": "11항목: DRIFT1 시그니처무변경/DRIFT2 L1L2 둘다기록/DRIFT3 pickup.done·팀.done분리/closeout surface-only·ACTIVE=false불변/owner-proof read-only --cron0/relay merge·dispatch·PR 정적차단/legacy·epoch fail-closed/raw key0/idempotency race 1회/forbidden_write 가드/callback 관측·차단분리. lint=dispatch 직전·lint 전 dispatch 금지",
    "11_remaining_approval": "1.corrected spec 회장 승인(현재) 2.external lint 실행 승인(미승인) 3.lint HIGH/CRITICAL 0+spec-anchor 4.dispatch 승인 5.regression/dry-run GREEN 6.systemd 설치·flag·epoch=별도 activation 승인. 1~4 전 ACTIVE=false·구현0"
  },
  "capability_matrix": {
    "corrected_spec": "DRIFT_1_2_3_APPLIED",
    "process_one_signature": "UNCHANGED",
    "owner_proof": "L1_L2_SEPARATED",
    "idempotency_marker": "PICKUP_DONE_ACKED (팀 .done 분리)",
    "spec_status": "NOT_LOCKED",
    "external_lint": "REQUIRED_NOT_YET_APPROVED",
    "ACTIVE": "false", "production_activation_gate": "HARD BLOCK"
  },
  "forbidden_now": ["구현", "dispatch", "external lint 실행", "PR", "systemd 설치", "ACTIVE=true", "production queue 처리", "daemon restart", "direct Claude launch", "추가 canary 실행"],
  "state_preserved": "canonical HEAD 75fdf540(task-2716) 무손상 / events 무변동 / p0b flags(driver/real_wake/epoch) ABSENT / systemd anu-pickup NOT installed / 구현 0.",
  "verdict": "OS_LEVEL_PICKUP_RUNNER_CORRECTED_SPEC_PACKET_READY — 3 DRIFT 반영(dry_run 미추가·owner L1/L2 분리+둘다기록·pickup.done/acked_path 팀.done 분리). expected_files 5신규+2수정(시그니처무변경)+5재사용+1후속. CLOSEOUT_DONE 삽입 surface-only/ACTIVE=false 불변. external lint 11항목 준비(미승인). spec NOT_LOCKED. 다음=corrected spec 승인→lint 실행 승인."
}
