code wiki / (root) / nx_gaterun.nx

nx_gaterun.nx source

↩ module page · 49 lines · 2563 B

1// nx_gaterun.nx -- sovereign build/test ORCHESTRATOR: run N gates through the sovereign toolchain and print ONE clean 2// aggregate (passed/total + the failures), using the REAL exit code per gate (0=GREEN, nonzero=RED) -- not output 3// grepping. Retires the bash `for g in ...; do nx_sov_build_run $g | grep GREEN; done` crutch entirely. Each gate's 4// chatter is muted to /dev/null so the summary is clean; a failure is re-run verbose on its own. Usage: 5// nx_gaterun <gate1> <gate2> ... 6// SOTA bar (2026 CI/parallel-test): run jobs + aggregate report; EXCEED = sovereign + real-exit-code (no false-green) 7// + data-driven gate list. Composes sys_fork/dup3/execve/wait4 (the nx_sov_build_run spine). license_tier: ORIGINAL 8import "nx_syscalls.nx" 9import "nx_gate.nx" 10 11// run "_offc/nx_sov_build_run.elf <gate>" with stdout/stderr muted; return the gate's exit code (128+sig if signalled). 12func gr_run_gate(gate: *u8, devnull: i64) -> i64 { 13 let runner: *u8 = "_offc/nx_sov_build_run.elf" as *u8 14 let av: *i64 = sys_mmap(32) as *i64 15 av[0] = runner as i64; av[1] = gate as i64; av[2] = 0 16 let envp: *i64 = sys_mmap(16) as *i64 17 envp[0] = "PATH=/usr/bin:/bin" as *u8 as i64; envp[1] = 0 18 let pid: i64 = sys_fork() 19 if pid == 0 { 20 sys_dup3(devnull, 1, 0) 21 sys_dup3(devnull, 2, 0) 22 sys_execve(runner, av, envp) 23 sys_exit(127) 24 } 25 let st: *i64 = sys_mmap(16) as *i64 26 sys_wait4(pid, st, 0) 27 let sig: i64 = st[0] & 0x7f 28 if sig != 0 { return 128 + sig } 29 return (st[0] >> 8) & 0xff 30} 31 32func main(argc: i64, argv: *i64) -> i64 { 33 if argc < 2 { gw("usage: nx_gaterun <gate1> <gate2> ...\n" as *u8); sys_exit(2); return 2 } 34 gw("=== nx_gaterun: sovereign gate orchestrator (real exit codes, muted chatter) ===\n" as *u8) 35 let devnull: i64 = sys_openat_wr("/dev/null" as *u8, 0x1a4) 36 var passed: i64=0; var total: i64=0 37 var i: i64=1 38 while i < argc { 39 let gate: *u8 = argv[i] as *u8 40 let rc: i64 = gr_run_gate(gate, devnull) 41 total = total + 1 42 if rc == 0 { passed = passed + 1; gw(" [PASS] " as *u8) } else { gw(" [FAIL rc=" as *u8); gn(rc); gw("] " as *u8) } 43 gw(gate); gw("\n" as *u8) 44 i = i + 1 45 } 46 gw("\n=== nx_gaterun " as *u8); gn(passed); gw("/" as *u8); gn(total); gw(" gates GREEN ===\n" as *u8) 47 if passed == total { gw("GATERUN GREEN -- sovereign orchestration, zero shell\n" as *u8); sys_exit(0); return 0 } 48 gw("GATERUN RED -- re-run a failing gate by name for its detail\n" as *u8); sys_exit(1); return 1 49}