code wiki / (root) / nx_forge_cascade_gate.nx

nx_forge_cascade_gate.nx source

↩ module page · 38 lines · 2536 B

1// nx_forge_cascade_gate.nx -- gate for the cascade consumer + M5 capture. Deterministic, no model. 2// T1 GREEN path: a correct maker candidate -> fca_run GREEN -> the pair EXISTS in the sovereign 3// store (sov_has, keyed by organ) -- NO flat TSV (no-TSV law). 4// T2 NEG cheat-proof: a WRONG maker candidate -> NOT-GREEN AND its pair key is ABSENT (the 5// frontier seat cannot inject an unverified pair). 6// Fixtures reuse the flp_* gate programs (flp_good = correct, flp_broken = a let-reassign BUILD-FAIL). 7// license_tier: ORIGINAL expect_exit: 0 8import "nx_forge_cascade.nx" 9import "nx_gate_verdict.nx" 10 11const CG_STORE: *u8 = "knowledge/store/cascade_pairs" 12 13func main(argc: i64, argv: *i64) -> i64 { 14 std_putln("FORGE-CASCADE-GATE: consumer judges maker candidates; pair captured ONLY on GREEN (sovereign store)" as *u8) 15 let expectp: *u8 = "knowledge/forge/fix/flp_expect.bin" as *u8 16 var pass: i64 = 0 17 // T1 GREEN: correct candidate -> its organ key must EXIST in the sovereign store 18 let r1: i64 = fca_run("nx_fca_t1" as *u8, expectp, "knowledge/forge/fix/flp_good.nx" as *u8) 19 let has1: i64 = sov_has(CG_STORE, "nx_fca_t1" as *u8) 20 if r1 > 0 && has1 == 1 { pass = pass + 1; std_putln("T1 PASS GREEN candidate -> pair in sovereign store" as *u8) } 21 if r1 <= 0 || has1 != 1 { std_puts("T1 FAIL r=" as *u8); std_pdec(r1); std_puts(" has="); std_pdec(has1); std_puts("\n" as *u8) } 22 // T2 NEG cheat-proof: broken candidate must NOT produce a pair key 23 let r2: i64 = fca_run("nx_fca_t2" as *u8, expectp, "knowledge/forge/fix/flp_broken.nx" as *u8) 24 let has2: i64 = sov_has(CG_STORE, "nx_fca_t2" as *u8) 25 if r2 <= 0 && has2 == 0 { pass = pass + 1; std_putln("T2 PASS NEG wrong candidate refused, no pair injected" as *u8) } 26 if r2 > 0 || has2 != 0 { std_puts("T2 FAIL r=" as *u8); std_pdec(r2); std_puts(" has="); std_pdec(has2); std_puts("\n" as *u8) } 27 std_puts("FORGE-CASCADE-GATE pass=" as *u8) 28 std_pdec(pass) 29 // MIGRATED onto nx_gate_verdict by nx_gate_dry_apply (D001, minimal form): every check 30 // row above is untouched, so the PASS/FAIL vector cannot change; only the hand-rolled 31 // verdict emission is replaced by the ONE shared base class. Proven by nx_gate_migrate verify. 32 let ctr__dry: *i64 = gv_ctr() 33 ctr__dry[0] = pass 34 ctr__dry[1] = 2 35 let rc__dry: i64 = gv_verdict("FORGE-CASCADE-GATE" as *u8, ctr__dry, "teeth unchanged; verdict emission migrated onto the shared base class" as *u8) 36 sys_exit(rc__dry) 37 return rc__dry 38}