FIX7 Real-N6 packet — README_FOR_OWNER_AND_CODEX.md
FIX7 Real-N6 Provenance Packet — README for Owner & Codex (2026-06-11)
- Host: T1 / Claude Code. Codex consulted: NO. Owner approval requested: NO.
- Production / PG / Directus / registry mutation: NO. Real N7/N8/P7 seal: NOT created.
- Authority of this packet: engineering evidence only — provisional-non-authority. It seals, approves, ratifies, and promotes nothing.
- Final status:
FIX7_REAL_N6_ENGINEERING_CANDIDATE_READY_UNDER_TKT_V02.
rev2 (2026-06-11) — Codex duplicate fail-open repair. Codex's independent review found two fail-opens: a duplicate declared corpus member (
CODEX-N6-DUP-DECLARED) and a duplicate HASH_MANIFEST path record (CODEX-N6-DUP-MANIFEST) were each accepted and certified. The verifier (real_n6_provenance_verifier.py, now sha922e5246…) now fails closed on both before any set conversion / dict insertion, plus on malformed manifest lines and non-64-lowercase-hex hashes — and emits no certificate. Selftest 14→19; adversarial probes 27→31 (P25–P28 reproduce the exact Codex inputs). N6 remains the same engineering candidate; it is not Codex-ratified.
1. What this packet proves (and what it deliberately does not)
It answers one question from existing governed evidence:
Can a real, non-rehearsal N6 =
active_corpus_sha256be materialized as anENGINEERING_VERIFIED_CANDIDATE— without inventing anything, without owner/Codex authority, and without claiming a seal?
Answer: YES (engineering half). The candidate digest is:
N6 active_corpus_sha256 = d777e87c73d3b62d36789d9343f346102e98dbf301f2c93f7608470b876b258c
It is computed fresh from the governed KB corpus (the 10 frozen active-authority blueprint docs), using the governed canonicalizer SSOT algorithm, and reproduces byte-for-byte the value already on record in the FIX7 Recheck-9 Packet V2 produce evidence.
It is NOT, and this packet never claims it is:
- an official seal, an
OFFICIAL_PIN, or owner/Codex-ratified; - an N7 envelope, N8 detached seal, or P7 pin (none are created — all remain blocked);
- a statement that FIX7 implementation is unblocked.
The standing authority blocker SEAL_REAL_N6_NOT_AVAILABLE is split: the engineering half
(materialize + verify a real corpus candidate) is now closed; the authority half (owner/Codex
approval inputs + ratification/promotion) remains open by design (anti-laundering).
2. Provenance class
| Field | Value |
|---|---|
| Node | N6 (active_corpus_sha256), load-bearing, dep N1 (per the reconciliation table, engineering convention only) |
| Provenance class | ENGINEERING_VERIFIED_CANDIDATE |
| Source | GOVERNED_KB (10 blueprint docs, byte-exact, HASH_MANIFEST-pinned) |
| Algorithm | canonicalizer SSOT .py sha256 d9caa9fe…26f3e5 (materialized from .md 49c386a9…b734d0) |
| Membership pin | f2bda8…fe251 (frozen; reproduced) |
| Authority | NOT_A_SEAL; is_official_pin=false; creates_n7_n8_p7=false; promotion requires owner + Codex |
The N-number table from fix7-n-node-numbering-reconciliation-under-tkt-v02-2026-06-11.json is consumed
as a temporary engineering convention for this macro only — not owner/Codex ratification, not a seal,
not production approval.
3. How to reproduce (fresh, from KB, no local workbench)
# 0. reconstruct governed evidence from the KB (read-only; needs agent-data MCP creds)
python3 kb_fetch_reconstruct.py _recon
# 1. run the canonical gate sequence
RECON=_recon bash commands.sh # -> OVERALL: PASS (5/5 gates)
# or, strict end-to-end from KB with every exit/diff/hash enforced:
bash RERUN.sh # -> RERUN_RESULT: PASS
kb_fetch_reconstruct.py fetches the FIX7 Recheck-9 Packet V2 tree + the 10 active corpus docs from
their canonical blueprint document ids, verifies them bidirectionally against that packet's
HASH_MANIFEST.txt, and fetches the governed authority_seal_encoder.py (pinned 13344f92…957144b8).
No corpus copy is duplicated into this packet — one authority, one nature.
4. Gates (all re-executed live; none trusted from prose)
| Gate | Tool | Result |
|---|---|---|
| Verifier selftest | real_n6_provenance_verifier.py --selftest |
19/19 fail-closed gates, exit 0 |
| Real N6 verify | --verify … --emit-cert |
exit 0; d777e87c…, class ENGINEERING_VERIFIED_CANDIDATE, NOT_A_SEAL |
| Adversarial probes | n6_adversarial_probes.py |
31/31 fail-closed; no PASS / no seal / no official digest emitted |
| Authority firewall | authority_firewall.py |
8/8 rules hold |
| Certificate binding | verify_certificate() |
intact; tampered cert → False |
Adversarial probe coverage (Codex-style, bad inputs outside the happy path)
rehearsal-as-real · fixture-corpus-into-real-N7 · local-only · prose-only/empty · missing member · duplicate (case-variant, injected listing) · duplicate doc-id (report set) · path traversal · path alias · stale hash · byte-count-ok-hash-wrong · hash-ok-bytecount-wrong (P7 pin) · manifest-missing-member · empty manifest · packet_tree mismatch · provenance missing/REHEARSAL/FORBIDDEN · OFFICIAL_PIN-without-authority · certificate tamper · report-contradicts-verifier · real N7 blocked · real N8/P7 blocked · REAL_RUN/QT001/permit out-of-lane blocked · duplicate-declared-member (P25, Codex) · duplicate-manifest-path (P26, Codex) · malformed-manifest-line (P27) · non-hex-manifest-hash (P28).
5. The real-N6 verifier — fail-closed gate order
real_n6_provenance_verifier.py :: verify_real_n6() rejects (exit 5, no certificate) on any of:
source not GOVERNED_KB · provenance missing/unknown/REHEARSAL/FORBIDDEN/OFFICIAL_PIN-without-authority ·
algorithm file missing or hash ≠ d9caa9fe… · SSOT .md hash ≠ 49c386a9… · HASH_MANIFEST missing ·
corpus dir missing/empty(prose-only) · member missing/extra/duplicate · path traversal/alias ·
manifest missing a member · corpus byte/hash mismatch · produce corpus_ok=False or
membership_frozen_ok=False · membership ≠ frozen pin · value not 64-hex · value is a rehearsal
fixture sentinel · value ≠ on-record candidate. It emits a certificate only when every gate passes.
6. What remains (authority-only — NOT for T1, NOT in this macro)
To turn this ENGINEERING_VERIFIED_CANDIDATE into a real sealed N6 → N7 → N8 → P7:
- Owner/Codex ratify the N-number reconciliation table (currently engineering convention only).
- Owner/Codex supply the authority inputs (approval_event_id, approver_identity, approval timestamp, owner blueprint decision; Codex signer for N8) — these do not exist in this lane.
- Codex runs the real seal path with
real_n6_available=Trueconsuming this candidate, then promotes it toOFFICIAL_PIN.
Until then the encoder’s SEAL_REAL_N6_NOT_AVAILABLE / provenance gates keep every seal blocked, as
demonstrated live by probes P22/P23 and firewall F3.
7. File map
real_n6_provenance_verifier.py— the fail-closed verifier + certificate emitter (rev2, selftest 19/19)n6_adversarial_probes.py— 31 Codex-style adversarial probes (all fail-closed; P25–P28 = Codex dup/manifest regression)authority_firewall.py— 8 executable firewall rules (engineering ≠ authority)real-n6-provenance-certificate.json— the emittedENGINEERING_VERIFIED_CANDIDATEcertificatekb_fetch_reconstruct.py— KB fresh-fetch reconstruction of governed evidencecommands.sh/exit_codes.json/RERUN.sh— canonical run + strict from-KB rerunHASH_MANIFEST.txt/packet_tree.sha256/manifest.json— integrity surfaceRECONSTRUCT.md— reconstruction instructionslogs/— captured stdout of each gate (regenerable; not trusted as proof)