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}