code wiki / _hdl_build / nx_raci_gate.nx

nx_raci_gate.nx source

↩ module page · 56 lines · 3387 B

1// nx_raci_gate.nx -- SOVEREIGN gate for the RACI validator. 2// T1 GOOD registry -> 0 violations (neg-control: a correct RACI passes) 3// T2 TWO Accountables on one activity -> violation CAUGHT (liar-kill: ambiguous ownership) 4// T3 ZERO Accountable -> violation CAUGHT (orphan activity) 5// T4 Accountable but ZERO Responsible -> violation CAUGHT (nobody does it) 6// T5 the REAL registry (knowledge/registry/nishi_raci.tsv) is VALID (0 violations) 7// license_tier: ORIGINAL 8import "nx_syscalls.nx" 9import "nx_raci.nx" // raci_validate / RC_DEFAULT 10import "nx_gate_verdict.nx" 11 12const RG_P: *u8 = "/tmp/raci_test.tsv" 13 14func rg_uw(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 } 15func rg_wn(v: i64) -> i64 { let b: *u8=sys_mmap(24); var m: i64=v; var k: i64=0; if m<0{rg_uw("-" as *u8);m=0-m} 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 } 16func rg_write(s: *u8) -> i64 { var len: i64=0; while s[len]!=(0 as u8){len=len+1} let fd: i64=sys_openat_wr(RG_P, 0x1a4); if fd<0 {return 0-1} sys_write(fd,s,len); sys_close(fd); return 0 } 17 18func main(argc: i64, argv: *i64) -> i64 { 19 var pass: i64 = 0; var total: i64 = 0 20 21 // T1 GOOD: act1 (A=1,R=1), act2 (A=1,R=2) 22 rg_write("r1\tact1\tAR\nr2\tact1\tC\nr3\tact2\tAR\nr4\tact2\tR\n" as *u8) 23 let v1: i64 = raci_validate(RG_P, 0) 24 total=total+1; if v1==0 { pass=pass+1; rg_uw("[PASS] " as *u8) } else { rg_uw("[FAIL] " as *u8) } 25 rg_uw("T1 good registry -> violations=" as *u8); rg_wn(v1); rg_uw(" (want 0)\n" as *u8) 26 27 // T2 TWO Accountables on actX 28 rg_write("r1\tactX\tAR\nr2\tactX\tA\n" as *u8) 29 let v2: i64 = raci_validate(RG_P, 0) 30 total=total+1; if v2>=1 { pass=pass+1; rg_uw("[PASS] " as *u8) } else { rg_uw("[FAIL] " as *u8) } 31 rg_uw("T2 two-Accountable -> violations=" as *u8); rg_wn(v2); rg_uw(" (want >=1, CAUGHT)\n" as *u8) 32 33 // T3 ZERO Accountable 34 rg_write("r1\tactY\tR\nr2\tactY\tC\n" as *u8) 35 let v3: i64 = raci_validate(RG_P, 0) 36 total=total+1; if v3>=1 { pass=pass+1; rg_uw("[PASS] " as *u8) } else { rg_uw("[FAIL] " as *u8) } 37 rg_uw("T3 zero-Accountable -> violations=" as *u8); rg_wn(v3); rg_uw(" (want >=1, CAUGHT)\n" as *u8) 38 39 // T4 Accountable but ZERO Responsible 40 rg_write("r1\tactZ\tA\nr2\tactZ\tC\n" as *u8) 41 let v4: i64 = raci_validate(RG_P, 0) 42 total=total+1; if v4>=1 { pass=pass+1; rg_uw("[PASS] " as *u8) } else { rg_uw("[FAIL] " as *u8) } 43 rg_uw("T4 zero-Responsible -> violations=" as *u8); rg_wn(v4); rg_uw(" (want >=1, CAUGHT)\n" as *u8) 44 45 // T5 the REAL Nishi RACI registry 46 let v5: i64 = raci_validate(RC_DEFAULT, 0) 47 total=total+1; if v5==0 { pass=pass+1; rg_uw("[PASS] " as *u8) } else { rg_uw("[FAIL] " as *u8) } 48 rg_uw("T5 REAL nishi_raci.tsv -> violations=" as *u8); rg_wn(v5); rg_uw(" (want 0 = hammered out)\n" as *u8) 49 50 rg_uw("=== nx_raci_gate " as *u8); rg_wn(pass); rg_uw("/" as *u8); rg_wn(total) 51 if pass==total { rg_uw(" GREEN\n" as *u8) } else { rg_uw(" RED\n" as *u8) } 52 let ctr: *i64 = gv_ctr() 53 ctr[0] = pass 54 ctr[1] = total 55 return gv_verdict("RACI-GATE" as *u8, ctr, "single-Accountable + at-least-one-Responsible enforced, liar-killed, and the REAL registry valid" as *u8) 56}