code wiki / _hdl_build / nx_transient_monitor_gate.nx
nx_transient_monitor_gate.nx source
↩ module page · 38 lines · 2584 B
1// nx_transient_monitor_gate.nx -- SOVEREIGN gate for the transient/flakiness monitor.
2// T1 a STABLE target (always exit 0) -> 6/6 pass -> STABLE (neg-control: not falsely flagged flaky)
3// T2 a FLAKY target (alternating) -> 0<pass<6 -> FLAKY DETECTED (the transient is accounted, not hand-waved)
4// T3 verdict logic liar-kill: 6/6=STABLE, 3/6=FLAKY, 0/6=BROKEN
5// harness must: rm -f /tmp/tm_counter; build nx_tm_ok + nx_tm_flaky FIRST (this gate probes their /tmp elfs).
6// license_tier: ORIGINAL
7import "nx_syscalls.nx"
8import "nx_transient_monitor.nx" // tm_probe / tm_verdict
9
10func tg_w(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 }
11func tg_wn(v: i64) -> i64 { let b: *u8=sys_mmap(24); var m: i64=v; var k: i64=0; if m==0{b[0]=48 as u8;k=1} let t: *u8=sys_mmap(24); while m>0{t[k]=(48+(m%10)) as u8;m=m/10;k=k+1} var o: *u8=sys_mmap(24); var w: i64=0; var q: i64=k-1; while q>=0{o[w]=t[q];w=w+1;q=q-1} sys_write(1,o,w); return 0 }
12func tg_vname(v: i64) -> i64 { if v==0 {tg_w("STABLE" as *u8)} if v==1 {tg_w("FLAKY" as *u8)} if v==2 {tg_w("BROKEN" as *u8)} return 0 }
13
14func main(argc: i64, argv: *i64) -> i64 {
15 var pass: i64=0; var total: i64=0
16
17 let out: *i64 = sys_mmap(8*8) as *i64
18 tm_probe("/tmp/nx_tm_ok.sov.elf" as *u8, 6, 2000, out)
19 let v1: i64 = tm_verdict(out[0], 6)
20 total=total+1; var ok1: i64=0; if out[0]==6 { if v1==0 { ok1=1 } }
21 if ok1==1 {pass=pass+1; tg_w("[PASS] " as *u8)} else {tg_w("[FAIL] " as *u8)}
22 tg_w("T1 STABLE fixture pass=" as *u8); tg_wn(out[0]); tg_w("/6 verdict=" as *u8); tg_vname(v1); tg_w(" (want 6/6 STABLE)\n" as *u8)
23
24 let out2: *i64 = sys_mmap(8*8) as *i64
25 tm_probe("/tmp/nx_tm_flaky.sov.elf" as *u8, 6, 2000, out2)
26 let v2: i64 = tm_verdict(out2[0], 6)
27 total=total+1; var ok2: i64=0; if out2[0]>0 { if out2[0]<6 { if v2==1 { ok2=1 } } }
28 if ok2==1 {pass=pass+1; tg_w("[PASS] " as *u8)} else {tg_w("[FAIL] " as *u8)}
29 tg_w("T2 FLAKY fixture pass=" as *u8); tg_wn(out2[0]); tg_w("/6 verdict=" as *u8); tg_vname(v2); tg_w(" (want 0<pass<6 FLAKY = transient DETECTED)\n" as *u8)
30
31 total=total+1; var ok3: i64=0; if tm_verdict(6,6)==0 { if tm_verdict(3,6)==1 { if tm_verdict(0,6)==2 { ok3=1 } } }
32 if ok3==1 {pass=pass+1; tg_w("[PASS] " as *u8)} else {tg_w("[FAIL] " as *u8)}
33 tg_w("T3 verdict logic: 6/6=STABLE, 3/6=FLAKY, 0/6=BROKEN\n" as *u8)
34
35 tg_w("=== nx_transient_monitor_gate " as *u8); tg_wn(pass); tg_w("/" as *u8); tg_wn(total)
36 if pass==total {tg_w(" GREEN\n" as *u8); return 0}
37 tg_w(" RED\n" as *u8); return 1
38}