# post_pr150_runtime_wiring_audit · Sub-spec 2/5 · task-2680 self-key hardening main 반영 여부
- task: task-2685
- chair_authorization_id: CHAIR-AUTH-POST-PR150-RUNTIME-WIRING-AUDIT-20260526-JJONGS-AUDIT-001
- audit_mode: read-only
- audit_date: 2026-05-26 04:20 UTC
- main_repo_head_actual: 2752182a
- task_2680_commit_actual: 814491f0 (★ branch `task/task-2680-dev2` only)
- task_2680_diff_stat: 9 files · +2535 / -1 lines

## 영역 2 결선 verdict

| Sub-check | Verdict | Evidence |
|---|---|---|
| A. task-2680 fix main 반영 여부 | **FAIL** | `git log origin/main --grep="2680" --oneline` → empty. `git log origin/main --oneline | head -1` → 2752182a (task-2661). task-2680 commit 814491f0 origin/main 0건. |
| B. helper ANU key cron layer 강제 | **PASS (worktree only)** | `.worktrees/task-2680-dev2/dispatch/normal_fallback_callback_helper.py:229,237,268-311` — argv `--key owner_key` + post-build verifier `assert_argv_uses_anu_key(argv, owner_key, anu_keys)` (L237) + cron layer strict gate L268-311 (L286 `--key not in argv → FAIL`, L294 `observed != owner_key → FAIL`, L299 `not is_anu_key → FAIL`) |
| C. callback collector gate actual owner key 검증 | **PASS (worktree only)** | `.worktrees/task-2680-dev2/utils/callback_collector_helper_integration.py:255-306` — `verify_owner()` 함수 · `observed_owner_key` from schedule_history · `reg.verify_actual_owner()` L296 · ★ 회장 원칙 5: "등록 직후 actual schedule owner key 가 ANU_KEY 인지 검증" |
| D. self-key callback → NON_AUTHORITATIVE_SELF_COLLECTOR 자동 분류 | **PASS (worktree only)** | `.worktrees/task-2680-dev2/utils/callback_authority_4source_validator.py:354-361` — `elif self_count >= 1 and anu_count <= 0: cls = NON_AUTHORITATIVE_SELF_COLLECTOR` · enum L539 callback_collector_helper_integration.py |
| E. ANU independent reverify flow 강제 | **PASS (worktree only)** | `.worktrees/task-2680-dev2/utils/callback_authority_4source_validator.py:291-406` — 4-source doctrine (S1 schedule_history L307, S2 cron-history ANU+self L314-321, S3 envelope L337-339, S4 result artifact L342-343) + `REVERIFY_TRIGGER_CLASSIFICATIONS` L66-71 + `build_anu_independent_reverify_request` L477-506 |

## 결함 list

| ID | Severity | Path · line | 설명 |
|---|---|---|---|
| D2.A | CRITICAL | origin/main vs `.worktrees/task-2680-dev2/` 9 파일 | task-2680 모든 6 수정 목표 origin/main 미반영. helper · validator · integration · 4 regression 분리. |
| D2.B-prod | HIGH | origin/main `dispatch/normal_fallback_callback_helper.py` (정확한 file 존재 여부 별도 검증) | argv post-check gate L237 origin/main에 미반영 시 self-key callback bypass 가능. |
| D2.C-prod | HIGH | origin/main `utils/callback_collector_helper_integration.py` 미존재 | actual owner verifier 가동 0. |
| D2.D-prod | HIGH | origin/main NON_AUTHORITATIVE_SELF_COLLECTOR 분류 0 | self-key 사고 발생 시 chair escalation 미작동. |
| D2.E-prod | HIGH | `build_anu_independent_reverify_request` worktree only | reverify 자동 dispatch 0. |
| D2.history | MEDIUM | `/home/jay/.cokacdir/schedule_history/*.log` | 최근 self-key 사고 (Track A 78F385CF · Track J 33E60E8B) chair_id=6937032012 record들에 NON_AUTHORITATIVE classification marker 0건 (분류 시스템 미배포 결과). |

## 결선 reachability 매트릭스 (origin/main 기준)

| 컴포넌트 | reachable? |
|---|---|
| helper `assert_argv_uses_anu_key` | NO |
| `verify_owner` | NO |
| NON_AUTHORITATIVE_SELF_COLLECTOR 분류 | NO |
| 4-source validator | NO |
| ANU independent reverify request builder | NO |

## 종합 verdict

**FAIL** — task-2680의 6 수정 목표 전부 worktree-only. origin/main 결선 0. self-key callback 사고 재발 위험 active.

## 권고 (★ 별도 task + chair signature)

1. task-2680 commit 814491f0 → origin/main 머지 PR 신규 발행 (회장 verbatim 9 파일 1:1)
2. 머지 후 helper · validator · integration · 4 regression 전수 PASS 검증
3. 미배포 gap 기간 (2026-05-XX ~ 2026-05-26) self-key 사고 schedule_history backfill 분류 (Track A · Track J 외)
4. chair signature 명시 후 적층
