code wiki / _hdl_build / nx_meet_publish.nx

nx_meet_publish.nx source

↩ module page · 74 lines · 4313 B

1// nx_meet_publish.nx -- R8 PREP of the NISHI MEET PLATFORM: assemble the site bundle, VERIFY each page is present 2// + sovereign (0 <script), and STAGE it HELD to an ISOLATED meet queue (NOT the shared live queue) with an 3// "outward" policy -> fail-closed: nothing deploys until the operator approves the exact content sha 4// (pub_approve). This is the "stage it held, the live NAS push waits for your go" step, with zero deploy risk. 5// Composes the real nx_publisher intake. license_tier: ORIGINAL 6// run: /tmp/nx_meet_publish.sov.elf stages -> knowledge/publish/meet_stage_queue.tsv (held) 7import "nx_syscalls.nx" 8import "nx_meet_lib.nx" 9import "nx_publisher.nx" 10 11// 1 if needle occurs in hay[0..n). 12func pg_has(hay: *u8, n: i64, needle: *u8) -> i64 { 13 let nl: i64 = mlen(needle); if nl == 0 { return 0 } 14 var i: i64 = 0 15 while i + nl <= n { var k: i64=0; var hit: i64=1; while k<nl { if hay[i+k]!=needle[k]{hit=0;k=nl}else{k=k+1} } if hit==1 {return 1} i=i+1 } 16 return 0 17} 18// 1 = exists + sovereign; 0 = exists but has <script; -1 = missing. 19func pg_sovereign(src: *u8) -> i64 { 20 let lp: *i64 = sys_mmap(16) as *i64; lp[0] = 0 21 let d: *u8 = sys_read_file(src, lp) 22 if (d as i64) == 0 { return 0 - 1 } 23 if pg_has(d, lp[0], "<script" as *u8) == 1 { return 0 } 24 return 1 25} 26 27func main() -> i64 { 28 pub_init() 29 let Q: *u8 = "knowledge/publish/meet_stage_queue.tsv" as *u8 30 let ROOT: *u8 = "/volume1/homes/elderwesto/nishihost/sites/meet/" as *u8 31 // truncate the staging queue for a clean, idempotent re-stage 32 let tfd: i64 = sys_openat_wr(Q, 0x1a4); if tfd >= 0 { sys_close(tfd) } 33 34 let srcs: *i64 = sys_mmap(128) as *i64 35 let clns: *i64 = sys_mmap(128) as *i64 36 srcs[0] = "web_assets/site_demo/index.html" as *u8 as i64; clns[0] = "index.html" as *u8 as i64 37 srcs[1] = "web_assets/site_demo/jobs.html" as *u8 as i64; clns[1] = "jobs.html" as *u8 as i64 38 srcs[2] = "web_assets/site_demo/job-swe-001.html" as *u8 as i64; clns[2] = "job-swe-001.html" as *u8 as i64 39 srcs[3] = "web_assets/site_demo/job-rn-002.html" as *u8 as i64; clns[3] = "job-rn-002.html" as *u8 as i64 40 srcs[4] = "web_assets/site_demo/job-cnc-003.html" as *u8 as i64; clns[4] = "job-cnc-003.html" as *u8 as i64 41 srcs[5] = "web_assets/site_demo/job-acct-004.html" as *u8 as i64; clns[5] = "job-acct-004.html" as *u8 as i64 42 srcs[6] = "web_assets/site_demo/job-ae-005.html" as *u8 as i64; clns[6] = "job-ae-005.html" as *u8 as i64 43 srcs[7] = "web_assets/site_demo/apply.html" as *u8 as i64; clns[7] = "apply.html" as *u8 as i64 44 srcs[8] = "web_assets/site_demo/hire.html" as *u8 as i64; clns[8] = "hire.html" as *u8 as i64 45 srcs[9] = "web_assets/site_demo/about.html" as *u8 as i64; clns[9] = "about.html" as *u8 as i64 46 let N: i64 = 10 47 48 mputs("=== nx_meet_publish: assemble + verify + STAGE (held, outward policy) -- NO live deploy ===\n" as *u8) 49 var staged: i64 = 0; var bad: i64 = 0; var missing: i64 = 0 50 let dest: *u8 = sys_mmap(512) 51 var i: i64 = 0 52 while i < N { 53 let src: *u8 = srcs[i] as *u8 54 let cl: *u8 = clns[i] as *u8 55 var o: i64 = mcat(dest, 0, ROOT); o = mcat(dest, o, cl) 56 let v: i64 = pg_sovereign(src) 57 if v == 0 - 1 { 58 missing = missing + 1; mputs(" MISSING " as *u8); mputs(src); mputs("\n" as *u8) 59 } else { 60 if v == 0 { 61 bad = bad + 1; mputs(" NOT-SOVEREIGN " as *u8); mputs(src); mputs("\n" as *u8) 62 } else { 63 let rc: i64 = pub_submit_to(Q, src, dest, "meet" as *u8, "meet-platform-ws" as *u8, "outward" as *u8) 64 if rc == 1 { staged = staged + 1; mputs(" staged " as *u8); mputs(cl); mputs(" <- " as *u8); mputs(src); mputs("\n" as *u8) } 65 else { bad = bad + 1; mputs(" SUBMIT-FAIL " as *u8); mputs(src); mputs("\n" as *u8) } 66 } 67 } 68 i = i + 1 69 } 70 mputs("---- staged=" as *u8); mnum(staged); mputs("/" as *u8); mnum(N); mputs(" missing=" as *u8); mnum(missing); mputs(" bad=" as *u8); mnum(bad); mputs("\n" as *u8) 71 mputs(" queue=" as *u8); mputs(Q); mputs(" (HELD: outward policy = fail-closed; live push needs operator approval of the sha)\n" as *u8) 72 sys_exit(0) 73 return 0 74}