[web1:mos-claude -> web1:mosaic-100 / from-homelab]
# P5 FIRE — AUTHORITY CLASSIFICATION — WI-5 #832 @ e196abfd

**From:** Mos (main orchestrator, fire-classification authority)
**When:** 20260719T230540Z
**Milestone:** 188 WI-5 (Receipt-challenge protocol), ACs T25/T26/T28/T29.
**Reviewed pin (held UNMOVED = reviewed==fired):** `e196abfd710344792fa8fa51380ae1b71b875218`
**Base (unmoved):** `e522b22fa4492861b0fcd4a956a8795c54eb9bfe`

## Fire discipline (all satisfied)
- **Fresh-executor:** fresh detached worktree at the pin (`/tmp/p5-fire-e196abfd`), NOT the builder pane.
- **Out-of-process:** `python3 -I -S -B docs/compaction-refresh/probes/p5_receipt_replay.py` (default --runs=3; main() rejects any other count).
- **Reviewed==fired:** probe sha256 `e914183eb8b9cafe622f5e118a8af2632691db7cd507db0459ca30a365f6cc65`; origin feat/832 tip == e196abfd BEFORE and AFTER the run (fail-closed recheck passed).
- **3× isolation** (distinct tempdir + teardown per run) + unique-challenge cross-check.
- **§4 freeze respected:** private Unix socket + private tempdir; no live broker / systemd / runtime-hook wiring.

## Result: PASS (PY_EXIT=0), classified NOT Case-C
Non-vacuous — `expect_refused` raises AssertionError on any non-matching reply, so exit-0 means every assertion HELD:
- Drives the SHIPPED lease-broker daemon over a real AF_UNIX socket; imports shipped `fragments.build_payload` (DRIVER, not reimplementation).
- **T25/T28 consume-before-promote ORDERING:** promote-before-observe → refused `INVALID_LEASE_TRANSITION`; positive path PENDING_VERIFICATION → observe (evidence durably committed) → PENDING_PROMOTION → promote → VERIFIED.
- **Consumed-cannot-repromote:** re-presented consumed challenge → `observe_receipt` refused `RECEIPT_REPLAY` + `promote_lease` refused.
- 3 isolated shipped-daemon runs, unique challenges.

## Admission
RoRs 2-of-2 GO (Mos re-hashed local + board-mirror = MATCH): CODE ms-wi5-code(terra) APPROVED sha256 `2a1a573f38cfeb1290ffc453509e3eb9f42441d15128c5ae7e49141f3f999d3f`; SECREV ms-wi5-secrev2(Opus, anti-anchored, self-voided prior) APPROVED sha256 `66e976c66378558cec938a2c6ff8fb9d5822f3c4f0253b2223d1c6355ca0a5e8`. Distinct principals, author≠reviewer (Gate 16), exact-head pin, D1-D4 + S1-S6 all Y, fail-open CLOSED all 3 refusal reasons, D4 restart-durability resolved (Cases A/B/C PASS). + **P5 FIRE PASS** → **WI-5 #832 ADMITTED**.
Non-blocking follow-ups (do NOT gate): N1 revoke-before-validation hardening, N2 T-C observer-adapter residual per SPEC-v5 R6, N3 camelCase style.

## VERBATIM FIRE LOG
```
=== P5 FIRE @ e196abfd (fresh-executor, out-of-proc, --runs=3 default) ===
fire-HEAD=e196abfd710344792fa8fa51380ae1b71b875218
probe-sha256=e914183eb8b9cafe622f5e118a8af2632691db7cd507db0459ca30a365f6cc65
--- probe stdout/stderr ---
P5 receipt replay probe PASS: 3 isolated shipped-daemon runs
--- PY_EXIT=0 ---
```

## Next (Mos-driven completion chain)
1. MS-LEAD opens WI-5 PR (mosaicstack/stack, feat/832-receipt-challenge-protocol → main, body `closes #832`, head PINNED e196abfd no-rebase) so Gate-2 CI (real Woodpecker) runs.
2. Mos INDEPENDENT 6-check (state·CI-terminal-green·mergeable·reviewed==CI==head==e196abfd full-40·closes#832·RoR-both-verdicts-author≠rev) + re-run queue-guard.
3. Mos squash-merge `closes #832` + branch-delete + confirm #832 CLOSED (Gate 13/16) → WI-6 #833.
Nothing banks to main until Mos merges.
