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}