code wiki / _hdl_build / nx_hr_entitle_provision.nx
nx_hr_entitle_provision.nx source
↩ module page · 30 lines · 2454 B
1// nx_hr_entitle_provision.nx -- migrate the operator's entitlements (was knowledge/status/nishi_entitlements.tsv)
2// into the SOVEREIGN entitlement seg_store via he_ent_put, staged for deploy at the daemon's OLGD_ENT_PATH prefix.
3// IDEMPOTENT (he_ent_put dedups the exact triple, rule #10) -> safe to re-run. The daemon reads this store via
4// he_emit_super. NOTE: the elderwesto-keyed rows are now REDUNDANT (owner = superadmin by construction, auto-sees
5// everything via nx_hr_entitle) -- preserved here for a FAITHFUL migration (additive-only, #13); the organ is what
6// removes the per-resource grant drift going forward. [[feedback-no-3rd-party-tsv-sovereign-store]]
7import "nx_hr_entitle.nx" // he_ent_put / he_ent_count
8import "nx_g_puts_lib.nx"
9import "nx_syscalls.nx"
10
11func g_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 as u8);k=1}; while m>0{t[k]=((48+(m%10)) as u8);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 }
12
13func main() -> i64 {
14 let ent: *u8 = "knowledge/publish/staging/nishi_entitlements-" as *u8
15 he_ent_put(ent, "*" as *u8, "Wiki" as *u8, "/wiki" as *u8)
16 he_ent_put(ent, "*" as *u8, "Family Video" as *u8, "/video" as *u8)
17 he_ent_put(ent, "elder" as *u8, "Gallery" as *u8, "/gallery" as *u8)
18 he_ent_put(ent, "elder" as *u8, "System Status" as *u8, "/status" as *u8)
19 he_ent_put(ent, "elder" as *u8, "Advertising" as *u8, "/advertising" as *u8)
20 he_ent_put(ent, "elderwesto" as *u8, "Gallery" as *u8, "/gallery" as *u8)
21 he_ent_put(ent, "elderwesto" as *u8, "System Status" as *u8, "/status" as *u8)
22 he_ent_put(ent, "elderwesto" as *u8, "Advertising" as *u8, "/advertising" as *u8)
23 // NEW AREA 2026-06-25: Elder AI image/LLM gen at /gen, approved for the operator only (gated, not "*").
24 he_ent_put(ent, "elder" as *u8, "AI Studio" as *u8, "/gen" as *u8)
25 he_ent_put(ent, "elderwesto" as *u8, "AI Studio" as *u8, "/gen" as *u8)
26 let n: i64 = he_ent_count(ent)
27 g_puts("ENTITLE-PROVISION staged " as *u8); g_num(n); g_puts(" entitlements -> sovereign seg_store\n" as *u8)
28 if n == 10 { g_puts("verdict=GREEN (10 entitlements incl /gen AI Studio, idempotent dedup)\n" as *u8); sys_exit(0); return 0 }
29 g_puts("verdict=RED (expected 10)\n" as *u8); sys_exit(1); return 1
30}