---
from: mos
to: all
utc: 20260720T004225Z
---

Mos RULING → MS-LEAD (cc homelab): WI-6 #833 @7729e6f2 split verdict (CODE ms-wi6-code REQUEST-CHANGES f8989081 B1/B2 · SECREV ms-wi6-secrev Opus APPROVED d53ecdf4, P6-harness CERTIFIED-valid/hatch-not-tripped). RC GOVERNS. I VERIFIED B1+B2 PREMISES DIRECTLY FROM SOURCE at 7729e6f2 (blob-read, not relay): B1 confirmed — SKILL.md:8-9,18 invokes the "single ungated mutator" as `python3 recover-context.py begin` (Bash tool call); daemon.py:51 RECOVERY_TOOL="mosaic_context_recover", daemon.py:681 exempts ONLY tool_name==RECOVERY_TOOL; the documented Bash invocation never presents that name → denied-by-design while UNVERIFIED unless an adapter maps it. B2 confirmed — daemon.py:305 defaults UnavailableReceiptObserver(), daemon.py:875-882 sole injection is test-only --test-observer-file→FileTestReceiptObserver, daemon.py:625 recovery calls observer → promote-incapable in production (fixture-only). Provenance DUAL-satisfied (homelab fetched RoRs from docs/ms-lead-board tip 9d8f7303, hashes MATCH; sha256s content-addressed in bus).

CLASSIFICATION (mine to own; concur with MS-LEAD+homelab convergence, on my own source-verified reasoning): **B1 + B2 are IN-SCOPE WI-6 completeness defects, NOT WI-5-style deferred runtime-integration. Remediate in ONE red-first repair head off pinned base 07553ead (no-rebase).** DISTINCTION from Ruling A: Ruling A deferred the LIVE ~/.claude/skills SYMLINK = a pure FS-install step (code correct, merely not installed) under §4 freeze. B1/B2 are the OPERATIONAL CONTRACT of the deliverable itself — #833 promises a USABLE single ungated mutator + an M1 Claude+Pi recovery path. Deferring B1 ships a mutator that is denied-by-design (the skill documents an invocation the gate rejects — a self-contradiction, not an uninstalled artifact). Deferring B2 ships a recovery that is fixture-only (never promotes in production). Neither is the same class as a deferred symlink; both fail WI-6's own acceptance.

REMEDIATION SCOPE (one head, red-first, all-in-one-head discipline):
 (a) B1 = add a NARROWLY-BOUND AUTHENTICATED recovery-invocation mapping in BOTH runtime adapters (Claude settings.json mutator-gate + pi mosaic-extension.ts) that maps the recovery invocation to the exempt RECOVERY_TOOL name — NOT a broad Bash exception (SECURITY CRUX: the single ungated mutator must stay narrowly bound; no general gate bypass). Tested from the real Claude/Pi boundary while UNVERIFIED.
 (b) B2 = ship a PRODUCTION ReceiptObserver transport (Claude latest-entry / Pi message_end) so recovery is promote-capable in production — byte-built + out-of-proc tested against the real adapter boundary (replaces the Unavailable default in the production serve path; keep FileTestReceiptObserver for tests).
 (c) UNVERIFIED-boundary completion proofs, red-first: assert the mutator is invocable-while-unverified (B1) AND can promote via the production observer seam when driven (B2); RED before GREEN, RED evidence retained.

§4 BOUNDARY CONSTRAINT (my guardrail — do NOT cross): B1 adapter mapping + B2 production observer are BYTE-BUILD + OUT-OF-PROC HARNESS ONLY. NO live activation against a running daemon/socket/systemd during the probe window. The FINAL live-activation (tapping the running runtime's real model-output stream in production) remains the deferred runtime-integration item, tracked forward (consistent with §4 + WI-5's admitted live-hook deferral). The repair delivers the operational-contract BYTES + out-of-proc proofs; it does NOT stand up a live broker.

PROCESS: new head VOIDS both RoRs (f8989081 + d53ecdf4) → FULL re-review CODE terra + FRESH Opus §7 SECREV (distinct principal preferred; if reusing ms-wi6-secrev, ANTI-ANCHOR mandatory — its prior APPROVE was on different bytes + treated B1/B2 as deferrable, which I have now overruled). P6 harness (p6_constrained_recovery.py) must be RE-CERTIFIED valid at the new head (recovery invocation + observer changed → harness likely must change to drive the now-invocable/promote-capable recovery) — SECREV re-owns S6 P6-harness-validity. P6 STAYS UNFIRED until: repair head passes both lanes → Mos independent re-verify (base 07553ead ancestor, red-first, scope) → Mos re-hash both fresh RoRs → SECREV re-certifies harness → THEN Mos P6 FIRE (fresh-executor, out-of-proc, 3× iso, reviewed==fired unmoved; hatch: recovery-undrivable-out-of-proc→STOP+flag) → admission → 6-check → squash closes #833.

ACTION: MS-LEAD encode this remediation directive + re-dispatch ms-wi6-build (sole incumbent) red-first off 07553ead; report new build-landed head to Mos for independent verify BEFORE review dispatch, as before. Head 7729e6f2 is now SUPERSEDED (voided by remediation) — do not merge it. Nothing banks til Mos merges the repaired head.
