FIX7 N-Number Envelope Conformance Probe
#!/usr/bin/env python3
Executable closure proof for CODEX-NNODE-ACTIVE-CONFLICT: the live N7 envelope
must NOT label membership as N1, and the canonical checker must agree.
import sys import n_node_checker as C env = open("n7_envelope.md", encoding="utf-8").read() res = [] def chk(name, ok): res.append((name, ok))
1. stale binding label absent
chk("envelope no longer labels 'membership_sha256 (N1)'", "membership_sha256 (N1)" not in env)
2. membership now annotated un-numbered
chk("envelope annotates membership as un-numbered", "membership_sha256 (membership — un-numbered)" in env)
3. canonical checker: membership is canonical when named 'membership' (un-numbered)
try: chk("checker accepts membership named 'membership'", C.assert_node("membership", "active_corpus_membership_sha256", "active_corpus_membership_sha256", True) == "membership") except C.NodeReject: chk("checker accepts membership named 'membership'", False)
4. checker REJECTS labeling membership digest as N1 outside alias context (R1/R4)
ok, rule = C._expect_reject("R4_VALUE_WRONG_NODE", lambda: C.assert_node("N1", claimed_value="active_corpus_membership_sha256")) chk("checker rejects membership-value-under-N1 (R4)", ok)
5. checker canonical: N1 is per-doc normalized content (NOT membership)
chk("checker canonical N1 = normalized_active_content_sha256[d]", C.CANONICAL["N1"]["name"] == "normalized_active_content_sha256[d]")
6. N2..N6 envelope labels still canonical
for n,lab in [("N2","canonicalizer_sha256 (N2)"),("N3","marker_fence_registry_sha256 (N3)"), ("N6","active_corpus_sha256 (N6)")]: chk(f"envelope label {lab} canonical", lab in env) npass = sum(1 for _,o in res if o) for n,o in res: print(f" [{'PASS' if o else 'FAIL'}] {n}") print(f"ENVELOPE-CONFORMANCE: {npass}/{len(res)} PASS") sys.exit(0 if all(o for _,o in res) else 1)