nx_research_river.nx source
↩ module page · 349 lines · 20905 B
1// nx_research_river.nx -- EMIT ONE AREA'S RESEARCH INDEX FROM THE REGISTRY.
2//
3// The ocean (/wiki/research) has been generated from the `resbrief-` plane since 2026-08-01, but
4// every RIVER -- /code/research, /product/research -- was still a HAND-EDITED page. On 2026-08-02
5// that bill came due twice, in OPPOSITE directions:
6//
7// * the HAND page was STALE: three briefs published that day were registered and rendered into
8// the ocean, while /code/research (the page a reader of the code wiki actually lands on) still
9// listed the older set and knew nothing about them;
10// * the REGISTRY was WRONG: five briefs whose pages had been written and were being served
11// (research_agentmem, research_codequality, research_perfmath, research_modeltier,
12// research_foodchem) still carried status=STUB and, in the slug column, their CORPUS SOURCE
13// FILENAME rather than their served page name. The ocean therefore rendered five live briefs
14// as unlinked corpus-only stubs.
15//
16// THE LAW THIS ORGAN IS BUILT AROUND: A GENERATED INDEX INHERITS ITS REGISTRY'S ERRORS AND
17// LAUNDERS THEM AS AUTHORITY. Generation does not create truth; it propagates whatever the
18// registry says, at machine speed and with a machine's air of correctness. Replacing a
19// hand-edited index with a generated one is only an improvement AFTER the registry is proven a
20// superset of the page it replaces -- which is why the five rows above were repaired against the
21// filesystem (the oracle for what is actually served) BEFORE this organ was allowed to overwrite
22// anything.
23//
24// nx_research_river <area> -- writes sites/nishifamily/<area>/research.html
25//
26// Sections are the DISTINCT STATUS values in first-seen order, exactly as the ocean sections by
27// distinct AREA. A new status appears by adding a plane row -- no organ edit. That is what
28// recovers the hand page's Published / Maps / In-progress grouping without hardcoding a status
29// list that would silently drop any status nobody thought of.
30//
31// Reads with sts_load_honest, NEVER plain sts_load: a stale declared count silently truncates the
32// plain loader, and an index that under-reports its own library is indistinguishable from a
33// complete one. Declared / loaded / in-area / rendered / beyond are printed AND rendered on the
34// page, so a READER can see partial coverage, not just whoever ran the organ.
35//
36// Plane row (8 col): id area slug title date status forks_off scope
37// license_tier: ORIGINAL No hw writes (Rule 26). expect_exit: 0
38import "nx_store_seed_lib.nx"
39import "nx_seg_store.nx"
40import "nx_syscalls.nx"
41
42const RV_PLANE: *u8 = "knowledge/store/resbrief-"
43const RV_RCAP: i64 = 262144
44const RV_HCAP: i64 = 524288
45const RV_NL: i64 = 10
46const RV_TAB: i64 = 9
47const RV_MAXCOL: i64 = 16
48const RV_PAIR: i64 = 2
49const RV_SPB: i64 = 256
50const RV_MAXST: i64 = 16
51const RV_STB: i64 = 256
52const RV_FLAGB: i64 = 64
53const RV_PATHB: i64 = 256
54const RV_C_AREA: i64 = 1
55const RV_C_SLUG: i64 = 2
56const RV_C_TITLE: i64 = 3
57const RV_C_DATE: i64 = 4
58const RV_C_STATUS: i64 = 5
59const RV_C_FORKS: i64 = 6
60const RV_C_SCOPE: i64 = 7
61const RV_NCOL: i64 = 8
62const RV_MODE: i64 = 0x1a4
63const RV_ERRFD: i64 = 2
64const RV_EXIT_IO: i64 = 1
65const RV_EXIT_USAGE: i64 = 2
66const RV_EXIT_EMPTY: i64 = 3
67const RV_EXIT_NOAREA: i64 = 4
68const RV_LT: i64 = 60
69const RV_GT: i64 = 62
70const RV_AMP: i64 = 38
71
72func rv_slen(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n }
73func rv_werr(s: *u8) -> i64 { sys_write(RV_ERRFD, s, rv_slen(s)); return 0 }
74
75func rv_slice_eqs(q: *u8, a: i64, b: i64, s: *u8) -> i64 {
76 let sn: i64 = rv_slen(s)
77 if b - a != sn { return 0 }
78 var i: i64 = 0
79 while i < sn { if q[a+i] != s[i] { return 0 } i = i + 1 }
80 return 1
81}
82func rv_slice_eq(q: *u8, a: i64, b: i64, r: *u8, c: i64, d: i64) -> i64 {
83 if b - a != d - c { return 0 }
84 var i: i64 = 0
85 while a + i < b { if q[a+i] != r[c+i] { return 0 } i = i + 1 }
86 return 1
87}
88func rv_cols(q: *u8, ls: i64, le: i64, sp: *i64) -> i64 {
89 var c: i64 = 0
90 var p: i64 = ls
91 while c < RV_MAXCOL {
92 var e: i64 = p
93 var s: i64 = 1
94 while s == 1 { if e >= le { s = 0 } else { if q[e] == (RV_TAB as u8) { s = 0 } else { e = e + 1 } } }
95 sp[c*RV_PAIR] = p
96 sp[c*RV_PAIR+1] = e
97 c = c + 1
98 if e >= le { return c }
99 p = e + 1
100 }
101 return c
102}
103func rv_cat_slice(d: *u8, o: i64, q: *u8, a: i64, b: i64) -> i64 {
104 var oo: i64 = o
105 var i: i64 = a
106 while i < b { d[oo] = q[i]; oo = oo + 1; i = i + 1 }
107 return oo
108}
109// plane text is AUTHORED DATA, never markup -- escape it, or a title carrying an angle bracket
110// silently rewrites the page around it
111func rv_cat_esc(d: *u8, o: i64, q: *u8, a: i64, b: i64) -> i64 {
112 var oo: i64 = o
113 var i: i64 = a
114 while i < b {
115 let c: i64 = q[i] as i64
116 if c == RV_LT { oo = ss_cat(d, oo, "<" as *u8) }
117 else { if c == RV_GT { oo = ss_cat(d, oo, ">" as *u8) }
118 else { if c == RV_AMP { oo = ss_cat(d, oo, "&" as *u8) }
119 else { d[oo] = q[i]; oo = oo + 1 } } }
120 i = i + 1
121 }
122 return oo
123}
124
125func main(argc: i64, argv: *i64) -> i64 {
126 if argc < 2 {
127 rv_werr("usage: nx_research_river <area>\n" as *u8)
128 rv_werr(" writes sites/nishifamily/<area>/research.html from knowledge/store/resbrief-\n" as *u8)
129 rv_werr(" areas present today: code, product (a new area needs a plane row, not an edit)\n" as *u8)
130 sys_exit(RV_EXIT_USAGE)
131 return RV_EXIT_USAGE
132 }
133 let area: *u8 = argv[1] as *u8
134 let buf: *u8 = sts_mm(RV_RCAP)
135 let flags: *i64 = sts_mm(RV_FLAGB) as *i64
136 let n: i64 = sts_load_honest(RV_PLANE, buf, RV_RCAP, flags)
137 if n <= 0 {
138 rv_werr("RIVER-RED plane EMPTY / unseeded: knowledge/store/resbrief-\n" as *u8)
139 sys_exit(RV_EXIT_EMPTY)
140 return RV_EXIT_EMPTY
141 }
142 let h: *u8 = sts_mm(RV_HCAP)
143 let sp: *i64 = sts_mm(RV_SPB) as *i64
144 let sp2: *i64 = sts_mm(RV_SPB) as *i64
145 let st: *i64 = sts_mm(RV_STB) as *i64
146 let now: i64 = sys_now_realtime_sec()
147
148 // ---- pass 1: distinct STATUS values for THIS AREA, first-seen order ----
149 var nst: i64 = 0
150 var mine: i64 = 0
151 var i: i64 = 0
152 while i < n {
153 var le: i64 = i
154 var s: i64 = 1
155 while s == 1 { if le >= n { s = 0 } else { if buf[le] == (RV_NL as u8) { s = 0 } else { le = le + 1 } } }
156 if le > i {
157 let nc: i64 = rv_cols(buf, i, le, sp)
158 if nc >= RV_NCOL {
159 if rv_slice_eqs(buf, sp[RV_C_AREA*RV_PAIR], sp[RV_C_AREA*RV_PAIR+1], area) == 1 {
160 mine = mine + 1
161 let ka: i64 = sp[RV_C_STATUS*RV_PAIR]
162 let kb: i64 = sp[RV_C_STATUS*RV_PAIR+1]
163 var seen: i64 = 0
164 var k: i64 = 0
165 while k < nst {
166 if rv_slice_eq(buf, ka, kb, buf, st[k*RV_PAIR], st[k*RV_PAIR+1]) == 1 { seen = 1 }
167 k = k + 1
168 }
169 if seen == 0 { if nst < RV_MAXST {
170 st[nst*RV_PAIR] = ka
171 st[nst*RV_PAIR+1] = kb
172 nst = nst + 1
173 } }
174 }
175 }
176 }
177 i = le + 1
178 }
179 // REFUSE rather than write an empty index. A river page listing nothing reads to a human as
180 // "this area has no research" -- a stronger and more damaging claim than "you named an area
181 // that is not in the registry". An instrument that cannot find its subject must SAY SO, not
182 // indict it.
183 if mine == 0 {
184 rv_werr("RIVER-RED area has NO rows in the registry -- refusing to write an empty index\n" as *u8)
185 rv_werr(" (an empty page would assert this area has no research; it asserts nothing)\n" as *u8)
186 sys_exit(RV_EXIT_NOAREA)
187 return RV_EXIT_NOAREA
188 }
189
190 var w: i64 = 0
191 w = ss_cat(h, w, "<!doctype html>\n<html lang='en'><head><meta charset='utf-8'><meta name='viewport' content='width=device-width,initial-scale=1'>\n<title>research - nishi " as *u8)
192 w = ss_cat(h, w, area)
193 w = ss_cat(h, w, " wiki</title>\n<style>\n" as *u8)
194 w = ss_cat(h, w, ":root{--bg:#fff;--sf:#f6f8fb;--br:#dfe4ec;--ink:#232936;--mut:#68748a;--acc:#1a5dc8;--acc2:#2e8555;--hd:#111726;--hov:#f0f4fa}\n" as *u8)
195 w = ss_cat(h, w, "@media(prefers-color-scheme:dark){:root{--bg:#0d1017;--sf:#131826;--br:#252d40;--ink:#dbe2ec;--mut:#8a94a8;--acc:#5aa7f0;--acc2:#86c793;--hd:#eef2f8;--hov:#141a28}}\n" as *u8)
196 w = ss_cat(h, w, "*{box-sizing:border-box}body{font-family:system-ui,'Segoe UI',sans-serif;margin:0;background:var(--bg);color:var(--ink);padding:22px 30px 40px;line-height:1.55}\n" as *u8)
197 w = ss_cat(h, w, "main{max-width:1080px;margin:0 auto}a{color:var(--acc);text-decoration:none}a:hover{text-decoration:underline}\n" as *u8)
198 w = ss_cat(h, w, "h1{font-size:1.55em;color:var(--hd);margin:2px 0 6px;letter-spacing:-.01em}\n" as *u8)
199 w = ss_cat(h, w, "h2{font-size:1.05em;color:var(--hd);margin:26px 0 8px;padding-bottom:5px;border-bottom:1px solid var(--br)}\n" as *u8)
200 w = ss_cat(h, w, "table{border-collapse:collapse;width:100%;margin:8px 0}td,th{padding:6px 10px;border-bottom:1px solid var(--br);text-align:left;vertical-align:top;font-size:.9em}th{color:var(--mut);font-size:.85em}tr:hover td{background:var(--hov)}\n" as *u8)
201 w = ss_cat(h, w, ".n{text-align:right;font-variant-numeric:tabular-nums}.muted{color:var(--mut)}\n" as *u8)
202 w = ss_cat(h, w, ".nar{background:var(--sf);border:1px solid var(--br);border-left:3px solid var(--acc2);border-radius:8px;padding:12px 16px;font-size:.92em;margin:12px 0}\n" as *u8)
203 w = ss_cat(h, w, ".st{font-weight:600;font-size:.82em;white-space:nowrap}.pub{color:var(--acc2)}.wip{color:#a8792e}.stub{color:var(--mut)}\n" as *u8)
204 w = ss_cat(h, w, "code{font-family:ui-monospace,Consolas,monospace;font-size:.85em}\nfooter{margin-top:36px;padding-top:10px;border-top:1px solid var(--br);font-size:.8em;color:var(--mut)}\n" as *u8)
205 w = ss_cat(h, w, "</style></head><body><main>\n<p class='muted'><a href='index'>nishi " as *u8)
206 w = ss_cat(h, w, area)
207 w = ss_cat(h, w, " wiki</a> / research</p>\n<h1>Research briefs</h1>\n" as *u8)
208 w = ss_cat(h, w, "<p class='muted'>Durable external-research censuses. Every substantive claim carries a source URL and a publication date, and is labelled SHIPPING / CLINICAL / RESEARCH / ANNOUNCED / DEPRECATED. Gaps are declared UNVERIFIED rather than guessed.</p>\n" as *u8)
209 w = ss_cat(h, w, "<div class='nar'><b>Why this area exists.</b> A research finding that lives in one mutable backend is not banked. These briefs are published here so they survive loss of the memory corpus, and so their claims can be checked against their sources by anyone, at any time.<br><br><b>This page is GENERATED</b> by <code>nx_research_river</code> from the <code>resbrief-</code> registry — the same registry that renders <a href='/wiki/research'>the research ocean</a>. It is not hand-edited, so this index and the library it indexes cannot drift apart. Publishing a brief adds its row; the row is what puts it on this page and in the ocean at once.</div>\n" as *u8)
210
211 // ---- one section per distinct status, in first-seen order ----
212 var total: i64 = 0
213 var a: i64 = 0
214 while a < nst {
215 let ka: i64 = st[a*RV_PAIR]
216 let kb: i64 = st[a*RV_PAIR+1]
217 let isstub: i64 = rv_slice_eqs(buf, ka, kb, "STUB" as *u8)
218 w = ss_cat(h, w, "<h2>" as *u8)
219 w = rv_cat_esc(h, w, buf, ka, kb)
220 w = ss_cat(h, w, "</h2>\n" as *u8)
221 if isstub == 1 {
222 w = ss_cat(h, w, "<p class='muted'>In the corpus, not yet transcribed to a served page. There is no link to give — the corpus slug is the whole address.</p>\n" as *u8)
223 }
224 w = ss_cat(h, w, "<table><tr><th>Brief</th><th>Compiled</th><th>Forks off</th><th>Scope</th></tr>\n" as *u8)
225 var rows: i64 = 0
226 var j: i64 = 0
227 while j < n {
228 var le2: i64 = j
229 var s2: i64 = 1
230 while s2 == 1 { if le2 >= n { s2 = 0 } else { if buf[le2] == (RV_NL as u8) { s2 = 0 } else { le2 = le2 + 1 } } }
231 if le2 > j {
232 let nc2: i64 = rv_cols(buf, j, le2, sp2)
233 if nc2 >= RV_NCOL {
234 var hit: i64 = 0
235 if rv_slice_eqs(buf, sp2[RV_C_AREA*RV_PAIR], sp2[RV_C_AREA*RV_PAIR+1], area) == 1 {
236 if rv_slice_eq(buf, sp2[RV_C_STATUS*RV_PAIR], sp2[RV_C_STATUS*RV_PAIR+1], buf, ka, kb) == 1 { hit = 1 }
237 }
238 if hit == 1 {
239 w = ss_cat(h, w, "<tr><td>" as *u8)
240 // A STUB HAS NO SERVED PAGE, SO IT GETS NO LINK. Rendering one would
241 // manufacture a 404 that looks like a library entry -- the failure that
242 // made five live briefs look like stubs, run in reverse.
243 if isstub == 1 {
244 w = ss_cat(h, w, "<b>" as *u8)
245 w = rv_cat_esc(h, w, buf, sp2[RV_C_TITLE*RV_PAIR], sp2[RV_C_TITLE*RV_PAIR+1])
246 w = ss_cat(h, w, "</b><br><code class='muted'>" as *u8)
247 w = rv_cat_esc(h, w, buf, sp2[RV_C_SLUG*RV_PAIR], sp2[RV_C_SLUG*RV_PAIR+1])
248 w = ss_cat(h, w, "</code>" as *u8)
249 } else {
250 w = ss_cat(h, w, "<a href='" as *u8)
251 w = rv_cat_slice(h, w, buf, sp2[RV_C_SLUG*RV_PAIR], sp2[RV_C_SLUG*RV_PAIR+1])
252 w = ss_cat(h, w, "'><b>" as *u8)
253 w = rv_cat_esc(h, w, buf, sp2[RV_C_TITLE*RV_PAIR], sp2[RV_C_TITLE*RV_PAIR+1])
254 w = ss_cat(h, w, "</b></a>" as *u8)
255 }
256 w = ss_cat(h, w, "</td><td class='muted'>" as *u8)
257 w = rv_cat_esc(h, w, buf, sp2[RV_C_DATE*RV_PAIR], sp2[RV_C_DATE*RV_PAIR+1])
258 w = ss_cat(h, w, "</td><td class='muted'>" as *u8)
259 w = rv_cat_esc(h, w, buf, sp2[RV_C_FORKS*RV_PAIR], sp2[RV_C_FORKS*RV_PAIR+1])
260 w = ss_cat(h, w, "</td><td>" as *u8)
261 w = rv_cat_esc(h, w, buf, sp2[RV_C_SCOPE*RV_PAIR], sp2[RV_C_SCOPE*RV_PAIR+1])
262 w = ss_cat(h, w, "</td></tr>\n" as *u8)
263 rows = rows + 1
264 total = total + 1
265 }
266 }
267 }
268 j = le2 + 1
269 }
270 w = ss_cat(h, w, "</table>\n<p class='muted'>" as *u8)
271 w = ss_catn(h, w, rows)
272 w = ss_cat(h, w, " in this section.</p>\n" as *u8)
273 a = a + 1
274 }
275
276 // ---- coverage, rendered ON THE PAGE ----
277 w = ss_cat(h, w, "<h2>Coverage of this index</h2>\n<table><tr><th>Measure</th><th class='n'>Rows</th><th>Meaning</th></tr>\n" as *u8)
278 w = ss_cat(h, w, "<tr><td>Declared by the registry</td><td class='n'>" as *u8)
279 w = ss_catn(h, w, flags[0])
280 w = ss_cat(h, w, "</td><td class='muted'>the plane's own row count, all areas</td></tr>\n<tr><td>Loaded</td><td class='n'>" as *u8)
281 w = ss_catn(h, w, flags[1])
282 w = ss_cat(h, w, "</td><td class='muted'>rows actually read back</td></tr>\n<tr><td>In this area</td><td class='n'>" as *u8)
283 w = ss_catn(h, w, mine)
284 w = ss_cat(h, w, "</td><td class='muted'>rows whose area column matches this page</td></tr>\n<tr><td>Rendered above</td><td class='n'>" as *u8)
285 w = ss_catn(h, w, total)
286 w = ss_cat(h, w, "</td><td class='muted'>must equal “in this area”, else a row is malformed and is missing</td></tr>\n<tr><td>Reachable beyond the count</td><td class='n'>" as *u8)
287 w = ss_catn(h, w, flags[2])
288 w = ss_cat(h, w, "</td><td class='muted'>records past the declared count; non-zero means reconcile</td></tr>\n</table>\n" as *u8)
289 if mine != total { w = ss_cat(h, w, "<p class='nar'><b>WARNING:</b> this area's row count and the rendered count disagree — at least one registry row is malformed and is missing from the sections above. This page is INCOMPLETE.</p>\n" as *u8) }
290 if flags[2] > 0 { w = ss_cat(h, w, "<p class='nar'><b>WARNING:</b> records exist past the declared count. This index may be under-reporting the library.</p>\n" as *u8) }
291
292 // ---- standing process doctrine: universal to every river, stated once, here ----
293 w = ss_cat(h, w, "<h2>The process — standing, not optional</h2>\n<table>\n" as *u8)
294 w = ss_cat(h, w, "<tr><td class='n'>0</td><td><b>CHECK IN FIRST, ALWAYS.</b> Before ANY research session: read this index and search the corpus for the topic. If a brief exists, <b>append to it, supersede specific claims with newer sources, or add a sub-brief that forks off it</b> — never start a parallel brief. Re-deriving an existing brief is the redo-work failure this process exists to end.</td></tr>\n" as *u8)
295 w = ss_cat(h, w, "<tr><td class='n'>A</td><td><b>ARCHIVE EVERY CITATION — no link rot.</b> At publish time every external URL a brief cites is ingested into the sovereign library, so the CONTENT survives the link. The live URL stays for attribution; the library copy is the durable evidence. VERIFY each ingest landed by searching for it — an ingest acknowledgement is not an index entry.</td></tr>\n" as *u8)
296 w = ss_cat(h, w, "<tr><td class='n'>M</td><td><b>FEED THE MINERS.</b> Briefs live here as served pages so the corpus miners index them — publishing here IS registering the work as done. Work that exists only in a session transcript is invisible to every miner and will be redone.</td></tr>\n" as *u8)
297 w = ss_cat(h, w, "<tr><td class='n'>R</td><td><b>REGISTER, OR IT IS NOT PUBLISHED.</b> A page nobody can navigate to is not published, it is merely written. The registry row is what places a brief on this index and in the ocean; writing the file is only half the act. Equally: a registry row that disagrees with what is actually served gets rendered as authority — reconcile against the filesystem, which is the oracle for what a reader can reach.</td></tr>\n" as *u8)
298 w = ss_cat(h, w, "</table>\n" as *u8)
299 w = ss_cat(h, w, "<h2>What counts as a brief here</h2>\n<p>A brief earns this area when it meets all four:</p>\n<table>\n" as *u8)
300 w = ss_cat(h, w, "<tr><td class='n'>1</td><td>Every substantive claim carries a <b>source URL and a publication date</b>.</td></tr>\n" as *u8)
301 w = ss_cat(h, w, "<tr><td class='n'>2</td><td>Each claim is <b>labelled</b> SHIPPING / CLINICAL / RESEARCH / ANNOUNCED / DEPRECATED — a shipped product and a preprint are not the same evidence.</td></tr>\n" as *u8)
302 w = ss_cat(h, w, "<tr><td class='n'>3</td><td>Measured numbers carry <b>units</b> and their measurement context (hardware, resolution, cohort, dataset).</td></tr>\n" as *u8)
303 w = ss_cat(h, w, "<tr><td class='n'>4</td><td>Everything the author could not verify is listed in a <b>declared UNVERIFIED section</b> rather than omitted or guessed. A brief with no declared gaps is a brief whose author did not look for them.</td></tr>\n" as *u8)
304 w = ss_cat(h, w, "</table>\n" as *u8)
305
306 w = ss_cat(h, w, "<footer>Generated sovereignly by <code>nx_research_river " as *u8)
307 w = ss_cat(h, w, area)
308 w = ss_cat(h, w, "</code> from <code>knowledge/store/resbrief-</code> at epoch=" as *u8)
309 w = ss_catn(h, w, now)
310 w = ss_cat(h, w, ". All rivers flow into <a href='/wiki/research'>the ocean</a>. Nishi ecosystem.</footer>\n</main></body></html>\n" as *u8)
311
312 let path: *u8 = sts_mm(RV_PATHB)
313 var po: i64 = 0
314 po = ss_cat(path, po, "sites/nishifamily/" as *u8)
315 po = ss_cat(path, po, area)
316 po = ss_cat(path, po, "/research.html" as *u8)
317 path[po] = 0 as u8
318 let fd: i64 = sys_openat_wr(path, RV_MODE)
319 if fd < 0 {
320 rv_werr("RIVER-RED cannot open the area's research.html for write\n" as *u8)
321 sys_exit(RV_EXIT_IO)
322 return RV_EXIT_IO
323 }
324 sys_write(fd, h, w)
325 sys_close(fd)
326
327 let m: *u8 = sts_mm(512)
328 var o: i64 = ss_cat(m, 0, "RIVER-GREEN area=" as *u8)
329 o = ss_cat(m, o, area)
330 o = ss_cat(m, o, " sections=" as *u8)
331 o = ss_catn(m, o, nst)
332 o = ss_cat(m, o, " inarea=" as *u8)
333 o = ss_catn(m, o, mine)
334 o = ss_cat(m, o, " rendered=" as *u8)
335 o = ss_catn(m, o, total)
336 o = ss_cat(m, o, " declared=" as *u8)
337 o = ss_catn(m, o, flags[0])
338 o = ss_cat(m, o, " loaded=" as *u8)
339 o = ss_catn(m, o, flags[1])
340 o = ss_cat(m, o, " beyond=" as *u8)
341 o = ss_catn(m, o, flags[2])
342 o = ss_cat(m, o, " bytes=" as *u8)
343 o = ss_catn(m, o, w)
344 m[o] = RV_NL as u8
345 o = o + 1
346 sys_write(1, m, o)
347 sys_exit(0)
348 return 0
349}