# snapshot_crossref fixtures — task-2639

회장 D안 (2026-05-23): real_merge_hooks chair_authorization snapshot 교차검증 정책
도입에 따른 7 시나리오 fixture. 각 fixture 는 `evidence.json` (input) +
`expected.json` (validator/real_merge_execute 기대치) + `PROVENANCE.md` 로 구성.

| scenario | 핵심 검증 | result_enum |
| --- | --- | --- |
| fixture_in_snapshot_pass_candidate | snapshot exact match → allow_reason 기록 | REAL_MERGE_DONE |
| fixture_in_snapshot_mismatch_no_op | snapshot 외 forbidden → 차단 | NO_OP_FORBIDDEN_PATH |
| fixture_wrong_head_sha | head_sha 불일치 (재승인 강제) | NO_OP_AUTH_MISMATCH |
| sanctioned_lock_separated | `.tasks/locks/*` 분리 기록 | REAL_MERGE_DONE |
| production_in_snapshot_chair_required | snapshot 내 production 노출 | CHAIR_REQUIRED_PRODUCTION_IN_SNAPSHOT |
| blocking_secret_in_snapshot_chair_required | snapshot 내 secret 토큰 노출 | CHAIR_REQUIRED_BLOCKING_SECRET_IN_SNAPSHOT |
| admin_override_required_chair_required | snapshot+admin_override gate=true | CHAIR_REQUIRED_ADMIN_OVERRIDE_REQUIRED |

## 안전 불변식 (spec §6)
- forbidden prefix 보안 의미 유지 · snapshot exact match 만 허용
- broad prefix allowlist 금지
- live cokacdir / subprocess 실호출 0 — 모든 fixture 는 mock-only
- BLOCKING_SECRET=0 (filename 만 노출 · 실 token 미포함)

## 정본
- spec: memory/specs/system_real_merge_hooks_snapshot_crossref_spec_260523.md (sha256 12b8af00...)
- task: memory/tasks/task-2639.md
