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}