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}