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}