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}