code wiki / _hdl_build / nx_shard_governance_gate.nx
nx_shard_governance_gate.nx source
↩ module page · 78 lines · 6524 B
1import "nx_gate_gn.nx"
2import "nx_gate_base.nx"
3// nx_shard_governance_gate.nx -- CROSS-SHARD R5: the end-to-end governance conformance proof. Composes the whole
4// cross-shard stack in one decision -- sr_roles_of (registry) -> ag_uid_to_level (per-shard RBAC) -> gi_allowed
5// (org guardrail inheritance) -- and asserts the load-bearing properties with NEGATIVE controls:
6// T1 operator manages a normal shard T2 operator manages a guardrail-tightened shard
7// T3 tenant owner manages THEIR shard T4 (NEG) tenant owner CANNOT manage another shard (isolation)
8// T5 (NEG) member BLOCKED by a shard's tightened guardrail T6 member ALLOWED on the un-tightened shard
9// One realm, per-shard roles, org-floor guardrails a shard can only tighten. Sovereign: nx_syscalls +
10// nx_shard_registry + nx_access_lib + nx_shard_guardrail. license_tier: ORIGINAL expect_exit: 0
11import "nx_syscalls.nx"
12import "nx_shard_registry.nx"
13import "nx_access_lib.nx"
14import "nx_shard_guardrail.nx"
15
16func grow(name: *u8, ok: i64) -> i64 { if ok==1 { gw(" PASS " as *u8) } else { gw(" FAIL " as *u8) } gw(name); gw("
17" as *u8); return ok }
18func gp(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 }
19func g_app(buf: *u8, off: i64, s: *u8) -> i64 { var i: i64=0; while s[i]!=(0 as u8){buf[off+i]=s[i];i=i+1} return off+i }
20func g_wr(path: *u8, buf: *u8, n: i64) -> i64 { let fd: i64=sys_openat_wr(path, 0x1a4); if fd>=0 { sys_write(fd, buf, n); sys_close(fd) } return n }
21func g_shard(buf: *u8, off: i64, id: *u8, dom: *u8, svc: *u8, port: *u8, realm: *u8, keys: *u8, store: *u8, roles: *u8, health: *u8) -> i64 {
22 var o: i64=g_app(buf,off,id); buf[o]=9 as u8; o=o+1; o=g_app(buf,o,dom); buf[o]=9 as u8; o=o+1; o=g_app(buf,o,svc); buf[o]=9 as u8; o=o+1
23 o=g_app(buf,o,port); buf[o]=9 as u8; o=o+1; o=g_app(buf,o,realm); buf[o]=9 as u8; o=o+1; o=g_app(buf,o,keys); buf[o]=9 as u8; o=o+1
24 o=g_app(buf,o,store); buf[o]=9 as u8; o=o+1; o=g_app(buf,o,roles); buf[o]=9 as u8; o=o+1; o=g_app(buf,o,health); buf[o]=10 as u8; o=o+1
25 return o
26}
27// the full governance decision: shard -> roles -> level -> (org floor, shard guardrail) -> allow/deny.
28func authz(reg: *u8, rn: i64, idx: *u8, uid: *u8, uidn: i64, shard: *u8, slen: i64, org_req: i64, guardrail: i64) -> i64 {
29 let roles: *u8 = sys_mmap(256)
30 if sr_roles_of(reg, rn, shard, slen, roles, 256) <= 0 { return 0 }
31 let level: i64 = ag_uid_to_level(uid, uidn, idx, roles)
32 return gi_allowed(level, org_req, guardrail)
33}
34
35func main(argc: i64, argv: *i64) -> i64 {
36 gp("=== nx_shard_governance_gate (R5: registry + RBAC + guardrail, end-to-end) ===\n" as *u8)
37 // uid->handle index
38 let ix: *u8 = sys_mmap(256); var ixn: i64 = 0
39 ixn=g_app(ix,ixn,"aa" as *u8); ix[ixn]=9 as u8; ixn=ixn+1; ixn=g_app(ix,ixn,"elderwesto" as *u8); ix[ixn]=10 as u8; ixn=ixn+1
40 ixn=g_app(ix,ixn,"bb" as *u8); ix[ixn]=9 as u8; ixn=ixn+1; ixn=g_app(ix,ixn,"adw_owner" as *u8); ix[ixn]=10 as u8; ixn=ixn+1
41 ixn=g_app(ix,ixn,"cc" as *u8); ix[ixn]=9 as u8; ixn=ixn+1; ixn=g_app(ix,ixn,"member_user" as *u8); ix[ixn]=10 as u8; ixn=ixn+1
42 g_wr("/tmp/gov_idx.tsv" as *u8, ix, ixn)
43 // per-shard roles
44 let rnf: *u8 = sys_mmap(256); var rnfn: i64 = 0
45 rnfn=g_app(rnf,rnfn,"elderwesto" as *u8); rnf[rnfn]=9 as u8; rnfn=rnfn+1; rnf[rnfn]=51 as u8; rnfn=rnfn+1; rnf[rnfn]=10 as u8; rnfn=rnfn+1
46 rnfn=g_app(rnf,rnfn,"member_user" as *u8); rnf[rnfn]=9 as u8; rnfn=rnfn+1; rnf[rnfn]=50 as u8; rnfn=rnfn+1; rnf[rnfn]=10 as u8; rnfn=rnfn+1
47 g_wr("/tmp/gov_roles_nf.tsv" as *u8, rnf, rnfn)
48 let radw: *u8 = sys_mmap(256); var radwn: i64 = 0
49 radwn=g_app(radw,radwn,"elderwesto" as *u8); radw[radwn]=9 as u8; radwn=radwn+1; radw[radwn]=51 as u8; radwn=radwn+1; radw[radwn]=10 as u8; radwn=radwn+1
50 radwn=g_app(radw,radwn,"adw_owner" as *u8); radw[radwn]=9 as u8; radwn=radwn+1; radw[radwn]=51 as u8; radwn=radwn+1; radw[radwn]=10 as u8; radwn=radwn+1
51 radwn=g_app(radw,radwn,"member_user" as *u8); radw[radwn]=9 as u8; radwn=radwn+1; radw[radwn]=50 as u8; radwn=radwn+1; radw[radwn]=10 as u8; radwn=radwn+1
52 g_wr("/tmp/gov_roles_adw.tsv" as *u8, radw, radwn)
53 // shard registry
54 let reg: *u8 = sys_mmap(4096); var rn: i64 = 0
55 rn=g_shard(reg,rn,"nishifamily-mgmt" as *u8,"nishifamily.com" as *u8,"mgmt" as *u8,"18098" as *u8,"nishi_site_admin" as *u8,"k" as *u8,"s" as *u8,"/tmp/gov_roles_nf.tsv" as *u8,"api" as *u8)
56 rn=g_shard(reg,rn,"andelinwest-portal" as *u8,"andelinwest.com" as *u8,"docportal" as *u8,"18456" as *u8,"andelinwest_docportal" as *u8,"k" as *u8,"s" as *u8,"/tmp/gov_roles_adw.tsv" as *u8,"andelinwest" as *u8)
57
58 let IDX: *u8 = "/tmp/gov_idx.tsv" as *u8
59 let uop: *u8 = sys_mmap(8); uop[0]=0xaa as u8
60 let utn: *u8 = sys_mmap(8); utn[0]=0xbb as u8
61 let umb: *u8 = sys_mmap(8); umb[0]=0xcc as u8
62 let SM: *u8 = "nishifamily-mgmt" as *u8; let SMn: i64 = g_slen(SM)
63 let SA: *u8 = "andelinwest-portal" as *u8; let SAn: i64 = g_slen(SA)
64 // deploy action: org floor = 2 (member); nishifamily guardrail = 2 (none); andelinwest guardrail = 3 (tightened)
65 let ORG: i64 = 2
66 var pass: i64 = 0; var fail: i64 = 0
67
68 if authz(reg,rn,IDX,uop,1,SM,SMn,ORG,2)==1 { pass=pass+1; gp(" T1 operator manages nishifamily PASS\n" as *u8) } else { fail=fail+1; gp(" T1 FAIL\n" as *u8) }
69 if authz(reg,rn,IDX,uop,1,SA,SAn,ORG,3)==1 { pass=pass+1; gp(" T2 operator manages andelinwest (meets tightened guardrail 3) PASS\n" as *u8) } else { fail=fail+1; gp(" T2 FAIL\n" as *u8) }
70 if authz(reg,rn,IDX,utn,1,SA,SAn,ORG,3)==1 { pass=pass+1; gp(" T3 tenant owner manages THEIR shard PASS\n" as *u8) } else { fail=fail+1; gp(" T3 FAIL\n" as *u8) }
71 if authz(reg,rn,IDX,utn,1,SM,SMn,ORG,2)==0 { pass=pass+1; gp(" T4 tenant owner CANNOT manage nishifamily (isolation) PASS\n" as *u8) } else { fail=fail+1; gp(" T4 FAIL\n" as *u8) }
72 if authz(reg,rn,IDX,umb,1,SA,SAn,ORG,3)==0 { pass=pass+1; gp(" T5 member BLOCKED by andelinwest's tightened guardrail(3) PASS\n" as *u8) } else { fail=fail+1; gp(" T5 FAIL\n" as *u8) }
73 if authz(reg,rn,IDX,umb,1,SM,SMn,ORG,2)==1 { pass=pass+1; gp(" T6 member ALLOWED on un-tightened nishifamily (floor 2) PASS\n" as *u8) } else { fail=fail+1; gp(" T6 FAIL\n" as *u8) }
74
75 gp("RESULT pass=" as *u8); gn(pass); gp(" fail=" as *u8); gn(fail)
76 if fail == 0 { gp(" verdict=GREEN (cross-shard governance proven end-to-end)\n" as *u8); sys_exit(0); return 0 }
77 gp(" verdict=RED\n" as *u8); sys_exit(1); return 1
78}