# Fixture Provenance: normal_anu_owned (NORMAL_CALLBACK_RECEIVED)

## 분류 (중요 · 정직성)
이 fixture 는 **schema 정의 기반 합성(constructed) sample** 이다 — 라이브 incident 캡처가
아니다. task-2625 / task-2628 / task-2628+1 은 실제 발생한 사건의 read-only freeze 인
반면, 본 fixture 는 회장 승인 단일소스 스펙
`memory/specs/system_callback_lifecycle_state_schema_260522.md` §2 / §5 / §6 의
**NORMAL_CALLBACK_RECEIVED 정의**에서 결정적으로 도출했다.

라이브 normal callback 캡처가 없는 이유: 현 시점 doctrine
(`project_no_bot_app_token_local_only_completion_260521`,
`feedback_callback_self_key_helper_not_wired_260521`) 상 BOT App token 부재로
ANU-key normal callback 의 라이브 발사 실적이 0 이다. 따라서 정상 경로 케이스는
스펙 정의로부터 구성할 수밖에 없으며, 이 사실을 여기 명기한다.

## 표현 대상 (스펙 §2 NORMAL_CALLBACK_RECEIVED)
"ANU key cron 등록+발사 → ANU collector 세션 spawn → result ack. 정상 경로."

evidence 매핑:
- `result_json.callback_registration_status = FIRED`, `owner_key = c119085addb0f8b7`(ANU),
  `envelope_utf8_bytes = 612` (≤ MAX_ENVELOPE_BYTES 3900 → contract violation 0)
- `schedule_history.normal_callback`: ANU key(c119085addb0f8b7) cron `A17C9F00`
  `fired=true, argv_present=true` → ANU-key 로 실제 발사 (self-key 아님)
- `collectors.normal_collection_ack = true` → authoritative collector 가 정상 수집·ack
- fallback cron `B22D4E11` 은 안전망으로 등록만 됨(`fired=false`) → 발사 0 → no-op
- `applied_count = 0` (fallback 미적용 — 순수 normal 경로)
- `git.git_gate_blocked = false`, `foreign_dirty = []` → GIT-GATE 차단 0
- `reflection_merged = true`, `bot_app_token_present = true`, `self_key_fail_closed = false`
  → BEFORE_FIRE 차단 원인(self-key fail-closed / token 부재 / reflection 미머지) 전무

## 기대 분류 (스펙 §6 의사코드에서 도출 — classifier 출력 복사 아님)
- 축A `delivery_outcome = NORMAL_CALLBACK_RECEIVED`
  (normal_collection(ANU-key cron fired ∧ collector spawn ∧ ack) 성립)
- 축B `normal_callback_miss_cause = NONE`
  (A == NORMAL_CALLBACK_RECEIVED → NONE)
- 축C `root_cause_tags = []` (miss cause 없음 → 태그 0)
- `evidence_completeness = COMPLETE` (canonical 6 소스 전부 존재)
- `classification = normal` (NONE ∉ INCIDENT_MISS_CAUSES)

## stage separation (스펙 §0 핵심구분)
정상 경로는 3단계가 **전부 True** 인 유일한 케이스:
- `callback_gate_pass = true` (git_gate_blocked=false ∧ contract_violation=false)
- `notification_sent = true` (normal_callback_fired=true)
- `collector_received = true` (authoritative_cron_collection=true)
기존 fixture 들과 대비: task-2628+1 은 gate=true / sent=false / received=true 로
"gate PASS ≠ fired ≠ received" 분리를 입증하고, 본 fixture 는 정상(all-true) 경로를 입증한다.

## 무결성 원칙
adversarial e2e 원칙(자기 작성물 자가통과 금지)에 따라, 위 기대값은 classifier 실행
결과를 베껴 만든 것이 아니라 스펙 의사코드(§6)로부터 손으로 도출했다. e2e 테스트
(`tests/regression/test_callback_lifecycle_e2e_2631.py`)가 classifier 결선 출력이 이
기대값과 정확히 일치하는지 단언한다. 불일치 시 = L4 wiring DEFECT (패치 금지 · STOP·보고).
