code wiki / _hdl_build / nx_pub_approve_outward.nx

nx_pub_approve_outward.nx source

↩ module page · 52 lines · 2782 B

1import "nx_gate_gn.nx" 2import "nx_gate_base.nx" 3// nx_pub_approve_outward.nx -- STEP 3 (operator-authorized "approve all"): create an R6 approval token for EVERY 4// held outward request in the canonical queue, then run the GOVERNED drain so the now-approved + sha-valid ones 5// stage to the publisher's liveroot (stale-sha ones fail-closed). The actual public push to the host + DNS stays 6// separately gated. Reversible (per-dest .prev + append-only ledger). license_tier: ORIGINAL expect_exit: 0 7import "nx_syscalls.nx" 8import "nx_publisher.nx" 9 10func grow(name: *u8, ok: i64) -> i64 { if ok==1 { gw(" PASS " as *u8) } else { gw(" FAIL " as *u8) } gw(name); gw(" 11" as *u8); return ok } 12 13func main() -> i64 { 14 pub_init() 15 let appr: *u8 = "knowledge/publish/approvals" as *u8 16 __syscall(83, appr as i64, 493, 0, 0, 0, 0) 17 __syscall(83, "knowledge/publish/stage" as *u8 as i64, 493, 0, 0, 0, 0) 18 __syscall(83, "knowledge/publish/live" as *u8 as i64, 493, 0, 0, 0, 0) 19 gw("=== STEP 3: approve ALL held outward (operator-authorized) + governed drain ===\n" as *u8) 20 21 let lenp: *i64 = sys_mmap(8) as *i64 22 let data: *u8 = sys_read_file("knowledge/publish/queue.tsv" as *u8, lenp) 23 var approved: i64 = 0 24 if (data as i64) != 0 { 25 let n: i64 = lenp[0] 26 let stf: *u8 = sys_mmap(64); let sha: *u8 = sys_mmap(256); let pol: *u8 = sys_mmap(64) 27 var i: i64=0; var ls: i64=0 28 while i < n { 29 if data[i]==(10 as u8) { 30 let line: *u8 = ((data as i64)+ls) as *u8; let ll: i64 = i-ls 31 pub_field(line, ll, 0, stf) 32 if pub_streq(stf, "PENDING" as *u8)==1 { 33 pub_field(line, ll, 6, pol) 34 if pub_streq(pol, "outward" as *u8)==1 { 35 pub_field(line, ll, 3, sha) 36 if pub_approve(sha, appr)==1 { approved = approved + 1 } 37 } 38 } 39 ls = i + 1 40 } 41 i = i + 1 42 } 43 } 44 gw(" approval tokens created for outward shas=" as *u8); gn(approved); gw("\n" as *u8) 45 46 let led_before: i64 = pub_count_ledger("knowledge/publish/ledger.tsv" as *u8) 47 let pubd: i64 = pub_run_governed("knowledge/publish/queue.tsv" as *u8, "knowledge/publish/ledger.tsv" as *u8, "knowledge/publish/stage" as *u8, "knowledge/publish/live" as *u8, "publish:canonical" as *u8, appr) 48 let led_after: i64 = pub_count_ledger("knowledge/publish/ledger.tsv" as *u8) 49 gw(" governed drain PUBLISHED this pass=" as *u8); gn(pubd); gw(" (ledger " as *u8); gn(led_before); gw("->" as *u8); gn(led_after); gw(")\n" as *u8) 50 gw(" approved+valid outward staged to liveroot; stale-sha fail-closed; PUBLIC push (host+DNS) remains gated.\n" as *u8) 51 return 0 52}