code wiki / _hdl_build / nx_plan_run_gate.nx
nx_plan_run_gate.nx source
↩ module page · 157 lines · 6736 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"
11import "nx_estate_path.nx"
12
13const PG_CAP: i64 = 262144
14const PG_NL: i64 = 10
15const PG_PFX: i64 = 128
16const PG_MODE: i64 = 0x1a4
17
18func pg_slen(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n }
19func pg_has(q: *u8, n: i64, s: *u8) -> i64 {
20 let sn: i64 = pg_slen(s)
21 if sn == 0 { return 1 }
22 var i: i64 = 0
23 while i + sn <= n {
24 var hit: i64 = 1
25 var j: i64 = 0
26 while j < sn { if q[i+j] != s[j] { hit = 0; j = sn } else { j = j + 1 } }
27 if hit == 1 { return 1 }
28 i = i + 1
29 }
30 return 0
31}
32func 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 }
33func pg_wfile(path: *u8, buf: *u8, n: i64) -> i64 {
34 let fd: i64 = sys_openat_wr(path, PG_MODE)
35 if fd < 0 { return 0 - 1 }
36 sys_write(fd, buf, n)
37 sys_close(fd)
38 return 0
39}
40func pg_mkpfx(dst: *u8, stem: *u8, epoch: i64) -> i64 {
41 var o: i64 = ss_cat(dst, 0, stem)
42 o = ss_catn(dst, o, epoch)
43 o = ss_cat(dst, o, "-" as *u8)
44 dst[o] = 0 as u8
45 return o
46}
47
48func main() -> i64 {
49 let ctr: *i64 = gv_ctr()
50 gv_head("nx_plan_run gate -- sovereign plan executor (workflows-as-data, fail-closed)" as *u8)
51 // The subject is the PROMOTED executor the clock forks and the witness a built, promoted organ -- never /tmp
52 // builds: tmpstorereap deletes /tmp artifacts hourly and nx_plan_witness had never been built on the NAS, so
53 // every roster run read a fixture the box could not hold as a failure of the subject (2026-09-18).
54 // ep_artifact_path resolves both from any launch CWD and fails closed; an unresolved one is a SKIP, not a RED.
55 let elf: *u8 = sys_mmap(EP_MAGIC_1024)
56 let wit: *u8 = sys_mmap(EP_MAGIC_1024)
57 gv_need("subject nx_plan_run.elf resolvable" as *u8, ep_artifact_path(elf, "nx_plan_run.elf" as *u8), ctr)
58 gv_need("witness nx_plan_witness.elf resolvable" as *u8, ep_artifact_path(wit, "nx_plan_witness.elf" as *u8), ctr)
59 if ctr[2] > 0 {
60 let rs: i64 = gv_verdict("PLAN-RUN-GATE" as *u8, ctr, "precondition missing: an artifact the plan executor needs is not on this host" as *u8)
61 sys_exit(rs)
62 return rs
63 }
64 let alp: *u8 = "/tmp/prg_allow.conf" as *u8
65 let outf: *u8 = "/tmp/prg_run.out" as *u8
66 let epoch: i64 = sys_now_realtime_sec()
67
68 let ab: *u8 = sys_mmap(PG_CAP)
69 var ao: i64 = 0
70 ao = ss_cat(ab, ao, "echoer\x09" as *u8)
71 ao = ss_cat(ab, ao, wit)
72 ao = ss_cat(ab, ao, "\x09GREEN\n" as *u8)
73 ao = ss_cat(ab, ao, "pinecho\x09" as *u8)
74 ao = ss_cat(ab, ao, wit)
75 ao = ss_cat(ab, ao, "\x09GREEN\x09alpha beta\n" as *u8)
76 ao = ss_cat(ab, ao, "deadtool\x09/tmp/prg_missing.elf\x09GREEN\n" as *u8)
77 if pg_wfile(alp, ab, ao) < 0 { gv_puts("FIXTURE-FAIL allowlist\n" as *u8); sys_exit(1); return 1 }
78
79 let av: *i64 = sys_mmap(8*8) as *i64
80 let dump: *u8 = sys_mmap(PG_CAP)
81
82 // T1+T2: out-of-order 3-step plan with pinned override on step 20
83 let p1: *u8 = sys_mmap(PG_PFX)
84 pg_mkpfx(p1, "/tmp/prgp" as *u8, epoch)
85 let r1x: *u8 = sys_mmap(PG_PFX)
86 pg_mkpfx(r1x, "/tmp/prgr" as *u8, epoch)
87 let pb: *u8 = sys_mmap(PG_CAP)
88 var po: i64 = 0
89 po = ss_cat(pb, po, "30\x09echoer\x09charlie\n" as *u8)
90 po = ss_cat(pb, po, "10\x09echoer\x09alpha-first\n" as *u8)
91 po = ss_cat(pb, po, "20\x09pinecho\x09ignored-plan-arg\n" as *u8)
92 sts_seed(p1, pb, po)
93 av[0] = "t1" as *u8 as i64
94 av[1] = alp as i64
95 av[2] = p1 as i64
96 av[3] = r1x as i64
97 let rc1: i64 = dep_run_capture(elf, av, 4, outf)
98 var dn: i64 = sts_load(r1x, dump, PG_CAP)
99 if dn < 0 { dn = 0 }
100 var t1: i64 = 0
101 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 } } } }
102 gv_check("T1 3 steps run in seq order, all rc=0, args echoed into results" as *u8, t1, ctr)
103 var t2: i64 = 0
104 if pg_has(dump, dn, "alpha beta" as *u8) == 1 { if pg_has(dump, dn, "ignored-plan-arg" as *u8) == 0 { t2 = 1 } }
105 gv_check("T2 pinned args override (alpha beta present, plan arg IGNORED)" as *u8, t2, ctr)
106
107 // T3: failing step stops the plan
108 let p2: *u8 = sys_mmap(PG_PFX)
109 pg_mkpfx(p2, "/tmp/prgq" as *u8, epoch)
110 let r2x: *u8 = sys_mmap(PG_PFX)
111 pg_mkpfx(r2x, "/tmp/prgs" as *u8, epoch)
112 po = 0
113 po = ss_cat(pb, po, "10\x09echoer\x09ok-step\n" as *u8)
114 po = ss_cat(pb, po, "20\x09deadtool\n" as *u8)
115 po = ss_cat(pb, po, "30\x09echoer\x09never-runs\n" as *u8)
116 sts_seed(p2, pb, po)
117 av[0] = "t3" as *u8 as i64
118 av[2] = p2 as i64
119 av[3] = r2x as i64
120 let rc3: i64 = dep_run_capture(elf, av, 4, outf)
121 dn = sts_load(r2x, dump, PG_CAP)
122 if dn < 0 { dn = 0 }
123 var t3: i64 = 0
124 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 } } } }
125 gv_check("T3 failing step STOPS plan (2 rows only, never-runs absent, exit=5)" as *u8, t3, ctr)
126
127 // T4: unknown tool refused
128 let p3: *u8 = sys_mmap(PG_PFX)
129 pg_mkpfx(p3, "/tmp/prgt" as *u8, epoch)
130 let r3x: *u8 = sys_mmap(PG_PFX)
131 pg_mkpfx(r3x, "/tmp/prgu" as *u8, epoch)
132 po = 0
133 po = ss_cat(pb, po, "10\x09ghosttool\x09x\n" as *u8)
134 sts_seed(p3, pb, po)
135 av[0] = "t4" as *u8 as i64
136 av[2] = p3 as i64
137 av[3] = r3x as i64
138 let rc4: i64 = dep_run_capture(elf, av, 4, outf)
139 dn = sts_load(r3x, dump, PG_CAP)
140 if dn < 0 { dn = 0 }
141 var t4: i64 = 0
142 if rc4 == 4 { if pg_has(dump, dn, "REFUSED" as *u8) == 1 { t4 = 1 } }
143 gv_check("T4 unknown tool REFUSED (exit=4, REFUSED row recorded)" as *u8, t4, ctr)
144
145 // T5: unseeded plan fail-closed
146 av[0] = "t5" as *u8 as i64
147 av[2] = "/tmp/prg_nope-" as *u8 as i64
148 av[3] = "/tmp/prg_nores-" as *u8 as i64
149 let rc5: i64 = dep_run_capture(elf, av, 4, outf)
150 var t5: i64 = 0
151 if rc5 != 0 { t5 = 1 }
152 gv_check("T5 unseeded plan plane -> fail-closed nonzero exit" as *u8, t5, ctr)
153
154 let rc: i64 = gv_verdict("PLAN-RUN-GATE" as *u8, ctr, "workflows-as-data: seq order, pinned override, fail-closed stop/refuse" as *u8)
155 sys_exit(rc)
156 return rc
157}