code wiki / _hdl_build / nx_ims_batch2_repush.nx
nx_ims_batch2_repush.nx source
↩ module page · 74 lines · 4632 B
1// nx_ims_batch2_repush.nx -- re-land the batch-#2 leaf pages whose live push did not confirm on the
2// first multi-page run (the documented fork-ENOMEM after several large sys_read_file calls -> push_rc=-1
3// = the push subprocess could not be spawned, NOT a guard reject; the version snapshot was retained, so
4// this is a safe additive retry). Argv-free, fixed list, strict push_rc==0 confirmation. Same guarded+
5// versioned vpub path as the batch publisher. Run repeatedly if a single run still exhausts forks; each
6// run retains a new rollback version (additive). license_tier: ORIGINAL
7import "nx_wiki_versioned_publish.nx"
8import "nx_syscalls.nx"
9
10func p_w(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 }
11func p_num(v: i64) -> i64 {
12 let bb: *u8 = sys_mmap(28); var m: i64 = v; if m < 0 { sys_write(1, "-" as *u8, 1); m = 0 - m }
13 let t: *u8 = sys_mmap(28); var k: i64 = 0
14 if m == 0 { t[0] = 48 as u8; k = 1 }
15 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 }
16 var i: i64 = 0; while i < k { bb[i] = t[k - 1 - i]; i = i + 1 }
17 sys_write(1, bb, k); return 0
18}
19
20const PB_EPOCH: i64 = 1781870001
21
22// returns 1 if a confirmed live push (push_rc==0), 0 if not (so the caller can count + decide retry).
23func pb_publish(slug: *u8, path: *u8, cs_ptr: *i64, cs_len: *i64, ncorpus: i64) -> i64 {
24 let res: *PubResult = sys_mmap(64) as *PubResult
25 let vout: *i64 = sys_mmap(16) as *i64
26 let rc: i64 = vpub(slug, path, cs_ptr, cs_len, ncorpus, PB_EPOCH, 1, res, vout)
27 p_w(" vpub("); p_w(slug); p_w(") rc="); p_w(vp_status_name(rc))
28 p_w(" version#="); p_num(vout[0])
29 p_w(" | push="); p_w(pub_status_name(res.status))
30 p_w(" push_invoked="); p_num(res.push_invoked)
31 p_w(" push_rc="); p_num(res.push_rc)
32 p_w(" bytes="); p_num(res.bytes); p_w("\n")
33 if rc == VP_OK { if res.push_invoked == 1 { if res.push_rc == 0 { return 1 } } }
34 return 0
35}
36
37func main() -> i64 {
38 // full 20-slug corpus so the A3 guard resolves every href on these pages (fail-closed otherwise).
39 let cs_ptr: *i64 = sys_mmap(32 * 8) as *i64
40 let cs_len: *i64 = sys_mmap(32 * 8) as *i64
41 cs_ptr[0] = "start" as *u8 as i64; cs_len[0] = 5
42 cs_ptr[1] = "charter" as *u8 as i64; cs_len[1] = 7
43 cs_ptr[2] = "nist_stem" as *u8 as i64; cs_len[2] = 9
44 cs_ptr[3] = "roadmap" as *u8 as i64; cs_len[3] = 7
45 cs_ptr[4] = "board" as *u8 as i64; cs_len[4] = 5
46 cs_ptr[5] = "devlog" as *u8 as i64; cs_len[5] = 6
47 cs_ptr[6] = "econsim" as *u8 as i64; cs_len[6] = 7
48 cs_ptr[7] = "products" as *u8 as i64; cs_len[7] = 8
49 cs_ptr[8] = "genesis_genealogy" as *u8 as i64; cs_len[8] = 17
50 cs_ptr[9] = "access_wall" as *u8 as i64; cs_len[9] = 11
51 cs_ptr[10] = "formats_uxf" as *u8 as i64; cs_len[10] = 11
52 cs_ptr[11] = "media_studio" as *u8 as i64; cs_len[11] = 12
53 cs_ptr[12] = "search" as *u8 as i64; cs_len[12] = 6
54 cs_ptr[13] = "substrate" as *u8 as i64; cs_len[13] = 9
55 cs_ptr[14] = "nishi_os" as *u8 as i64; cs_len[14] = 8
56 cs_ptr[15] = "sovereign_email" as *u8 as i64; cs_len[15] = 15
57 cs_ptr[16] = "simd_backend" as *u8 as i64; cs_len[16] = 12
58 cs_ptr[17] = "neural_mt" as *u8 as i64; cs_len[17] = 9
59 cs_ptr[18] = "vision_fr" as *u8 as i64; cs_len[18] = 9
60 cs_ptr[19] = "voxelworld" as *u8 as i64; cs_len[19] = 10
61 let ncorpus: i64 = 20
62
63 p_w("=== IMS BATCH #2 RE-PUSH: 6 leaf pages -> LIVE (confirm push_rc==0; idempotent, additive) ===\n")
64 var ok: i64 = 0
65 if pb_publish("nishi_os" as *u8, "web_assets/nishi_os.html" as *u8, cs_ptr, cs_len, ncorpus) == 1 { ok = ok + 1 }
66 if pb_publish("sovereign_email" as *u8, "web_assets/sovereign_email.html" as *u8, cs_ptr, cs_len, ncorpus) == 1 { ok = ok + 1 }
67 if pb_publish("simd_backend" as *u8, "web_assets/simd_backend.html" as *u8, cs_ptr, cs_len, ncorpus) == 1 { ok = ok + 1 }
68 if pb_publish("neural_mt" as *u8, "web_assets/neural_mt.html" as *u8, cs_ptr, cs_len, ncorpus) == 1 { ok = ok + 1 }
69 if pb_publish("vision_fr" as *u8, "web_assets/vision_fr.html" as *u8, cs_ptr, cs_len, ncorpus) == 1 { ok = ok + 1 }
70 if pb_publish("voxelworld" as *u8, "web_assets/voxelworld.html" as *u8, cs_ptr, cs_len, ncorpus) == 1 { ok = ok + 1 }
71 p_w("=== re-pushed "); p_num(ok); p_w("/6 confirmed (push_rc==0) ===\n")
72 if ok == 6 { sys_exit(0); return 0 }
73 sys_exit(1); return 1
74}