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}