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}