KB-6006

FIX7 Authority-Seal Supplemental Independent Adversarial Probes (TKT v0.2)

6 min read Revision 1
tool-kiem-thufix7authority-sealprobestkt-v022026-06-11

#!/usr/bin/env python3

============================================================================

FIX7 AUTHORITY-SEAL -- SUPPLEMENTAL INDEPENDENT ADVERSARIAL PROBES

(this lane's own authorship; does NOT reuse codex_probes.py cases)

Covers macro probe-list items that the shipped codex_probes.py does not

exercise: empty hash, revision=-1, byte-count<->hash independence on P7

verify, candidate/local-only class fed into an AUTHORITY slot, manifest extra

authority field, prose-only pin. Each must fail closed. Exit 0 iff every probe

is REJECTED (or the verify-probe returns False, i.e. tamper detected).

============================================================================

import sys import authority_seal_encoder as E

results = []

def expect_reject(pid, desc, status, fn): try: out = fn() results.append((pid, desc, "ACCEPTED(FAIL-OPEN)", repr(out)[:24])) except E.Reject as e: ok = (e.status == status) results.append((pid, desc, "REJECTED" if ok else f"REJECTED(wrong:{e.status})", e.status)) except Exception as e: results.append((pid, desc, "REJECTED(other)", type(e).name))

def expect_false(pid, desc, fn): """For verify_pin tamper checks: a correct gate returns False (tamper seen).""" try: v = fn() results.append((pid, desc, "REJECTED" if v is False else "ACCEPTED(FAIL-OPEN)", str(v))) except Exception as e: results.append((pid, desc, "REJECTED(other)", type(e).name))

def _set(pairs, field, value): return [(k, value if k == field else v) for k, v in pairs]

N7 = E.encode_node("N7", E.fixture_n7_pairs()) N8 = E.encode_node("N8", E.fixture_n8_pairs(N7)) P7 = E.seal_p7(E.fixture_p7_pairs(N7, N8))

SP1 empty hash (macro probe #2)

expect_reject("SP1", "N7 canonicalizer_sha256='' (empty hash)", "SEAL_FIELD_EMPTY", lambda: E.encode_node("N7", _set(E.fixture_n7_pairs(), "canonicalizer_sha256", "")))

SP2 revision = -1 on P7 (macro probe #7)

expect_reject("SP2", "P7 pinned_canonicalizer_revision='-1'", "SEAL_FIELD_BAD_INT", lambda: E.encode_node("P7", _set(E.fixture_p7_pairs(N7, N8), "pinned_canonicalizer_revision", "-1")))

SP3 byte count correct but hash wrong -> P7 verify must fail (macro probe #9)

expect_false("SP3", "P7 verify: byte count ok, canonicalizer hash wrong", lambda: E.verify_pin(P7, _set(E.fixture_p7_pairs(N7, N8), "pinned_canonicalizer_sha256", "0"*64)))

SP4 hash correct but byte count wrong -> P7 verify must fail (macro probe #10)

expect_false("SP4", "P7 verify: canonicalizer hash ok, byte count wrong", lambda: E.verify_pin(P7, _set(E.fixture_p7_pairs(N7, N8), "pinned_canonicalizer_utf8_bytes", "99999")))

SP5 candidate (ENGINEERING_VERIFIED_CANDIDATE) class fed into AUTHORITY slot of real N7

(macro probe #14: candidate evidence claimed as authority) -> FORBIDDEN_CLASS

def sp5(): prov = {} for f in ("active_corpus_sha256","membership_sha256","canonicalizer_sha256", "marker_fence_registry_sha256","superseded_boundary_sha256","guard_set_sha256"): prov[f] = "ENGINEERING_VERIFIED_CANDIDATE" for f in ("approval_event_id","approver_identity","approval_event_timestamp","owner_blueprint_decision"): prov[f] = "ENGINEERING_VERIFIED_CANDIDATE" # <-- WRONG: candidate is not authority return E.encode_real_n7(E.fixture_n7_pairs(), prov, real_n6_available=True) expect_reject("SP5", "candidate class in AUTHORITY slot of real N7", "SEAL_PROVENANCE_FORBIDDEN_CLASS", sp5)

SP6 valid candidate corpus + authority, but no real N6 -> still blocked

(macro probe #15/#16: rehearsal/local-only cannot self-promote)

def sp6(): prov = {} for f in ("active_corpus_sha256","membership_sha256","canonicalizer_sha256", "marker_fence_registry_sha256","superseded_boundary_sha256","guard_set_sha256"): prov[f] = "ENGINEERING_VERIFIED_CANDIDATE" for f in ("approval_event_id","approver_identity","approval_event_timestamp","owner_blueprint_decision"): prov[f] = "AUTHORITY_INPUT" return E.encode_real_n7(E.fixture_n7_pairs(), prov) # real_n6_available defaults False expect_reject("SP6", "valid classes, no real N6 -> true blocker", "SEAL_REAL_N6_NOT_AVAILABLE", sp6)

SP7 N8 real path requires CODEX_AUTHORED/AUTHORITY signer; candidate signer -> FORBIDDEN

def sp7(): prov = {f: "ENGINEERING_VERIFIED_CANDIDATE" for f in ("sealed_by","sealed_at","parent_checkpoint","report_documents_digest")} return E.encode_real_n8(E.fixture_n8_pairs(N7), prov, real_upstream=True) expect_reject("SP7", "candidate class as N8 signer", "SEAL_PROVENANCE_FORBIDDEN_CLASS", sp7)

SP8 manifest extra authority field (macro probe #28)

expect_reject("SP8", "N7 + extra rogue authority field", "SEAL_INPUT_EXTRA", lambda: E.encode_node("N7", E.fixture_n7_pairs() + [("rogue_authority_grant","ALL")]))

SP9 prose-only pin (seal claim with no computed digest) (macro probe #29)

expect_reject("SP9", "P7 prose-only pin (no compute)", "SEAL_PROSE_ONLY_PIN_REJECTED", lambda: E.seal_p7(E.fixture_p7_pairs(N7, N8), prose_only=True))

SP10 duplicate report doc id with different revision (macro probe #12/#13)

expect_reject("SP10", "report set: same doc id, different rev", "SEAL_REPORT_SET_DUPLICATE", lambda: E.report_documents_digest([("doc-a.md","1"), ("doc-a.md","2")]))

caught = sum(1 for ,,v,_ in results if v == "REJECTED") for pid, desc, verdict, detail in results: print(f" [{verdict:24}] {pid:<5} {desc} -> {detail}") print(f"SUPPLEMENTAL-PROBES: {caught}/{len(results)} fail-closed") sys.exit(0 if caught == len(results) else 1)

Back to Knowledge Hub knowledge/dev/reports/architecture/fix7-authority-n-node-tkt-v02-alignment-2026-06-11/sp_align_probes.py