code wiki / _hdl_build / nx_wiki_roadmap_page.nx
nx_wiki_roadmap_page.nx source
↩ module page · 119 lines · 8348 B
1// nx_wiki_roadmap_page.nx -- GENERATE the live "Roadmap" wiki article, a TYPED Diataxis EXPLANATION page
2// built through the sovereign page builder (nx_wiki_shell) so it clears the full MediaWiki feature bar
3// (measured by nx_wiki_exceed) AND is walkable into the wiki spine (breadcrumb/tree/prev-next/related/
4// backlinks). Summarizes the living roadmap: the stack hardware-up, maturity per layer, where the external
5// footprint is shrinking, and the highest-leverage opportunities. Facts mirror the team-measured roadmap.
6// Emits web_assets/roadmap.html (-> nishifamily.com/wiki/roadmap.html). license_tier: ORIGINAL
7
8import "nx_syscalls.nx"
9import "nx_wiki_shell.nx"
10
11const RM_OUT: *u8 = "web_assets/roadmap.html"
12const RM_CAP: i64 = 262144
13
14// HTML-escape dynamic text.
15func rm_cat_esc(dst: *u8, off: i64, s: *u8) -> i64 {
16 var o: i64 = off; var i: i64 = 0
17 while s[i] != 0 as u8 {
18 let c: u8 = s[i]
19 if c == 60 as u8 { o = sh_cat(dst, o, "<" as *u8) }
20 else { if c == 62 as u8 { o = sh_cat(dst, o, ">" as *u8) }
21 else { if c == 38 as u8 { o = sh_cat(dst, o, "&" as *u8) }
22 else { dst[o] = c; o = o + 1 } } }
23 i = i + 1
24 }
25 return o
26}
27
28// one layer <tr>: layer, capability, maturity, the raised-hand opportunity.
29func rm_row(dst: *u8, off: i64, layer: *u8, cap: *u8, mat: *u8, op: *u8) -> i64 {
30 var w: i64 = off
31 w = sh_cat(dst, w, "<tr><td><strong>" as *u8); w = rm_cat_esc(dst, w, layer)
32 w = sh_cat(dst, w, "</strong></td><td>" as *u8); w = rm_cat_esc(dst, w, cap)
33 w = sh_cat(dst, w, "</td><td>" as *u8); w = rm_cat_esc(dst, w, mat)
34 w = sh_cat(dst, w, "</td><td>" as *u8); w = rm_cat_esc(dst, w, op)
35 w = sh_cat(dst, w, "</td></tr>\n" as *u8)
36 return w
37}
38
39func main() -> i64 {
40 let now: i64 = sys_now_realtime_sec()
41 let h: *u8 = sys_mmap(RM_CAP)
42 var w: i64 = 0
43
44 let wl: *NxWikiLinks = sys_mmap(128) as *NxWikiLinks
45 sh_links_load(wl, "knowledge/registry/wiki_links.tsv" as *u8)
46 let store: *NxWikiDocStore = sh_corpus_store()
47
48 w = sh_head(h, w, "Roadmap" as *u8, "roadmap" as *u8)
49 w = sh_nav(h, w, "roadmap" as *u8)
50 w = sh_walk_furniture(h, w, wl, store, "roadmap" as *u8)
51
52 w = sh_cat(h, w, "<h1>Living Roadmap & Footprint</h1>\n" as *u8)
53 w = sh_cat(h, w, "<p class=\"fresh\">⟳ Generated LIVE by <code>nx_wiki_roadmap_page</code> at epoch=" as *u8)
54 w = sh_catn(h, w, now)
55 w = sh_cat(h, w, " — a Diataxis <strong>explanation</strong> page. Maturity per layer is re-graded by the team (Auditor + Compliance) and regenerated.</p>\n" as *u8)
56
57 w = sh_cat(h, w, "<p class=\"lede\">The ecosystem is built <strong>hardware up</strong> — from machine code and the sovereign compiler through crypto, transport, hosting, and apps. This roadmap shows the maturity of each layer, where the external (non-sovereign) <strong>footprint is shrinking</strong>, and the highest-leverage opportunities next. Overall progress to <strong>S-class-EXCEED: 47%</strong>.</p>\n" as *u8)
58
59 w = sh_infobox_open(h, w, "Living Roadmap" as *u8)
60 w = sh_infobox_row(h, w, "Type" as *u8, "Explanation" as *u8)
61 w = sh_infobox_row(h, w, "Progress to S-EXCEED" as *u8, "47%" as *u8)
62 w = sh_infobox_row(h, w, "Direction" as *u8, "hardware up (L0 -> apps)" as *u8)
63 w = sh_infobox_row(h, w, "Footprint target" as *u8, "external deps -> 0 (gcc + .sh remaining)" as *u8)
64 w = sh_infobox_row(h, w, "Re-graded by" as *u8, "the team (Auditor + Compliance)" as *u8)
65 w = sh_infobox_close(h, w)
66
67 w = sh_toc_open(h, w)
68 w = sh_toc_item(h, w, "stack" as *u8, "The stack, hardware up" as *u8)
69 w = sh_toc_item(h, w, "footprint" as *u8, "The shrinking footprint" as *u8)
70 w = sh_toc_item(h, w, "opps" as *u8, "Where the opportunities are" as *u8)
71 w = sh_toc_item(h, w, "refs" as *u8, "References & evidence" as *u8)
72 w = sh_toc_close(h, w)
73
74 w = sh_section(h, w, "stack" as *u8, "The stack, hardware up" as *u8)
75 w = sh_cat(h, w, "<p>Maturity runs from TOY → FUNCTIONAL → PRODUCTION → EXCEED; a raised hand marks the blocker on a layer.</p>\n" as *u8)
76 w = sh_cat(h, w, "<table><tr><th>Layer</th><th>Capability</th><th>Maturity</th><th>Raised hand / next</th></tr>\n" as *u8)
77 w = rm_row(h, w, "L0" as *u8, "Machine code / syscalls" as *u8, "PRODUCTION" as *u8, "stable foundation" as *u8)
78 w = rm_row(h, w, "L1" as *u8, "Compiler (NishiLang -> x86)" as *u8, "TOY" as *u8, "KEYSTONE: regalloc + captured miscompile" as *u8)
79 w = rm_row(h, w, "L2" as *u8, "Toolchain / linker (nxasm/ELF)" as *u8, "PRODUCTION" as *u8, "byte-exact -> retire gcc" as *u8)
80 w = rm_row(h, w, "L3" as *u8, "Crypto (SHA / ECDSA / ChaCha)" as *u8, "FUNCTIONAL" as *u8, "raised hand: Argon2id" as *u8)
81 w = rm_row(h, w, "L5" as *u8, "TLS 1.3 + SSH" as *u8, "FUNCTIONAL" as *u8, "W1: OpenSSH benchmark" as *u8)
82 w = rm_row(h, w, "L7" as *u8, "Hosting (multi-site, hot)" as *u8, "PRODUCTION" as *u8, "A1 boot / A3 zero-downtime" as *u8)
83 w = rm_row(h, w, "L8" as *u8, "Site / CMS / search" as *u8, "FUNCTIONAL" as *u8, "raised hand: sanitizer + content" as *u8)
84 w = rm_row(h, w, "L9" as *u8, "Team / process / autonomy" as *u8, "PRODUCTION" as *u8, "drive Claude-load -> 0" as *u8)
85 w = sh_cat(h, w, "</table>\n" as *u8)
86
87 w = sh_section(h, w, "footprint" as *u8, "The shrinking footprint" as *u8)
88 w = sh_cat(h, w, "<p>The external / non-sovereign dependencies <strong>retired</strong> over the arc: Python, bash orchestration, C on the x86 path, hand <code>.sh</code> deploys. Still on the path (the last rungs): <strong>gcc</strong> (link) and the <code>.sh</code> boot supervisor — target <strong>0</strong>.</p>\n" as *u8)
89 w = sh_cat(h, w, "<p class=\"why\">Claude-load (the tutoring footprint we drive to zero) is honestly tracked: it spikes during novel authoring, then falls as the Builder gains the capability. The metric is the point — the ecosystem must become self-sufficient.</p>\n" as *u8)
90
91 w = sh_section(h, w, "opps" as *u8, "Where the opportunities are" as *u8)
92 w = sh_cat(h, w, "<p>Prioritized by WSJF in the PM backlog; each is a callout on the maturity graph:</p>\n<ul>" as *u8)
93 w = sh_cat(h, w, "<li><strong>L1 compiler keystone</strong> — regalloc O(n^2) -> O(n log n) + fix the captured miscompile. Unblocks fast sovereign builds across the whole stack.</li>" as *u8)
94 w = sh_cat(h, w, "<li><strong>Two raised hands</strong> — Argon2id (Engineer) + the HTML allowlist-sanitizer (Builder). Unblock CMS auth + safe editing.</li>" as *u8)
95 w = sh_cat(h, w, "<li><strong>A1 sovereign supervisor at boot</strong> — retires the last <code>.sh</code>, shrinking the footprint to gcc-only.</li>" as *u8)
96 w = sh_cat(h, w, "<li><strong>Real site content + WCAG 2.2 AA audit</strong> — moves the sites FUNCTIONAL -> S-class.</li>" as *u8)
97 w = sh_cat(h, w, "</ul>\n" as *u8)
98 w = sh_cat(h, w, "<p>Track the work on the <a href=\"/wiki/board.html\">workstream board</a>; see what ships in the <a href=\"/wiki/products.html\">product catalog</a>.</p>\n" as *u8)
99
100 w = sh_refs_open(h, w)
101 w = sh_cat(h, w, "<li>Living roadmap — auto-generated from team measurements, re-graded by the Auditor + Compliance, pushed hot to this wiki</li>\n" as *u8)
102 w = sh_cat(h, w, "<li><a href=\"/wiki/board.html\">Workstream board</a> — the streams + empires this roadmap prioritizes</li>\n" as *u8)
103 w = sh_cat(h, w, "<li><a href=\"/wiki/charter.html\">Graceful Evolution Charter</a> — the telos the roadmap serves</li>\n" as *u8)
104 w = sh_refs_close(h, w)
105
106 w = sh_footer_wl(h, w, wl, "roadmap" as *u8, now)
107
108 let fd: i64 = sys_openat_wr(RM_OUT, 0x1a4)
109 if fd < 0 { sys_write(2, "FATAL: cannot open roadmap.html\n" as *u8, 32); sys_exit(2); return 2 }
110 sys_write(fd, h, w)
111 sys_close(fd)
112 sys_write(1, "[nx_wiki_roadmap_page] wrote roadmap.html bytes=" as *u8, 48)
113 let nb: *u8 = sys_mmap(28); var k2: i64 = 0; var m2: i64 = w
114 if m2 == 0 { nb[0] = 48 as u8; k2 = 1 }
115 while m2 > 0 { nb[k2] = (48 + (m2 % 10)) as u8; m2 = m2 / 10; k2 = k2 + 1 }
116 var q: i64 = k2 - 1; while q >= 0 { let o1: *u8 = sys_mmap(1); o1[0] = nb[q]; sys_write(1, o1, 1); q = q - 1 }
117 sys_write(1, "\n" as *u8, 1)
118 sys_exit(0); return 0
119}