KB-758D
FIX7 Recheck-9 V3 — Manifest Laundering Prevention Report (2026-06-10)
4 min read Revision 1
tool-kiem-thufix7recheck-9packet-v3r9-b6manifest-laundering2026-06-10
FIX7 Recheck-9 V3 — Manifest Laundering Prevention Report (R9-B6.4)
- Date: 2026-06-10 · Verdict: PROVEN —
--emitcannot convert fail-open behavior into a valid manifest
1. How --emit obtains evidence (V3)
cmd_emit → build_manifest → compute_authority now EXECUTES the real CLI six times per emission and observes exits:
- selftest CLI (no args) — observed exit must equal oracle 0 and stdout must contain
ALL PASS: True; - produce CLI over the pinned 10-doc corpus — observed exit must equal oracle 0, stdout must contain
corpus_ok: True, must NOT contain the suppression marker, and must contain the recomputed membership digest; 3.–6. the four negative corpus cases (missing 05 / extra / invalid / absent dir) viarun_negative_tests— each observed exit must equal oracle 4 with suppression markers, zero aggregate-digest leak, no output artifact, and fail-closed in-process state.
2. How the oracle is checked
The expected side is CLI_ORACLE, a STATIC constant of manifest_tool.py derived from the SSOT contract text — not from any SUT run. Regenerating expected outputs, manifest, or HASH_MANIFEST with packet tools cannot alter it; altering manifest_tool.py itself changes a hash-pinned, KB-published, scan-scoped file that Codex independently fetches and reads (backstop documented in README §5e).
3. What happens when SUT behavior violates the oracle
Any violation RAISES SystemExit("ORACLE_VIOLATION …") inside compute_authority, which is reached by BOTH --emit and --verify:
--emitaborts BEFORE writingmanifest.json(build happens before dump) → observed: exit 1, manifest file unchanged;--verifycatches the raise fail-closed →MANIFEST_VERIFY: FAIL (authority recomputation impossible — fail-closed), exit 1.
4. Proof bad behavior cannot be emitted as a valid manifest (observed, raw logs)
- Fail-open mutation + expected-output regeneration on a V3 copy →
manifest_tool.py --emitexit 1 withORACLE_VIOLATION … cli_exit_observed: 0, cli_exit_expected: 4(/private/tmp/r9-repro/v3-failopen-emit.log; also M3 offailopen_regression.py, run live in RERUN gate 8). --emit-hash-manifestalone still succeeds by DESIGN — HASH_MANIFEST pins transport bytes and is never a behavior claim; with a relaundered HASH the full RERUN still fails at gate 6 (V3_BYPASS_RERUN_EXIT=1) because the gates execute behavior, not hashes.- Hand-editing
manifest.jsonto fake observed exits fails--verifydeep-diff (recomputed-vs-disk on every authority field; adversarial T1/T3/T4/T12) and the recomputed invariants (cli_exit_observed==4/==0checked on the FRESH recompute, independent of disk); writing the V2 inferred fieldcli_exit_contractanywhere inmanifest.jsonis itself a hard RERUN gate-11 failure and a--verifyfailure. - Residual honest limit: an attacker who rewrites the verifier code (manifest_tool/RERUN/suites) AND republishes everything self-consistently is outside any packet's self-defense; mitigations: all tool bytes hash-pinned in authority artifacts + HASH_MANIFEST, KB packet root is the single authority surface, and the Codex rerun is itself a fresh-fetch independent execution. This is recorded in README_FOR_CODEX §5(e), not hidden.