code wiki / _hdl_build / nx_conductor_registry_gate.nx

nx_conductor_registry_gate.nx source

↩ module page · 57 lines · 4172 B

1import "nx_gate_gn.nx" 2import "nx_gate_base.nx" 3// nx_conductor_registry_gate.nx -- proves the conductor's PERSISTENT pulse registry governs recurring execution. 4// T1 REGISTERED : after seeding, the training pulse is in the registry; an unknown organ is not. 5// T2 GOVERNED FIRE: a registered + admitted pulse fires GREEN (exit 0) through the conductor. 6// T3 UNREGISTERED : an organ not in the registry is REFUSED (-2) -- can't fire even if it would admit. 7// T4 NEVER-BRICK : a registered pulse marked hardware-touching without a proof still fails admission (-1) (#26). 8// T5 PERSISTED : the registry is a committed sovereign seg_store -> re-read returns the same (on-disk). 9// T6 NEG-CONTROL : registered vs unregistered discriminates (teeth). 10// expect_exit: 0 license_tier: ORIGINAL 11import "nx_conductor_registry.nx" 12import "nx_syscalls.nx" 13 14func grow(name: *u8, ok: i64) -> i64 { if ok==1 { gw(" PASS " as *u8) } else { gw(" FAIL " as *u8) } gw(name); gw(" 15" as *u8); return ok } 16 17func main() -> i64 { 18 gw("=== nx_conductor_registry_gate: does the conductor PERSIST + gate governed pulses? ===\n" as *u8) 19 var pass: i64=0; var total: i64=0 20 cr_seed() 21 gw(" seeded the governed-pulse registry (sovereign seg_store)\n" as *u8) 22 23 // T1 REGISTERED 24 let reg: i64 = cr_is_governed("nx_team_train_gate\x00" as *u8) 25 let regr: i64 = cr_is_governed("nx_sovaudit_ratchet_gate\x00" as *u8) 26 let unreg: i64 = cr_is_governed("nx_unregistered_pulse_xyz\x00" as *u8) 27 total=total+1; if reg==1 { if regr==1 { if unreg==0 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } } else { gw(" [FAIL] " as *u8) } } else { gw(" [FAIL] " as *u8) } 28 gw("T1 REGISTERED: training pulse(\x00" as *u8); gn(reg); gw(") + debt-ratchet pulse(\x00" as *u8); gn(regr); gw(") governed, unknown not(\x00" as *u8); gn(unreg); gw(")\n" as *u8) 29 30 // T2 GOVERNED FIRE: registered + admitted (owner engineer, gate GREEN, software) -> fires 0 31 let f1: i64 = cr_conductor_fire("nx_team_train_gate\x00" as *u8, "engineer\x00" as *u8, 0, 0) 32 total=total+1; if f1==0 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 33 gw("T2 GOVERNED FIRE: registered+admitted pulse fires GREEN(\x00" as *u8); gn(f1); gw(") through the conductor\n" as *u8) 34 35 // T3 UNREGISTERED -> refused (-2), no fire 36 let f2: i64 = cr_conductor_fire("nx_unregistered_pulse_xyz\x00" as *u8, "engineer\x00" as *u8, 0, 0) 37 total=total+1; if f2==(0-2) { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 38 gw("T3 UNREGISTERED: organ not in registry REFUSED(\x00" as *u8); gn(f2); gw(") = can't fire ad-hoc\n" as *u8) 39 40 // T4 NEVER-BRICK: registered pulse, hardware-touching, no proof -> admission fails (-1) (#26 dominates registration) 41 let f3: i64 = cr_conductor_fire("nx_team_train_gate\x00" as *u8, "engineer\x00" as *u8, 1, 0) 42 total=total+1; if f3==(0-1) { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 43 gw("T4 NEVER-BRICK: registered but hw-unproven -> admission fails(\x00" as *u8); gn(f3); gw(") even though registered (#26)\n" as *u8) 44 45 // T5 PERSISTED: re-read the committed store 46 let reg2: i64 = cr_is_governed("nx_team_train_gate\x00" as *u8) 47 total=total+1; if reg2==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 48 gw("T5 PERSISTED: re-read the on-disk seg_store -> still governed(\x00" as *u8); gn(reg2); gw(")\n" as *u8) 49 50 // T6 NEG-CONTROL 51 total=total+1; if reg==1 { if unreg==0 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } } else { gw(" [FAIL] " as *u8) } 52 gw("T6 NEG-CONTROL: the registry discriminates registered from unregistered (teeth)\n" as *u8) 53 54 gw("\n=== nx_conductor_registry_gate \x00" as *u8); gn(pass); gw("/\x00" as *u8); gn(total) 55 if pass==total { gw(" GREEN -- the conductor PERSISTS its governed pulses (sovereign seg_store) + fires only registered+admitted ones. The training pulse is now declared IN the conductor, like the publisher's ledger governs shipping.\n" as *u8); sys_exit(0); return 0 } 56 gw(" RED\n" as *u8); sys_exit(1); return 1 57}