code wiki / (root) / nx_provclass_gate.nx

nx_provclass_gate.nx

buildroot/runtime/nx_provclass_gate.nx

7139 B149 linesdepth 3pulls 4 transitivereach 0 importersview sourcekind gate/proof
docsdependenciesstructsconstsfunctions

about

nx_provclass_gate.nx -- proves the provenance-class ruler tightens without breaking anything. THE RISK THIS HOLDS DOWN. nx_provclass_lib adds a SECOND admission axis beside nx_refcorpus's payload wall. A second wall in front of a live journal is exactly the change that silently refuses work that used to pass -- and the live journal already carries FIVE licence vocabularies nobody declared (ORIGINAL, sovereign, royalty-free, CC-BY-mixed, REFERENCE_MEASURED). So the load-bearing tooth here is not "does the classifier work"; it is T2: EVERY DISTINCT LICENCE TAG IN THE LIVE JOURNAL STILL CLASSIFIES. That is a POPULATION check over the real file, not a hand-listed sample, because a name list of tags would go stale the same way every name list in this estate has. THE DISCRIMINATING PAIR is T5/T6: the SAME tag `unverified` must REFUSE at n=8 and ADMIT at n=32. n=8 clears nx_refcorpus's global RC_KMIN, so if the raised per-class floor were not actually binding, T5 would pass anyway and the whole class distinction would be decoration. One tag, two sample sizes, opposite verdicts -- that is the only shape that proves the floor binds. T9 is the STRICTLY-ADDITIVE proof: no declared class may carry a floor BELOW RC_KMIN=8. This lib is allowed to tighten admission and never to loosen it, and a conf edit is exactly how someone would loosen it by accident. BITE NOTE 2026-09-03: on its FIRST run (laptop, no journal present) this gate went 15/16 RED on `journal-population-was-actually-read` while `every-live-journal-licence-tag-classifies` scored a VACUOUS actual=0 expected=0 PASS. The anti-vacuity tooth caught its own author on the first run, which is exactly the case it exists for. license_tier: ORIGINAL expect_exit: 0

dependencies 3 imports · 0 importers

nx_syscalls.nx nx_gate_verdict.nx nx_provclass_lib.nx nx_provclass_gate.nx

imports: nx_syscalls.nxnx_gate_verdict.nxnx_provclass_lib.nx

imported by: nobody (leaf or entry point)

call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown

main gv_ctr sys_mmap nxa_die sys_write sys_exit nxa_lock_take nxa_lock_addr sys_write ↻ nxa_lock_give nxa_lock_addr ↻ nxa_report_overrun sys_write ↻ nxa_dump_printable sys_write ↻ nxa_dump_sizes sys_write ↻ gv_head gv_puts sys_write ↻ pc_load sys_mmap ↻ sys_read_file sys_openat_rd sys_lseek sys_mmap ↻ sys_read sys_munmap sys_close pc_parse pc_eol pc_skip_sp pc_is_space pc_tok_end pc_is_space ↻ pc_tok_is pc_tok_num gv_check gv_puts ↻ pc_conf_which

structs

none

consts

30const PG_JRNL: *u8 = "knowledge/status/refcorpus.jrnl"
31const PG_JRNL_ALT: *u8 = "buildroot/knowledge/status/refcorpus.jrnl"
32const PG_TAB: i64 = 9
33const PG_NL: i64 = 10
34const PG_LIC_FIELD: i64 = 7
35const PG_RC_KMIN: i64 = 8
36const PG_TAGBUF: i64 = 128

functions

38func pg_eol(buf: *u8, n: i64, from: i64) -> i64
called by 1: main
49func pg_field(buf: *u8, s: i64, e: i64, want: i64, out: *u8) -> i64
called by 1: main
74func main() -> i64