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}