code wiki / _hdl_build / nx_wiki_publish_nist_stem.nx

nx_wiki_publish_nist_stem.nx source

↩ module page · 58 lines · 3292 B

1// nx_wiki_publish_nist_stem.nx -- LIVE PROOF runner for A3: re-publish web_assets/nist_stem.html through 2// the guarded wrapper pub_publish() with do_push_flag=1. Expects guard ALLOW -> push to the SERVED wiki 3// doc-root. ADDITIVE + IDEMPOTENT: re-streams the SAME page to /wiki/nist_stem.html only; no other page is 4// touched. Prints the guard verdict, status, bytes, push_invoked and push_rc as RAW proof. The fetch-verify 5// (curl 200 + byte-count) is done by the operator after this run. license_tier: ORIGINAL 6import "nx_wiki_publish.nx" 7import "nx_syscalls.nx" 8 9func r_w(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } 10func r_num(v: i64) -> i64 { 11 let bb: *u8 = sys_mmap(28); var m: i64 = v; if m < 0 { m = 0 - m } 12 let t: *u8 = sys_mmap(28); var k: i64 = 0 13 if m == 0 { t[0] = 48 as u8; k = 1 } 14 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 } 15 var i: i64 = 0; while i < k { bb[i] = t[k - 1 - i]; i = i + 1 } 16 sys_write(1, bb, k); return 0 17} 18func r_codename(v: i64) -> *u8 { 19 if v == PG_ALLOW { return "ALLOW" as *u8 } 20 if v == PG_REJECT_NO_FRESHNESS { return "REJECT NO_FRESHNESS" as *u8 } 21 if v == PG_REJECT_DANGLING_CITE { return "REJECT DANGLING_CITE" as *u8 } 22 if v == PG_REJECT_DEAD_LINK { return "REJECT DEAD_LINK" as *u8 } 23 if v == PG_REJECT_PLACEHOLDER { return "REJECT PLACEHOLDER" as *u8 } 24 return "UNKNOWN" as *u8 25} 26 27func main() -> i64 { 28 // corpus = the verified-LIVE published wiki set (each fetch-verified 200). nist_stem.html links to 29 // /wiki/charter, /wiki/start, /wiki/search, /wiki/nist_stem -- all must be in the corpus or the guard 30 // returns DEAD_LINK. search is INCLUDED because the page links to it and it is live (verified). 31 let cs_ptr: *i64 = sys_mmap(8 * 16) as *i64 32 let cs_len: *i64 = sys_mmap(8 * 16) as *i64 33 cs_ptr[0] = "start" as *u8 as i64; cs_len[0] = 5 34 cs_ptr[1] = "charter" as *u8 as i64; cs_len[1] = 7 35 cs_ptr[2] = "board" as *u8 as i64; cs_len[2] = 5 36 cs_ptr[3] = "devlog" as *u8 as i64; cs_len[3] = 6 37 cs_ptr[4] = "nist_stem" as *u8 as i64; cs_len[4] = 9 38 cs_ptr[5] = "roadmap" as *u8 as i64; cs_len[5] = 7 39 cs_ptr[6] = "search" as *u8 as i64; cs_len[6] = 6 40 let ncorpus: i64 = 7 41 42 let res: *PubResult = sys_mmap(64) as *PubResult 43 r_w("[A3 LIVE] publishing web_assets/nist_stem.html -> /wiki/nist_stem.html via guarded wrapper\n" as *u8) 44 pub_publish("web_assets/nist_stem.html" as *u8, "nist_stem" as *u8, cs_ptr, cs_len, ncorpus, 1, res) 45 46 r_w("[A3 LIVE] guard_verdict=" as *u8); r_w(r_codename(res.code)); r_w("\n" as *u8) 47 r_w("[A3 LIVE] status=" as *u8); r_w(pub_status_name(res.status)); r_w("\n" as *u8) 48 r_w("[A3 LIVE] bytes=" as *u8); r_num(res.bytes); r_w("\n" as *u8) 49 r_w("[A3 LIVE] push_invoked=" as *u8); r_num(res.push_invoked); r_w("\n" as *u8) 50 r_w("[A3 LIVE] push_rc=" as *u8); r_num(res.push_rc); r_w("\n" as *u8) 51 52 if res.status == PUB_PUBLISHED { 53 if res.push_rc == 0 { r_w("[A3 LIVE] RESULT=PUBLISHED-OK\n" as *u8); sys_exit(0); return 0 } 54 r_w("[A3 LIVE] RESULT=PUSH-INVOKED-NONZERO-RC\n" as *u8); sys_exit(1); return 1 55 } 56 r_w("[A3 LIVE] RESULT=NOT-PUBLISHED\n" as *u8) 57 sys_exit(1); return 1 58}