code wiki / _hdl_build / nx_pub_ship_meet.nx
nx_pub_ship_meet.nx source
↩ module page · 77 lines · 4592 B
1// nx_pub_ship_meet.nx -- the operator's ONE-COMMAND meet ship (mirrors nx_pub_ship_andelin): submit the 10-page
2// meet bundle to the canonical publisher queue + APPROVE each by content sha (pub_approve = the lawful operator-gate
3// token), then report status + dry-run. Calls ONLY pub_submit + pub_approve + read-only pub_status/pub_dryrun --
4// never pub_deploy/promote or raw transport -- so it passes the publisher's no-bypass audit. The wet promote is the
5// governed daemon loop (runs separately on the host). SAFE: with NO arg it does a DRY preview (no submit/approve,
6// zero side effects); run with arg `ship` on the host to actually submit+approve. license_tier: ORIGINAL
7// host: nx_pub_ship_meet.elf ship preview: nx_pub_ship_meet.elf
8import "nx_syscalls.nx"
9import "nx_meet_lib.nx"
10import "nx_publisher.nx"
11
12func main(argc: i64, argv: *i64) -> i64 {
13 var doship: i64 = 0
14 if argc >= 2 { let a: *u8 = argv[1] as *u8; if meet_seq(a, 0, mlen(a), "ship" as *u8, 4) == 1 { doship = 1 } }
15
16 let APPR: *u8 = "knowledge/publish/approved" as *u8
17 let ROOT: *u8 = "/volume1/homes/elderwesto/nishihost/sites/meet/" as *u8
18
19 let srcs: *i64 = sys_mmap(128) as *i64
20 let clns: *i64 = sys_mmap(128) as *i64
21 srcs[0]="web_assets/site_demo/index.html" as *u8 as i64; clns[0]="index.html" as *u8 as i64
22 srcs[1]="web_assets/site_demo/jobs.html" as *u8 as i64; clns[1]="jobs.html" as *u8 as i64
23 srcs[2]="web_assets/site_demo/job-swe-001.html" as *u8 as i64; clns[2]="job-swe-001.html" as *u8 as i64
24 srcs[3]="web_assets/site_demo/job-rn-002.html" as *u8 as i64; clns[3]="job-rn-002.html" as *u8 as i64
25 srcs[4]="web_assets/site_demo/job-cnc-003.html" as *u8 as i64; clns[4]="job-cnc-003.html" as *u8 as i64
26 srcs[5]="web_assets/site_demo/job-acct-004.html" as *u8 as i64; clns[5]="job-acct-004.html" as *u8 as i64
27 srcs[6]="web_assets/site_demo/job-ae-005.html" as *u8 as i64; clns[6]="job-ae-005.html" as *u8 as i64
28 srcs[7]="web_assets/site_demo/apply.html" as *u8 as i64; clns[7]="apply.html" as *u8 as i64
29 srcs[8]="web_assets/site_demo/hire.html" as *u8 as i64; clns[8]="hire.html" as *u8 as i64
30 srcs[9]="web_assets/site_demo/about.html" as *u8 as i64; clns[9]="about.html" as *u8 as i64
31
32 if doship == 1 {
33 pub_init()
34 __syscall(83, APPR as i64, 493, 0, 0, 0, 0) // ensure the approval dir exists
35 mputs("nx_pub_ship_meet: SHIP -- submit + operator-approve the meet bundle on the canonical queue.\n" as *u8)
36 } else {
37 mputs("nx_pub_ship_meet: DRY preview (no submit/approve, zero side effects). Run with arg `ship` on the host to publish.\n" as *u8)
38 }
39
40 let sha: *u8 = sys_mmap(72)
41 let dest: *u8 = sys_mmap(512)
42 var present: i64 = 0; var approved: i64 = 0
43 var i: i64 = 0
44 while i < 10 {
45 let src: *u8 = srcs[i] as *u8
46 var o: i64 = mcat(dest, 0, ROOT); o = mcat(dest, o, clns[i] as *u8)
47 if pub_sha_file(src, sha) == 1 {
48 present = present + 1
49 mputs(" " as *u8); mputs(clns[i] as *u8); mputs(" sha=" as *u8); mputs(sha)
50 if doship == 1 {
51 pub_submit(src, dest, "meet" as *u8, "meet-ship" as *u8, "outward" as *u8)
52 if pub_approve(sha, APPR) == 1 { approved = approved + 1; mputs(" [submitted+APPROVED]" as *u8) }
53 }
54 mputs("\n" as *u8)
55 } else {
56 mputs(" MISSING " as *u8); mputs(src); mputs(" (regenerate the bundle via the emitters first)\n" as *u8)
57 }
58 i = i + 1
59 }
60
61 mputs("---- bundle present=" as *u8); mnum(present); mputs("/10" as *u8)
62 if doship == 1 {
63 mputs(" approved=" as *u8); mnum(approved); mputs("/10\n" as *u8)
64 let st: *i64 = sys_mmap(64) as *i64
65 pub_status(pub_queue_default(), pub_ledger_default(), APPR, st)
66 let pl: *i64 = sys_mmap(64) as *i64
67 pub_dryrun(pub_queue_default(), pub_ledger_default(), APPR, pl)
68 mputs(" queue: ready-now=" as *u8); mnum(st[2]); mputs(" HELD=" as *u8); mnum(st[3])
69 mputs(" dry-run would-publish-now=" as *u8); mnum(pl[1]); mputs("\n" as *u8)
70 mputs(" NEXT: the publisher daemon's governed drain publishes the approved meet pages to the NAS + signs receipts.\n" as *u8)
71 if approved == present { if present == 10 { sys_exit(0); return 0 } }
72 sys_exit(1); return 1
73 }
74 mputs(" (dry -- srcs verified + shas computed; run `ship` on the host to submit+approve)\n" as *u8)
75 if present == 10 { sys_exit(0); return 0 }
76 sys_exit(1); return 1
77}