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