code wiki / _hdl_build / _engineer_triage_gate_authored.nx
_engineer_triage_gate_authored.nx source
↩ module page · 199 lines · 8633 B
1// _engineer_triage_gate_authored.nx -- gate for the ENGINEER triage organ. Drives the
2// REAL organ elf (/tmp/nx_engineer_triage.sov.elf) over epoch-unique scratch worlds
3// (fresh names every run: no stale-tail risk from no-TRUNC writes, LM-022):
4// K1 CLEAN-GREEN green arc -> exit 0, verdict=CLEAN, NO row filed
5// K2 RED-FILES red arc w/ 2 verdict=FAIL rows -> exit 0, grade=RED logged,
6// ENGINEER-ROW evidence copied (exit=44 visible), ENG-<arc> row filed
7// K3 IDEMPOTENT same world again -> still exactly ONE ENG-<arc> row in the queue
8// K4 ABSENT-FILES arc whose gate log is missing -> grade=ABSENT logged + row filed
9// K5 LIVE the real conf + real queue + real log -> exit 0 (duty done today)
10// Markers: ETG-*; final ETGATE row -> knowledge/status/engineer_triage.log
11// license_tier: ORIGINAL
12import "nx_syscalls.nx"
13func etg_p(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 }
14func etg_f(fd: i64, s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(fd,s,n); return 0 }
15func etg_n(fd: i64, v: i64) -> i64 { let bb: *u8=sys_mmap(28); var m: i64=v; if m<0{m=0-m; sys_write(fd,"-" as *u8,1)}; let t: *u8=sys_mmap(28); var k: i64=0; if m==0{t[0]=48 as u8;k=1}; while m>0{t[k]=(48+(m%10)) as u8;m=m/10;k=k+1}; var i: i64=0; while i<k{bb[i]=t[k-1-i];i=i+1}; sys_write(fd,bb,k); return 0 }
16func etg_len(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n }
17func etg_cat(dst: *u8, off: i64, s: *u8) -> i64 { var i: i64 = 0; while s[i] != (0 as u8) { dst[off+i] = s[i]; i = i + 1 } return off + i }
18func etg_numcat(dst: *u8, off: i64, v: i64) -> i64 {
19 let t: *u8 = sys_mmap(28)
20 var m: i64 = v
21 var k: i64 = 0
22 if m == 0 { t[0] = 48 as u8; k = 1 }
23 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 }
24 var i: i64 = 0
25 var o: i64 = off
26 while i < k { dst[o] = t[k-1-i]; o = o + 1; i = i + 1 }
27 return o
28}
29func etg_mkpath(dst: *u8, epoch: i64, suffix: *u8) -> i64 {
30 var o: i64 = etg_cat(dst, 0, "/tmp/etg_" as *u8)
31 o = etg_numcat(dst, o, epoch)
32 o = etg_cat(dst, o, suffix)
33 dst[o] = 0 as u8
34 return o
35}
36func etg_writes(path: *u8, s: *u8) -> i64 {
37 let fd: i64 = sys_openat_wr(path, 0x1a4)
38 if fd < 0 { return 0 }
39 sys_write(fd, s, etg_len(s))
40 sys_close(fd)
41 return 1
42}
43func etg_writeb(path: *u8, buf: *u8, n: i64) -> i64 {
44 let fd: i64 = sys_openat_wr(path, 0x1a4)
45 if fd < 0 { return 0 }
46 sys_write(fd, buf, n)
47 sys_close(fd)
48 return 1
49}
50// run the REAL organ: mode 0 = scratch overrides, mode 1 = live (no args); stdout -> outp
51func etg_run(mode: i64, conf: *u8, qp: *u8, lg: *u8, outp: *u8) -> i64 {
52 let pid: i64 = sys_fork()
53 if pid == 0 {
54 let ofd: i64 = sys_openat_append(outp, 0x1a4)
55 if ofd >= 0 { sys_dup3(ofd, 1, 0); sys_dup3(ofd, 2, 0) }
56 let argv: *i64 = sys_mmap(48) as *i64
57 argv[0] = "/tmp/nx_engineer_triage.sov.elf" as *u8 as i64
58 if mode == 0 {
59 argv[1] = conf as i64
60 argv[2] = qp as i64
61 argv[3] = lg as i64
62 argv[4] = 0
63 } else {
64 argv[1] = 0
65 }
66 let envp: *i64 = sys_mmap(16) as *i64
67 envp[0] = 0
68 sys_execve("/tmp/nx_engineer_triage.sov.elf" as *u8, argv, envp)
69 sys_exit(127)
70 }
71 let st: *i64 = sys_mmap(16) as *i64
72 sys_wait4(pid, st, 0)
73 if (st[0] % 128) != 0 { return 0 - 1 }
74 return (st[0] >> 8) & 0xff
75}
76func etg_read(path: *u8, buf: *u8, cap: i64) -> i64 {
77 let fd: i64 = sys_openat_rd(path)
78 if fd < 0 { return 0 }
79 var n: i64 = 0
80 var go: i64 = 1
81 while go == 1 { let base: i64 = buf as i64; let r: i64 = sys_read(fd, (base + n) as *u8, cap - n); if r <= 0 { go = 0 } else { n = n + r } if n >= cap { go = 0 } }
82 sys_close(fd)
83 return n
84}
85func etg_count(path: *u8, pat: *u8) -> i64 {
86 let buf: *u8 = sys_mmap(262144)
87 let n: i64 = etg_read(path, buf, 262128)
88 let pl: i64 = etg_len(pat)
89 if pl == 0 { return 0 }
90 var cnt: i64 = 0
91 var i: i64 = 0
92 while i + pl <= n {
93 var k: i64 = 0
94 var hit: i64 = 1
95 while k < pl { if buf[i+k] != pat[k] { hit = 0; k = pl } else { k = k + 1 } }
96 if hit == 1 { cnt = cnt + 1; i = i + pl } else { i = i + 1 }
97 }
98 return cnt
99}
100func etg_has(path: *u8, pat: *u8) -> i64 {
101 if etg_count(path, pat) > 0 { return 1 }
102 return 0
103}
104func etg_chk(label: *u8, ok: i64, bad: *i64) -> i64 {
105 etg_p("ETG-" as *u8)
106 etg_p(label)
107 if ok == 1 { etg_p(" ok\n" as *u8) } else { etg_p(" BAD\n" as *u8); bad[0] = bad[0] + 1 }
108 return 0
109}
110func main() -> i64 {
111 etg_p("=== ENGINEER-TRIAGE GATE: real elf over scratch worlds + live ===\n" as *u8)
112 let ep: i64 = sys_now_realtime_sec()
113 let bad: *i64 = sys_mmap(16) as *i64
114 bad[0] = 0
115 let g1p: *u8 = sys_mmap(128)
116 let g2p: *u8 = sys_mmap(128)
117 let c1p: *u8 = sys_mmap(128)
118 let c2p: *u8 = sys_mmap(128)
119 let c3p: *u8 = sys_mmap(128)
120 let q1p: *u8 = sys_mmap(128)
121 let q2p: *u8 = sys_mmap(128)
122 let q4p: *u8 = sys_mmap(128)
123 let l1p: *u8 = sys_mmap(128)
124 let l2p: *u8 = sys_mmap(128)
125 let l4p: *u8 = sys_mmap(128)
126 let outp: *u8 = sys_mmap(128)
127 etg_mkpath(g1p, ep, "_g1.log" as *u8)
128 etg_mkpath(g2p, ep, "_g2.log" as *u8)
129 etg_mkpath(c1p, ep, "_c1.conf" as *u8)
130 etg_mkpath(c2p, ep, "_c2.conf" as *u8)
131 etg_mkpath(c3p, ep, "_c3.conf" as *u8)
132 etg_mkpath(q1p, ep, "_q1.tsv" as *u8)
133 etg_mkpath(q2p, ep, "_q2.tsv" as *u8)
134 etg_mkpath(q4p, ep, "_q4.tsv" as *u8)
135 etg_mkpath(l1p, ep, "_l1.log" as *u8)
136 etg_mkpath(l2p, ep, "_l2.log" as *u8)
137 etg_mkpath(l4p, ep, "_l4.log" as *u8)
138 etg_mkpath(outp, ep, "_out.log" as *u8)
139 // scratch worlds
140 etg_writes(g1p, "TGATE rows=2 passed=2 verdict=GREEN\n" as *u8)
141 etg_writes(g2p, "TGATE row=alpha build=0 exit=44 sig=0 verdict=FAIL\nTGATE row=beta build=0 exit=144 sig=0 verdict=FAIL\nTGATE rows=2 passed=0 verdict=RED\n" as *u8)
142 let cb: *u8 = sys_mmap(512)
143 var o: i64 = etg_cat(cb, 0, "A TARC1 " as *u8)
144 o = etg_cat(cb, o, g1p)
145 o = etg_cat(cb, o, " TGATE verdict=GREEN\n" as *u8)
146 etg_writeb(c1p, cb, o)
147 o = etg_cat(cb, 0, "A TARC2 " as *u8)
148 o = etg_cat(cb, o, g2p)
149 o = etg_cat(cb, o, " TGATE verdict=GREEN\n" as *u8)
150 etg_writeb(c2p, cb, o)
151 o = etg_cat(cb, 0, "A TARC3 " as *u8)
152 o = etg_cat(cb, o, "/tmp/etg_no_such_gate_log_ever.log" as *u8)
153 o = etg_cat(cb, o, " TGATE verdict=GREEN\n" as *u8)
154 etg_writeb(c3p, cb, o)
155 etg_writes(q1p, "# scratch queue\n" as *u8)
156 etg_writes(q2p, "# scratch queue\n" as *u8)
157 etg_writes(q4p, "# scratch queue\n" as *u8)
158 // K1 CLEAN-GREEN
159 let r1: i64 = etg_run(0, c1p, q1p, l1p, outp)
160 var ok1: i64 = 0
161 if r1 == 0 { if etg_has(l1p, "verdict=CLEAN" as *u8) == 1 { if etg_has(q1p, "ENG-TARC1" as *u8) == 0 { ok1 = 1 } } }
162 etg_chk("CLEAN-GREEN" as *u8, ok1, bad)
163 // K2 RED-FILES
164 let r2: i64 = etg_run(0, c2p, q2p, l2p, outp)
165 var ok2: i64 = 0
166 if r2 == 0 { if etg_has(l2p, "grade=RED" as *u8) == 1 { if etg_has(l2p, "ENGINEER-ROW" as *u8) == 1 { if etg_has(l2p, "exit=44" as *u8) == 1 { if etg_has(q2p, "ENG-TARC2" as *u8) == 1 { ok2 = 1 } } } } }
167 etg_chk("RED-FILES" as *u8, ok2, bad)
168 // K3 IDEMPOTENT (same world again -> still ONE row)
169 let r3: i64 = etg_run(0, c2p, q2p, l2p, outp)
170 var ok3: i64 = 0
171 if r3 == 0 { if etg_count(q2p, "ENG-TARC2" as *u8) == 1 { ok3 = 1 } }
172 etg_chk("IDEMPOTENT" as *u8, ok3, bad)
173 // K4 ABSENT-FILES
174 let r4: i64 = etg_run(0, c3p, q4p, l4p, outp)
175 var ok4: i64 = 0
176 if r4 == 0 { if etg_has(l4p, "grade=ABSENT" as *u8) == 1 { if etg_has(q4p, "ENG-TARC3" as *u8) == 1 { ok4 = 1 } } }
177 etg_chk("ABSENT-FILES" as *u8, ok4, bad)
178 // K5 LIVE (real conf/queue/log; duty-done exit is the bar)
179 let r5: i64 = etg_run(1, c1p, q1p, l1p, outp)
180 var ok5: i64 = 0
181 if r5 == 0 { ok5 = 1 }
182 etg_chk("LIVE" as *u8, ok5, bad)
183 // durable verdict
184 let lg: i64 = sys_openat_append("knowledge/status/engineer_triage.log" as *u8, 0x1a4)
185 if lg >= 0 {
186 etg_f(lg, "ETGATE checks=" as *u8)
187 etg_n(lg, 5 - bad[0])
188 etg_f(lg, "/5 verdict=" as *u8)
189 if bad[0] == 0 { etg_f(lg, "GREEN" as *u8) } else { etg_f(lg, "RED" as *u8) }
190 etg_f(lg, " epoch=" as *u8)
191 etg_n(lg, sys_now_realtime_sec())
192 etg_f(lg, "\n" as *u8)
193 sys_close(lg)
194 }
195 if bad[0] == 0 { etg_p(" ETGATE: GREEN 5/5\n" as *u8); sys_exit(0); return 0 }
196 etg_p(" ETGATE: RED\n" as *u8)
197 sys_exit(1)
198 return 1
199}