code wiki / _hdl_build / nx_build_safe_test.nx
nx_build_safe_test.nx source
↩ module page · 45 lines · 3701 B
1// nx_build_safe_test.nx -- hang-safe build, proven on the REAL daemon situation. The TLS daemon timed
2// out / produced 0 asm on _gen2, _cand_on, _cand_off, _gen3 -> every attempt HANG -> after retries +
3// escalation, the honest verdict is EXHAUSTED (no false success). A normal small build classifies OK on
4// the first attempt. Exit 0 on 7/7. license_tier: ORIGINAL
5
6import "nx_build_safe.nx"
7import "nx_syscalls.nx"
8
9func bt_puts(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 }
10func bt_num(v: i64) -> i64 { let bb: *u8 = sys_mmap(28); var m: i64=v; if m<0 {m=0-m}; let t: *u8 = sys_mmap(28); var k: i64=0; if m==0 {t[0]=48;k=1}; while m>0 {t[k]=48+(m%10); m=m/10; k=k+1}; var i: i64=0; while i<k {bb[i]=t[k-1-i]; i=i+1}; sys_write(1, bb, k); return 0 }
11
12func main() -> i64 {
13 bt_puts("=== HANG-SAFE BUILD: detect codegen hangs, retry, escalate, never fake success ===\n" as *u8)
14 // the real daemon attempts: all timed out / 0 asm
15 let a_gen2: i64 = bs_attempt(1, 0, 0) // _gen2 timed out
16 let a_candon: i64 = bs_attempt(0, 0, 0) // _cand_on produced no asm
17 // a normal small build
18 let a_ok: i64 = bs_attempt(0, 5000, 1)
19 let a_linkfail: i64 = bs_attempt(0, 5000, 0)
20
21 let retry1: i64 = bs_should_retry(a_gen2, 1, 4) // hang + attempts left -> retry
22 let retry_done: i64 = bs_should_retry(a_gen2, 4, 4) // out of attempts -> stop
23 let escalate: i64 = bs_should_escalate(2, 2) // 2 hangs on current -> switch compiler
24 let final_daemon: i64 = bs_final(0) // no attempt produced a runnable artifact
25 let final_ok: i64 = bs_final(1)
26 let honest: i64 = bs_no_false_success(final_daemon, 0)
27
28 bt_puts(" daemon attempts: _gen2=" as *u8); bt_num(a_gen2); bt_puts(" _cand_on=" as *u8); bt_num(a_candon); bt_puts(" (1=HANG) normal build=" as *u8); bt_num(a_ok); bt_puts(" (0=OK)\n" as *u8)
29 bt_puts(" retry-on-hang=" as *u8); bt_num(retry1); bt_puts(" retry-when-exhausted=" as *u8); bt_num(retry_done); bt_puts(" escalate-compiler=" as *u8); bt_num(escalate); bt_puts("\n" as *u8)
30 bt_puts(" daemon FINAL=" as *u8); bt_num(final_daemon); bt_puts(" (3=EXHAUSTED, honest) normal FINAL=" as *u8); bt_num(final_ok); bt_puts(" (0=OK) no-false-success=" as *u8); bt_num(honest); bt_puts("\n" as *u8)
31
32 let r: *i64 = sys_mmap(8*8) as *i64
33 r[0] = 0; if a_gen2 == BS_HANG { if a_candon == BS_HANG { r[0] = 1 } } // empty/timed-out builds = HANG, not OK
34 r[1] = 0; if a_ok == BS_OK { r[1] = 1 } // a real build classifies OK
35 r[2] = 0; if a_linkfail == BS_ERROR { r[2] = 1 } // asm-but-link-fail = ERROR
36 r[3] = 0; if retry1 == 1 { if retry_done == 0 { r[3] = 1 } } // retry while attempts remain
37 r[4] = 0; if escalate == 1 { r[4] = 1 } // escalate to another compiler on repeated hangs
38 r[5] = 0; if final_daemon == BS_EXHAUSTED { r[5] = 1 } // honest give-up (the real daemon state)
39 r[6] = 0; if honest == 1 { r[6] = 1 } // NEVER a false success
40 var pass: i64 = 0; var i: i64 = 0
41 while i < 7 { pass = pass + r[i]; i = i + 1 }
42 bt_puts("----\n passed " as *u8); bt_num(pass); bt_puts("/7\n" as *u8)
43 if pass == 7 { bt_puts(" HANG-SAFE: the team detects a codegen hang (no asm), retries the non-deterministic compiler, escalates to alternatives, and reports EXHAUSTED honestly -- the live TLS daemon currently EXHAUSTS (all G2 compilers hang on it), named, not faked.\n" as *u8); sys_exit(0); return 0 }
44 bt_puts(" FAIL\n" as *u8); sys_exit(1); return 1
45}