# task-2650 — AXIS_2_LIVE_REVALIDATION_VIA_AXIS_1_PRE_REGISTRATION

- Level: Lv.4 (수정 OPTION_A · Axis 1 helper 사전 등록 → ledger row → inbox 재투입 → 5/5 충족 검증)
- 담당: 회장 결정 후 dispatch · ANU 권장 dev6 페룬 (★ Axis 1 LIVE_VERIFIED 직접 경험 · Axis 1 helper 사용 적임) 또는 dev5 마르둑 (★ 421h 유휴 · fresh perspective)
- base: origin/main 최신 + Axis 2 hooks 3개 live 등록 상태 (task-2649 적용 결과 보존)
- 단일소스 spec: 본 task md
- chair_authorization_id (Axis 2 재사용): `CHAIR-AUTH-AXIS-2-20260524-JJONGS-INBOUND-001` (★ 회장 verbatim 동일 axis 동일 ID · marker `memory/events/chair-authorization-axis-2-signature-260524.json`)

## 목표 (회장 verbatim 수정 OPTION_A)
Axis 2 live activation 후 RECEIVED_INBOUND_THIS_SESSION 5/5 충족 검증.
- 기존 시도: smoke callback이 Axis 1 helper 우회로 inbox 직접 투입 → ledger row 부재 → 5 조건 中 2·3 FAIL
- 수정 접근: Axis 1 helper로 정상 사전 등록 → 실제 ledger row 생성 → UserPromptSubmit hook 감지 → 5/5 검증

## 수정 OPTION_A 5 단계 (회장 verbatim)
1. Axis 1 helper로 Axis 2 smoke callback을 정상 사전 등록 (`utils.callback_registration.register_callback(*, kind='axis2_smoke', owner_key=ANU, ...)`)
2. 실제 schedule_id / callback_id / owner_key / ledger row 먼저 생성
3. UserPromptSubmit hook이 inbox 감지하게 함 (.callback 파일을 inbox에 정식 투입 · ledger_pointer는 단계 2 ledger row의 callback_id+schedule_id 1:1)
4. ledger_pointer ↔ callback_id+schedule_id 1:1 매칭 검증
5. RECEIVED_INBOUND_THIS_SESSION 5/5 모두 충족 시에만 AXIS_2_INBOUND_COLLECTOR_LIVE_VERIFIED_WITH_DEPENDENCY_WARN 승격

## 5 조건 (5/5 모두 충족 시 LIVE_VERIFIED_WITH_DEPENDENCY_WARN)
1. UserPromptSubmit hook이 .callback 파일 인식 (★ 기존 PASS)
2. callback 파일 내 ledger_pointer가 Axis 1 ledger row와 1:1 매칭 (★ 본 task 핵심 수정)
3. ledger row의 source_attribution == CALLBACK_COLLECTOR_PROCESSED (★ 본 task 핵심 수정)
4. 본 ANU 세션이 callback 정보를 응답에 직접 활용 (★ 기존 PASS)
5. 본 ANU 세션이 callback에 대한 next_action을 본 세션 내에서 실행 또는 결정 (★ 기존 PASS)

## dependency_hardening_required=true 영구 marker
- Axis 2 hooks의 utils 4종 v2 PYTHONPATH 의존 (task-2644+1-dev4 worktree)은 fragile live wiring
- 본 task LIVE_VERIFIED 승격 시에도 dependency_hardening_required=true 필드 carry
- 향후 별도 Axis 2 hardening task에서 utils 4종 canonical live path 승격 후에야 false 토글 가능
- marker ref: `memory/events/task-2649.axis-2-dependency-hardening-required-260524.json`

## 허용
- Axis 1 helper 호출 (read-only · 변경 0)
- ledger row append (memory/system/.callback_ledger.jsonl)
- .callback 파일 정식 투입 (memory/.callback_inbox/)
- UserPromptSubmit hook trigger 검증 (본 회장-facing ANU 세션 spawn 후 prompt 제출 시점)
- result marker 작성

## 금지 (회장 verbatim 7)
1. L1 rollback 즉시 실행 금지
2. Axis 3 touch 금지
3. dispatch.py 변경 금지
4. Axis 1 helper 변경 금지 (호출만 허용)
5. commit/push/PR/merge 금지
6. HARNESS_ENFORCED 전체 선언 금지
7. worktree PYTHONPATH 의존 상태를 stable live로 표현 금지

## expected_files (~8 file)
- 신규 ledger row 1개 (memory/system/.callback_ledger.jsonl · append)
- 신규 .callback 파일 1개 (memory/.callback_inbox/cb-axis2-revalidation-...callback)
- dedupe table entry 1개 (memory/system/.callback_dedupe_table.jsonl · append)
- 신규 .callback.acked 파일 (UserPromptSubmit hook 처리 후 rename)
- memory/events/task-2650.done
- memory/events/task-2650.axis-2-revalidation-result-260524.json
- memory/reports/task-2650.md
- INDEX.md update

## finalize 프로토콜
1. base = origin/main 최신 clean + task-2649 hooks live 등록 보존
2. 별도 worktree task-2650-dev6
3. Axis 1 helper로 smoke callback 정식 사전 등록 (실제 cron registration · ANU key c119085addb0f8b7)
4. 등록 직후 helper.verify_actual_owner() 호출 → OWNER_KEY_VERIFIED 확인
5. ledger row 1개 append (callback_id + schedule_id + source_attribution=CALLBACK_COLLECTOR_PROCESSED + actual_owner_key_verified=true)
6. .callback 파일 inbox에 정식 투입 (ledger_pointer = 단계 5 callback_id+schedule_id)
7. 본 회장-facing ANU 세션 spawn (또는 자기 자신 세션 사용) + prompt 제출 → UserPromptSubmit hook trigger
8. hook이 .callback 인식 + ledger_pointer 매칭 검증 + context 주입 → 5 조건 PASS count 측정
9. 5/5 PASS 시 AXIS_2_INBOUND_COLLECTOR_LIVE_VERIFIED_WITH_DEPENDENCY_WARN
10. 5/5 미달 시 AXIS_2_HOLD_FOR_CHAIR (회장 추가 결정 대기)
11. hook crash 발생 시 AXIS_2_ROLLBACK_REQUIRED (회장 별도 신호 후 L1 rollback)
12. result marker `memory/events/task-2650.axis-2-revalidation-result-260524.json` 박제 (★ dependency_hardening_required=true 필수 carry)
13. ANU normal callback cron (helper 사용 · ANU key · 4 source · 8 실제값)

## 회장 보고 형식 (verbatim 3 종결)
- AXIS_2_INBOUND_COLLECTOR_LIVE_VERIFIED_WITH_DEPENDENCY_WARN (★ 성공)
- AXIS_2_HOLD_FOR_CHAIR (★ 5/5 미달 시)
- AXIS_2_ROLLBACK_REQUIRED (★ hook crash 시)

## frozen anchor
- ANCHOR-1: "Axis 1 helper 사전 등록 → ledger row → inbox 정식 투입 5 단계 순서 강제"
- ANCHOR-2: "5/5 조건 모두 충족 시에만 LIVE_VERIFIED_WITH_DEPENDENCY_WARN"
- ANCHOR-3: "dependency_hardening_required=true 영구 marker carry"
- ANCHOR-4: "L1 rollback 즉시 실행 금지 (회장 신호 후만)"
- ANCHOR-5: "chair_authorization_id Axis 2 동일 ID 재사용 (회장 verbatim · Axis 3 재사용 금지)"
- ANCHOR-6: "worktree PYTHONPATH 의존 상태를 stable live로 표현 금지"
- ANCHOR-7: "Axis 1 helper / dispatch.py / Axis 3 touch 0"

## allowed_resources (본 task의 capability)

```yaml
allowed_resources:
  paths:
    - "memory/system/.callback_ledger.jsonl"
    - "memory/system/.callback_dedupe_table.jsonl"
    - "memory/.callback_inbox/**"
    - "memory/tasks/task-2650.md"
    - "memory/reports/task-2650.md"
    - "memory/events/task-2650.done"
    - "memory/events/task-2650.axis-2-revalidation-result-260524.json"
    - "INDEX.md"
  forbidden_paths:
    - "/home/jay/.claude/settings.json"
    - "/home/jay/.claude/settings.local.json"
    - "/home/jay/.claude/hooks/**"
    - "/usr/local/bin/cokacdir"
    - ".github/**"
    - "utils/callback_registration.py"
    - "utils/callback_authority_validator.py"
    - "utils/callback_source_cross_checker.py"
    - "utils/callback_collector_helper_integration.py"
    - "utils/callback_adjudicator_v2.py"
    - "utils/callback_next_action_runner_v2.py"
    - "utils/source_attribution_guard_v2.py"
    - "schemas/**"
    - "dispatch.py"
    - "scripts/finish-task.sh"
    - "utils/replacement_pr_runner.py"
    - "memory/tasks/task-2644*"
    - "memory/tasks/task-2645*"
    - "memory/tasks/task-2646*"
    - "memory/tasks/task-2647*"
    - "memory/tasks/task-2648*"
    - "memory/tasks/task-2649*"
    - "memory/tasks/task-2643*"
    - "memory/tasks/task-2641*"
    - "memory/tasks/task-2642*"
    - "**/.env*"
    - "**/credentials*"
  commands:
    - "pytest"
    - "python3 -m py_compile"
    - "python3 -m json.tool"
    - "git status"
    - "git diff"
    - "git add"
    - "git commit"
    - "git log"
    - "git checkout"
    - "git branch"
    - "git worktree"
    - "sha256sum"
    - "wc"
    - "printf"
    - "ls"
    - "grep"
    - "find"
    - "cokacdir --cron"
    - "cokacdir --cron-history"
    - "cokacdir --cron-list"
    - "flock"
    - "cp"
    - "mv"
  merge_policy: "local_main_axis_2_only"
  ttl_hours: 96
```

끝
