code wiki / _hdl_build / nx_pub_ship_now.nx
nx_pub_ship_now.nx source
↩ module page · 34 lines · 2983 B
1import "nx_gate_gn.nx"
2import "nx_gate_base.nx"
3// nx_pub_ship_now.nx -- WET SHIP: run the GOVERNED production loop over the canonical queue. Internal requests
4// (policy=internal, requester-cleared) are deployed (stage->verify(sha)->mkdirp nested dest->backup-prev->atomic-
5// promote->ledger); OUTWARD requests stay HELD until operator-approved. Reversible (per-dest .prev + append-only
6// ledger), in the publisher's own serving domain (knowledge/publish/live, served by nx_pub_serve). The public
7// behind-OPAQUE cutover is the separate coordinated step (pub_dns emits, hosting applies). license_tier: ORIGINAL expect_exit: 0
8import "nx_syscalls.nx"
9import "nx_publisher.nx"
10
11func grow(name: *u8, ok: i64) -> i64 { if ok==1 { gw(" PASS " as *u8) } else { gw(" FAIL " as *u8) } gw(name); gw("
12" as *u8); return ok }
13
14func main() -> i64 {
15 pub_init()
16 __syscall(83, "knowledge/publish/stage" as *u8 as i64, 493, 0, 0, 0, 0)
17 __syscall(83, "knowledge/publish/live" as *u8 as i64, 493, 0, 0, 0, 0)
18 gw("=== NISHI PUBLISHER WET SHIP (UN-STUCKABLE: governed + fork-isolated + self-healing) ===\n" as *u8)
19 let led_before: i64 = pub_count_ledger("knowledge/publish/ledger.tsv" as *u8)
20 gw(" ledger before=" as *u8); gn(led_before); gw("\n" as *u8)
21 // R10: drain each item in its OWN process -> no single item (crash OR fail) can halt the whole drain; bad
22 // items are quarantined to the dead-letter instead of stalling the queue forever.
23 let oc: *i64 = sys_mmap(64) as *i64
24 let n: i64 = pub_run_resilient("knowledge/publish/queue.tsv" as *u8, "knowledge/publish/ledger.tsv" as *u8, "knowledge/publish/stage" as *u8, "knowledge/publish/live" as *u8, "publish:canonical" as *u8, "knowledge/publish/approvals" as *u8, "knowledge/publish/deadletter.tsv" as *u8, oc)
25 let led_after: i64 = pub_count_ledger("knowledge/publish/ledger.tsv" as *u8)
26 gw(" PUBLISHED=" as *u8); gn(oc[0]); gw(" held(outward-unapproved)=" as *u8); gn(oc[1]); gw(" failed=" as *u8); gn(oc[2]); gw(" crashed=" as *u8); gn(oc[3]); gw(" skipped(done)=" as *u8); gn(oc[4]); gw("\n" as *u8)
27 gw(" ledger grew by " as *u8); gn(led_after - led_before); gw("\n" as *u8)
28 // R11: AUTONOMOUS Dr+Engineer self-heal -- root-cause every quarantined item (grounded in the live fs) and
29 // assign a remedy, automatically, so the stuck never accumulate silently.
30 let healed: i64 = pub_selfheal("knowledge/publish/deadletter.tsv" as *u8, "knowledge/publish/selfheal_report.tsv" as *u8, "knowledge/publish/queue.tsv" as *u8, "knowledge/publish/resubmitted.tsv" as *u8, "knowledge/publish/ledger.tsv" as *u8)
31 gw(" SELF-HEAL: root-caused " as *u8); gn(healed); gw(" quarantined item(s); internal-changed auto-re-queued (bounded), outward flagged -> knowledge/publish/selfheal_report.tsv\n" as *u8)
32 gw(" internal docs -> knowledge/publish/live/<dest> (served by nx_pub_serve); outward HELD; bad items quarantined+flagged, never blocking.\n" as *u8)
33 return 0
34}