code wiki / _hdl_build / nx_plan_run_gate.nx

nx_plan_run_gate.nx source

↩ module page · 140 lines · 5711 B

1// nx_plan_run_gate.nx -- gate for the sovereign plan executor (workflows-as-data). 2// MIGRATED 2026-07-18 onto nx_gate_verdict (D001 exemplar #2). Teeth unchanged: 3// T1 seq-order execution; T2 pinned-args override; T3 failing step stops fail-closed; 4// T4 unknown tool refused; T5 unseeded plan fail-closed. 5// license_tier: ORIGINAL No hw writes (Rule 26). expect_exit: 0 6import "nx_store_seed_lib.nx" 7import "nx_seg_store.nx" 8import "nx_deploy_lib.nx" 9import "nx_gate_verdict.nx" 10import "nx_syscalls.nx" 11 12const PG_CAP: i64 = 262144 13const PG_NL: i64 = 10 14const PG_PFX: i64 = 128 15const PG_MODE: i64 = 0x1a4 16 17func pg_slen(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n } 18func pg_has(q: *u8, n: i64, s: *u8) -> i64 { 19 let sn: i64 = pg_slen(s) 20 if sn == 0 { return 1 } 21 var i: i64 = 0 22 while i + sn <= n { 23 var hit: i64 = 1 24 var j: i64 = 0 25 while j < sn { if q[i+j] != s[j] { hit = 0; j = sn } else { j = j + 1 } } 26 if hit == 1 { return 1 } 27 i = i + 1 28 } 29 return 0 30} 31func pg_lines(q: *u8, n: i64) -> i64 { var k: i64 = 0; var i: i64 = 0; while i < n { if q[i] == (PG_NL as u8) { k = k + 1 } i = i + 1 } return k } 32func pg_wfile(path: *u8, buf: *u8, n: i64) -> i64 { 33 let fd: i64 = sys_openat_wr(path, PG_MODE) 34 if fd < 0 { return 0 - 1 } 35 sys_write(fd, buf, n) 36 sys_close(fd) 37 return 0 38} 39func pg_mkpfx(dst: *u8, stem: *u8, epoch: i64) -> i64 { 40 var o: i64 = ss_cat(dst, 0, stem) 41 o = ss_catn(dst, o, epoch) 42 o = ss_cat(dst, o, "-" as *u8) 43 dst[o] = 0 as u8 44 return o 45} 46 47func main() -> i64 { 48 let ctr: *i64 = gv_ctr() 49 gv_head("nx_plan_run gate -- sovereign plan executor (workflows-as-data, fail-closed)" as *u8) 50 let elf: *u8 = "/tmp/nx_plan_run.sov.elf" as *u8 51 let alp: *u8 = "/tmp/prg_allow.conf" as *u8 52 let outf: *u8 = "/tmp/prg_run.out" as *u8 53 let epoch: i64 = sys_now_realtime_sec() 54 55 let ab: *u8 = sys_mmap(PG_CAP) 56 var ao: i64 = 0 57 ao = ss_cat(ab, ao, "echoer\x09/tmp/nx_plan_witness.sov.elf\x09GREEN\n" as *u8) 58 ao = ss_cat(ab, ao, "pinecho\x09/tmp/nx_plan_witness.sov.elf\x09GREEN\x09alpha beta\n" as *u8) 59 ao = ss_cat(ab, ao, "deadtool\x09/tmp/prg_missing.elf\x09GREEN\n" as *u8) 60 if pg_wfile(alp, ab, ao) < 0 { gv_puts("FIXTURE-FAIL allowlist\n" as *u8); sys_exit(1); return 1 } 61 62 let av: *i64 = sys_mmap(8*8) as *i64 63 let dump: *u8 = sys_mmap(PG_CAP) 64 65 // T1+T2: out-of-order 3-step plan with pinned override on step 20 66 let p1: *u8 = sys_mmap(PG_PFX) 67 pg_mkpfx(p1, "/tmp/prgp" as *u8, epoch) 68 let r1x: *u8 = sys_mmap(PG_PFX) 69 pg_mkpfx(r1x, "/tmp/prgr" as *u8, epoch) 70 let pb: *u8 = sys_mmap(PG_CAP) 71 var po: i64 = 0 72 po = ss_cat(pb, po, "30\x09echoer\x09charlie\n" as *u8) 73 po = ss_cat(pb, po, "10\x09echoer\x09alpha-first\n" as *u8) 74 po = ss_cat(pb, po, "20\x09pinecho\x09ignored-plan-arg\n" as *u8) 75 sts_seed(p1, pb, po) 76 av[0] = "t1" as *u8 as i64 77 av[1] = alp as i64 78 av[2] = p1 as i64 79 av[3] = r1x as i64 80 let rc1: i64 = dep_run_capture(elf, av, 4, outf) 81 var dn: i64 = sts_load(r1x, dump, PG_CAP) 82 if dn < 0 { dn = 0 } 83 var t1: i64 = 0 84 if rc1 == 0 { if pg_lines(dump, dn) == 3 { if pg_has(dump, dn, "alpha-first" as *u8) == 1 { if pg_has(dump, dn, "charlie" as *u8) == 1 { t1 = 1 } } } } 85 gv_check("T1 3 steps run in seq order, all rc=0, args echoed into results" as *u8, t1, ctr) 86 var t2: i64 = 0 87 if pg_has(dump, dn, "alpha beta" as *u8) == 1 { if pg_has(dump, dn, "ignored-plan-arg" as *u8) == 0 { t2 = 1 } } 88 gv_check("T2 pinned args override (alpha beta present, plan arg IGNORED)" as *u8, t2, ctr) 89 90 // T3: failing step stops the plan 91 let p2: *u8 = sys_mmap(PG_PFX) 92 pg_mkpfx(p2, "/tmp/prgq" as *u8, epoch) 93 let r2x: *u8 = sys_mmap(PG_PFX) 94 pg_mkpfx(r2x, "/tmp/prgs" as *u8, epoch) 95 po = 0 96 po = ss_cat(pb, po, "10\x09echoer\x09ok-step\n" as *u8) 97 po = ss_cat(pb, po, "20\x09deadtool\n" as *u8) 98 po = ss_cat(pb, po, "30\x09echoer\x09never-runs\n" as *u8) 99 sts_seed(p2, pb, po) 100 av[0] = "t3" as *u8 as i64 101 av[2] = p2 as i64 102 av[3] = r2x as i64 103 let rc3: i64 = dep_run_capture(elf, av, 4, outf) 104 dn = sts_load(r2x, dump, PG_CAP) 105 if dn < 0 { dn = 0 } 106 var t3: i64 = 0 107 if rc3 == 5 { if pg_lines(dump, dn) == 2 { if pg_has(dump, dn, "never-runs" as *u8) == 0 { if pg_has(dump, dn, "ok-step" as *u8) == 1 { t3 = 1 } } } } 108 gv_check("T3 failing step STOPS plan (2 rows only, never-runs absent, exit=5)" as *u8, t3, ctr) 109 110 // T4: unknown tool refused 111 let p3: *u8 = sys_mmap(PG_PFX) 112 pg_mkpfx(p3, "/tmp/prgt" as *u8, epoch) 113 let r3x: *u8 = sys_mmap(PG_PFX) 114 pg_mkpfx(r3x, "/tmp/prgu" as *u8, epoch) 115 po = 0 116 po = ss_cat(pb, po, "10\x09ghosttool\x09x\n" as *u8) 117 sts_seed(p3, pb, po) 118 av[0] = "t4" as *u8 as i64 119 av[2] = p3 as i64 120 av[3] = r3x as i64 121 let rc4: i64 = dep_run_capture(elf, av, 4, outf) 122 dn = sts_load(r3x, dump, PG_CAP) 123 if dn < 0 { dn = 0 } 124 var t4: i64 = 0 125 if rc4 == 4 { if pg_has(dump, dn, "REFUSED" as *u8) == 1 { t4 = 1 } } 126 gv_check("T4 unknown tool REFUSED (exit=4, REFUSED row recorded)" as *u8, t4, ctr) 127 128 // T5: unseeded plan fail-closed 129 av[0] = "t5" as *u8 as i64 130 av[2] = "/tmp/prg_nope-" as *u8 as i64 131 av[3] = "/tmp/prg_nores-" as *u8 as i64 132 let rc5: i64 = dep_run_capture(elf, av, 4, outf) 133 var t5: i64 = 0 134 if rc5 != 0 { t5 = 1 } 135 gv_check("T5 unseeded plan plane -> fail-closed nonzero exit" as *u8, t5, ctr) 136 137 let rc: i64 = gv_verdict("PLAN-RUN-GATE" as *u8, ctr, "workflows-as-data: seq order, pinned override, fail-closed stop/refuse" as *u8) 138 sys_exit(rc) 139 return rc 140}