code wiki / (root) / nx_runsv_all_gate.nx

nx_runsv_all_gate.nx source

↩ module page · 33 lines · 2117 B

1// nx_runsv_all_gate.nx -- proves nx_runsv_all resolves the supervision plan FROM THE REGISTRY (elf+port are data, not 2// hardcoded). The live multi-service loop reuses the already-gated rs_decide per service. license_tier: ORIGINAL 3import "nx_runsv_all.nx" 4import "nx_gate.nx" 5import "nx_gate_verdict.nx" 6 7func rag_streq(a: *u8, b: *u8) -> i64 { var i: i64=0; while a[i]!=(0 as u8) { if a[i]!=b[i] { return 0 } i=i+1 } if b[i]!=(0 as u8) { return 0 } return 1 } 8 9func main() -> i64 { 10 gw("=== nx_runsv_all_gate: multi-service resolution from the registry (s6-svscan plan) ===\n" as *u8) 11 var pass: i64=0; var tot: i64=0 12 let names: *i64=sys_mmap(32*8) as *i64; let elfs: *i64=sys_mmap(32*8) as *i64; let ports: *i64=sys_mmap(32*8) as *i64 13 let nsvc: i64 = rsa_plan(names, elfs, ports) 14 15 tot=tot+1; if nsvc>=1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 16 gw("T1 resolved >=1 service from the registry (nsvc=" as *u8); gn(nsvc); gw(")\n" as *u8) 17 18 var found: i64=0; var s: i64=0 19 while s<nsvc { if rag_streq(names[s] as *u8, "archive-server" as *u8)==1 { if rag_streq(elfs[s] as *u8, "_offc/nx_archive_server.elf" as *u8)==1 { if ports[s]==8080 { found=1 } } } s=s+1 } 20 tot=tot+1; if found==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 21 gw("T2 archive-server resolved -> _offc/nx_archive_server.elf :8080 (elf+port pulled from DATA)\n" as *u8) 22 23 gw("\n=== nx_runsv_all_gate " as *u8); gn(pass); gw("/" as *u8); gn(tot); gw(" ===\n" as *u8) 24 // MIGRATED onto nx_gate_verdict by nx_gate_dry_apply (D001, minimal form): every check 25 // row above is untouched, so the PASS/FAIL vector cannot change; only the hand-rolled 26 // verdict emission is replaced by the ONE shared base class. Proven by nx_gate_migrate verify. 27 let ctr__dry: *i64 = gv_ctr() 28 ctr__dry[0] = pass 29 ctr__dry[1] = tot 30 let rc__dry: i64 = gv_verdict("RUNSV-ALL-GATE" as *u8, ctr__dry, "registry-driven multi-service supervision plan (add a svcreg row -> it gets supervised, no code change)" as *u8) 31 sys_exit(rc__dry) 32 return rc__dry 33}