code wiki / _hdl_build / nx_claude_harvest_requests_t144.nx

nx_claude_harvest_requests_t144.nx source

↩ module page · 3873 lines · 191102 B

1// nx_claude_harvest.nx -- CLAUDE TRANSCRIPT HARVESTER + OUTSIDE-GAUGE (miner-sota lane F964/F973, 2026-07-23). 2// PORTABLE organ (gen-image pattern: runs where the transcripts live -- laptop WSL today, NAS, any host): 3// parses Claude Code transcript JSONL into sovereign actlog frames, bulk-ingests staged frames into a 4// journal (validated, marker-idempotent), and derives the outside_permil gauge (nishi vs outside tool 5// split) that MUST FALL as capabilities move inside (MG00 baseline 651, 2026-07-23). 6// Composes nx_sovjson_lib (sj_*) -- no helper dup (D001 discipline). State derived; journals append-only 7// (O_APPEND, conflict-free, ws_sync lineage). No hw writes (Rule 26). 8// frames <transcript.jsonl> <ws> <outjournal> -> parse transcript, append actlog frames; HARVEST OK 9// ingest <framesfile> <journal> -> validated bulk append, idempotent by marker frame 10// gauge <journal> [days] -> JSON outside_permil (0 days = all frames) 11// beat <chbeat.conf> -> DM1 session->NAS capture beat (devmgmt rung, 2026-08-20): 12// walk EVERY transcript under root (all depths, getdents 13// looped until 0), ch_delta each against a per-transcript 14// byte HWM, split the fresh frames into ts-day PIECES sized 15// under the MCP body cliff, ingest each piece (ch_ingest, 16// marker-idempotent) into per-day journals -- the local twin 17// always, the NAS landing via the forked wire when push=1. 18// Pieces are the chunk unit AND the ingest unit, so the 19// pipeline is resumable at every stage with no append 20// primitive over the wire. Counters partition and SUM; 21// unknown head-types bucket UNKNOWN with a named worklist. 22// selftest <scratch-prefix> -> gate T1..T8 + beat teeth (unique per-run scratch names) 23// SSOT for this source is buildroot/runtime/_hdl_build/ on the NAS; the laptop nxc2 tree is a build twin 24// (synced per edit, video-lane pattern) because the beat RUNS WHERE THE TRANSCRIPTS LIVE (laptop WSL). 25// license_tier: ORIGINAL 26import "nx_sovjson_lib.nx" 27import "nx_json.nx" 28import "nx_utf8.nx" 29import "nx_sha256.nx" 30import "nx_fio.nx" 31import "nx_syscalls.nx" 32import "nx_gate_verdict.nx" 33import "nx_tool_run.nx" 34import "nx_mccabe_lib.nx" 35const CH_MAGIC_146097: i64 = 146097 36const CH_MAGIC_719468: i64 = 719468 37const CH_MAGIC_86400: i64 = 86400 38const CH_MAGIC_3600: i64 = 3600 39const CH_MAGIC_1784764900: i64 = 1784764900 40const CH_MAGIC_1784764901: i64 = 1784764901 41const CH_MAGIC_1784764803: i64 = 1784764803 42 43const CH_WIN: i64 = 67108864 44const CH_JWIN: i64 = 4194304 45const CH_OUT: i64 = 65536 46const CH_LINE: i64 = 4096 47const CH_NAME_MAX: i64 = 120 48const CH_NAME_SCAN: i64 = 400 49const CH_MODE_644: i64 = 420 50// ---- CE1 leg 2 (ce_author_health) consts: declared here, above the selftest that reads them (single-pass parser) ---- 51const CH_AH_MAXPATHS: i64 = 8192 52const CH_AH_PATHCELL: i64 = 512 53const CH_AH_MAXSESS: i64 = 1024 54const CH_AH_SESSCELL: i64 = 64 55const CH_AH_CTRS: i64 = 32 56const CH_AH_SPINE: *u8 = "knowledge/status/mccabe.spine" 57const CH_AH_STATUS: *u8 = "knowledge/status/author_health.status" 58const CH_AH_TREE: *u8 = "buildroot/runtime/" 59const CH_AH_RC_UNOBS: i64 = 3 60const CH_AH_RC_NOPATH: i64 = 4 61const CH_AH_FRAMES: i64 = 0 62const CH_AH_PATHFRAMES: i64 = 1 63const CH_AH_UNIQUE: i64 = 2 64const CH_AH_INTREE: i64 = 3 65const CH_AH_OUTSIDE: i64 = 4 66const CH_AH_FIRSTTS: i64 = 5 67const CH_AH_SESSIONS: i64 = 6 68const CH_AH_FILES: i64 = 7 69const CH_AH_FUNCS: i64 = 8 70const CH_AH_SUMVG: i64 = 9 71const CH_AH_ABOVE: i64 = 10 72const CH_AH_DFILES: i64 = 11 73const CH_AH_DFUNCS: i64 = 12 74const CH_AH_DABOVE: i64 = 13 75const CH_AH_DTS: i64 = 14 76const CH_AH_UNREAD: i64 = 15 77const CH_AH_OVERFLOW: i64 = 16 78const CH_AH_FIX_TS: i64 = 1788600000 79const CH_AH_FIX_DFILES: i64 = 10 80const CH_AH_FIX_DFUNCS: i64 = 20 81const CH_AH_FIX_DABOVE: i64 = 3 82const CH_CH_D0: i64 = 48 83const CH_CH_D9: i64 = 57 84const CH_DEC: i64 = 10 85// ---- beat consts (DM1 ch_beat; declared here because the module parser is single-pass and the 86// selftest teeth read them before the beat section) -- each names its derivation ---- 87const CH_BT_DIRWIN: i64 = 65536 // getdents64 batch buffer -- LOOPED until 0, never a listing cap 88const CH_BT_PATHMAX: i64 = 512 // one path cell; longest real transcript path measured ~120 B, 4x headroom 89const CH_BT_MAXFILES: i64 = 16384 // walk table capacity (837 files measured 2026-08-20); hitting it REFUSES loudly 90const CH_BT_MAXDIRS: i64 = 4096 91const CH_BT_ARENA: i64 = 8388608 // path arena = CH_BT_MAXFILES * CH_BT_PATHMAX exactly 92const CH_BT_TYPEMAX: i64 = 64 // distinct head-type slots; overflow announces FLOOR-NOT-TOTAL 93const CH_BT_DAYMAX: i64 = 128 // distinct ts-days per run (backfill spans ~60); overflow REFUSES loudly 94const CH_BT_DAYCELL: i64 = 16 // one day-name cell: YYYYMMDD (8) or tszero (6) + NUL, padded 95const CH_BT_DEFAULT_WIRE_TIMEOUT_MS:i64=120000 // bootstrap fallback; wire_timeout_ms config overrides 96const CH_MCP_BODY_CLIFF: i64 = 65536 // measured: the MCP write body silently drops beyond ~64 KiB 97const CH_BT_CTRS: i64 = 32 // bcx slot count (map at ch_beat) 98const CH_MODE_755: i64 = 493 // rwxr-xr-x for the beat's own state/spool/journal dirs 99const CH_MAGIC_1460: i64 = 1460 // 4*365 (Hinnant civil-from-days) 100const CH_MAGIC_36524: i64 = 36524 // 100*365 + 24 (Hinnant) 101const CH_MAGIC_146096: i64 = 146096 // CH_MAGIC_146097 - 1 (Hinnant) 102 103func ch_read(path: *u8, buf: *u8, cap: i64) -> i64 { 104 let fd: i64 = sys_openat_rd(path) 105 if fd < 0 { return -1 } 106 var n: i64 = 0 107 var go: i64 = 1 108 while go == 1 { let r: i64 = sys_read(fd, ((buf as i64)+n) as *u8, cap-n); if r <= 0 { go = 0 } else { n = n + r } if n >= cap { go = 0 } } 109 sys_close(fd) 110 return n 111} 112// substring search in q[from..endlim) -> position or -1 113func ch_find_from(q: *u8, from: i64, endlim: i64, lit: *u8) -> i64 { 114 var i: i64 = from 115 while i < endlim { 116 var k: i64 = 0 117 var ok: i64 = 1 118 var go: i64 = 1 119 while go == 1 { 120 if lit[k] == (0 as u8) { go = 0 } else { 121 if i + k >= endlim { ok = 0; go = 0 } else { 122 if q[i+k] != lit[k] { ok = 0; go = 0 } else { k = k + 1 } 123 } 124 } 125 } 126 if ok == 1 { return i } 127 i = i + 1 128 } 129 return -1 130} 131func ch_find(q: *u8, n: i64, lit: *u8) -> i64 { 132 if ch_find_from(q, 0, n, lit) >= 0 { return 1 } 133 return 0 134} 135// span q[s..e) begins with lit? 136func ch_starts(q: *u8, s: i64, e: i64, lit: *u8) -> i64 { 137 var k: i64 = 0 138 while lit[k] != (0 as u8) { 139 if s + k >= e { return 0 } 140 if q[s+k] != lit[k] { return 0 } 141 k = k + 1 142 } 143 return 1 144} 145func ch_digits(q: *u8, s: i64, e: i64) -> i64 { 146 if e <= s { return 0 } 147 var i: i64 = s 148 while i < e { let c: i64 = q[i] as i64; if c < 48 { return 0 } if c > 57 { return 0 } i = i + 1 } 149 return 1 150} 151// civil date -> unix epoch (Hinnant days-from-civil, integer only; years >= 1970 here) 152func ch_epoch_ymdhms(y: i64, mo: i64, d: i64, h: i64, mi: i64, s: i64) -> i64 { 153 var yy: i64 = y 154 var mp: i64 = 0 155 if mo > 2 { mp = mo - 3 } else { mp = mo + 9; yy = yy - 1 } 156 let era: i64 = yy / 400 157 let yoe: i64 = yy - era * 400 158 let doy: i64 = (153 * mp + 2) / 5 + d - 1 159 let doe: i64 = yoe * 365 + yoe / 4 - yoe / 100 + doy 160 let days: i64 = era * CH_MAGIC_146097 + doe - CH_MAGIC_719468 161 return days * CH_MAGIC_86400 + h * CH_MAGIC_3600 + mi * 60 + s 162} 163// parse ISO "YYYY-MM-DDTHH:MM:SS" at q[s..] (lim-bounded) -> epoch, 0 if malformed 164func ch_iso_epoch(q: *u8, s: i64, lim: i64) -> i64 { 165 if s + 19 > lim { return 0 } 166 if ch_digits(q, s, s+4) == 0 { return 0 } 167 if q[s+4] != (45 as u8) { return 0 } 168 if ch_digits(q, s+5, s+7) == 0 { return 0 } 169 if q[s+7] != (45 as u8) { return 0 } 170 if ch_digits(q, s+8, s+10) == 0 { return 0 } 171 if q[s+10] != (84 as u8) { return 0 } 172 if ch_digits(q, s+11, s+13) == 0 { return 0 } 173 if q[s+13] != (58 as u8) { return 0 } 174 if ch_digits(q, s+14, s+16) == 0 { return 0 } 175 if q[s+16] != (58 as u8) { return 0 } 176 if ch_digits(q, s+17, s+19) == 0 { return 0 } 177 let y: i64 = sj_atoi_span(q, s, s+4) 178 let mo: i64 = sj_atoi_span(q, s+5, s+7) 179 let d: i64 = sj_atoi_span(q, s+8, s+10) 180 let h: i64 = sj_atoi_span(q, s+11, s+13) 181 let mi: i64 = sj_atoi_span(q, s+14, s+16) 182 let se: i64 = sj_atoi_span(q, s+17, s+19) 183 if mo < 1 { return 0 } 184 if mo > 12 { return 0 } 185 if d < 1 { return 0 } 186 if d > 31 { return 0 } 187 return ch_epoch_ymdhms(y, mo, d, h, mi, se) 188} 189// write one actlog frame line to an open fd: <ts>TAB<ws>TAB<tool>TAB<verb>TAB<outcome>TAB<note>NL 190func ch_frame_write(fd: i64, ln: *u8, ts: i64, ws: *u8, tool: *u8, verb: *u8, outcome: *u8, note: *u8) -> i64 { 191 var o: i64 = 0 192 o = sj_catn(ln, o, ts) 193 ln[o] = 9 as u8; o = o + 1 194 o = sj_cat(ln, o, ws) 195 ln[o] = 9 as u8; o = o + 1 196 o = sj_cat(ln, o, tool) 197 ln[o] = 9 as u8; o = o + 1 198 o = sj_cat(ln, o, verb) 199 ln[o] = 9 as u8; o = o + 1 200 o = sj_cat(ln, o, outcome) 201 ln[o] = 9 as u8; o = o + 1 202 o = sj_cat(ln, o, note) 203 ln[o] = 10 as u8; o = o + 1 204 sys_write(fd, ln, o) 205 return 0 206} 207func ch_frame_append(path: *u8, ts: i64, ws: *u8, tool: *u8, verb: *u8, outcome: *u8, note: *u8) -> i64 { 208 let fd: i64 = sys_openat_append(path, CH_MODE_644) 209 if fd < 0 { return -1 } 210 let ln: *u8 = sys_mmap(CH_LINE) 211 ch_frame_write(fd, ln, ts, ws, tool, verb, outcome, note) 212 sys_close(fd) 213 return 0 214} 215// ---------- CE1 leg 2 (codeeffectiveness, 2026-09-05): the PATH a write tool touched ---------- 216// Every frame used to carry `tool use - <verb>` and nothing else, so WHICH FILE a seat wrote was not in the 217// NAS record at all (735 nx_fs_write frames on 2026-09-05, none with a path). The path lives in the tool_use's 218// own input: nx_fs_write carries it as argv[1] (argv[0] is the verb), Write and Edit as file_path. It is read 219// from a BOUNDED window after the tool's name (the input keys come before any content string, so the FIRST 220// match is the input's own key, never a content byte). ADDITIVE: the note gains one space-separated token 221// `path=<p>`; no column moves, every existing reader sees one more token. A non-writer frame is unchanged. 222const CH_PATH_SCAN: i64 = 4096 // one transcript line can carry the write's CONTENT before its path key; the frame line is CH_LINE anyway 223const CH_PATH_MAX: i64 = 512 224const CH_CH_BSL: i64 = 92 225const CH_WK_NONE: i64 = 0 226const CH_WK_ARGV: i64 = 1 227const CH_WK_FILEPATH: i64 = 2 228func ch_tool_writer_kind(nm: *u8) -> i64 { 229 let nl: i64 = sj_vlen(nm) 230 if sj_lit_eq(nm, 0, nl, "mcp__nishi__nx_fs_write" as *u8) == 1 { return CH_WK_ARGV } 231 if sj_lit_eq(nm, 0, nl, "Write" as *u8) == 1 { return CH_WK_FILEPATH } 232 if sj_lit_eq(nm, 0, nl, "Edit" as *u8) == 1 { return CH_WK_FILEPATH } 233 return CH_WK_NONE 234} 235// copy a JSON string body that starts at k0 (just past the opening quote) up to its closing unescaped quote 236func ch_json_str_copy(buf: *u8, k0: i64, le: i64, pb: *u8, cap: i64) -> i64 { 237 var k: i64 = k0 238 var o: i64 = 0 239 var g: i64 = 1 240 while g == 1 { 241 if k >= le { g = 0 } else { 242 if buf[k] == (34 as u8) { g = 0 } else { 243 if buf[k] == (CH_CH_BSL as u8) { k = k + 1 } 244 if k < le { if o < cap { pb[o] = buf[k]; o = o + 1 } } 245 k = k + 1 246 } 247 } 248 } 249 pb[o] = 0 as u8 250 return o 251} 252// the path for a writer frame: np is the offset of the tool's name key, le the line end. 0 = no path. 253func ch_tool_path(buf: *u8, np: i64, le: i64, kind: i64, pb: *u8) -> i64 { 254 pb[0] = 0 as u8 255 if kind == CH_WK_NONE { return 0 } 256 var scanend: i64 = np + CH_PATH_SCAN 257 if scanend > le { scanend = le } 258 if kind == CH_WK_ARGV { 259 let akey: *u8 = "\"argv\":[\"" as *u8 260 let ap: i64 = ch_find_from(buf, np, scanend, akey) 261 if ap < 0 { return 0 } 262 var k: i64 = ap + sj_vlen(akey) 263 var g: i64 = 1 264 while g == 1 { if k >= scanend { g = 0 } else { if buf[k] == (34 as u8) { g = 0 } else { if buf[k] == (CH_CH_BSL as u8) { k = k + 1 } k = k + 1 } } } 265 let q2: i64 = ch_find_from(buf, k + 1, scanend, "\"" as *u8) 266 if q2 < 0 { return 0 } 267 return ch_json_str_copy(buf, q2 + 1, scanend, pb, CH_PATH_MAX) 268 } 269 let fkey: *u8 = "\"file_path\":\"" as *u8 270 let fp: i64 = ch_find_from(buf, np, scanend, fkey) 271 if fp < 0 { return 0 } 272 return ch_json_str_copy(buf, fp + sj_vlen(fkey), scanend, pb, CH_PATH_MAX) 273} 274// the note for one frame: the verb literal, plus ` path=<p>` when the tool is a writer whose path was read 275func ch_frame_note(buf: *u8, np: i64, le: i64, nm: *u8, verb: *u8, pb: *u8, nb: *u8) -> *u8 { 276 let wk: i64 = ch_tool_writer_kind(nm) 277 if wk == CH_WK_NONE { return verb } 278 if ch_tool_path(buf, np, le, wk, pb) <= 0 { return verb } 279 var no: i64 = sj_cat(nb, 0, verb) 280 no = sj_cat(nb, no, " path=" as *u8) 281 no = sj_cat(nb, no, pb) 282 nb[no] = 0 as u8 283 return nb 284} 285// ---------- frames: transcript JSONL -> actlog frames ---------- 286// returns frames harvested, -1 missing/empty transcript, -3 cannot open out journal. 287// tcx[0] receives truncated flag. 288func ch_frames(tpath: *u8, ws: *u8, outj: *u8, tcx: *i64) -> i64 { 289 let buf: *u8 = sys_mmap(CH_WIN) 290 let cap: i64 = CH_WIN - 8 291 let n: i64 = ch_read(tpath, buf, cap) 292 tcx[0] = 0 293 if n <= 0 { return -1 } 294 if n >= cap { tcx[0] = 1 } 295 let fd: i64 = sys_openat_append(outj, CH_MODE_644) 296 if fd < 0 { return -3 } 297 let ln: *u8 = sys_mmap(CH_LINE) 298 let nm: *u8 = sys_mmap(256) 299 let pb: *u8 = sys_mmap(CH_PATH_MAX + 8) 300 let nb: *u8 = sys_mmap(CH_PATH_MAX + 64) 301 var frames: i64 = 0 302 var i: i64 = 0 303 while i < n { 304 let le: i64 = sj_le(buf, i, n) 305 var ts: i64 = 0 306 let tp: i64 = ch_find_from(buf, i, le, "\"timestamp\":\"" as *u8) 307 if tp >= 0 { ts = ch_iso_epoch(buf, tp + 13, le) } 308 var j: i64 = i 309 var go: i64 = 1 310 while go == 1 { 311 let tu: i64 = ch_find_from(buf, j, le, "\"type\":\"tool_use\"" as *u8) 312 if tu < 0 { go = 0 } else { 313 var scanend: i64 = tu + CH_NAME_SCAN 314 if scanend > le { scanend = le } 315 let np: i64 = ch_find_from(buf, tu, scanend, "\"name\":\"" as *u8) 316 if np >= 0 { 317 var k: i64 = np + 8 318 var o: i64 = 0 319 var g2: i64 = 1 320 while g2 == 1 { 321 if k >= le { g2 = 0 } else { 322 if buf[k] == (34 as u8) { g2 = 0 } else { 323 if o < CH_NAME_MAX { nm[o] = buf[k]; o = o + 1 } 324 k = k + 1 325 } 326 } 327 } 328 nm[o] = 0 as u8 329 if o > 0 { 330 ch_frame_write(fd, ln, ts, ws, nm, "use" as *u8, "-" as *u8, ch_frame_note(buf, np, le, nm, "harvest" as *u8, pb, nb)) 331 frames = frames + 1 332 } 333 } 334 j = tu + 17 335 } 336 } 337 i = le + 1 338 } 339 sys_close(fd) 340 return frames 341} 342// ---------- delta: HIGH-WATER-MARK harvest, the F973 self-sufficiency half ---------- 343// The ongoing-harvest loop lived in a laptop PowerShell parser (MG03: Claude hand-writes miners). 344// This puts the byte-offset high-water mark INSIDE the organ, so the harvester is self-sufficient on 345// ANY host that holds transcripts: run the ELF, it consumes only what grew since last time. 346// EXACTLY-ONCE BY CONSTRUCTION: only COMPLETE lines are consumed (a partial trailing line stays below 347// the mark for the next run), and the mark advances only over what was actually parsed. A re-run on an 348// unchanged transcript yields 0 frames -- idempotent without needing a marker. 349// hcx[0]=frames hcx[1]=new_hwm hcx[2]=old_hwm hcx[3]=truncated 350func ch_hwm_read(path: *u8) -> i64 { 351 let b: *u8 = sys_mmap(CH_LINE) 352 let fd: i64 = sys_openat_rd(path) 353 if fd < 0 { return 0 } 354 let r: i64 = sys_read(fd, b, CH_LINE - 8) 355 sys_close(fd) 356 if r <= 0 { return 0 } 357 var v: i64 = 0 358 var i: i64 = 0 359 while i < r { let c: i64 = b[i] as i64; if c >= 48 { if c <= 57 { v = v * 10 + (c - 48) } } i = i + 1 } 360 return v 361} 362func ch_hwm_write(path: *u8, v: i64) -> i64 { 363 let fd: i64 = sys_openat_wr(path, CH_MODE_644) 364 if fd < 0 { return -1 } 365 let b: *u8 = sys_mmap(CH_LINE) 366 var o: i64 = sj_catn(b, 0, v) 367 b[o] = 10 as u8 368 sys_write(fd, b, o + 1) 369 sys_close(fd) 370 return 0 371} 372func ch_delta(tpath: *u8, ws: *u8, outj: *u8, hwmpath: *u8, hcx: *i64) -> i64 { 373 hcx[0] = 0 374 hcx[1] = 0 375 hcx[2] = 0 376 hcx[3] = 0 377 // read sized-by-file (2026-08-20): the old fixed CH_WIN window silently stopped harvesting past 378 // 64 MiB (largest real transcript measured 55.8 MB the same day -- the cliff was DAYS away). 379 // sys_map_file is read-only/zero-copy and every parse below is span-bounded, never NUL-reliant. 380 // hcx[3] (truncated) is structurally 0 now; the slot stays for contract stability. 381 let nn: *i64 = sys_mmap(16) as *i64 382 let buf: *u8 = sys_map_file(tpath, nn) 383 let n: i64 = nn[0] 384 if n <= 0 { return -1 } 385 var hwm: i64 = ch_hwm_read(hwmpath) 386 if hwm < 0 { hwm = 0 } 387 if hwm > n { hwm = 0 } 388 hcx[2] = hwm 389 hcx[1] = hwm 390 if hwm >= n { sys_munmap(buf, n); return 0 } 391 // consume only up to the LAST newline: a partial trailing line waits for the next run 392 var lastnl: i64 = 0 - 1 393 var z: i64 = n - 1 394 while z >= hwm { if lastnl < 0 { if buf[z] == (10 as u8) { lastnl = z } } z = z - 1 } 395 if lastnl < 0 { sys_munmap(buf, n); return 0 } 396 let fd: i64 = sys_openat_append(outj, CH_MODE_644) 397 if fd < 0 { sys_munmap(buf, n); return -3 } 398 let ln: *u8 = sys_mmap(CH_LINE) 399 let nm: *u8 = sys_mmap(256) 400 let pb: *u8 = sys_mmap(CH_PATH_MAX + 8) 401 let nb: *u8 = sys_mmap(CH_PATH_MAX + 64) 402 var frames: i64 = 0 403 var i: i64 = hwm 404 while i <= lastnl { 405 let le: i64 = sj_le(buf, i, lastnl + 1) 406 var ts: i64 = 0 407 let tp: i64 = ch_find_from(buf, i, le, "\"timestamp\":\"" as *u8) 408 if tp >= 0 { ts = ch_iso_epoch(buf, tp + 13, le) } 409 var j: i64 = i 410 var go: i64 = 1 411 while go == 1 { 412 let tu: i64 = ch_find_from(buf, j, le, "\"type\":\"tool_use\"" as *u8) 413 if tu < 0 { go = 0 } else { 414 var scanend: i64 = tu + CH_NAME_SCAN 415 if scanend > le { scanend = le } 416 let np: i64 = ch_find_from(buf, tu, scanend, "\"name\":\"" as *u8) 417 if np >= 0 { 418 var k: i64 = np + 8 419 var o: i64 = 0 420 var g2: i64 = 1 421 while g2 == 1 { 422 if k >= le { g2 = 0 } else { 423 if buf[k] == (34 as u8) { g2 = 0 } else { 424 if o < CH_NAME_MAX { nm[o] = buf[k]; o = o + 1 } 425 k = k + 1 426 } 427 } 428 } 429 nm[o] = 0 as u8 430 if o > 0 { 431 ch_frame_write(fd, ln, ts, ws, nm, "use" as *u8, "-" as *u8, ch_frame_note(buf, np, le, nm, "delta" as *u8, pb, nb)) 432 frames = frames + 1 433 } 434 } 435 j = tu + 17 436 } 437 } 438 i = le + 1 439 } 440 sys_close(fd) 441 sys_munmap(buf, n) 442 hcx[0] = frames 443 hcx[1] = lastnl + 1 444 ch_hwm_write(hwmpath, lastnl + 1) 445 return 0 446} 447// ---------- ingest: validated bulk append of a staged frames file, marker-idempotent ---------- 448// returns >=0 ingested count (mcx[0]=malformed), -1 missing frames file, -2 already ingested, 449// -4 cannot open journal. (-3 window-exceeded was RETIRED 2026-08-20: the marker-verify read is now 450// sized by the journal itself via sys_map_file, so idempotence is verifiable at any journal size.) 451func ch_ingest(fpath: *u8, jpath: *u8, mcx: *i64) -> i64 { 452 mcx[0] = 0 453 // marker = "harvest-ingest:" + basename(fpath) 454 var bs: i64 = 0 455 var i: i64 = 0 456 while fpath[i] != (0 as u8) { if fpath[i] == (47 as u8) { bs = i + 1 } i = i + 1 } 457 let marker: *u8 = sys_mmap(512) 458 var mo: i64 = sj_cat(marker, 0, "harvest-ingest:" as *u8) 459 mo = sj_cat(marker, mo, ((fpath as i64) + bs) as *u8) 460 marker[mo] = 0 as u8 461 let jnn: *i64 = sys_mmap(16) as *i64 462 let jbuf: *u8 = sys_map_file(jpath, jnn) 463 let jn: i64 = jnn[0] 464 if jn > 0 { 465 if ch_find(jbuf, jn, marker) == 1 { sys_munmap(jbuf, jn); return -2 } 466 sys_munmap(jbuf, jn) 467 } 468 let fbuf: *u8 = sys_mmap(CH_WIN) 469 let fcap: i64 = CH_WIN - 8 470 let fn: i64 = ch_read(fpath, fbuf, fcap) 471 if fn <= 0 { return -1 } 472 let fd: i64 = sys_openat_append(jpath, CH_MODE_644) 473 if fd < 0 { return -4 } 474 let sp: *i64 = sys_mmap(16) as *i64 475 let nl: *u8 = sys_mmap(8) 476 nl[0] = 10 as u8 477 var ing: i64 = 0 478 var p: i64 = 0 479 while p < fn { 480 let le: i64 = sj_le(fbuf, p, fn) 481 var ok: i64 = 0 482 if le > p { 483 if sj_col(fbuf, p, le, 5, sp) == 1 { 484 if sj_col(fbuf, p, le, 6, sp) == 0 { 485 if sj_col(fbuf, p, le, 0, sp) == 1 { 486 if ch_digits(fbuf, sp[0], sp[1]) == 1 { ok = 1 } 487 } 488 } 489 } 490 } 491 if ok == 1 { 492 sys_write(fd, ((fbuf as i64) + p) as *u8, le - p) 493 sys_write(fd, nl, 1) 494 ing = ing + 1 495 } else { 496 if le > p { mcx[0] = mcx[0] + 1 } 497 } 498 p = le + 1 499 } 500 let ln: *u8 = sys_mmap(CH_LINE) 501 ch_frame_write(fd, ln, sys_now_realtime_sec(), "harvest" as *u8, "nx_claude_harvest" as *u8, "ingest" as *u8, "ok" as *u8, marker) 502 sys_close(fd) 503 return ing 504} 505// ---------- gauge: outside_permil JSON from a frames journal ---------- 506func ch_nishi_tool(q: *u8, s: i64, e: i64) -> i64 { 507 if ch_starts(q, s, e, "mcp__nishi__" as *u8) == 1 { return 1 } 508 if ch_starts(q, s, e, "nx_" as *u8) == 1 { return 1 } 509 if ch_starts(q, s, e, "nishi" as *u8) == 1 { return 1 } 510 if ch_starts(q, s, e, "vizsla" as *u8) == 1 { return 1 } 511 return 0 512} 513func ch_key(d: *u8, o: i64, name: *u8) -> i64 { 514 d[o] = 34 as u8 515 var p: i64 = o + 1 516 p = sj_cat(d, p, name) 517 d[p] = 34 as u8 518 p = p + 1 519 d[p] = 58 as u8 520 p = p + 1 521 return p 522} 523// ---------- bootgauge: SOTA-FROM-THE-FIRST-BYTE (operator 2026-07-24 'go SOTA from the first byte up') ---------- 524// For each session (ws) is the FIRST tool nishi-native? A session that opens with nx_seat boot is SOTA 525// from byte 1; one that opens by reading 40KB of memory / scratchpadding is LEGACY. Measures the 526// SOTA-boot ratio + the softer nishi-within-first-K signal. Sessions interned by ws span (bounded, declared). 527const CH_WS_MAX: i64 = 4096 528func ch_bg_intern(q: *u8, cs: i64, ce: i64, wss: *i64, wse: *i64, np: *i64) -> i64 { 529 var i: i64 = 0 530 while i < np[0] { 531 if ce - cs == wse[i] - wss[i] { 532 var m: i64 = 0 533 var eq: i64 = 1 534 while m < ce - cs { if q[cs+m] != q[wss[i]+m] { eq = 0; m = ce - cs } else { m = m + 1 } } 535 if eq == 1 { return i } 536 } 537 i = i + 1 538 } 539 if np[0] >= CH_WS_MAX { return -1 } 540 wss[np[0]] = cs 541 wse[np[0]] = ce 542 np[0] = np[0] + 1 543 return np[0] - 1 544} 545func ch_bootgauge(journal: *u8, k: i64, d: *u8) -> i64 { 546 let q: *u8 = sys_mmap(CH_JWIN) 547 let cap: i64 = CH_JWIN - 8 548 var n: i64 = ch_read(journal, q, cap) 549 if n < 0 { n = 0 } 550 var trunc: i64 = 0 551 if n >= cap { trunc = 1 } 552 let wss: *i64 = sys_mmap(8 * CH_WS_MAX) as *i64 553 let wse: *i64 = sys_mmap(8 * CH_WS_MAX) as *i64 554 let wfn: *i64 = sys_mmap(8 * CH_WS_MAX) as *i64 555 let wnk: *i64 = sys_mmap(8 * CH_WS_MAX) as *i64 556 let wc: *i64 = sys_mmap(8 * CH_WS_MAX) as *i64 557 let np: *i64 = sys_mmap(16) as *i64 558 let sp: *i64 = sys_mmap(16) as *i64 559 var frames: i64 = 0 560 var malformed: i64 = 0 561 var capped: i64 = 0 562 var i: i64 = 0 563 while i < n { 564 let le: i64 = sj_le(q, i, n) 565 if le > i { 566 if sj_col(q, i, le, 1, sp) == 1 { 567 let ws0: i64 = sp[0] 568 let ws1: i64 = sp[1] 569 if sj_col(q, i, le, 2, sp) == 1 { 570 frames = frames + 1 571 let wi: i64 = ch_bg_intern(q, ws0, ws1, wss, wse, np) 572 if wi < 0 { capped = 1 } else { 573 let isn: i64 = ch_nishi_tool(q, sp[0], sp[1]) 574 let c: i64 = wc[wi] 575 wc[wi] = c + 1 576 if c == 0 { wfn[wi] = isn } 577 if c < k { if isn == 1 { wnk[wi] = 1 } } 578 } 579 } else { malformed = malformed + 1 } 580 } else { malformed = malformed + 1 } 581 } 582 i = le + 1 583 } 584 var sota: i64 = 0 585 var nishik: i64 = 0 586 var kk: i64 = 0 587 while kk < np[0] { 588 if wfn[kk] == 1 { sota = sota + 1 } 589 if wnk[kk] == 1 { nishik = nishik + 1 } 590 kk = kk + 1 591 } 592 let total: i64 = np[0] 593 var sotaperm: i64 = 0 - 1 594 var nkperm: i64 = 0 - 1 595 if total > 0 { sotaperm = sota * 1000 / total; nkperm = nishik * 1000 / total } 596 var p: i64 = 0 597 d[p] = 123 as u8; p = p + 1 598 p = ch_key(d, p, "v" as *u8); p = sj_catn(d, p, 1); d[p] = 44 as u8; p = p + 1 599 p = ch_key(d, p, "tool" as *u8); d[p]=34 as u8;p=p+1; p = sj_cat(d,p,"nx_claude_harvest" as *u8); d[p]=34 as u8;p=p+1; d[p]=44 as u8;p=p+1 600 p = ch_key(d, p, "averb" as *u8); d[p]=34 as u8;p=p+1; p = sj_cat(d,p,"bootgauge" as *u8); d[p]=34 as u8;p=p+1; d[p]=44 as u8;p=p+1 601 p = ch_key(d, p, "journal_bytes" as *u8); p = sj_catn(d,p,n); d[p]=44 as u8;p=p+1 602 p = ch_key(d, p, "truncated" as *u8); p = sj_catn(d,p,trunc); d[p]=44 as u8;p=p+1 603 p = ch_key(d, p, "k" as *u8); p = sj_catn(d,p,k); d[p]=44 as u8;p=p+1 604 p = ch_key(d, p, "frames" as *u8); p = sj_catn(d,p,frames); d[p]=44 as u8;p=p+1 605 p = ch_key(d, p, "malformed" as *u8); p = sj_catn(d,p,malformed); d[p]=44 as u8;p=p+1 606 p = ch_key(d, p, "sessions" as *u8); p = sj_catn(d,p,total); d[p]=44 as u8;p=p+1 607 p = ch_key(d, p, "sota_first" as *u8); p = sj_catn(d,p,sota); d[p]=44 as u8;p=p+1 608 p = ch_key(d, p, "legacy_first" as *u8); p = sj_catn(d,p,total-sota); d[p]=44 as u8;p=p+1 609 p = ch_key(d, p, "sota_boot_permil" as *u8); p = sj_catn(d,p,sotaperm); d[p]=44 as u8;p=p+1 610 p = ch_key(d, p, "nishi_within_k" as *u8); p = sj_catn(d,p,nishik); d[p]=44 as u8;p=p+1 611 p = ch_key(d, p, "nishi_within_k_permil" as *u8); p = sj_catn(d,p,nkperm); d[p]=44 as u8;p=p+1 612 p = ch_key(d, p, "sessions_capped" as *u8); p = sj_catn(d,p,capped) 613 d[p] = 125 as u8; p = p + 1 614 d[p] = 10 as u8; p = p + 1 615 return p 616} 617// gauge core: g slots 0 total 1 nishi 2 outside 3 permil(legacy,all) 4 malformed 5 trunc 6 bytes 618// 7 beats(verb=run: estate autonomy) 8 claude_actions 9 claude_outside 10 claude_outside_permil 619// FULL journal read via sys_read_file (the 4MB cap SAMPLED THE JULY HEAD -- fixed 2026-09-05). 620// Reliance is measured over CLAUDE-ACTION frames ONLY; estate :run beats are the estate running 621// ITSELF (sovereign) and would dilute the denominator (measured law 2026-09-05). 622func ch_gauge_calc(jpath: *u8, days: i64, g: *i64) -> i64 { 623 let nn: *i64 = sys_mmap(16) as *i64 624 let q: *u8 = sys_read_file(jpath, nn) 625 var n: i64 = nn[0] 626 if n < 0 { n = 0 } 627 let trunc: i64 = 0 628 var cutoff: i64 = 0 629 if days > 0 { cutoff = sys_now_realtime_sec() - days * CH_MAGIC_86400 } 630 let sp: *i64 = sys_mmap(16) as *i64 631 let vp: *i64 = sys_mmap(16) as *i64 632 var total: i64 = 0 633 var nishi: i64 = 0 634 var outside: i64 = 0 635 var malformed: i64 = 0 636 var beats: i64 = 0 637 var cl_total: i64 = 0 638 var cl_outside: i64 = 0 639 var i: i64 = 0 640 while i < n { 641 let le: i64 = sj_le(q, i, n) 642 if le > i { 643 var ok: i64 = 0 644 var ts: i64 = 0 645 var isnishi: i64 = 0 646 var isbeat: i64 = 0 647 if sj_col(q, i, le, 0, sp) == 1 { 648 if ch_digits(q, sp[0], sp[1]) == 1 { 649 ts = sj_atoi_span(q, sp[0], sp[1]) 650 if sj_col(q, i, le, 2, sp) == 1 { ok = 1 } 651 } 652 } 653 if ok == 1 { 654 isnishi = ch_nishi_tool(q, sp[0], sp[1]) 655 if sj_col(q, i, le, 3, vp) == 1 { 656 if (vp[1] - vp[0]) == 3 { if ch_starts(q, vp[0], vp[1], "run" as *u8) == 1 { isbeat = 1 } } 657 } 658 if ts >= cutoff { 659 total = total + 1 660 if isnishi == 1 { nishi = nishi + 1 } else { outside = outside + 1 } 661 if isbeat == 1 { beats = beats + 1 } else { 662 cl_total = cl_total + 1 663 if isnishi == 0 { cl_outside = cl_outside + 1 } 664 } 665 } 666 } else { malformed = malformed + 1 } 667 } 668 i = le + 1 669 } 670 var permil: i64 = 0 - 1 671 if total > 0 { permil = outside * 1000 / total } 672 var clperm: i64 = 0 - 1 673 if cl_total > 0 { clperm = cl_outside * 1000 / cl_total } 674 g[0] = total 675 g[1] = nishi 676 g[2] = outside 677 g[3] = permil 678 g[4] = malformed 679 g[5] = trunc 680 g[6] = n 681 g[7] = beats 682 g[8] = cl_total 683 g[9] = cl_outside 684 g[10] = clperm 685 g[11] = 0 686 if (q as i64) == 0 { g[11] = 1; return -1 } 687 return 0 688} 689func ch_gauge_json(jpath: *u8, days: i64, d: *u8) -> i64 { 690 let g: *i64 = sys_mmap(128) as *i64 691 ch_gauge_calc(jpath, days, g) 692 let total: i64 = g[0] 693 let nishi: i64 = g[1] 694 let outside: i64 = g[2] 695 let permil: i64 = g[3] 696 let malformed: i64 = g[4] 697 let trunc: i64 = g[5] 698 let n: i64 = g[6] 699 var p: i64 = 0 700 d[p] = 123 as u8; p = p + 1 701 p = ch_key(d, p, "v" as *u8); p = sj_catn(d, p, 1); d[p] = 44 as u8; p = p + 1 702 p = ch_key(d, p, "tool" as *u8) 703 d[p] = 34 as u8; p = p + 1 704 p = sj_cat(d, p, "nx_claude_harvest" as *u8) 705 d[p] = 34 as u8; p = p + 1 706 d[p] = 44 as u8; p = p + 1 707 p = ch_key(d, p, "averb" as *u8) 708 d[p] = 34 as u8; p = p + 1 709 p = sj_cat(d, p, "gauge" as *u8) 710 d[p] = 34 as u8; p = p + 1 711 d[p] = 44 as u8; p = p + 1 712 p = ch_key(d, p, "journal" as *u8) 713 d[p] = 34 as u8; p = p + 1 714 p = sj_cat_esc(d, p, jpath, 0, sj_vlen(jpath), 200) 715 d[p] = 34 as u8; p = p + 1 716 d[p] = 44 as u8; p = p + 1 717 p = ch_key(d, p, "journal_bytes" as *u8); p = sj_catn(d, p, n); d[p] = 44 as u8; p = p + 1 718 p = ch_key(d, p, "truncated" as *u8); p = sj_catn(d, p, trunc); d[p] = 44 as u8; p = p + 1 719 p = ch_key(d, p, "days" as *u8); p = sj_catn(d, p, days); d[p] = 44 as u8; p = p + 1 720 p = ch_key(d, p, "frames_total" as *u8); p = sj_catn(d, p, total); d[p] = 44 as u8; p = p + 1 721 p = ch_key(d, p, "malformed" as *u8); p = sj_catn(d, p, malformed); d[p] = 44 as u8; p = p + 1 722 p = ch_key(d, p, "nishi" as *u8); p = sj_catn(d, p, nishi); d[p] = 44 as u8; p = p + 1 723 p = ch_key(d, p, "outside" as *u8); p = sj_catn(d, p, outside); d[p] = 44 as u8; p = p + 1 724 p = ch_key(d, p, "outside_permil" as *u8); p = sj_catn(d, p, permil); d[p] = 44 as u8; p = p + 1 725 p = ch_key(d, p, "beats" as *u8); p = sj_catn(d, p, g[7]); d[p] = 44 as u8; p = p + 1 726 p = ch_key(d, p, "claude_actions" as *u8); p = sj_catn(d, p, g[8]); d[p] = 44 as u8; p = p + 1 727 p = ch_key(d, p, "claude_outside" as *u8); p = sj_catn(d, p, g[9]); d[p] = 44 as u8; p = p + 1 728 p = ch_key(d, p, "claude_outside_permil" as *u8); p = sj_catn(d, p, g[10]) 729 p = sj_cat(d, p, ",\"evidence_state\":\"" as *u8) 730 if g[11] == 1 { p = sj_cat(d, p, "source_open_failed" as *u8) } else { p = sj_cat(d, p, "source_opened" as *u8) } 731 p = sj_cat(d, p, "\",\"measurement_scope\":\"observed_journal_tool_frames\",\"actor_work_share\":null,\"token_cost\":null,\"verified_delivery_share\":null,\"read_integrity_verified\":false" as *u8) 732 d[p] = 125 as u8; p = p + 1 733 d[p] = 10 as u8; p = p + 1 734 return p 735} 736// ---------- page: the F965 watch-it-fall surface (HTML, minimal; U2/U3 restyle rides ui-debt lane) ---------- 737func ch_page(jpath: *u8, outp: *u8, days: i64) -> i64 { 738 let g: *i64 = sys_mmap(128) as *i64 739 ch_gauge_calc(jpath, days, g) 740 let d: *u8 = sys_mmap(CH_OUT) 741 var p: i64 = 0 742 d[p] = 60 as u8; p = p + 1 743 d[p] = 33 as u8; p = p + 1 744 p = sj_cat(d, p, "doctype html><html><head><meta charset=\"utf-8\"><title>Outside Gauge</title></head><body>" as *u8) 745 p = sj_cat(d, p, "<h1>Outside Gauge</h1><p>share of observed tool actions still OUTSIDE the nishi ecosystem (permil, derived from the sovereign actlog)</p>" as *u8) 746 p = sj_cat(d, p, "<p style=\"font-size:64px;margin:8px 0\">" as *u8) 747 p = sj_catn(d, p, g[10]) 748 p = sj_cat(d, p, "&permil;</p>" as *u8) 749 p = sj_cat(d, p, "<p>outside_permil=" as *u8) 750 p = sj_catn(d, p, g[3]) 751 p = sj_cat(d, p, " (frames=" as *u8) 752 p = sj_catn(d, p, g[0]) 753 p = sj_cat(d, p, " nishi=" as *u8) 754 p = sj_catn(d, p, g[1]) 755 p = sj_cat(d, p, " outside=" as *u8) 756 p = sj_catn(d, p, g[2]) 757 p = sj_cat(d, p, " malformed=" as *u8) 758 p = sj_catn(d, p, g[4]) 759 p = sj_cat(d, p, " truncated=" as *u8) 760 p = sj_catn(d, p, g[5]) 761 p = sj_cat(d, p, " days=" as *u8) 762 p = sj_catn(d, p, days) 763 p = sj_cat(d, p, ")</p>" as *u8) 764 p = sj_cat(d, p, "<p>claude_outside_permil=" as *u8) 765 p = sj_catn(d, p, g[10]) 766 p = sj_cat(d, p, " (claude_actions=" as *u8) 767 p = sj_catn(d, p, g[8]) 768 p = sj_cat(d, p, " claude_outside=" as *u8) 769 p = sj_catn(d, p, g[9]) 770 p = sj_cat(d, p, " estate_beats_excluded=" as *u8) 771 p = sj_catn(d, p, g[7]) 772 p = sj_cat(d, p, ")</p>" as *u8) 773 p = sj_cat(d, p, "<p>Baseline 2026-07-23: laptop 651 / sovereign 643. This number must FALL as capabilities move inside (minergap- MG00-MG11; frontier F964-F973).</p>" as *u8) 774 p = sj_cat(d, p, "<p><a href=\"/wsmine\">wsmine</a> <a href=\"/claims\">claims</a> <a href=\"/intake\">intake</a> <a href=\"/frontier\">frontier</a></p>" as *u8) 775 p = sj_cat(d, p, "<p>emitted by nx_claude_harvest page (hourly beat); journal " as *u8) 776 p = sj_cat(d, p, jpath) 777 p = sj_cat(d, p, "</p></body></html>" as *u8) 778 let fd: i64 = sys_openat_wr(outp, CH_MODE_644) 779 if fd < 0 { return -1 } 780 sys_write(fd, d, p) 781 sys_close(fd) 782 return 0 783} 784// ---------- classes: the residual BY TOOL, whole partition (SV2, 2026-09-05) ---------- 785// Over CLAUDE-ACTION frames only (estate :run beats excluded), count outside frames per tool name. 786// The emitted list is the top CH_CLS_SHOW by count plus an OTHER bucket so the partition SUMS to 787// claude_outside; the table cap is named and frames beyond it are COUNTED (classes_unnamed_overflow), 788// never silently dropped. Today (2026-09-05) nx_actlog freq could only show the top 30 of 1,635 tool:verb 789// pairs across ALL frames; this verb answers the residual question directly and feeds the journal row. 790const CH_CLS_MAX: i64 = 512 // distinct outside tool names tracked (transcript tool names measured ~60 distinct) 791const CH_CLS_NAME: i64 = 64 // one name cell; longest builtin tool name measured well under this 792const CH_CLS_SHOW: i64 = 12 // JSON shows this many, the rest fold into other 793const CH_CLS_JSHOW: i64 = 6 // the journal row shows this many, the rest fold into other 794func ch_classes_calc(jpath: *u8, names: *u8, counts: *i64, c: *i64) -> i64 { 795 let nn: *i64 = sys_mmap(16) as *i64 796 let q: *u8 = sys_read_file(jpath, nn) 797 var n: i64 = nn[0] 798 if n < 0 { n = 0 } 799 let sp: *i64 = sys_mmap(16) as *i64 800 let vp: *i64 = sys_mmap(16) as *i64 801 var ncls: i64 = 0 802 var ovf: i64 = 0 803 var outside: i64 = 0 804 var i: i64 = 0 805 while i < n { 806 let le: i64 = sj_le(q, i, n) 807 if le > i { 808 var ok: i64 = 0 809 if sj_col(q, i, le, 0, sp) == 1 { if ch_digits(q, sp[0], sp[1]) == 1 { if sj_col(q, i, le, 2, sp) == 1 { ok = 1 } } } 810 if ok == 1 { 811 var isbeat: i64 = 0 812 if sj_col(q, i, le, 3, vp) == 1 { if (vp[1] - vp[0]) == 3 { if ch_starts(q, vp[0], vp[1], "run" as *u8) == 1 { isbeat = 1 } } } 813 if isbeat == 0 { if ch_nishi_tool(q, sp[0], sp[1]) == 0 { 814 outside = outside + 1 815 var tl: i64 = sp[1] - sp[0] 816 if tl > CH_CLS_NAME - 1 { tl = CH_CLS_NAME - 1 } 817 var hit: i64 = 0 - 1 818 var k: i64 = 0 819 while k < ncls { 820 let nm: *u8 = ((names as i64) + k * CH_CLS_NAME) as *u8 821 var m: i64 = 0 822 var same: i64 = 1 823 while m < tl { if nm[m] != q[sp[0] + m] { same = 0; m = tl } else { m = m + 1 } } 824 if same == 1 { if nm[tl] == (0 as u8) { hit = k; k = ncls } } 825 k = k + 1 826 } 827 if hit >= 0 { counts[hit] = counts[hit] + 1 } else { 828 if ncls < CH_CLS_MAX { 829 let nm2: *u8 = ((names as i64) + ncls * CH_CLS_NAME) as *u8 830 var m2: i64 = 0 831 while m2 < tl { nm2[m2] = q[sp[0] + m2]; m2 = m2 + 1 } 832 nm2[tl] = 0 as u8 833 counts[ncls] = 1 834 ncls = ncls + 1 835 } else { ovf = ovf + 1 } 836 } 837 } } 838 } 839 } 840 i = le + 1 841 } 842 c[0] = ncls 843 c[1] = ovf 844 return outside 845} 846func ch_classes_top(counts: *i64, used: *i64, ncls: i64) -> i64 { 847 var best: i64 = 0 - 1 848 var k: i64 = 0 849 while k < ncls { if used[k] == 0 { if best < 0 { best = k } else { if counts[k] > counts[best] { best = k } } } k = k + 1 } 850 return best 851} 852func ch_classes_cat(d: *u8, o0: i64, names: *u8, counts: *i64, ncls: i64, show: i64, outside: i64) -> i64 { 853 var o: i64 = o0 854 let used: *i64 = sys_mmap(CH_CLS_MAX * 8) as *i64 855 var shown: i64 = 0 856 var acc: i64 = 0 857 var s: i64 = 0 858 while s < show { 859 let b: i64 = ch_classes_top(counts, used, ncls) 860 if b >= 0 { 861 used[b] = 1 862 if shown > 0 { o = sj_cat(d, o, "," as *u8) } 863 o = sj_cat(d, o, ((names as i64) + b * CH_CLS_NAME) as *u8) 864 o = sj_cat(d, o, ":" as *u8) 865 o = sj_catn(d, o, counts[b]) 866 acc = acc + counts[b] 867 shown = shown + 1 868 } 869 s = s + 1 870 } 871 if shown > 0 { o = sj_cat(d, o, "," as *u8) } 872 o = sj_cat(d, o, "other:" as *u8) 873 o = sj_catn(d, o, outside - acc) 874 return o 875} 876func ch_classes_json(jpath: *u8, d: *u8) -> i64 { 877 let names: *u8 = sys_mmap(CH_CLS_MAX * CH_CLS_NAME) 878 let counts: *i64 = sys_mmap(CH_CLS_MAX * 8) as *i64 879 let c: *i64 = sys_mmap(16) as *i64 880 let outside: i64 = ch_classes_calc(jpath, names, counts, c) 881 var p: i64 = 0 882 d[p] = 123 as u8; p = p + 1 883 p = ch_key(d, p, "v" as *u8); p = sj_catn(d, p, 1); d[p] = 44 as u8; p = p + 1 884 p = ch_key(d, p, "tool" as *u8); d[p] = 34 as u8; p = p + 1; p = sj_cat(d, p, "nx_claude_harvest" as *u8); d[p] = 34 as u8; p = p + 1; d[p] = 44 as u8; p = p + 1 885 p = ch_key(d, p, "averb" as *u8); d[p] = 34 as u8; p = p + 1; p = sj_cat(d, p, "classes" as *u8); d[p] = 34 as u8; p = p + 1; d[p] = 44 as u8; p = p + 1 886 p = ch_key(d, p, "claude_outside" as *u8); p = sj_catn(d, p, outside); d[p] = 44 as u8; p = p + 1 887 p = ch_key(d, p, "classes_distinct" as *u8); p = sj_catn(d, p, c[0]); d[p] = 44 as u8; p = p + 1 888 p = ch_key(d, p, "classes_table_cap" as *u8); p = sj_catn(d, p, CH_CLS_MAX); d[p] = 44 as u8; p = p + 1 889 p = ch_key(d, p, "classes_unnamed_overflow" as *u8); p = sj_catn(d, p, c[1]); d[p] = 44 as u8; p = p + 1 890 var show: i64 = CH_CLS_SHOW 891 if c[0] < show { show = c[0] } 892 p = ch_key(d, p, "classes_shown" as *u8); p = sj_catn(d, p, show); d[p] = 44 as u8; p = p + 1 893 p = ch_key(d, p, "top_and_other" as *u8); d[p] = 34 as u8; p = p + 1 894 p = ch_classes_cat(d, p, names, counts, c[0], show, outside) 895 d[p] = 34 as u8; p = p + 1 896 d[p] = 125 as u8; p = p + 1 897 d[p] = 10 as u8; p = p + 1 898 return p 899} 900// ch_classes: THE CONTRACT SYMBOL named by the sovereignty board (SV2, watch _ABSENT_:ch_classes). The symbol 901// ruler (nx_symdecl_lib sd_present) applies the DECLARATION rule to a .nx organ and never falls back to a 902// substring for a lowercase identifier, so ch_classes_json alone can never flip the cell: the board named 903// ch_classes, so ch_classes is what ships. One entry point over the verb, declared here AND called by main. 904func ch_classes(jpath: *u8, d: *u8) -> i64 { return ch_classes_json(jpath, d) } 905// ---------- journal: the SELF-UPDATING number on /compare (2026-09-05) ---------- 906// Appends ONE `log|<epoch>|<rung>|measure|...` row to a domain .plan per UTC day (idempotent by a day 907// marker carried in the row), so the compare emitter renders the live reliance number beside the rung 908// with ZERO seat tokens. Wired on the plan-wsmine- beat. Codes: 0 written | 1 plan missing or unwritable 909// (a beat NEVER creates a plan) | 4 already journaled today | 5 insufficient data (never journal a -1). 910func ch_journal(jpath: *u8, planpath: *u8, rung: *u8) -> i64 { 911 let g: *i64 = sys_mmap(128) as *i64 912 ch_gauge_calc(jpath, 0, g) 913 if g[8] <= 0 { return 5 } 914 let now: i64 = sys_now_realtime_sec() 915 let day: i64 = now / CH_MAGIC_86400 916 let nn: *i64 = sys_mmap(16) as *i64 917 let pb: *u8 = sys_read_file(planpath, nn) 918 let pn: i64 = nn[0] 919 if pn <= 0 { return 1 } 920 let mk: *u8 = sys_mmap(128) 921 var mo: i64 = sj_cat(mk, 0, "[HARV:journal:day=" as *u8) 922 mo = sj_catn(mk, mo, day) 923 mo = sj_cat(mk, mo, "]" as *u8) 924 mk[mo] = 0 as u8 925 if ch_find(pb, pn, mk) == 1 { return 4 } 926 let row: *u8 = sys_mmap(CH_LINE) 927 var o: i64 = sj_cat(row, 0, "log|" as *u8) 928 o = sj_catn(row, o, now) 929 o = sj_cat(row, o, "|" as *u8) 930 o = sj_cat(row, o, rung) 931 o = sj_cat(row, o, "|measure|" as *u8) 932 o = sj_cat(row, o, mk) 933 o = sj_cat(row, o, " claude_outside_permil=" as *u8) 934 o = sj_catn(row, o, g[10]) 935 o = sj_cat(row, o, " claude_actions=" as *u8) 936 o = sj_catn(row, o, g[8]) 937 o = sj_cat(row, o, " claude_outside=" as *u8) 938 o = sj_catn(row, o, g[9]) 939 o = sj_cat(row, o, " estate_beats_excluded=" as *u8) 940 o = sj_catn(row, o, g[7]) 941 o = sj_cat(row, o, " frames_total=" as *u8) 942 o = sj_catn(row, o, g[0]) 943 o = sj_cat(row, o, " journal_bytes=" as *u8) 944 o = sj_catn(row, o, g[6]) 945 let cn: *u8 = sys_mmap(CH_CLS_MAX * CH_CLS_NAME) 946 let cc: *i64 = sys_mmap(CH_CLS_MAX * 8) as *i64 947 let cx: *i64 = sys_mmap(16) as *i64 948 let cout2: i64 = ch_classes_calc(jpath, cn, cc, cx) 949 o = sj_cat(row, o, " outside_by_tool=" as *u8) 950 var jshow: i64 = CH_CLS_JSHOW 951 if cx[0] < jshow { jshow = cx[0] } 952 o = ch_classes_cat(row, o, cn, cc, cx[0], jshow, cout2) 953 o = sj_cat(row, o, " (nx_claude_harvest journal: full read, estate beats excluded, one row per UTC day)" as *u8) 954 row[o] = 10 as u8 955 o = o + 1 956 let fd: i64 = sys_openat_append(planpath, CH_MODE_644) 957 if fd < 0 { return 1 } 958 sys_write(fd, row, o) 959 sys_close(fd) 960 return 0 961} 962// ---------- F971 propose: the gauge FILES its own migration work (feeder pattern) ---------- 963// codes: 0 filed | 1 filer-fail | 2 below-threshold | 3 intake-window-exceeded (fail closed) | 964// 4 already-proposed (marker) | 5 insufficient-data. Filer is INJECTABLE (argecho in the 965// gate) and ALLOWLIST-RESOLVED (never a hardcoded sibling path). Marker [HARV:outsidegap:v1] 966// makes re-runs never re-file. NOTE ch_allow_path duplicates nx_actlog al_allow_path -- the 967// shared nx_jrnl_lib extraction is the filed rule-15 residual. 968// DELEGATES to the shared base (rule-15 extraction 2026-07-23) 969func ch_allow_path(name: *u8, outp: *u8) -> i64 { return sj_allow_path(name, outp) } 970func ch_propose(jpath: *u8, ipath: *u8, thr: i64, filer: *u8, cout: *u8, colen: *i64) -> i64 { 971 colen[0] = 0 972 let g: *i64 = sys_mmap(128) as *i64 973 ch_gauge_calc(jpath, 0, g) 974 if g[3] < 0 { return 5 } 975 if g[3] < thr { return 2 } 976 let jb: *u8 = sys_mmap(CH_JWIN) 977 let jcap: i64 = CH_JWIN - 8 978 let jn: i64 = ch_read(ipath, jb, jcap) 979 if jn >= jcap { return 3 } 980 if jn > 0 { if ch_find(jb, jn, "[HARV:outsidegap:v1]" as *u8) == 1 { return 4 } } 981 let fpath: *u8 = sys_mmap(512) 982 if ch_allow_path(filer, fpath) == 0 { return 1 } 983 let txt: *u8 = sys_mmap(CH_LINE) 984 var o: i64 = sj_cat(txt, 0, "[HARV:outsidegap:v1] outside_permil=" as *u8) 985 o = sj_catn(txt, o, g[3]) 986 o = sj_cat(txt, o, " over threshold " as *u8) 987 o = sj_catn(txt, o, thr) 988 o = sj_cat(txt, o, " (frames=" as *u8) 989 o = sj_catn(txt, o, g[0]) 990 o = sj_cat(txt, o, " nishi=" as *u8) 991 o = sj_catn(txt, o, g[1]) 992 o = sj_cat(txt, o, " outside=" as *u8) 993 o = sj_catn(txt, o, g[2]) 994 o = sj_cat(txt, o, ") - drive capability-migration from the minergap- catalog MG01-MG11 / frontier F964-F973; auto-filed by nx_claude_harvest propose" as *u8) 995 txt[o] = 0 as u8 996 let av: *i64 = sys_mmap(64) as *i64 997 av[0] = fpath as i64 998 av[1] = "ask" as *u8 as i64 999 av[2] = ipath as i64 1000 av[3] = "nx_claude_harvest" as *u8 as i64 1001 av[4] = txt as i64 1002 av[5] = 0 1003 let ex: i64 = tr_run_capture(fpath, av, cout, CH_LINE - 8, colen) 1004 if ex != 0 { return 1 } 1005 return 0 1006} 1007// ---------- selftest ---------- 1008func ch_selftest(prefix: *u8) -> i64 { 1009 let ctr: *i64 = gv_ctr() 1010 gv_head("nx_claude_harvest selftest -- transcript parse + ingest + gauge teeth (unique scratch per run)" as *u8) 1011 // MICROSECOND stamp (2026-09-05): a second-resolution scratch name collided when nx_behaveprobe ran the live and the 1012 // staged selftest inside one second -- the second run found the first run's T15 marker already seeded and T14 refused. 1013 // The beat fixed this exact class on its piece names; the selftest now stamps the same way. 1014 let now: i64 = sys_now_realtime_us() 1015 let tj: *u8 = sys_mmap(512) 1016 var o: i64 = sj_cat(tj, 0, prefix) 1017 o = sj_catn(tj, o, now) 1018 o = sj_cat(tj, o, ".jsonl" as *u8) 1019 tj[o] = 0 as u8 1020 let fr: *u8 = sys_mmap(512) 1021 o = sj_cat(fr, 0, prefix) 1022 o = sj_catn(fr, o, now) 1023 o = sj_cat(fr, o, ".frames" as *u8) 1024 fr[o] = 0 as u8 1025 let st: *u8 = sys_mmap(512) 1026 o = sj_cat(st, 0, prefix) 1027 o = sj_catn(st, o, now) 1028 o = sj_cat(st, o, ".staged" as *u8) 1029 st[o] = 0 as u8 1030 let jr: *u8 = sys_mmap(512) 1031 o = sj_cat(jr, 0, prefix) 1032 o = sj_catn(jr, o, now) 1033 o = sj_cat(jr, o, ".jrnl" as *u8) 1034 jr[o] = 0 as u8 1035 // fixture transcript: decoy name outside tool_use + 2 tool_use on one line + 1 on another 1036 let tfd: i64 = sys_openat_append(tj, CH_MODE_644) 1037 let lb: *u8 = sys_mmap(CH_LINE) 1038 var lo: i64 = sj_cat(lb, 0, "{\"type\":\"user\",\"name\":\"decoy1\",\"timestamp\":\"2026-07-23T00:00:00Z\"}" as *u8) 1039 lb[lo] = 10 as u8 1040 sys_write(tfd, lb, lo + 1) 1041 lo = sj_cat(lb, 0, "{\"timestamp\":\"2026-07-23T00:00:01Z\",\"c\":[{\"type\":\"tool_use\",\"id\":\"a\",\"name\":\"Edit\"},{\"type\":\"tool_use\",\"id\":\"b\",\"name\":\"PowerShell\"}]}" as *u8) 1042 lb[lo] = 10 as u8 1043 sys_write(tfd, lb, lo + 1) 1044 lo = sj_cat(lb, 0, "{\"timestamp\":\"2026-07-23T00:00:02Z\",\"c\":[{\"type\":\"tool_use\",\"id\":\"c\",\"name\":\"mcp__nishi__nx_fs\"}]}" as *u8) 1045 lb[lo] = 10 as u8 1046 sys_write(tfd, lb, lo + 1) 1047 sys_close(tfd) 1048 // T1 harvest exact: 3 frames, decoy never harvested 1049 let tcx: *i64 = sys_mmap(16) as *i64 1050 let got: i64 = ch_frames(tj, "wtest" as *u8, fr, tcx) 1051 let fb: *u8 = sys_mmap(CH_JWIN) 1052 let fn: i64 = ch_read(fr, fb, CH_JWIN - 8) 1053 var ok1: i64 = 0 1054 if got == 3 { if fn > 0 { if ch_find(fb, fn, "Edit" as *u8) == 1 { if ch_find(fb, fn, "PowerShell" as *u8) == 1 { if ch_find(fb, fn, "decoy1" as *u8) == 0 { ok1 = 1 } } } } } 1055 gv_check("T1 harvest exactly the 3 tool_use names, decoy name never fabricated" as *u8, ok1, ctr) 1056 // T2 iso timestamp -> epoch propagated (2026-07-23T00:00:01Z = 1784764801) 1057 var ok2: i64 = 0 1058 if ch_find(fb, fn, "1784764801" as *u8) == 1 { if ch_find(fb, fn, "1784764802" as *u8) == 1 { ok2 = 1 } } 1059 gv_check("T2 iso timestamps parsed to exact epochs" as *u8, ok2, ctr) 1060 // T3 gauge exact split: Edit+PowerShell outside, nx_fs nishi -> 666 permil 1061 let d: *u8 = sys_mmap(CH_OUT) 1062 var dl: i64 = ch_gauge_json(fr, 0, d) 1063 var ok3: i64 = 0 1064 if dl > 0 { if ch_find(d, dl, "\"frames_total\":3" as *u8) == 1 { if ch_find(d, dl, "\"outside_permil\":666" as *u8) == 1 { ok3 = 1 } } } 1065 gv_check("T3 gauge exact: 2 outside 1 nishi = 666 permil" as *u8, ok3, ctr) 1066 // T4 gauge on missing journal refuses a number (-1, insufficient data honesty) 1067 let miss: *u8 = sys_mmap(512) 1068 o = sj_cat(miss, 0, prefix) 1069 o = sj_catn(miss, o, now) 1070 o = sj_cat(miss, o, ".absent" as *u8) 1071 miss[o] = 0 as u8 1072 dl = ch_gauge_json(miss, 0, d) 1073 var ok4: i64 = 0 1074 if dl > 0 { if ch_find(d, dl, "\"frames_total\":0" as *u8) == 1 { if ch_find(d, dl, "\"outside_permil\":-1" as *u8) == 1 { ok4 = 1 } } } 1075 gv_check("T4 empty journal refuses permil (-1) never fabricates" as *u8, ok4, ctr) 1076 gv_check("T4a missing source is explicitly unavailable", ch_find(d, dl, "\"evidence_state\":\"source_open_failed\"" as *u8), ctr) 1077 let empty45: *u8 = sys_mmap(CH_PATH_MAX) 1078 var e45: i64 = sj_cat(empty45, 0, miss) 1079 e45 = sj_cat(empty45, e45, ".empty" as *u8) 1080 empty45[e45] = 0 as u8 1081 let emptyfd45: i64 = sys_openat_wr(empty45, CH_MODE_644) 1082 var emptyok45: i64 = 0 1083 if emptyfd45 >= 0 { 1084 sys_close(emptyfd45) 1085 dl = ch_gauge_json(empty45, 0, d) 1086 emptyok45 = ch_find(d, dl, "\"evidence_state\":\"source_opened\"" as *u8) 1087 } 1088 gv_check("T4b readable empty source differs from missing source", emptyok45, ctr) 1089 gv_check("T4c activity is not presented as delivery or cost", ch_find(d, dl, "\"verified_delivery_share\":null" as *u8), ctr) 1090 // T5 ingest: 2 valid + 1 malformed staged line -> journal gains exactly the 2 + marker 1091 ch_frame_append(st, CH_MAGIC_1784764900, "w2" as *u8, "Read" as *u8, "use" as *u8, "-" as *u8, "harvest" as *u8) 1092 ch_frame_append(st, CH_MAGIC_1784764901, "w2" as *u8, "nx_fs_write" as *u8, "use" as *u8, "-" as *u8, "harvest" as *u8) 1093 let sfd: i64 = sys_openat_append(st, CH_MODE_644) 1094 var go2: i64 = sj_cat(lb, 0, "garbage-no-tabs" as *u8) 1095 lb[go2] = 10 as u8 1096 sys_write(sfd, lb, go2 + 1) 1097 sys_close(sfd) 1098 let mcx: *i64 = sys_mmap(16) as *i64 1099 let r5: i64 = ch_ingest(st, jr, mcx) 1100 let jb: *u8 = sys_mmap(CH_JWIN) 1101 var jn: i64 = ch_read(jr, jb, CH_JWIN - 8) 1102 var ok5: i64 = 0 1103 if r5 == 2 { if mcx[0] == 1 { if ch_find(jb, jn, "Read" as *u8) == 1 { if ch_find(jb, jn, "harvest-ingest:" as *u8) == 1 { if ch_find(jb, jn, "garbage-no-tabs" as *u8) == 0 { ok5 = 1 } } } } } 1104 gv_check("T5 ingest validates: 2 in, malformed counted out, marker banked" as *u8, ok5, ctr) 1105 // T6 idempotent: second ingest refuses, journal bytes unchanged 1106 let r6: i64 = ch_ingest(st, jr, mcx) 1107 let jn2: i64 = ch_read(jr, jb, CH_JWIN - 8) 1108 var ok6: i64 = 0 1109 if r6 == (0 - 2) { if jn2 == jn { ok6 = 1 } } 1110 gv_check("T6 re-ingest ALREADY, journal byte-identical" as *u8, ok6, ctr) 1111 // T7 missing transcript fails closed 1112 let r7: i64 = ch_frames(miss, "w" as *u8, fr, tcx) 1113 var ok7: i64 = 0 1114 if r7 == (0 - 1) { ok7 = 1 } 1115 gv_check("T7 missing transcript refused (-1) fail closed" as *u8, ok7, ctr) 1116 // T8 sovereign-organ frames (nx_ prefix) classify as nishi: add one -> 2 outside / 2 nishi = 500 1117 ch_frame_append(fr, CH_MAGIC_1784764803, "wtest" as *u8, "nx_shelltool" as *u8, "use" as *u8, "-" as *u8, "harvest" as *u8) 1118 dl = ch_gauge_json(fr, 0, d) 1119 var ok8: i64 = 0 1120 if dl > 0 { if ch_find(d, dl, "\"frames_total\":4" as *u8) == 1 { if ch_find(d, dl, "\"outside_permil\":500" as *u8) == 1 { ok8 = 1 } } } 1121 gv_check("T8 nx_-prefixed frames count as nishi (500 permil exact)" as *u8, ok8, ctr) 1122 // T9 page emits the exact gauge + title (from the T8 journal: permil 500) 1123 let pg: *u8 = sys_mmap(512) 1124 o = sj_cat(pg, 0, prefix) 1125 o = sj_catn(pg, o, now) 1126 o = sj_cat(pg, o, ".html" as *u8) 1127 pg[o] = 0 as u8 1128 let r9: i64 = ch_page(fr, pg, 0) 1129 let pb: *u8 = sys_mmap(CH_OUT) 1130 let pn: i64 = ch_read(pg, pb, CH_OUT - 8) 1131 var ok9: i64 = 0 1132 if r9 == 0 { if pn > 0 { if ch_find(pb, pn, "outside_permil=500" as *u8) == 1 { if ch_find(pb, pn, "Outside Gauge" as *u8) == 1 { ok9 = 1 } } } } 1133 gv_check("T9 page emits the exact gauge + title" as *u8, ok9, ctr) 1134 // T13-T16 propose (F971): threshold honesty, injectable filer, marker idempotence, insufficient refuse 1135 let ijr: *u8 = sys_mmap(512) 1136 o = sj_cat(ijr, 0, prefix) 1137 o = sj_catn(ijr, o, now) 1138 o = sj_cat(ijr, o, ".ijr" as *u8) 1139 ijr[o] = 0 as u8 1140 let pcl: *i64 = sys_mmap(16) as *i64 1141 let r13: i64 = ch_propose(fr, ijr, 600, "argecho" as *u8, d, pcl) 1142 var ok13: i64 = 0 1143 if r13 == 2 { ok13 = 1 } 1144 gv_check("T13 below threshold never files (code 2)" as *u8, ok13, ctr) 1145 // T14 needs a RESOLVABLE filer, and resolution runs through sj_allow_path, which opens 1146 // "tool_allowlist.conf" as a BARE path -- i.e. relative to the CWD. On any host/CWD without one 1147 // (every WSL run of this gate) the filer cannot be resolved, and this tooth then reported the 1148 // ORGAN as broken when only its environment was absent: the same binary reads 39/40 RED from /tmp 1149 // and 40/40 GREEN from a CWD holding one row. MEASURED 2026-08-20. 1150 // ***** AN AXIS THAT CANNOT SEE MUST ABSTAIN, NOT CONVICT -- and a gate that goes RED on its own 1151 // environment is the permanently-red detector everyone learns to ignore. 1152 let t14p: *u8 = sys_mmap(CH_BT_PATHMAX) 1153 if gv_need("propose filer resolvable via a CWD-relative tool_allowlist.conf" as *u8, ch_allow_path("argecho" as *u8, t14p), ctr) == 1 { 1154 let r14: i64 = ch_propose(fr, ijr, 400, "argecho" as *u8, d, pcl) 1155 var ok14: i64 = 0 1156 if r14 == 0 { if pcl[0] > 0 { if ch_find(d, pcl[0], "[HARV:outsidegap:v1] outside_permil=500" as *u8) == 1 { ok14 = 1 } } } 1157 gv_check("T14 above threshold files through the injected filer w/ exact marker+permil" as *u8, ok14, ctr) 1158 } 1159 let mfd: i64 = sys_openat_append(ijr, CH_MODE_644) 1160 let mln: *u8 = sys_mmap(256) 1161 var mo2: i64 = sj_cat(mln, 0, "1 seeded [HARV:outsidegap:v1] marker" as *u8) 1162 mln[mo2] = 10 as u8 1163 sys_write(mfd, mln, mo2 + 1) 1164 sys_close(mfd) 1165 let r15: i64 = ch_propose(fr, ijr, 400, "argecho" as *u8, d, pcl) 1166 var ok15: i64 = 0 1167 if r15 == 4 { ok15 = 1 } 1168 gv_check("T15 marker present refuses re-file (code 4, idempotent)" as *u8, ok15, ctr) 1169 let r16: i64 = ch_propose(miss, ijr, 400, "argecho" as *u8, d, pcl) 1170 var ok16: i64 = 0 1171 if r16 == 5 { ok16 = 1 } 1172 gv_check("T16 insufficient data refuses to propose (code 5)" as *u8, ok16, ctr) 1173 // T17-T20 DELTA (F973): exactly-once harvest by byte high-water mark 1174 let dj: *u8 = sys_mmap(512) 1175 o = sj_cat(dj, 0, prefix) 1176 o = sj_catn(dj, o, now) 1177 o = sj_cat(dj, o, ".dj" as *u8) 1178 dj[o] = 0 as u8 1179 let hw: *u8 = sys_mmap(512) 1180 o = sj_cat(hw, 0, prefix) 1181 o = sj_catn(hw, o, now) 1182 o = sj_cat(hw, o, ".hwm" as *u8) 1183 hw[o] = 0 as u8 1184 let hcx: *i64 = sys_mmap(64) as *i64 1185 // tj holds 3 lines / 3 tool_use frames from T1 1186 let rd1: i64 = ch_delta(tj, "wd" as *u8, dj, hw, hcx) 1187 var ok17: i64 = 0 1188 if rd1 == 0 { if hcx[0] == 3 { if hcx[2] == 0 { if hcx[1] > 0 { ok17 = 1 } } } } 1189 gv_check("T17 first delta harvests all 3 frames and banks a high-water mark" as *u8, ok17, ctr) 1190 let firsthwm: i64 = hcx[1] 1191 let rd2: i64 = ch_delta(tj, "wd" as *u8, dj, hw, hcx) 1192 var ok18: i64 = 0 1193 if rd2 == 0 { if hcx[0] == 0 { if hcx[1] == firsthwm { ok18 = 1 } } } 1194 gv_check("T18 re-run on an unchanged transcript harvests ZERO (exactly-once, no marker needed)" as *u8, ok18, ctr) 1195 // grow the transcript by ONE complete line (1 tool_use) + a PARTIAL trailing line 1196 let gfd: i64 = sys_openat_append(tj, CH_MODE_644) 1197 lo = sj_cat(lb, 0, "{\"timestamp\":\"2026-07-23T00:00:03Z\",\"c\":[{\"type\":\"tool_use\",\"id\":\"g\",\"name\":\"Grep\"}]}" as *u8) 1198 lb[lo] = 10 as u8 1199 sys_write(gfd, lb, lo + 1) 1200 lo = sj_cat(lb, 0, "{\"type\":\"tool_use\",\"name\":\"PartialNeverCounted\"" as *u8) 1201 sys_write(gfd, lb, lo) 1202 sys_close(gfd) 1203 let rd3: i64 = ch_delta(tj, "wd" as *u8, dj, hw, hcx) 1204 var ok19: i64 = 0 1205 if rd3 == 0 { if hcx[0] == 1 { if hcx[2] == firsthwm { ok19 = 1 } } } 1206 gv_check("T19 growth harvests ONLY the new line (1 frame), resuming from the banked mark" as *u8, ok19, ctr) 1207 let db: *u8 = sys_mmap(CH_JWIN) 1208 let dn: i64 = ch_read(dj, db, CH_JWIN - 8) 1209 var ok20: i64 = 0 1210 if dn > 0 { if ch_find(db, dn, "Grep" as *u8) == 1 { if ch_find(db, dn, "PartialNeverCounted" as *u8) == 0 { ok20 = 1 } } } 1211 gv_check("T20 a PARTIAL trailing line is never consumed (waits below the mark)" as *u8, ok20, ctr) 1212 // T21-T23 PARTITION (2026-09-05): estate :run beats excluded from the reliance denominator. 1213 // Fixture: 1 outside claude action + 1 nishi claude action + 3 nishi estate beats (verb run). 1214 // Legacy outside_permil counts all 5 (nishi beats dilute -> 200); claude_outside_permil counts 1215 // ONLY the 2 claude actions -> 500 (beats=3). 500 != 200 proves the partition actually fired. 1216 let pj: *u8 = sys_mmap(512) 1217 var po: i64 = sj_cat(pj, 0, prefix) 1218 po = sj_catn(pj, po, now) 1219 po = sj_cat(pj, po, ".pj" as *u8) 1220 pj[po] = 0 as u8 1221 ch_frame_append(pj, CH_MAGIC_1784764900, "wp" as *u8, "PowerShell" as *u8, "use" as *u8, "-" as *u8, "act" as *u8) 1222 ch_frame_append(pj, CH_MAGIC_1784764901, "wp" as *u8, "nx_fs" as *u8, "call" as *u8, "-" as *u8, "act" as *u8) 1223 ch_frame_append(pj, CH_MAGIC_1784764803, "wp" as *u8, "nx_netobs.elf" as *u8, "run" as *u8, "-" as *u8, "beat" as *u8) 1224 ch_frame_append(pj, CH_MAGIC_1784764803, "wp" as *u8, "nx_resmon.elf" as *u8, "run" as *u8, "-" as *u8, "beat" as *u8) 1225 ch_frame_append(pj, CH_MAGIC_1784764803, "wp" as *u8, "nx_memvel.elf" as *u8, "run" as *u8, "-" as *u8, "beat" as *u8) 1226 dl = ch_gauge_json(pj, 0, d) 1227 var ok21: i64 = 0 1228 if dl > 0 { if ch_find(d, dl, "\"frames_total\":5" as *u8) == 1 { if ch_find(d, dl, "\"beats\":3" as *u8) == 1 { if ch_find(d, dl, "\"claude_actions\":2" as *u8) == 1 { ok21 = 1 } } } } 1229 gv_check("T21 estate :run beats partitioned out: 5 frames, 3 beats, 2 claude actions" as *u8, ok21, ctr) 1230 var ok22: i64 = 0 1231 if dl > 0 { if ch_find(d, dl, "\"claude_outside_permil\":500" as *u8) == 1 { if ch_find(d, dl, "\"outside_permil\":200" as *u8) == 1 { ok22 = 1 } } } 1232 gv_check("T22 reliance over claude actions (500) NOT diluted by nishi beats (legacy 200)" as *u8, ok22, ctr) 1233 var ok23: i64 = 0 1234 if dl > 0 { if ch_find(d, dl, "\"claude_outside_permil\":200" as *u8) == 0 { ok23 = 1 } } 1235 gv_check("T23 non-vacuity: claude_outside_permil 500 != legacy diluted 200 (partition fired)" as *u8, ok23, ctr) 1236 // J1-J3 JOURNAL (2026-09-05): one measure row per UTC day on a .plan, idempotent, never a -1. 1237 let pl: *u8 = sys_mmap(512) 1238 var plo: i64 = sj_cat(pl, 0, prefix) 1239 plo = sj_catn(pl, plo, now) 1240 plo = sj_cat(pl, plo, ".plan" as *u8) 1241 pl[plo] = 0 as u8 1242 let pfd: i64 = sys_openat_wr(pl, CH_MODE_644) 1243 var seedo: i64 = sj_cat(lb, 0, "pos|seed plan for the journal teeth" as *u8) 1244 lb[seedo] = 10 as u8 1245 sys_write(pfd, lb, seedo + 1) 1246 sys_close(pfd) 1247 let rj1: i64 = ch_journal(pj, pl, "SV0" as *u8) 1248 let jb2: *u8 = sys_mmap(CH_JWIN) 1249 let jn3: i64 = ch_read(pl, jb2, CH_JWIN - 8) 1250 var okj1: i64 = 0 1251 if rj1 == 0 { if ch_find(jb2, jn3, "|SV0|measure|" as *u8) == 1 { if ch_find(jb2, jn3, "claude_outside_permil=500" as *u8) == 1 { okj1 = 1 } } } 1252 gv_check("J1 journal appends one measure row carrying the exact honest permil (500, partition fixture)" as *u8, okj1, ctr) 1253 let rj2: i64 = ch_journal(pj, pl, "SV0" as *u8) 1254 let jn4: i64 = ch_read(pl, jb2, CH_JWIN - 8) 1255 var okj2: i64 = 0 1256 if rj2 == 4 { if jn4 == jn3 { okj2 = 1 } } 1257 gv_check("J2 second journal the same day refused (4), plan byte-identical (idempotent)" as *u8, okj2, ctr) 1258 let rj3: i64 = ch_journal(miss, pl, "SV0" as *u8) 1259 let jn5: i64 = ch_read(pl, jb2, CH_JWIN - 8) 1260 var okj3: i64 = 0 1261 if rj3 == 5 { if jn5 == jn4 { okj3 = 1 } } 1262 gv_check("J3 neg-control-insufficient: a missing journal refuses (5) and writes nothing, never a -1 row" as *u8, okj3, ctr) 1263 // C1-C3 CLASSES (SV2, 2026-09-05): the residual by tool over claude actions; the partition sums; beats 1264 // and nishi tools are never a class; the list is sorted by count descending. 1265 dl = ch_classes_json(pj, d) 1266 var okc1: i64 = 0 1267 if dl > 0 { if ch_find(d, dl, "\"claude_outside\":1" as *u8) == 1 { if ch_find(d, dl, "\"classes_distinct\":1" as *u8) == 1 { if ch_find(d, dl, "PowerShell:1,other:0" as *u8) == 1 { okc1 = 1 } } } } 1268 gv_check("C1 classes on the partition fixture: one outside tool (PowerShell:1) and the partition sums (other:0)" as *u8, okc1, ctr) 1269 var okc2: i64 = 0 1270 if dl > 0 { if ch_find(d, dl, "nx_netobs" as *u8) == 0 { if ch_find(d, dl, "nx_fs" as *u8) == 0 { okc2 = 1 } } } 1271 gv_check("C2 neg-control: estate beats and nishi tools are never a residual class" as *u8, okc2, ctr) 1272 let cj3: *u8 = sys_mmap(512) 1273 var co3: i64 = sj_cat(cj3, 0, prefix) 1274 co3 = sj_catn(cj3, co3, now) 1275 co3 = sj_cat(cj3, co3, ".cls" as *u8) 1276 cj3[co3] = 0 as u8 1277 ch_frame_append(cj3, CH_MAGIC_1784764900, "wc" as *u8, "Edit" as *u8, "use" as *u8, "-" as *u8, "a" as *u8) 1278 ch_frame_append(cj3, CH_MAGIC_1784764900, "wc" as *u8, "Bash" as *u8, "use" as *u8, "-" as *u8, "a" as *u8) 1279 ch_frame_append(cj3, CH_MAGIC_1784764900, "wc" as *u8, "Grep" as *u8, "use" as *u8, "-" as *u8, "a" as *u8) 1280 ch_frame_append(cj3, CH_MAGIC_1784764900, "wc" as *u8, "Bash" as *u8, "use" as *u8, "-" as *u8, "a" as *u8) 1281 ch_frame_append(cj3, CH_MAGIC_1784764900, "wc" as *u8, "Edit" as *u8, "use" as *u8, "-" as *u8, "a" as *u8) 1282 ch_frame_append(cj3, CH_MAGIC_1784764900, "wc" as *u8, "Bash" as *u8, "use" as *u8, "-" as *u8, "a" as *u8) 1283 dl = ch_classes_json(cj3, d) 1284 var okc3: i64 = 0 1285 if dl > 0 { if ch_find(d, dl, "\"top_and_other\":\"Bash:3,Edit:2,Grep:1,other:0\"" as *u8) == 1 { if ch_find(d, dl, "\"claude_outside\":6" as *u8) == 1 { okc3 = 1 } } } 1286 gv_check("C3 classes sorted by count descending with an exact sum: Bash:3,Edit:2,Grep:1,other:0 of 6" as *u8, okc3, ctr) 1287 // T21/T22 BOOTGAUGE (SOTA-from-the-first-byte): s1 opens nishi-native (nx_seat), s2 opens legacy 1288 // (Read) but touches nishi within K, s3 stays outside => sota_first 1/3=333, nishi_within_k 2/3=666. 1289 let bj: *u8 = sys_mmap(512) 1290 o = sj_cat(bj, 0, prefix) 1291 o = sj_catn(bj, o, now) 1292 o = sj_cat(bj, o, ".bj" as *u8) 1293 bj[o] = 0 as u8 1294 ch_frame_append(bj, CH_MAGIC_1784764900, "s1" as *u8, "nx_seat" as *u8, "boot" as *u8, "-" as *u8, "-" as *u8) 1295 ch_frame_append(bj, CH_MAGIC_1784764900, "s1" as *u8, "mcp__nishi__nx_fs" as *u8, "lines" as *u8, "-" as *u8, "-" as *u8) 1296 ch_frame_append(bj, CH_MAGIC_1784764900, "s2" as *u8, "Read" as *u8, "use" as *u8, "-" as *u8, "-" as *u8) 1297 ch_frame_append(bj, CH_MAGIC_1784764900, "s2" as *u8, "mcp__nishi__nx_store_put" as *u8, "put" as *u8, "-" as *u8, "-" as *u8) 1298 ch_frame_append(bj, CH_MAGIC_1784764900, "s3" as *u8, "PowerShell" as *u8, "use" as *u8, "-" as *u8, "-" as *u8) 1299 ch_frame_append(bj, CH_MAGIC_1784764900, "s3" as *u8, "Bash" as *u8, "use" as *u8, "-" as *u8, "-" as *u8) 1300 let bd: i64 = ch_bootgauge(bj, 3, d) 1301 var ok21: i64 = 0 1302 if bd > 0 { if ch_find(d, bd, "\"sessions\":3,\"sota_first\":1,\"legacy_first\":2,\"sota_boot_permil\":333" as *u8) == 1 { ok21 = 1 } } 1303 gv_check("T21 bootgauge: first tool nishi in 1 of 3 sessions = 333 permil SOTA-boot" as *u8, ok21, ctr) 1304 var ok22: i64 = 0 1305 if bd > 0 { if ch_find(d, bd, "\"nishi_within_k\":2,\"nishi_within_k_permil\":666" as *u8) == 1 { ok22 = 1 } } 1306 gv_check("T22 nishi-within-first-K = 2 of 3 = 666 permil (the softer signal)" as *u8, ok22, ctr) 1307 let lc: *u8 = sys_mmap(512) 1308 o = sj_cat(lc, 0, prefix) 1309 o = sj_catn(lc, o, now) 1310 o = sj_cat(lc, o, ".lconf" as *u8) 1311 lc[o] = 0 as u8 1312 let lt: *u8 = sys_mmap(512) 1313 o = sj_cat(lt, 0, prefix) 1314 o = sj_catn(lt, o, now) 1315 o = sj_cat(lt, o, ".ltx" as *u8) 1316 lt[o] = 0 as u8 1317 let lo2: *u8 = sys_mmap(512) 1318 o = sj_cat(lo2, 0, prefix) 1319 o = sj_catn(lo2, o, now) 1320 o = sj_cat(lo2, o, ".lout" as *u8) 1321 lo2[o] = 0 as u8 1322 let cfd: i64 = sys_openat_append(lc, CH_MODE_644) 1323 let cb2: *u8 = sys_mmap(CH_LINE) 1324 var co: i64 = sj_cat(cb2, 0, "marker=LAW:|6\nmarker=ROOT CAUSE|5\nmarker=MEASURED|3\nstar_char=★\nwarn_char=⚠\nwarn_bonus=2\nstar_max=6\nmin_rank_store=3\nmin_len=40\nmax_len=400\n" as *u8) 1325 sys_write(cfd, cb2, co) 1326 sys_close(cfd) 1327 let tfd2: i64 = sys_openat_append(lt, CH_MODE_644) 1328 let tb2: *u8 = sys_mmap(CH_LINE) 1329 var to2: i64 = sj_cat(tb2, 0, "{\"timestamp\":\"2026-07-23T00:00:00Z\",\"c\":[{\"type\":\"text\",\"text\":\"LAW: a guard placed after the act it guards is not a guard\"}]}\n" as *u8) 1330 to2 = sj_cat(tb2, to2, "{\"timestamp\":\"2026-07-23T00:00:01Z\",\"c\":[{\"type\":\"text\",\"text\":\"we then opened the file and looked at it for a while and moved on\"}]}\n" as *u8) 1331 to2 = sj_cat(tb2, to2, "{\"timestamp\":\"2026-07-23T00:00:02Z\",\"c\":[{\"type\":\"tool_use\",\"id\":\"a\",\"name\":\"Edit\"}]}\n" as *u8) 1332 to2 = sj_cat(tb2, to2, "{\"timestamp\":\"2026-07-23T00:00:03Z\",\"c\":[{\"type\":\"text\",\"text\":\"★★★★ gate on the resource the work actually consumes\"}]}\n" as *u8) 1333 to2 = sj_cat(tb2, to2, "{\"timestamp\":\"2026-07-23T00:00:04Z\",\"c\":[{\"type\":\"text\",\"text\":\"the axes run 0..1000 and -1 means UNMEASURED for this row\"}]}\n" as *u8) 1334 to2 = sj_cat(tb2, to2, "{\"timestamp\":\"2026-07-23T00:00:05Z\",\"c\":[{\"type\":\"text\",\"text\":\"LAW: an echoed frame must not become two separate records\"},{\"type\":\"text\",\"text\":\"LAW: an echoed frame must not become two separate records\"}]}\n" as *u8) 1335 sys_write(tfd2, tb2, to2) 1336 sys_close(tfd2) 1337 let lcx2: *i64 = sys_mmap(64) as *i64 1338 let lgot: i64 = ch_learn(lt, "lw" as *u8, lo2, lc, lcx2) 1339 let lb2: *u8 = sys_mmap(CH_JWIN) 1340 let ln2: i64 = ch_read(lo2, lb2, CH_JWIN - 8) 1341 var ok23: i64 = 0 1342 if ln2 > 0 { if ch_find(lb2, ln2, "\"rank\":6" as *u8) == 1 { ok23 = 1 } } 1343 gv_check("T23 learn captures a LAW: PROSE line at rank 6 (the thing frames/delta never could)" as *u8, ok23, ctr) 1344 var ok24: i64 = 1 1345 if ln2 > 0 { if ch_find(lb2, ln2, "looked at it for a while" as *u8) == 1 { ok24 = 0 } } 1346 gv_check("T24 NEG-CONTROL: unmarked prose ABOVE min_len is REJECTED -- the ranker can fail" as *u8, ok24, ctr) 1347 var ok25: i64 = 1 1348 if ln2 > 0 { if ch_find(lb2, ln2, "Edit" as *u8) == 1 { ok25 = 0 } } 1349 gv_check("T25 learn ignores tool_use frames entirely -- learn is not a second frames" as *u8, ok25, ctr) 1350 var ok26: i64 = 0 1351 if lcx2[1] >= 2 { ok26 = 1 } 1352 gv_check("T26 markers/weights come from the conf file, never compiled in (rule 11)" as *u8, ok26, ctr) 1353 var ok27: i64 = 0 1354 if ln2 > 0 { if ch_find(lb2, ln2, "\"rank\":4" as *u8) == 1 { ok27 = 1 } } 1355 gv_check("T27 a 4-star run ranks 4 -- multi-byte glyph run counted as bytes, not chars" as *u8, ok27, ctr) 1356 var ok28: i64 = 0 1357 if lgot == 3 { ok28 = 1 } 1358 gv_check("T28 exactly 3 of 6 transcript lines clear the floor (kept count is not a dump)" as *u8, ok28, ctr) 1359 var ok29: i64 = 1 1360 if ln2 > 0 { if ch_find(lb2, ln2, "axes run 0..1000" as *u8) == 1 { ok29 = 0 } } 1361 gv_check("T29 WORD BOUNDARY: UNMEASURED does not match the marker MEASURED (substring flattery)" as *u8, ok29, ctr) 1362 var ok30: i64 = 0 1363 var dcount: i64 = 0 1364 var dp: i64 = 0 1365 while dp < ln2 { 1366 let dq: i64 = ch_find_from(lb2, dp, ln2, "an echoed frame must not become" as *u8) 1367 if dq < 0 { dp = ln2 } else { dcount = dcount + 1; dp = dq + 20 } 1368 } 1369 if dcount == 1 { ok30 = 1 } 1370 gv_check("T30 an echoed payload emits ONCE, not twice (adjacent-duplicate suppression)" as *u8, ok30, ctr) 1371 // ================= beat teeth (DM1 ch_beat, 2026-08-20; fixtures assembled at RUNTIME) ================= 1372 let btroot: *u8 = sys_mmap(512) 1373 o = sj_cat(btroot, 0, prefix) 1374 o = sj_catn(btroot, o, now) 1375 o = sj_cat(btroot, o, "btroot" as *u8) 1376 btroot[o] = 0 as u8 1377 let btpa: *u8 = sys_mmap(512) 1378 o = sj_cat(btpa, 0, btroot) 1379 o = sj_cat(btpa, o, "/pA" as *u8) 1380 btpa[o] = 0 as u8 1381 let btsub: *u8 = sys_mmap(512) 1382 o = sj_cat(btsub, 0, btpa) 1383 o = sj_cat(btsub, o, "/subagents" as *u8) 1384 btsub[o] = 0 as u8 1385 let btstate: *u8 = sys_mmap(512) 1386 o = sj_cat(btstate, 0, prefix) 1387 o = sj_catn(btstate, o, now) 1388 o = sj_cat(btstate, o, "btstate" as *u8) 1389 btstate[o] = 0 as u8 1390 let btspool: *u8 = sys_mmap(512) 1391 o = sj_cat(btspool, 0, prefix) 1392 o = sj_catn(btspool, o, now) 1393 o = sj_cat(btspool, o, "btspool" as *u8) 1394 btspool[o] = 0 as u8 1395 let btdone: *u8 = sys_mmap(512) 1396 o = sj_cat(btdone, 0, prefix) 1397 o = sj_catn(btdone, o, now) 1398 o = sj_cat(btdone, o, "btdone" as *u8) 1399 btdone[o] = 0 as u8 1400 let btjrnl: *u8 = sys_mmap(512) 1401 o = sj_cat(btjrnl, 0, prefix) 1402 o = sj_catn(btjrnl, o, now) 1403 o = sj_cat(btjrnl, o, "btjrnl" as *u8) 1404 btjrnl[o] = 0 as u8 1405 let bttwin: *u8 = sys_mmap(512) 1406 o = sj_cat(bttwin, 0, prefix) 1407 o = sj_catn(bttwin, o, now) 1408 o = sj_cat(bttwin, o, "bttwin" as *u8) 1409 bttwin[o] = 0 as u8 1410 sys_mkdir(btroot, CH_MODE_755) 1411 sys_mkdir(btpa, CH_MODE_755) 1412 sys_mkdir(btsub, CH_MODE_755) 1413 sys_mkdir(bttwin, CH_MODE_755) 1414 let bts1: *u8 = sys_mmap(512) 1415 o = sj_cat(bts1, 0, btpa) 1416 o = sj_cat(bts1, o, "/s1.jsonl" as *u8) 1417 bts1[o] = 0 as u8 1418 let bts2: *u8 = sys_mmap(512) 1419 o = sj_cat(bts2, 0, btsub) 1420 o = sj_cat(bts2, o, "/s2.jsonl" as *u8) 1421 bts2[o] = 0 as u8 1422 let btfd: i64 = sys_openat_append(bts1, CH_MODE_644) 1423 lo = sj_cat(lb, 0, "{\"type\":\"zzz-newtype\",\"x\":1}" as *u8) 1424 lb[lo] = 10 as u8 1425 sys_write(btfd, lb, lo + 1) 1426 lo = sj_cat(lb, 0, "{\"timestamp\":\"2026-07-23T00:00:01Z\",\"c\":[{\"type\":\"tool_use\",\"id\":\"a\",\"name\":\"Edit\"},{\"type\":\"tool_use\",\"id\":\"b\",\"name\":\"PowerShell\"}]}" as *u8) 1427 lb[lo] = 10 as u8 1428 sys_write(btfd, lb, lo + 1) 1429 lo = sj_cat(lb, 0, "{\"type\":\"user\",\"uuid\":\"u1\"}" as *u8) 1430 lb[lo] = 10 as u8 1431 sys_write(btfd, lb, lo + 1) 1432 sys_close(btfd) 1433 let btfd2: i64 = sys_openat_append(bts2, CH_MODE_644) 1434 lo = sj_cat(lb, 0, "{\"timestamp\":\"2026-08-19T10:00:01Z\",\"c\":[{\"type\":\"tool_use\",\"id\":\"c\",\"name\":\"mcp__nishi__nx_fs\"}]}" as *u8) 1435 lb[lo] = 10 as u8 1436 sys_write(btfd2, lb, lo + 1) 1437 sys_close(btfd2) 1438 // conf assembled at runtime (rule 11 even in the fixture) 1439 let btconf: *u8 = sys_mmap(512) 1440 o = sj_cat(btconf, 0, prefix) 1441 o = sj_catn(btconf, o, now) 1442 o = sj_cat(btconf, o, "btconf" as *u8) 1443 btconf[o] = 0 as u8 1444 let btcb: *u8 = sys_mmap(4096) 1445 var bo: i64 = sj_cat(btcb, 0, "root=" as *u8) 1446 bo = sj_cat(btcb, bo, btroot) 1447 btcb[bo] = 10 as u8 1448 bo = bo + 1 1449 bo = sj_cat(btcb, bo, "state=" as *u8) 1450 bo = sj_cat(btcb, bo, btstate) 1451 btcb[bo] = 10 as u8 1452 bo = bo + 1 1453 bo = sj_cat(btcb, bo, "spool=" as *u8) 1454 bo = sj_cat(btcb, bo, btspool) 1455 btcb[bo] = 10 as u8 1456 bo = bo + 1 1457 bo = sj_cat(btcb, bo, "done=" as *u8) 1458 bo = sj_cat(btcb, bo, btdone) 1459 btcb[bo] = 10 as u8 1460 bo = bo + 1 1461 bo = sj_cat(btcb, bo, "journal=" as *u8) 1462 bo = sj_cat(btcb, bo, btjrnl) 1463 btcb[bo] = 10 as u8 1464 bo = bo + 1 1465 bo = sj_cat(btcb, bo, "push=0" as *u8) 1466 btcb[bo] = 10 as u8 1467 bo = bo + 1 1468 bo = sj_cat(btcb, bo, "known_type=user" as *u8) 1469 btcb[bo] = 10 as u8 1470 bo = bo + 1 1471 bo = sj_cat(btcb, bo, "known_type=assistant" as *u8) 1472 btcb[bo] = 10 as u8 1473 bo = bo + 1 1474 let btcfd: i64 = sys_openat_wr(btconf, CH_MODE_644) 1475 sys_write(btcfd, btcb, bo) 1476 sys_close(btcfd) 1477 let bcx1: *i64 = sys_mmap(8 * CH_BT_CTRS) as *i64 1478 let brc1: i64 = ch_beat(btconf, bcx1) 1479 var ok31: i64 = 0 1480 if brc1 == 0 { if bcx1[0] == 2 { if bcx1[1] == 2 { if bcx1[2] == 0 { if bcx1[3] == 0 { if bcx1[27] == 1 { ok31 = 1 } } } } } } 1481 gv_check("T31 beat walks every transcript at every depth and the file partition SUMS" as *u8, ok31, ctr) 1482 var ok32: i64 = 0 1483 if bcx1[4] == 3 { if bcx1[5] == 3 { ok32 = 1 } } 1484 gv_check("T32 frames reconcile against the independent tooluse-mark census (two counters, free audit)" as *u8, ok32, ctr) 1485 var ok33: i64 = 0 1486 if bcx1[6] == 4 { if bcx1[8] == 1 { if bcx1[9] == 1 { if bcx1[10] == 2 { ok33 = 1 } } } } 1487 gv_check("T33 head-type census: known/UNKNOWN/headless partition sums; nested types never read as record types" as *u8, ok33, ctr) 1488 let btj1: *u8 = sys_mmap(512) 1489 o = sj_cat(btj1, 0, btjrnl) 1490 o = sj_cat(btj1, o, "/chbeat_20260723.jrnl" as *u8) 1491 btj1[o] = 0 as u8 1492 let btj2: *u8 = sys_mmap(512) 1493 o = sj_cat(btj2, 0, btjrnl) 1494 o = sj_cat(btj2, o, "/chbeat_20260819.jrnl" as *u8) 1495 btj2[o] = 0 as u8 1496 let btb1: *u8 = sys_mmap(CH_JWIN) 1497 let btn1: i64 = ch_read(btj1, btb1, CH_JWIN - 8) 1498 let btb2: *u8 = sys_mmap(CH_JWIN) 1499 var btn2: i64 = ch_read(btj2, btb2, CH_JWIN - 8) 1500 var ok34: i64 = 0 1501 if btn1 > 0 { if btn2 > 0 { if ch_find(btb1, btn1, "Edit" as *u8) == 1 { if ch_find(btb1, btn1, "mcp__nishi__nx_fs" as *u8) == 0 { if ch_find(btb2, btn2, "mcp__nishi__nx_fs" as *u8) == 1 { ok34 = 1 } } } } } 1502 gv_check("T34 ts-day routing: each frame lands in its OWN day journal, never cross-filed" as *u8, ok34, ctr) 1503 let bcx2: *i64 = sys_mmap(8 * CH_BT_CTRS) as *i64 1504 let brc2: i64 = ch_beat(btconf, bcx2) 1505 let btn1b: i64 = ch_read(btj1, btb1, CH_JWIN - 8) 1506 var ok35: i64 = 0 1507 if brc2 == 0 { if bcx2[2] == 2 { if bcx2[4] == 0 { if bcx2[12] == 0 { if btn1b == btn1 { ok35 = 1 } } } } } 1508 gv_check("T35 re-run is exactly-once: all files skipped-unchanged, zero frames, journal byte-identical" as *u8, ok35, ctr) 1509 let btfd3: i64 = sys_openat_append(bts2, CH_MODE_644) 1510 lo = sj_cat(lb, 0, "{\"timestamp\":\"2026-08-19T11:00:00Z\",\"c\":[{\"type\":\"tool_use\",\"id\":\"d\",\"name\":\"Grep\"}]}" as *u8) 1511 lb[lo] = 10 as u8 1512 sys_write(btfd3, lb, lo + 1) 1513 lo = sj_cat(lb, 0, "{\"c\":[{\"type\":\"tool_use\",\"id\":\"e\",\"name\":\"NoTsTool\"}]}" as *u8) 1514 lb[lo] = 10 as u8 1515 sys_write(btfd3, lb, lo + 1) 1516 sys_close(btfd3) 1517 let bcx3: *i64 = sys_mmap(8 * CH_BT_CTRS) as *i64 1518 let brc3: i64 = ch_beat(btconf, bcx3) 1519 var ok36: i64 = 0 1520 if brc3 == 0 { if bcx3[1] == 1 { if bcx3[2] == 1 { if bcx3[4] == 2 { if bcx3[15] == 1 { ok36 = 1 } } } } } 1521 gv_check("T36 growth delta-harvests ONLY the new lines from the banked mark" as *u8, ok36, ctr) 1522 let btjz: *u8 = sys_mmap(512) 1523 o = sj_cat(btjz, 0, btjrnl) 1524 o = sj_cat(btjz, o, "/chbeat_tszero.jrnl" as *u8) 1525 btjz[o] = 0 as u8 1526 let btnz: i64 = ch_read(btjz, btb1, CH_JWIN - 8) 1527 btn2 = ch_read(btj2, btb2, CH_JWIN - 8) 1528 var ok37: i64 = 0 1529 if btnz > 0 { if ch_find(btb1, btnz, "NoTsTool" as *u8) == 1 { if btn2 > 0 { if ch_find(btb2, btn2, "Grep" as *u8) == 1 { if ch_find(btb2, btn2, "NoTsTool" as *u8) == 0 { ok37 = 1 } } } } } 1530 gv_check("T37 a frame without a parseable timestamp lands in chbeat_tszero.jrnl -- its OWN bucket, never folded" as *u8, ok37, ctr) 1531 // twin landing: ingest the SAME pieces into a second journal dir and demand gauge agreement 1532 let btar: *u8 = sys_mmap(CH_BT_ARENA) 1533 let btfo: *i64 = sys_mmap(8 * CH_BT_MAXFILES) as *i64 1534 let btwcx: *i64 = sys_mmap(64) as *i64 1535 let btnp: i64 = ch_bt_walk(btspool, ".frames" as *u8, btar, btfo, btwcx) 1536 let btmcx: *i64 = sys_mmap(16) as *i64 1537 let btday: *u8 = sys_mmap(CH_BT_DAYCELL) 1538 let bttj: *u8 = sys_mmap(512) 1539 var bpi: i64 = 0 1540 while bpi < btnp { 1541 let bpp: *u8 = ((btar as i64) + btfo[bpi]) as *u8 1542 let bpb: *u8 = ch_bt_base(bpp) 1543 if ch_starts(bpb, 0, sj_vlen(bpb), "cb" as *u8) == 1 { 1544 ch_bt_pieceday(bpb, btday) 1545 var oz: i64 = sj_cat(bttj, 0, bttwin) 1546 bttj[oz] = 47 as u8 1547 oz = oz + 1 1548 oz = sj_cat(bttj, oz, "chbeat_" as *u8) 1549 oz = sj_cat(bttj, oz, btday) 1550 oz = sj_cat(bttj, oz, ".jrnl" as *u8) 1551 bttj[oz] = 0 as u8 1552 ch_ingest(bpp, bttj, btmcx) 1553 } 1554 bpi = bpi + 1 1555 } 1556 var oz2: i64 = sj_cat(bttj, 0, bttwin) 1557 bttj[oz2] = 47 as u8 1558 oz2 = oz2 + 1 1559 oz2 = sj_cat(bttj, oz2, "chbeat_20260819.jrnl" as *u8) 1560 bttj[oz2] = 0 as u8 1561 var dlA: i64 = ch_gauge_json(btj2, 0, d) 1562 let gfA: i64 = ch_bt_int_after(d, dlA, "\"frames_total\":" as *u8) 1563 let goA: i64 = ch_bt_int_after(d, dlA, "\"outside\":" as *u8) 1564 let gpA: i64 = ch_bt_int_after(d, dlA, "\"outside_permil\":" as *u8) 1565 var dlB: i64 = ch_gauge_json(bttj, 0, d) 1566 let gfB: i64 = ch_bt_int_after(d, dlB, "\"frames_total\":" as *u8) 1567 let goB: i64 = ch_bt_int_after(d, dlB, "\"outside\":" as *u8) 1568 let gpB: i64 = ch_bt_int_after(d, dlB, "\"outside_permil\":" as *u8) 1569 var ok38: i64 = 0 1570 if gfA > 0 { if gfA == gfB { if goA == goB { if gpA == gpB { ok38 = 1 } } } } 1571 gv_check("T38 gauge over the landing twin agrees EXACTLY with gauge over the local journal (the NAS-vs-laptop instrument agreement, in fixture)" as *u8, ok38, ctr) 1572 // plant a truncated landing: the reconcile MUST catch it, and the gauges MUST diverge 1573 let btp1: *u8 = sys_mmap(512) 1574 var btp1n: i64 = 0 1575 bpi = 0 1576 while bpi < btnp { 1577 let bpp2: *u8 = ((btar as i64) + btfo[bpi]) as *u8 1578 let bpb2: *u8 = ch_bt_base(bpp2) 1579 if ch_starts(bpb2, 0, sj_vlen(bpb2), "cb20260723" as *u8) == 1 { btp1n = sj_cat(btp1, 0, bpp2); btp1[btp1n] = 0 as u8 } 1580 bpi = bpi + 1 1581 } 1582 let btpb: *u8 = sys_mmap(CH_JWIN) 1583 let btpn: i64 = ch_read(btp1, btpb, CH_JWIN - 8) 1584 let btcut: *u8 = sys_mmap(512) 1585 o = sj_cat(btcut, 0, prefix) 1586 o = sj_catn(btcut, o, now) 1587 o = sj_cat(btcut, o, "cut1.frames" as *u8) 1588 btcut[o] = 0 as u8 1589 let btcfd2: i64 = sys_openat_wr(btcut, CH_MODE_644) 1590 sys_write(btcfd2, btpb, btpn - 10) 1591 sys_close(btcfd2) 1592 let bttj2: *u8 = sys_mmap(512) 1593 o = sj_cat(bttj2, 0, bttwin) 1594 o = sj_cat(bttj2, o, "/chbeat_cutcase.jrnl" as *u8) 1595 bttj2[o] = 0 as u8 1596 let btr9: i64 = ch_ingest(btcut, bttj2, btmcx) 1597 let btpl: i64 = ch_bt_lines(btp1) 1598 var ok39: i64 = 0 1599 if btpl == 2 { if btr9 == 1 { if btmcx[0] == 1 { if btr9 != btpl { ok39 = 1 } } } } 1600 gv_check("T39 neg-control-truncated-landing: ingested-frames != staged-frames and malformed counted -- the push reconcile catches a cut landing" as *u8, ok39, ctr) 1601 // conf missing a required key refuses, NAMING it 1602 let btconf2: *u8 = sys_mmap(512) 1603 o = sj_cat(btconf2, 0, prefix) 1604 o = sj_catn(btconf2, o, now) 1605 o = sj_cat(btconf2, o, "btconf2" as *u8) 1606 btconf2[o] = 0 as u8 1607 bo = sj_cat(btcb, 0, "root=" as *u8) 1608 bo = sj_cat(btcb, bo, btroot) 1609 btcb[bo] = 10 as u8 1610 bo = bo + 1 1611 bo = sj_cat(btcb, bo, "state=" as *u8) 1612 bo = sj_cat(btcb, bo, btstate) 1613 btcb[bo] = 10 as u8 1614 bo = bo + 1 1615 let btcfd3: i64 = sys_openat_wr(btconf2, CH_MODE_644) 1616 sys_write(btcfd3, btcb, bo) 1617 sys_close(btcfd3) 1618 let bcx4: *i64 = sys_mmap(8 * CH_BT_CTRS) as *i64 1619 let brc4: i64 = ch_beat(btconf2, bcx4) 1620 var ok40: i64 = 0 1621 if brc4 == 2 { ok40 = 1 } 1622 gv_check("T40 neg-control-conf-missing-required-key refuses fail-closed (never invents a path)" as *u8, ok40, ctr) 1623 // push with a DEAD wire: every piece stays spooled -- wrong only toward doing nothing 1624 let btconf3: *u8 = sys_mmap(512) 1625 o = sj_cat(btconf3, 0, prefix) 1626 o = sj_catn(btconf3, o, now) 1627 o = sj_cat(btconf3, o, "btconf3" as *u8) 1628 btconf3[o] = 0 as u8 1629 bo = sj_cat(btcb, 0, "root=" as *u8) 1630 bo = sj_cat(btcb, bo, btroot) 1631 btcb[bo] = 10 as u8 1632 bo = bo + 1 1633 bo = sj_cat(btcb, bo, "state=" as *u8) 1634 bo = sj_cat(btcb, bo, btstate) 1635 btcb[bo] = 10 as u8 1636 bo = bo + 1 1637 bo = sj_cat(btcb, bo, "spool=" as *u8) 1638 bo = sj_cat(btcb, bo, btspool) 1639 btcb[bo] = 10 as u8 1640 bo = bo + 1 1641 bo = sj_cat(btcb, bo, "done=" as *u8) 1642 bo = sj_cat(btcb, bo, btdone) 1643 btcb[bo] = 10 as u8 1644 bo = bo + 1 1645 bo = sj_cat(btcb, bo, "journal=" as *u8) 1646 bo = sj_cat(btcb, bo, btjrnl) 1647 btcb[bo] = 10 as u8 1648 bo = bo + 1 1649 bo = sj_cat(btcb, bo, "push=1" as *u8) 1650 btcb[bo] = 10 as u8 1651 bo = bo + 1 1652 bo = sj_cat(btcb, bo, "push_max=8" as *u8) 1653 btcb[bo] = 10 as u8 1654 bo = bo + 1 1655 bo = sj_cat(btcb, bo, "nas_stage=knowledge/status/chbeat/stage" as *u8) 1656 btcb[bo] = 10 as u8 1657 bo = bo + 1 1658 bo = sj_cat(btcb, bo, "nas_journal=knowledge/status/chbeat" as *u8) 1659 btcb[bo] = 10 as u8 1660 bo = bo + 1 1661 bo = sj_cat(btcb, bo, "wire=" as *u8) 1662 bo = sj_cat(btcb, bo, prefix) 1663 bo = sj_catn(btcb, bo, now) 1664 bo = sj_cat(btcb, bo, "nowire" as *u8) 1665 btcb[bo] = 10 as u8 1666 bo = bo + 1 1667 bo = sj_cat(btcb, bo, "wire_script=x" as *u8) 1668 btcb[bo] = 10 as u8 1669 bo = bo + 1 1670 bo = sj_cat(btcb, bo, "cap_write=x" as *u8) 1671 btcb[bo] = 10 as u8 1672 bo = bo + 1 1673 bo = sj_cat(btcb, bo, "cap_ingest=x" as *u8) 1674 btcb[bo] = 10 as u8 1675 bo = bo + 1 1676 bo = sj_cat(btcb, bo, "cap_read=x" as *u8) 1677 btcb[bo] = 10 as u8 1678 bo = bo + 1 1679 bo = sj_cat(btcb, bo, "hash_elf=" as *u8) 1680 bo = sj_cat(btcb, bo, prefix) 1681 bo = sj_catn(btcb, bo, now) 1682 bo = sj_cat(btcb, bo, "nohash" as *u8) 1683 btcb[bo] = 10 as u8 1684 bo = bo + 1 1685 let btcfd4: i64 = sys_openat_wr(btconf3, CH_MODE_644) 1686 sys_write(btcfd4, btcb, bo) 1687 sys_close(btcfd4) 1688 let bcx5: *i64 = sys_mmap(8 * CH_BT_CTRS) as *i64 1689 let brc5: i64 = ch_beat(btconf3, bcx5) 1690 var ok41: i64 = 0 1691 if brc5 == 1 { if bcx5[16] > 0 { if bcx5[17] == 0 { if bcx5[18] == bcx5[16] { if bcx5[19] > 0 { ok41 = 1 } } } } } 1692 gv_check("T41 neg-control-push-wire-dead: every piece stays spooled and every failure is counted -- wrong only toward doing nothing" as *u8, ok41, ctr) 1693 // journal cliff budget rides the conf and announces 1694 let btconf4: *u8 = sys_mmap(512) 1695 o = sj_cat(btconf4, 0, prefix) 1696 o = sj_catn(btconf4, o, now) 1697 o = sj_cat(btconf4, o, "btconf4" as *u8) 1698 btconf4[o] = 0 as u8 1699 bo = sj_cat(btcb, 0, "root=" as *u8) 1700 bo = sj_cat(btcb, bo, btroot) 1701 btcb[bo] = 10 as u8 1702 bo = bo + 1 1703 bo = sj_cat(btcb, bo, "state=" as *u8) 1704 bo = sj_cat(btcb, bo, btstate) 1705 btcb[bo] = 10 as u8 1706 bo = bo + 1 1707 bo = sj_cat(btcb, bo, "spool=" as *u8) 1708 bo = sj_cat(btcb, bo, btspool) 1709 btcb[bo] = 10 as u8 1710 bo = bo + 1 1711 bo = sj_cat(btcb, bo, "done=" as *u8) 1712 bo = sj_cat(btcb, bo, btdone) 1713 btcb[bo] = 10 as u8 1714 bo = bo + 1 1715 bo = sj_cat(btcb, bo, "journal=" as *u8) 1716 bo = sj_cat(btcb, bo, btjrnl) 1717 btcb[bo] = 10 as u8 1718 bo = bo + 1 1719 bo = sj_cat(btcb, bo, "push=0" as *u8) 1720 btcb[bo] = 10 as u8 1721 bo = bo + 1 1722 bo = sj_cat(btcb, bo, "jrnl_cliff=64" as *u8) 1723 btcb[bo] = 10 as u8 1724 bo = bo + 1 1725 let btcfd5: i64 = sys_openat_wr(btconf4, CH_MODE_644) 1726 sys_write(btcfd5, btcb, bo) 1727 sys_close(btcfd5) 1728 let bcx6: *i64 = sys_mmap(8 * CH_BT_CTRS) as *i64 1729 let brc6: i64 = ch_beat(btconf4, bcx6) 1730 var ok42: i64 = 0 1731 if brc6 == 0 { if bcx6[28] > 1000 { ok42 = 1 } } 1732 gv_check("T42 the journal cliff budget rides the conf and the fill announce fires PAST-CLIFF on a tiny budget" as *u8, ok42, ctr) 1733 // push-parser teeth: each decision parser must be able to FAIL 1734 let btpp: *u8 = sys_mmap(256) 1735 var btppn: i64 = sj_cat(btpp, 0, "{\"organ\":\"nx_filehash\",\"sha256\":\"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\",\"bytes\":7}" as *u8) 1736 let btsha: *u8 = sys_mmap(80) 1737 var ok43: i64 = 0 1738 if ch_bt_parse_sha(btpp, btppn, btsha) == 1 { 1739 btppn = sj_cat(btpp, 0, "{\"sha256\":\"zz\"}" as *u8) 1740 if ch_bt_parse_sha(btpp, btppn, btsha) == 0 { 1741 btppn = sj_cat(btpp, 0, "INGEST OK frames=42 malformed=0" as *u8) 1742 if ch_bt_int_after(btpp, btppn, "INGEST OK frames=" as *u8) == 42 { 1743 if ch_bt_int_after(btpp, btppn, "bytes=" as *u8) == (0 - 1) { ok43 = 1 } 1744 } 1745 } 1746 } 1747 gv_check("T43 push decision parsers accept the real shapes and REFUSE malformed ones (a parser that cannot fail is not a parser)" as *u8, ok43, ctr) 1748 // T44 the push-reason truth table. The defect this replaces answered "fail-verify" for an upload 1749 // that never landed, so the two ABSENT causes -- which have OPPOSITE remedies (retry the write vs 1750 // investigate a write that lied) -- shared one name. Walk the whole table, then assert they differ. 1751 var ok44: i64 = 0 1752 if ch_bt_zeq(ch_bt_pushreason(0, 0, 0), "fail-write" as *u8) == 1 { 1753 if ch_bt_zeq(ch_bt_pushreason(1, 0, 0), "fail-verify-absent" as *u8) == 1 { 1754 if ch_bt_zeq(ch_bt_pushreason(1, 1, 0), "fail-verify-mismatch" as *u8) == 1 { 1755 if ch_bt_zeq(ch_bt_pushreason(1, 1, 1), "ok" as *u8) == 1 { 1756 if ch_bt_zeq(ch_bt_pushreason(0, 0, 0), ch_bt_pushreason(1, 0, 0)) == 0 { ok44 = 1 } 1757 } 1758 } 1759 } 1760 } 1761 gv_check("T44 neg-control-push-reason-distinct: a write that never landed and a write that lied get DIFFERENT names (the wrong-stage defect cannot return)" as *u8, ok44, ctr) 1762 // ---- CE1 leg 2: write frames carry the PATH they touched (additive note token) ---- 1763 let tj2: *u8 = sys_mmap(512) 1764 o = sj_cat(tj2, 0, prefix) 1765 o = sj_catn(tj2, o, now) 1766 o = sj_cat(tj2, o, ".t2" as *u8) 1767 tj2[o] = 0 as u8 1768 let fr2: *u8 = sys_mmap(512) 1769 o = sj_cat(fr2, 0, prefix) 1770 o = sj_catn(fr2, o, now) 1771 o = sj_cat(fr2, o, ".frames2" as *u8) 1772 fr2[o] = 0 as u8 1773 let t2fd: i64 = sys_openat_append(tj2, CH_MODE_644) 1774 lo = sj_cat(lb, 0, "{\"timestamp\":\"2026-07-23T00:00:05Z\",\"c\":[{\"type\":\"tool_use\",\"id\":\"w1\",\"name\":\"mcp__nishi__nx_fs_write\",\"input\":{\"argv\":[\"edit\",\"buildroot/runtime/x_fixture.nx\",\"old\",\"new\"],\"_cap\":\"zz\"}}]}" as *u8) 1775 lb[lo] = 10 as u8 1776 sys_write(t2fd, lb, lo + 1) 1777 lo = sj_cat(lb, 0, "{\"timestamp\":\"2026-07-23T00:00:06Z\",\"c\":[{\"type\":\"tool_use\",\"id\":\"w2\",\"name\":\"Write\",\"input\":{\"file_path\":\"C:/Users/e/m.md\",\"content\":\"x \\\"file_path\\\":\\\"decoy\\\" y\"}}]}" as *u8) 1778 lb[lo] = 10 as u8 1779 sys_write(t2fd, lb, lo + 1) 1780 lo = sj_cat(lb, 0, "{\"timestamp\":\"2026-07-23T00:00:07Z\",\"c\":[{\"type\":\"tool_use\",\"id\":\"r1\",\"name\":\"mcp__nishi__nx_fs\",\"input\":{\"argv\":[\"read\",\"buildroot/runtime/x_fixture.nx\"]}}]}" as *u8) 1781 lb[lo] = 10 as u8 1782 sys_write(t2fd, lb, lo + 1) 1783 sys_close(t2fd) 1784 let tcx2: *i64 = sys_mmap(16) as *i64 1785 let got2: i64 = ch_frames(tj2, "wpath" as *u8, fr2, tcx2) 1786 let fb2: *u8 = sys_mmap(CH_JWIN) 1787 let fn2: i64 = ch_read(fr2, fb2, CH_JWIN - 8) 1788 var ok45: i64 = 0 1789 if got2 == 3 { if fn2 > 0 { if ch_find(fb2, fn2, "path=buildroot/runtime/x_fixture.nx" as *u8) == 1 { ok45 = 1 } } } 1790 gv_check("T45 an nx_fs_write frame carries path= from argv[1], the verb in argv[0] never mistaken for it" as *u8, ok45, ctr) 1791 var ok46: i64 = 0 1792 if fn2 > 0 { if ch_find(fb2, fn2, "path=C:/Users/e/m.md" as *u8) == 1 { if ch_find(fb2, fn2, "path=decoy" as *u8) == 0 { ok46 = 1 } } } 1793 gv_check("T46 a Write frame carries path= from file_path and a decoy key inside its CONTENT is never read as the path" as *u8, ok46, ctr) 1794 var pc: i64 = 0 1795 var px: i64 = 0 1796 var pg: i64 = 1 1797 let pkey: *u8 = "path=" as *u8 1798 while pg == 1 { if fn2 <= 0 { pg = 0 } else { let pf: i64 = ch_find_from(fb2, px, fn2, pkey); if pf < 0 { pg = 0 } else { pc = pc + 1; px = pf + sj_vlen(pkey) } } } 1799 var ok47: i64 = 0 1800 if pc == 2 { ok47 = 1 } 1801 gv_check("T47 NEG-CONTROL: a READER frame (nx_fs) carries no path token -- exactly two of three frames do" as *u8, ok47, ctr) 1802 // ---- CE1 leg 2: ce_author_health on a PLANTED tree prefix, a planted journal and a planted spine ---- 1803 let ahp: *u8 = sys_mmap(512) 1804 o = sj_cat(ahp, 0, prefix); o = sj_catn(ahp, o, now); o = sj_cat(ahp, o, "ah_" as *u8); ahp[o] = 0 as u8 1805 let aha: *u8 = sys_mmap(512); o = sj_cat(aha, 0, ahp); o = sj_cat(aha, o, "a.nx" as *u8); aha[o] = 0 as u8 1806 let ahb: *u8 = sys_mmap(512); o = sj_cat(ahb, 0, ahp); o = sj_cat(ahb, o, "b.nx" as *u8); ahb[o] = 0 as u8 1807 let ahc: *u8 = sys_mmap(512); o = sj_cat(ahc, 0, ahp); o = sj_cat(ahc, o, "c.txt" as *u8); ahc[o] = 0 as u8 1808 let ahj: *u8 = sys_mmap(512); o = sj_cat(ahj, 0, ahp); o = sj_cat(ahj, o, "frames.jrnl" as *u8); ahj[o] = 0 as u8 1809 let ahs: *u8 = sys_mmap(512); o = sj_cat(ahs, 0, ahp); o = sj_cat(ahs, o, "mccabe.spine" as *u8); ahs[o] = 0 as u8 1810 let ahn: *u8 = sys_mmap(512); o = sj_cat(ahn, 0, ahp); o = sj_cat(ahn, o, "nope.spine" as *u8); ahn[o] = 0 as u8 1811 let ahfa: i64 = sys_openat_wr(aha, CH_MODE_644) 1812 lo = sj_cat(lb, 0, "func t(a: i64) -> i64 {\n if a>0 { return 1 }\n return 0\n}\n" as *u8) 1813 sys_write(ahfa, lb, lo); sys_close(ahfa) 1814 let ahfb: i64 = sys_openat_wr(ahb, CH_MODE_644) 1815 lo = sj_cat(lb, 0, "func t() -> i64 {\n return 0\n}\n" as *u8) 1816 sys_write(ahfb, lb, lo); sys_close(ahfb) 1817 let ahfc: i64 = sys_openat_wr(ahc, CH_MODE_644) 1818 lo = sj_cat(lb, 0, "not nishilang\n" as *u8) 1819 sys_write(ahfc, lb, lo); sys_close(ahfc) 1820 let ahfs: i64 = sys_openat_wr(ahs, CH_MODE_644) 1821 lo = sj_cat(lb, 0, "1788600000|files=10|funcs=20|above_10=3|permille=150|classes=0|UNMARKED:10:20:3\n" as *u8) 1822 sys_write(ahfs, lb, lo); sys_close(ahfs) 1823 let ahnb: *u8 = sys_mmap(1024) 1824 let ahfj: i64 = sys_openat_append(ahj, CH_MODE_644) 1825 var ano: i64 = sj_cat(ahnb, 0, "delta path=" as *u8); ano = sj_cat(ahnb, ano, aha); ahnb[ano] = 0 as u8 1826 ch_frame_write(ahfj, lb, CH_AH_FIX_TS, "sessA" as *u8, "mcp__nishi__nx_fs_write" as *u8, "use" as *u8, "-" as *u8, ahnb) 1827 ch_frame_write(ahfj, lb, CH_AH_FIX_TS + 1, "sessA" as *u8, "mcp__nishi__nx_fs_write" as *u8, "use" as *u8, "-" as *u8, ahnb) 1828 ano = sj_cat(ahnb, 0, "delta path=" as *u8); ano = sj_cat(ahnb, ano, ahb); ahnb[ano] = 0 as u8 1829 ch_frame_write(ahfj, lb, CH_AH_FIX_TS + 2, "sessB" as *u8, "Write" as *u8, "use" as *u8, "-" as *u8, ahnb) 1830 ano = sj_cat(ahnb, 0, "delta path=" as *u8); ano = sj_cat(ahnb, ano, ahc); ahnb[ano] = 0 as u8 1831 ch_frame_write(ahfj, lb, CH_AH_FIX_TS + 3, "sessB" as *u8, "mcp__nishi__nx_fs_write" as *u8, "use" as *u8, "-" as *u8, ahnb) 1832 ch_frame_write(ahfj, lb, CH_AH_FIX_TS + 4, "sessB" as *u8, "mcp__nishi__nx_fs" as *u8, "use" as *u8, "-" as *u8, "delta" as *u8) 1833 sys_close(ahfj) 1834 let acx: *i64 = sys_mmap(8 * CH_AH_CTRS) as *i64 1835 let aob: *u8 = sys_mmap(CH_OUT) 1836 let arc: i64 = ce_author_health(ahj, ahp, ahs, acx, aob) 1837 var ok48: i64 = 0 1838 if arc == 0 { if acx[CH_AH_FILES] == 2 { if acx[CH_AH_FUNCS] == 2 { if acx[CH_AH_SUMVG] == 3 { if acx[CH_AH_ABOVE] == 0 { if acx[CH_AH_DFILES] == CH_AH_FIX_DFILES { if acx[CH_AH_DFUNCS] == CH_AH_FIX_DFUNCS { if acx[CH_AH_DABOVE] == CH_AH_FIX_DABOVE { ok48 = 1 } } } } } } } } 1839 gv_check("T48 author-health: two seat-written .nx files scanned once, vG 2+1 hand-computed, denominator read from the spine's LAST row" as *u8, ok48, ctr) 1840 var ok49: i64 = 0 1841 if acx[CH_AH_FRAMES] == 5 { if acx[CH_AH_PATHFRAMES] == 4 { if acx[CH_AH_UNIQUE] == 3 { if acx[CH_AH_INTREE] == 2 { if acx[CH_AH_OUTSIDE] == 1 { if acx[CH_AH_SESSIONS] == 2 { if acx[CH_AH_FIRSTTS] == CH_AH_FIX_TS { ok49 = 1 } } } } } } } 1842 gv_check("T49 author-health partition: a duplicate write counts ONCE, a non-.nx path is counted apart, sessions and first ts are exact" as *u8, ok49, ctr) 1843 let arc2: i64 = ce_author_health(ahj, ahp, ahn, acx, aob) 1844 var ok50: i64 = 0 1845 if arc2 == CH_AH_RC_UNOBS { if acx[CH_AH_DFILES] == 0 { if acx[CH_AH_FILES] == 2 { ok50 = 1 } } } 1846 gv_check("T50 NEG-CONTROL: an absent spine reads UNOBSERVABLE-DENOMINATOR (rc 3) with NO fabricated denominator, seat figures still measured" as *u8, ok50, ctr) 1847 let arc3: i64 = ce_author_health(fr, ahp, ahs, acx, aob) 1848 var ok51: i64 = 0 1849 if arc3 == CH_AH_RC_NOPATH { if acx[CH_AH_PATHFRAMES] == 0 { if acx[CH_AH_FILES] == 0 { ok51 = 1 } } } 1850 gv_check("T51 NEG-CONTROL: a journal whose frames carry no path reads NO-PATH-FRAMES (rc 4), never a zero that looks measured" as *u8, ok51, ctr) 1851 let rc: i64 = gv_verdict("CLAWHARV-GATE" as *u8, ctr, "transcript parse + delta hwm + ingest + gauge + page + propose + bootgauge + capture-beat teeth green" as *u8) 1852 return rc 1853} 1854 1855// ---------- learn: LEARNING-TEXT harvest (root fix for debt 1785525736) ---------- 1856// Every other verb in this organ extracts "type":"tool_use" NAMES. That is tool TELEMETRY, not 1857// learning capture: ch_frame_write puts '-' in the two columns where a lesson would go, and the 1858// 6-hourly beat reported fail=0 for weeks while moving ZERO learnings, over transcripts holding 1859// ~40k LAW:/LESSON/ROOT CAUSE/FINDING: statements. This verb reads the PROSE instead -- the "text" 1860// payloads written by the assistant and the operator -- ranks each line, and keeps only what clears 1861// the floor. Because it CAN reject plain prose, its output is evidence rather than a transcript dump. 1862// Rule 11: every marker, weight and floor is loaded from a conf file. No weight is written in code. 1863const CH_MK_MAX: i64 = 64 1864const CH_CONF_WIN: i64 = 65536 1865const CH_TXTWIN: i64 = 262144 1866 1867// longest run of CONSECUTIVE occurrences of a (possibly multi-byte) glyph in q[s..e) 1868// the star/warn glyphs are 3-byte UTF-8, so this compares byte sequences, never single chars. 1869func ch_run_of(q: *u8, s: i64, e: i64, g: *u8) -> i64 { 1870 let gl: i64 = sj_vlen(g) 1871 if gl <= 0 { return 0 } 1872 var best: i64 = 0 1873 var i: i64 = s 1874 while i < e { 1875 var run: i64 = 0 1876 var j: i64 = i 1877 var go: i64 = 1 1878 while go == 1 { 1879 if j + gl > e { go = 0 } else { 1880 var k: i64 = 0 1881 var same: i64 = 1 1882 while k < gl { 1883 if q[j+k] != g[k] { same = 0; k = gl } else { k = k + 1 } 1884 } 1885 if same == 1 { run = run + 1; j = j + gl } else { go = 0 } 1886 } 1887 } 1888 if run > best { best = run } 1889 if run > 0 { i = j } else { i = i + 1 } 1890 } 1891 return best 1892} 1893 1894// conf loader. mk is INTERLEAVED (mk[2k]=literal offset into cbuf, mk[2k+1]=weight) so this stays 1895// at 4 params; sc carries the scalars: 0=warn_bonus 1=min_rank 2=min_len 3=max_len 4=star_off 1896// 5=warn_off 6=star_max 7=marker_count. Returns marker count, or -1 if the conf cannot be read -- 1897// FAIL-CLOSED: no conf means no ranking basis, so the verb refuses rather than inventing weights. 1898func ch_conf_load(path: *u8, cbuf: *u8, mk: *i64, sc: *i64) -> i64 { 1899 let n: i64 = ch_read(path, cbuf, CH_CONF_WIN - 8) 1900 if n <= 0 { return 0 - 1 } 1901 sc[0] = 2 1902 sc[1] = 3 1903 sc[2] = 40 1904 sc[3] = 400 1905 sc[4] = 0 - 1 1906 sc[5] = 0 - 1 1907 sc[6] = 6 1908 var cnt: i64 = 0 1909 var i: i64 = 0 1910 while i < n { 1911 let le: i64 = sj_le(cbuf, i, n) 1912 if cbuf[i] != (35 as u8) { 1913 if ch_starts(cbuf, i, le, "marker=" as *u8) == 1 { 1914 if cnt < CH_MK_MAX { 1915 let vs: i64 = i + 7 1916 var bar: i64 = 0 - 1 1917 var p: i64 = vs 1918 while p < le { if cbuf[p] == (124 as u8) { bar = p } p = p + 1 } 1919 if bar > vs { 1920 cbuf[bar] = 0 as u8 1921 cbuf[le] = 0 as u8 1922 mk[cnt*2] = vs 1923 mk[cnt*2+1] = sj_atoi_z(((cbuf as i64) + bar + 1) as *u8) 1924 cnt = cnt + 1 1925 } 1926 } 1927 } 1928 if ch_starts(cbuf, i, le, "star_char=" as *u8) == 1 { cbuf[le] = 0 as u8; sc[4] = i + 10 } 1929 if ch_starts(cbuf, i, le, "warn_char=" as *u8) == 1 { cbuf[le] = 0 as u8; sc[5] = i + 10 } 1930 if ch_starts(cbuf, i, le, "warn_bonus=" as *u8) == 1 { cbuf[le] = 0 as u8; sc[0] = sj_atoi_z(((cbuf as i64) + i + 11) as *u8) } 1931 if ch_starts(cbuf, i, le, "min_rank_store=" as *u8) == 1 { cbuf[le] = 0 as u8; sc[1] = sj_atoi_z(((cbuf as i64) + i + 15) as *u8) } 1932 if ch_starts(cbuf, i, le, "min_len=" as *u8) == 1 { cbuf[le] = 0 as u8; sc[2] = sj_atoi_z(((cbuf as i64) + i + 8) as *u8) } 1933 if ch_starts(cbuf, i, le, "max_len=" as *u8) == 1 { cbuf[le] = 0 as u8; sc[3] = sj_atoi_z(((cbuf as i64) + i + 8) as *u8) } 1934 if ch_starts(cbuf, i, le, "star_max=" as *u8) == 1 { cbuf[le] = 0 as u8; sc[6] = sj_atoi_z(((cbuf as i64) + i + 9) as *u8) } 1935 } 1936 i = le + 1 1937 } 1938 sc[7] = cnt 1939 return cnt 1940} 1941 1942// a marker must sit on a WORD BOUNDARY. Measured on real prose: the naive substring test scored 1943// "UNMEASURED" as the marker "MEASURED" and promoted a doc line to rank 3 -- a substring needle 1944// flatters silently. Only the left edge needs guarding (markers are prefixes like "LAW:"). 1945func ch_isalpha(c: u8) -> i64 { 1946 if c >= (65 as u8) { if c <= (90 as u8) { return 1 } } 1947 if c >= (97 as u8) { if c <= (122 as u8) { return 1 } } 1948 return 0 1949} 1950 1951// rank = the MAX of the signals, never the mean (banked law): a star run is the operator's own 1952// ranking convention, a warn glyph is a callout worth rank+bonus, and marker phrases carry their 1953// configured weight. Capped at star_max so a decorative row of stars cannot outrank a real law. 1954func ch_rank_text(q: *u8, s: i64, e: i64, cbuf: *u8, mk: *i64, sc: *i64) -> i64 { 1955 var r: i64 = 0 1956 if sc[4] >= 0 { 1957 let sr: i64 = ch_run_of(q, s, e, ((cbuf as i64) + sc[4]) as *u8) 1958 if sr > r { r = sr } 1959 } 1960 if sc[5] >= 0 { 1961 let wr: i64 = ch_run_of(q, s, e, ((cbuf as i64) + sc[5]) as *u8) 1962 if wr > 0 { let wv: i64 = wr + sc[0]; if wv > r { r = wv } } 1963 } 1964 var k: i64 = 0 1965 while k < sc[7] { 1966 let lit: *u8 = ((cbuf as i64) + mk[k*2]) as *u8 1967 var from: i64 = s 1968 var hit: i64 = 0 1969 while hit == 0 { 1970 let hp: i64 = ch_find_from(q, from, e, lit) 1971 if hp < 0 { hit = 0 - 1 } else { 1972 var okb: i64 = 1 1973 if hp > s { if ch_isalpha(q[hp-1]) == 1 { okb = 0 } } 1974 if okb == 1 { hit = 1 } else { from = hp + 1 } 1975 } 1976 } 1977 if hit == 1 { if mk[k*2+1] > r { r = mk[k*2+1] } } 1978 k = k + 1 1979 } 1980 if r > sc[6] { r = sc[6] } 1981 return r 1982} 1983 1984func ch_learn(tpath: *u8, ws: *u8, outp: *u8, confp: *u8, cx: *i64) -> i64 { 1985 let cbuf: *u8 = sys_mmap(CH_CONF_WIN) 1986 let mk: *i64 = sys_mmap(CH_MK_MAX * 16) as *i64 1987 let sc: *i64 = sys_mmap(128) as *i64 1988 let cnt: i64 = ch_conf_load(confp, cbuf, mk, sc) 1989 if cnt < 0 { return 0 - 4 } 1990 cx[1] = cnt 1991 let buf: *u8 = sys_mmap(CH_WIN) 1992 let cap: i64 = CH_WIN - 8 1993 let n: i64 = ch_read(tpath, buf, cap) 1994 cx[0] = 0 1995 if n <= 0 { return 0 - 1 } 1996 if n >= cap { cx[0] = 1 } 1997 let fd: i64 = sys_openat_append(outp, CH_MODE_644) 1998 if fd < 0 { return 0 - 3 } 1999 let tb: *u8 = sys_mmap(CH_TXTWIN) 2000 let ob: *u8 = sys_mmap(CH_TXTWIN) 2001 // last emitted segment. A real transcript frame carries the same assistant text more than once 2002 // (the message and its echo), so without this the organ emits provable duplicates -- measured 2 2003 // identical records from one real line. Adjacent-compare, not a full set: the echo is adjacent. 2004 let pb: *u8 = sys_mmap(CH_TXTWIN) 2005 var pl: i64 = 0 2006 var kept: i64 = 0 2007 var i: i64 = 0 2008 while i < n { 2009 let le: i64 = sj_le(buf, i, n) 2010 var ts: i64 = 0 2011 let tp: i64 = ch_find_from(buf, i, le, "\"timestamp\":\"" as *u8) 2012 if tp >= 0 { ts = ch_iso_epoch(buf, tp + 13, le) } 2013 var j: i64 = i 2014 var go: i64 = 1 2015 while go == 1 { 2016 let xp: i64 = ch_find_from(buf, j, le, "\"text\":\"" as *u8) 2017 if xp < 0 { go = 0 } else { 2018 var p: i64 = xp + 8 2019 var to: i64 = 0 2020 var g2: i64 = 1 2021 while g2 == 1 { 2022 if p >= le { g2 = 0 } else { 2023 let c: u8 = buf[p] 2024 if c == (34 as u8) { g2 = 0 } else { 2025 if c == (92 as u8) { 2026 let d2: u8 = buf[p+1] 2027 var em: u8 = d2 2028 if d2 == (110 as u8) { em = 10 as u8 } 2029 if d2 == (116 as u8) { em = 32 as u8 } 2030 if d2 == (114 as u8) { em = 32 as u8 } 2031 if to < CH_TXTWIN - 4 { tb[to] = em; to = to + 1 } 2032 p = p + 2 2033 } else { 2034 if to < CH_TXTWIN - 4 { tb[to] = c; to = to + 1 } 2035 p = p + 1 2036 } 2037 } 2038 } 2039 } 2040 var q: i64 = 0 2041 while q < to { 2042 let qe: i64 = sj_le(tb, q, to) 2043 let seg: i64 = qe - q 2044 if seg >= sc[2] { 2045 var endq: i64 = qe 2046 if seg > sc[3] { endq = q + sc[3] } 2047 let r: i64 = ch_rank_text(tb, q, endq, cbuf, mk, sc) 2048 var dup: i64 = 0 2049 if pl == (endq - q) { 2050 var z: i64 = 0 2051 var sm: i64 = 1 2052 while z < pl { if pb[z] != tb[q+z] { sm = 0; z = pl } else { z = z + 1 } } 2053 if sm == 1 { dup = 1 } 2054 } 2055 if r >= sc[1] { if dup == 0 { 2056 var o: i64 = sj_cat(ob, 0, "{\"ts\":" as *u8) 2057 o = sj_catn(ob, o, ts) 2058 o = sj_cat(ob, o, ",\"ws\":\"" as *u8) 2059 o = sj_cat(ob, o, ws) 2060 o = sj_cat(ob, o, "\",\"src\":\"transcript\",\"rank\":" as *u8) 2061 o = sj_catn(ob, o, r) 2062 o = sj_cat(ob, o, ",\"text\":\"" as *u8) 2063 var k2: i64 = q 2064 while k2 < endq { 2065 let c2: u8 = tb[k2] 2066 if c2 == (34 as u8) { ob[o] = 92 as u8; o = o + 1; ob[o] = 34 as u8; o = o + 1 } else { 2067 if c2 == (92 as u8) { ob[o] = 92 as u8; o = o + 1; ob[o] = 92 as u8; o = o + 1 } else { 2068 if c2 < (32 as u8) { ob[o] = 32 as u8; o = o + 1 } else { ob[o] = c2; o = o + 1 } 2069 } 2070 } 2071 k2 = k2 + 1 2072 } 2073 o = sj_cat(ob, o, "\"}" as *u8) 2074 ob[o] = 10 as u8 2075 sys_write(fd, ob, o + 1) 2076 pl = endq - q 2077 var z3: i64 = 0 2078 while z3 < pl { pb[z3] = tb[q+z3]; z3 = z3 + 1 } 2079 kept = kept + 1 2080 } } 2081 } 2082 q = qe + 1 2083 } 2084 j = p + 1 2085 } 2086 } 2087 i = le + 1 2088 } 2089 sys_close(fd) 2090 return kept 2091} 2092 2093// ================= beat: DM1 session->NAS capture (devmgmt /compare rung, 2026-08-20) ================= 2094// The dev record is laptop-local (837 transcripts / 2.29 GB measured 2026-08-20 under 2095// ~/.claude/projects, at THREE depths: sessions, subagents/, subagents/workflows/); the NAS clock plane 2096// cannot reach the laptop, so the beat RUNS WHERE THE TRANSCRIPTS LIVE (this organ is portable by 2097// design) and PUSHES. Pipeline: walk -> ch_delta per transcript (per-transcript byte HWM in state/) 2098// -> split fresh frames into ts-day PIECES -> ingest every piece into the LOCAL per-day journal twin 2099// -> when push=1, per piece: upload via the forked MCP wire (nx_fs_write), byte-verify with 2100// nx_filehash on BOTH sides (one ruler), NAS-side ch_ingest into the per-day NAS journal, announce 2101// journal fill. PIECES ARE THE CHUNK UNIT AND THE INGEST UNIT: each stays under the MCP body cliff 2102// and is marker-idempotent via ch_ingest, so the pipeline is resumable at every stage with no append 2103// primitive over the wire. A piece leaves the spool only after the NAS leg confirms; every failure 2104// leaves it spooled -- wrong only toward doing nothing. 2105// DAY PARTITION DERIVATION: heaviest measured day (2026-08-19: 32,122 MCP calls / 836,673 transcript 2106// lines across 7 seats) stages ~2-4 MB of frames -- a day is the largest calendar unit whose worst 2107// measured case still fits the 4 MiB gauge window (CH_JWIN), so per-day journals keep the NAS-side 2108// gauge untruncated. Frames whose timestamp cannot parse route to chbeat_tszero.jrnl -- their own 2109// bucket, never folded. 2110// Rule 11: every path, bound and cadence datum rides chbeat.conf; the beat consts live in the module 2111// const block at the top (single-pass parser: the selftest teeth read them first). 2112 2113func ch_bt_zeq(a: *u8, b: *u8) -> i64 { 2114 var i: i64 = 0 2115 while a[i] == b[i] { if a[i] == (0 as u8) { return 1 } i = i + 1 } 2116 return 0 2117} 2118func ch_bt_ends(s: *u8, sfx: *u8) -> i64 { 2119 let n: i64 = sj_vlen(s) 2120 let m: i64 = sj_vlen(sfx) 2121 if n < m { return 0 } 2122 return sj_lit_eq(s, n - m, n, sfx) 2123} 2124func ch_bt_le16(b: *u8, off: i64) -> i64 { return (b[off] as i64) + (b[off+1] as i64) * 256 } 2125func ch_bt_le64(b: *u8, off: i64) -> i64 { 2126 var v: i64 = 0 2127 var i: i64 = 7 2128 while i >= 0 { v = v * 256 + (b[off+i] as i64); i = i - 1 } 2129 return v 2130} 2131// stat: k[0]=file kind as the DT_* value ((st_mode>>12)&0xF equals DT_DIR/DT_REG numerically by Linux 2132// design), k[1]=size. sb = caller scratch >= 160 B (never allocated here -- runs once per dirent). 2133// st_mode u16 at offset 24, st_size i64 at offset 48 (x86_64 struct stat; the same offsets 2134// nx_artifactdrift ps_execbit reads). Arithmetic field extraction, no bitwise ops needed. 2135func ch_bt_stat(path: *u8, sb: *u8, k: *i64) -> i64 { 2136 k[0] = 0 2137 k[1] = 0 - 1 2138 if sys_fstatat(path, sb) != 0 { return 0 - 1 } 2139 let mode: i64 = ch_bt_le16(sb, 24) 2140 k[0] = (mode / 4096) % 16 2141 k[1] = ch_bt_le64(sb, 48) 2142 return 0 2143} 2144// recursive walk: every file ending <sfx> under root, ANY depth (sessions, subagents/, workflows/). 2145// getdents64 LOOPED until 0 per directory (one call is a prefix -- banked law); d_type on 9p/drvfs is 2146// often DT_UNKNOWN -> fstatat fallback, counted. fo[i] = arena offset of file path i. 2147// Returns file count, or -1 = table/arena overflow (caller REFUSES loudly -- never a silent cap). 2148// wcx: 0=dirs_walked 1=dir_open_errors 2=stat_fallbacks 3=arena_used 2149func ch_bt_walk(root: *u8, sfx: *u8, ar: *u8, fo: *i64, wcx: *i64) -> i64 { 2150 let dq: *i64 = sys_mmap(8 * CH_BT_MAXDIRS) as *i64 2151 let db: *u8 = sys_mmap(CH_BT_DIRWIN) 2152 let sb: *u8 = sys_mmap(256) 2153 let kk: *i64 = sys_mmap(16) as *i64 2154 var ap: i64 = 0 2155 var dh: i64 = 0 2156 var dt2: i64 = 0 2157 var nf: i64 = 0 2158 wcx[0] = 0 2159 wcx[1] = 0 2160 wcx[2] = 0 2161 wcx[3] = 0 2162 let rl: i64 = sj_vlen(root) 2163 if rl + 2 > CH_BT_ARENA { return 0 - 1 } 2164 dq[dt2] = ap 2165 var o: i64 = sj_cat(ar, ap, root) 2166 ar[o] = 0 as u8 2167 ap = o + 1 2168 dt2 = dt2 + 1 2169 while dh < dt2 { 2170 let dpo: i64 = dq[dh] 2171 dh = dh + 1 2172 let dpath: *u8 = ((ar as i64) + dpo) as *u8 2173 let dl: i64 = sj_vlen(dpath) 2174 let fd: i64 = sys_openat_rd(dpath) 2175 if fd < 0 { wcx[1] = wcx[1] + 1 } else { 2176 var more: i64 = 1 2177 while more == 1 { 2178 let r: i64 = sys_getdents64(fd, db, CH_BT_DIRWIN) 2179 if r <= 0 { more = 0 } else { 2180 var p: i64 = 0 2181 while p < r { 2182 let rec: *u8 = ((db as i64) + p) as *u8 2183 let rl2: i64 = dirent_reclen(rec) 2184 if rl2 <= 0 { p = r; more = 0 } else { 2185 var ty: i64 = dirent_type(rec) 2186 let nm: *u8 = dirent_name(rec) 2187 var dot: i64 = 0 2188 if nm[0] == (46 as u8) { 2189 if nm[1] == (0 as u8) { dot = 1 } 2190 if nm[1] == (46 as u8) { if nm[2] == (0 as u8) { dot = 1 } } 2191 } 2192 if dot == 0 { 2193 let nl: i64 = sj_vlen(nm) 2194 if ap + dl + nl + 2 > CH_BT_ARENA { sys_close(fd); return 0 - 1 } 2195 let po: i64 = ap 2196 var q: i64 = sj_cat(ar, po, dpath) 2197 ar[q] = 47 as u8 2198 q = q + 1 2199 q = sj_cat(ar, q, nm) 2200 ar[q] = 0 as u8 2201 let full: *u8 = ((ar as i64) + po) as *u8 2202 if ty == 0 { wcx[2] = wcx[2] + 1; if ch_bt_stat(full, sb, kk) == 0 { ty = kk[0] } } 2203 var keep: i64 = 0 2204 if ty == DT_DIR { 2205 if dt2 >= CH_BT_MAXDIRS { sys_close(fd); return 0 - 1 } 2206 dq[dt2] = po 2207 dt2 = dt2 + 1 2208 keep = 1 2209 } else { 2210 if ty == DT_REG { if ch_bt_ends(full, sfx) == 1 { 2211 if nf >= CH_BT_MAXFILES { sys_close(fd); return 0 - 1 } 2212 fo[nf] = po 2213 nf = nf + 1 2214 keep = 1 2215 } } 2216 } 2217 if keep == 1 { ap = q + 1 } 2218 } 2219 p = p + rl2 2220 } 2221 } 2222 } 2223 } 2224 sys_close(fd) 2225 wcx[0] = wcx[0] + 1 2226 } 2227 } 2228 wcx[3] = ap 2229 return nf 2230} 2231// epoch -> zero-padded YYYYMMDD (Hinnant civil-from-days, the exact inverse of ch_epoch_ymdhms). 2232// ts <= 0 -> "tszero": frames without a parseable timestamp keep their OWN journal bucket. 2233func ch_bt_day(ts: i64, d: *u8) -> i64 { 2234 if ts <= 0 { let o: i64 = sj_cat(d, 0, "tszero" as *u8); d[o] = 0 as u8; return o } 2235 let z: i64 = ts / CH_MAGIC_86400 + CH_MAGIC_719468 2236 let era: i64 = z / CH_MAGIC_146097 2237 let doe: i64 = z - era * CH_MAGIC_146097 2238 let yoe: i64 = (doe - doe / CH_MAGIC_1460 + doe / CH_MAGIC_36524 - doe / CH_MAGIC_146096) / 365 2239 var y: i64 = yoe + era * 400 2240 let doy: i64 = doe - (365 * yoe + yoe / 4 - yoe / 100) 2241 let mp: i64 = (5 * doy + 2) / 153 2242 let dd: i64 = doy - (153 * mp + 2) / 5 + 1 2243 var m: i64 = 0 2244 if mp < 10 { m = mp + 3 } else { m = mp - 9 } 2245 if m <= 2 { y = y + 1 } 2246 d[0] = (48 + (y / 1000) % 10) as u8 2247 d[1] = (48 + (y / 100) % 10) as u8 2248 d[2] = (48 + (y / 10) % 10) as u8 2249 d[3] = (48 + y % 10) as u8 2250 d[4] = (48 + (m / 10) % 10) as u8 2251 d[5] = (48 + m % 10) as u8 2252 d[6] = (48 + (dd / 10) % 10) as u8 2253 d[7] = (48 + dd % 10) as u8 2254 d[8] = 0 as u8 2255 return 8 2256} 2257// conf: key=value rows; '#' comments. Values zero-terminate IN cbuf; the value offset is DERIVED from 2258// the key literal's own length (sj_vlen) -- never a hand-counted twin beside the literal (banked law). 2259func ch_bt_kv(cbuf: *u8, i: i64, le: i64, key: *u8) -> i64 { 2260 if ch_starts(cbuf, i, le, key) == 1 { cbuf[le] = 0 as u8; return i + sj_vlen(key) } 2261 return 0 - 1 2262} 2263// off: 0 root 1 state 2 spool 3 done 4 journal 5 nas_stage 6 nas_journal 7 wire 8 wire_script 2264// 9 cap_write 10 cap_ingest 11 cap_read 12 hash_elf (-1 = absent) 2265// iv: 0 push 1 push_max 2 piece_raw 3 wire_timeout_ms 4 jrnl_cliff 5 jrnl_warn_permil 2266// kt interleaved known_type rows (offset,count); count in kcx[0] 2267// returns 0, -1 unreadable conf, -2 required key missing (NAMED on stdout) -- fail-closed both ways. 2268func ch_bt_conf(path: *u8, cbuf: *u8, off: *i64, iv: *i64, kt: *i64, kcx: *i64) -> i64 { 2269 let n: i64 = ch_read(path, cbuf, CH_CONF_WIN - 8) 2270 if n <= 0 { return 0 - 1 } 2271 var w: i64 = 0 2272 while w < 13 { off[w] = 0 - 1; w = w + 1 } 2273 iv[0] = 0 2274 iv[1] = 0 2275 // derived default: ~9% JSON-escape inflation on the 6 control bytes per ~80 B frame plus a ~1 KiB 2276 // rpc envelope cannot push 3/4 of the measured body cliff across it 2277 iv[2] = CH_MCP_BODY_CLIFF * 3 / 4 2278 // derived default: matches the estate MCP client's own 120000 ms call deadline 2279 iv[3] = CH_BT_DEFAULT_WIRE_TIMEOUT_MS 2280 // derived default: the day-journal cliff IS the gauge/verify window 2281 iv[4] = CH_JWIN 2282 // derived default: AMBER from four fifths of the cliff (the sizeguard amber-before-red shape) 2283 iv[5] = 1000 * 4 / 5 2284 kcx[0] = 0 2285 var i: i64 = 0 2286 while i < n { 2287 let le: i64 = sj_le(cbuf, i, n) 2288 if cbuf[i] != (35 as u8) { 2289 var v: i64 = ch_bt_kv(cbuf, i, le, "root=" as *u8) 2290 if v >= 0 { off[0] = v } 2291 v = ch_bt_kv(cbuf, i, le, "state=" as *u8) 2292 if v >= 0 { off[1] = v } 2293 v = ch_bt_kv(cbuf, i, le, "spool=" as *u8) 2294 if v >= 0 { off[2] = v } 2295 v = ch_bt_kv(cbuf, i, le, "done=" as *u8) 2296 if v >= 0 { off[3] = v } 2297 v = ch_bt_kv(cbuf, i, le, "journal=" as *u8) 2298 if v >= 0 { off[4] = v } 2299 v = ch_bt_kv(cbuf, i, le, "nas_stage=" as *u8) 2300 if v >= 0 { off[5] = v } 2301 v = ch_bt_kv(cbuf, i, le, "nas_journal=" as *u8) 2302 if v >= 0 { off[6] = v } 2303 v = ch_bt_kv(cbuf, i, le, "wire=" as *u8) 2304 if v >= 0 { off[7] = v } 2305 v = ch_bt_kv(cbuf, i, le, "wire_script=" as *u8) 2306 if v >= 0 { off[8] = v } 2307 v = ch_bt_kv(cbuf, i, le, "cap_write=" as *u8) 2308 if v >= 0 { off[9] = v } 2309 v = ch_bt_kv(cbuf, i, le, "cap_ingest=" as *u8) 2310 if v >= 0 { off[10] = v } 2311 v = ch_bt_kv(cbuf, i, le, "cap_read=" as *u8) 2312 if v >= 0 { off[11] = v } 2313 v = ch_bt_kv(cbuf, i, le, "hash_elf=" as *u8) 2314 if v >= 0 { off[12] = v } 2315 v = ch_bt_kv(cbuf, i, le, "push=" as *u8) 2316 if v >= 0 { iv[0] = sj_atoi_z(((cbuf as i64) + v) as *u8) } 2317 v = ch_bt_kv(cbuf, i, le, "push_max=" as *u8) 2318 if v >= 0 { iv[1] = sj_atoi_z(((cbuf as i64) + v) as *u8) } 2319 v = ch_bt_kv(cbuf, i, le, "piece_raw=" as *u8) 2320 if v >= 0 { iv[2] = sj_atoi_z(((cbuf as i64) + v) as *u8) } 2321 v = ch_bt_kv(cbuf, i, le, "wire_timeout_ms=" as *u8) 2322 if v >= 0 { iv[3] = sj_atoi_z(((cbuf as i64) + v) as *u8) } 2323 v = ch_bt_kv(cbuf, i, le, "jrnl_cliff=" as *u8) 2324 if v >= 0 { iv[4] = sj_atoi_z(((cbuf as i64) + v) as *u8) } 2325 v = ch_bt_kv(cbuf, i, le, "jrnl_warn_permil=" as *u8) 2326 if v >= 0 { iv[5] = sj_atoi_z(((cbuf as i64) + v) as *u8) } 2327 v = ch_bt_kv(cbuf, i, le, "known_type=" as *u8) 2328 if v >= 0 { if kcx[0] < CH_MK_MAX { kt[kcx[0] * 2] = v; kt[kcx[0] * 2 + 1] = 0; kcx[0] = kcx[0] + 1 } } 2329 } 2330 i = le + 1 2331 } 2332 var miss: i64 = 0 - 1 2333 if off[0] < 0 { miss = 0 } 2334 if off[1] < 0 { if miss < 0 { miss = 1 } } 2335 if off[2] < 0 { if miss < 0 { miss = 2 } } 2336 if off[3] < 0 { if miss < 0 { miss = 3 } } 2337 if off[4] < 0 { if miss < 0 { miss = 4 } } 2338 if miss >= 0 { 2339 let eb: *u8 = sys_mmap(256) 2340 var o2: i64 = sj_cat(eb, 0, "CHBEAT CONF-MISSING key=" as *u8) 2341 if miss == 0 { o2 = sj_cat(eb, o2, "root" as *u8) } 2342 if miss == 1 { o2 = sj_cat(eb, o2, "state" as *u8) } 2343 if miss == 2 { o2 = sj_cat(eb, o2, "spool" as *u8) } 2344 if miss == 3 { o2 = sj_cat(eb, o2, "done" as *u8) } 2345 if miss == 4 { o2 = sj_cat(eb, o2, "journal" as *u8) } 2346 eb[o2] = 10 as u8 2347 sys_write(1, eb, o2 + 1) 2348 return 0 - 2 2349 } 2350 return 0 2351} 2352// head-type census + tool_use marks over the freshly harvested window [from,to) of ONE transcript. 2353// ANCHORED at line position 0 -- a nested "type" deeper in the line can never be read as the record 2354// type (measured 2026-08-20: attachment lines carry a NESTED type FIRST, so a first-occurrence scan 2355// answers the wrong field). Lines whose type is not the first key count HEADLESS -- named for what was 2356// measured; the head census watches the head-shaped population only, and that imprecision is declared 2357// here. Unknown head-types intern into their own worklist (ua/uo/ucx), never folded into a known one. 2358// ccx: 0=lines 1=tooluse_lines 2=tooluse_marks 3=head_known 4=head_unknown 5=headless 2359// 6=census_read_fail 7=type_table_overflow(FLOOR flag) ucx: 0=distinct_unknown 1=ua_cursor 2360func ch_bt_census(tpath: *u8, from: i64, to: i64, cbuf: *u8, kt: *i64, kn: i64, ua: *u8, uo: *i64, ucx: *i64, ccx: *i64) -> i64 { 2361 let nn: *i64 = sys_mmap(16) as *i64 2362 let buf: *u8 = sys_map_file(tpath, nn) 2363 let n: i64 = nn[0] 2364 if n <= 0 { ccx[6] = ccx[6] + 1; return 0 - 1 } 2365 var lim: i64 = to 2366 if lim > n { lim = n } 2367 let tul: *u8 = "\"type\":\"tool_use\"" as *u8 2368 let tuln: i64 = sj_vlen(tul) 2369 let hl: *u8 = "{\"type\":\"" as *u8 2370 let hln: i64 = sj_vlen(hl) 2371 var i: i64 = from 2372 if i < 0 { i = 0 } 2373 while i < lim { 2374 let le: i64 = sj_le(buf, i, lim) 2375 if le > i { 2376 ccx[0] = ccx[0] + 1 2377 var marks: i64 = 0 2378 var j: i64 = i 2379 var go: i64 = 1 2380 while go == 1 { 2381 let tu: i64 = ch_find_from(buf, j, le, tul) 2382 if tu < 0 { go = 0 } else { marks = marks + 1; j = tu + tuln } 2383 } 2384 if marks > 0 { ccx[1] = ccx[1] + 1; ccx[2] = ccx[2] + marks } 2385 if ch_starts(buf, i, le, hl) == 1 { 2386 let vs: i64 = i + hln 2387 var ve: i64 = vs 2388 var g2: i64 = 1 2389 while g2 == 1 { 2390 if ve >= le { g2 = 0 } else { if buf[ve] == (34 as u8) { g2 = 0 } else { ve = ve + 1 } } 2391 } 2392 var hit: i64 = 0 2393 var k: i64 = 0 2394 while k < kn { 2395 let lit: *u8 = ((cbuf as i64) + kt[k * 2]) as *u8 2396 if sj_lit_eq(buf, vs, ve, lit) == 1 { kt[k * 2 + 1] = kt[k * 2 + 1] + 1; hit = 1; k = kn } else { k = k + 1 } 2397 } 2398 if hit == 1 { ccx[3] = ccx[3] + 1 } else { 2399 ccx[4] = ccx[4] + 1 2400 var f: i64 = 0 - 1 2401 var k2: i64 = 0 2402 while k2 < ucx[0] { 2403 let ul: *u8 = ((ua as i64) + uo[k2 * 2]) as *u8 2404 if sj_lit_eq(buf, vs, ve, ul) == 1 { f = k2; k2 = ucx[0] } else { k2 = k2 + 1 } 2405 } 2406 if f >= 0 { uo[f * 2 + 1] = uo[f * 2 + 1] + 1 } else { 2407 if ucx[0] < CH_BT_TYPEMAX { 2408 var vl2: i64 = ve - vs 2409 if vl2 > CH_NAME_MAX { vl2 = CH_NAME_MAX } 2410 uo[ucx[0] * 2] = ucx[1] 2411 uo[ucx[0] * 2 + 1] = 1 2412 var c2: i64 = 0 2413 while c2 < vl2 { ua[ucx[1] + c2] = buf[vs + c2]; c2 = c2 + 1 } 2414 ua[ucx[1] + vl2] = 0 as u8 2415 ucx[1] = ucx[1] + vl2 + 1 2416 ucx[0] = ucx[0] + 1 2417 } else { ccx[7] = 1 } 2418 } 2419 } 2420 } else { ccx[5] = ccx[5] + 1 } 2421 } 2422 i = le + 1 2423 } 2424 sys_munmap(buf, n) 2425 return 0 2426} 2427func ch_bt_path2(out: *u8, a: *u8, b: *u8) -> i64 { 2428 var o: i64 = sj_cat(out, 0, a) 2429 out[o] = 47 as u8 2430 o = o + 1 2431 o = sj_cat(out, o, b) 2432 out[o] = 0 as u8 2433 return o 2434} 2435func ch_bt_base(path: *u8) -> *u8 { 2436 var bs: i64 = 0 2437 var i: i64 = 0 2438 while path[i] != (0 as u8) { if path[i] == (47 as u8) { bs = i + 1 } i = i + 1 } 2439 return ((path as i64) + bs) as *u8 2440} 2441func ch_bt_stem(path: *u8, out: *u8) -> i64 { 2442 let b: *u8 = ch_bt_base(path) 2443 let n: i64 = sj_vlen(b) 2444 var e: i64 = n - sj_vlen(".jsonl" as *u8) 2445 if e < 0 { e = n } 2446 var o: i64 = 0 2447 while o < e { out[o] = b[o]; o = o + 1 } 2448 out[o] = 0 as u8 2449 return o 2450} 2451func ch_bt_hwmpath(state: *u8, rel: *u8, out: *u8) -> i64 { 2452 var o: i64 = sj_cat(out, 0, state) 2453 out[o] = 47 as u8 2454 o = o + 1 2455 var i: i64 = 0 2456 while rel[i] != (0 as u8) { 2457 var c: u8 = rel[i] 2458 if c == (47 as u8) { c = 95 as u8 } 2459 if c == (92 as u8) { c = 95 as u8 } 2460 out[o] = c 2461 o = o + 1 2462 i = i + 1 2463 } 2464 o = sj_cat(out, o, ".hwm" as *u8) 2465 out[o] = 0 as u8 2466 return o 2467} 2468// frame count of a piece (pieces are written by ch_bt_split, every line newline-terminated) 2469func ch_bt_lines(path: *u8) -> i64 { 2470 let nn: *i64 = sys_mmap(16) as *i64 2471 let buf: *u8 = sys_map_file(path, nn) 2472 let n: i64 = nn[0] 2473 if n <= 0 { return 0 } 2474 var c: i64 = 0 2475 var i: i64 = 0 2476 while i < n { 2477 let le: i64 = sj_le(buf, i, n) 2478 if le > i { c = c + 1 } 2479 i = le + 1 2480 } 2481 sys_munmap(buf, n) 2482 return c 2483} 2484// first integer right after <key> in b[0..n) -> value, or -1 when key or digits absent 2485func ch_bt_int_after(b: *u8, n: i64, key: *u8) -> i64 { 2486 let p: i64 = ch_find_from(b, 0, n, key) 2487 if p < 0 { return 0 - 1 } 2488 var i: i64 = p + sj_vlen(key) 2489 var v: i64 = 0 2490 var any: i64 = 0 2491 var go: i64 = 1 2492 while go == 1 { 2493 if i >= n { go = 0 } else { 2494 let c: i64 = b[i] as i64 2495 var dig: i64 = 0 2496 if c >= 48 { if c <= 57 { dig = 1 } } 2497 if dig == 1 { v = v * 10 + (c - 48); any = 1; i = i + 1 } else { go = 0 } 2498 } 2499 } 2500 if any == 0 { return 0 - 1 } 2501 return v 2502} 2503// sha256 hex right after "sha256":" -> out (65 B incl NUL); 1 ok, 0 absent/short/non-hex 2504func ch_bt_parse_sha(b: *u8, n: i64, out: *u8) -> i64 { 2505 let key: *u8 = "\"sha256\":\"" as *u8 2506 let p: i64 = ch_find_from(b, 0, n, key) 2507 if p < 0 { return 0 } 2508 let s: i64 = p + sj_vlen(key) 2509 var i: i64 = 0 2510 while i < 64 { 2511 if s + i >= n { return 0 } 2512 let c: i64 = b[s + i] as i64 2513 var okc: i64 = 0 2514 if c >= 48 { if c <= 57 { okc = 1 } } 2515 if c >= 97 { if c <= 102 { okc = 1 } } 2516 if okc == 0 { return 0 } 2517 out[i] = b[s + i] 2518 i = i + 1 2519 } 2520 out[64] = 0 as u8 2521 return 1 2522} 2523// forked call through the MCP wire: <wire> <script> <tool> <cap> [a1..a4]; captures stdout+stderr. 2524// Returns the child's exit code (127 = wire absent). The wire is TRANSPORT ONLY -- every decision 2525// over its output happens in this organ (shell-is-break-glass discipline; the wire is the sanctioned 2526// MCP client, nxmcp.py, forked with a clean argv, no shell interpretation anywhere). 2527func ch_bt_wire(wire: *u8, script: *u8, tool: *u8, cap: *u8, a1: *u8, a2: *u8, a3: *u8, a4: *u8, tmo: i64, cout: *u8, colen: *i64) -> i64 { 2528 let av: *i64 = sys_mmap(96) as *i64 2529 av[0] = wire as i64 2530 av[1] = script as i64 2531 av[2] = tool as i64 2532 av[3] = cap as i64 2533 var k: i64 = 4 2534 if (a1 as i64) != 0 { av[k] = a1 as i64; k = k + 1 } 2535 if (a2 as i64) != 0 { av[k] = a2 as i64; k = k + 1 } 2536 if (a3 as i64) != 0 { av[k] = a3 as i64; k = k + 1 } 2537 if (a4 as i64) != 0 { av[k] = a4 as i64; k = k + 1 } 2538 av[k] = 0 2539 return tr_run_capture_to(wire, av, cout, CH_OUT - 8, colen, tmo) 2540} 2541func ch_bt_flushp(spool: *u8, day: *u8, stamp: i64, seq: i64, cell: *u8, clen: i64) -> i64 { 2542 let pp: *u8 = sys_mmap(CH_BT_PATHMAX) 2543 var o: i64 = sj_cat(pp, 0, spool) 2544 pp[o] = 47 as u8 2545 o = o + 1 2546 o = sj_cat(pp, o, "cb" as *u8) 2547 o = sj_cat(pp, o, day) 2548 pp[o] = 95 as u8 2549 o = o + 1 2550 o = sj_catn(pp, o, stamp) 2551 pp[o] = 95 as u8 2552 o = o + 1 2553 o = sj_catn(pp, o, seq) 2554 o = sj_cat(pp, o, ".frames" as *u8) 2555 pp[o] = 0 as u8 2556 let fd: i64 = sys_openat_wr(pp, CH_MODE_644) 2557 if fd < 0 { return 0 - 3 } 2558 sys_write(fd, cell, clen) 2559 sys_close(fd) 2560 return 0 2561} 2562// split a raw delta-frames file into ts-day pieces, each under piece_raw bytes at a FRAME boundary. 2563// Piece names cb<day>_<stamp>_<seq>.frames are DETERMINISTIC from the raw file's stamp, so a re-split 2564// after a crash rewrites identical names and content and every downstream stage stays idempotent by 2565// marker. dcx: 0=pieces 1=bytes 2=days 3=tszero_frames 4=frames 2566// returns 0, -2 day-table overflow (REFUSED loudly), -3 piece write fail 2567func ch_bt_split(rawpath: *u8, spool: *u8, stamp: i64, piece_raw: i64, dcx: *i64) -> i64 { 2568 dcx[0] = 0 2569 dcx[1] = 0 2570 dcx[2] = 0 2571 dcx[3] = 0 2572 dcx[4] = 0 2573 let nn: *i64 = sys_mmap(16) as *i64 2574 let buf: *u8 = sys_map_file(rawpath, nn) 2575 let n: i64 = nn[0] 2576 if n <= 0 { return 0 } 2577 let cellsz: i64 = piece_raw + CH_LINE 2578 let dayn: *u8 = sys_mmap(CH_BT_DAYMAX * CH_BT_DAYCELL) 2579 let dbuf: *u8 = sys_mmap(CH_BT_DAYMAX * cellsz) 2580 let dlen: *i64 = sys_mmap(8 * CH_BT_DAYMAX) as *i64 2581 let dseq: *i64 = sys_mmap(8 * CH_BT_DAYMAX) as *i64 2582 let sp: *i64 = sys_mmap(16) as *i64 2583 let dstr: *u8 = sys_mmap(CH_BT_DAYCELL) 2584 var nd: i64 = 0 2585 var i: i64 = 0 2586 while i < n { 2587 let le: i64 = sj_le(buf, i, n) 2588 if le > i { 2589 var ts: i64 = 0 2590 if sj_col(buf, i, le, 0, sp) == 1 { if ch_digits(buf, sp[0], sp[1]) == 1 { ts = sj_atoi_span(buf, sp[0], sp[1]) } } 2591 ch_bt_day(ts, dstr) 2592 if ts <= 0 { dcx[3] = dcx[3] + 1 } 2593 var di: i64 = 0 - 1 2594 var k: i64 = 0 2595 while k < nd { 2596 if ch_bt_zeq(((dayn as i64) + k * CH_BT_DAYCELL) as *u8, dstr) == 1 { di = k; k = nd } else { k = k + 1 } 2597 } 2598 if di < 0 { 2599 if nd >= CH_BT_DAYMAX { sys_munmap(buf, n); return 0 - 2 } 2600 var c3: i64 = 0 2601 var g3: i64 = 1 2602 while g3 == 1 { 2603 let ch: u8 = dstr[c3] 2604 dayn[nd * CH_BT_DAYCELL + c3] = ch 2605 if ch == (0 as u8) { g3 = 0 } else { c3 = c3 + 1 } 2606 } 2607 dlen[nd] = 0 2608 dseq[nd] = 0 2609 di = nd 2610 nd = nd + 1 2611 } 2612 let ll2: i64 = le - i 2613 if dlen[di] + ll2 + 1 > piece_raw { 2614 if dlen[di] > 0 { 2615 let fr: i64 = ch_bt_flushp(spool, ((dayn as i64) + di * CH_BT_DAYCELL) as *u8, stamp, dseq[di], ((dbuf as i64) + di * cellsz) as *u8, dlen[di]) 2616 if fr != 0 { sys_munmap(buf, n); return fr } 2617 dcx[0] = dcx[0] + 1 2618 dseq[di] = dseq[di] + 1 2619 dlen[di] = 0 2620 } 2621 } 2622 let cell: *u8 = ((dbuf as i64) + di * cellsz) as *u8 2623 var c4: i64 = 0 2624 while c4 < ll2 { cell[dlen[di] + c4] = buf[i + c4]; c4 = c4 + 1 } 2625 cell[dlen[di] + ll2] = 10 as u8 2626 dlen[di] = dlen[di] + ll2 + 1 2627 dcx[1] = dcx[1] + ll2 + 1 2628 dcx[4] = dcx[4] + 1 2629 } 2630 i = le + 1 2631 } 2632 var k5: i64 = 0 2633 while k5 < nd { 2634 if dlen[k5] > 0 { 2635 let fr2: i64 = ch_bt_flushp(spool, ((dayn as i64) + k5 * CH_BT_DAYCELL) as *u8, stamp, dseq[k5], ((dbuf as i64) + k5 * cellsz) as *u8, dlen[k5]) 2636 if fr2 != 0 { sys_munmap(buf, n); return fr2 } 2637 dcx[0] = dcx[0] + 1 2638 } 2639 k5 = k5 + 1 2640 } 2641 dcx[2] = nd 2642 sys_munmap(buf, n) 2643 return 0 2644} 2645// copy the day span out of a piece basename cb<day>_... into db (NUL-terminated) 2646func ch_bt_pieceday(pbase: *u8, db: *u8) -> i64 { 2647 var di: i64 = sj_vlen("cb" as *u8) 2648 var o: i64 = 0 2649 var g: i64 = 1 2650 while g == 1 { 2651 let c: u8 = pbase[di] 2652 if c == (95 as u8) { g = 0 } else { 2653 if c == (0 as u8) { g = 0 } else { 2654 if o < CH_BT_DAYCELL - 2 { db[o] = c; o = o + 1 } 2655 di = di + 1 2656 } 2657 } 2658 } 2659 db[o] = 0 as u8 2660 return o 2661} 2662// WHICH STAGE OWNS A FAILED PUSH? Three causes with three DIFFERENT remedies, so three names -- 2663// never one bucket. Until 2026-08-20 an upload that never landed was journalled as "fail-verify", 2664// blaming the verifier for the writer's failure; it cost a real investigation (the artifact was simply 2665// ABSENT and the journal pointed at the wrong leg). 2666// * A MESSAGE THAT NAMES THE WRONG STAGE COSTS THE READER THE INVESTIGATION IT WAS WRITTEN TO SAVE 2667// THEM, and two causes with opposite remedies must never share one counter. 2668// This is a TEXT read, not an rc read, and that is measured, not assumed: nx_fs_write returns rc=0 2669// EVEN WHEN IT REFUSES (`REFUSED would-clobber ... (file unchanged)`), so a guard branching on rc 2670// would never have fired. A would-clobber refusal is ALSO not a failure here -- it is the idempotent 2671// re-push of a piece that already landed, and the hash verify is what adjudicates it, which is why 2672// this function decides from the VERIFY's findings and uses the write's own line only to attribute 2673// the ABSENT case. Pure and total so the gate can walk the whole truth table. 2674// wrote_ok the upload leg printed its own OK line 2675// okr the remote artifact could be hashed at all (0 = nothing is there) 2676// same remote bytes == local bytes 2677func ch_bt_pushreason(wrote_ok: i64, okr: i64, same: i64) -> *u8 { 2678 if okr == 0 { 2679 if wrote_ok == 1 { return "fail-verify-absent" as *u8 } 2680 return "fail-write" as *u8 2681 } 2682 if same == 0 { return "fail-verify-mismatch" as *u8 } 2683 return "ok" as *u8 2684} 2685// push one piece: local-hash -> upload -> remote-hash-verify -> NAS ingest -> journal-fill announce. 2686// Returns 0 = NAS leg confirmed (piece may leave the spool), 1 = left spooled (stage named in the 2687// push journal). Every stage is idempotent: re-upload of a landed piece is refused-then-verified 2688// equal by hash, re-ingest answers ALREADY. Wrong only toward doing nothing. 2689func ch_bt_push1(ppath: *u8, cbuf: *u8, off: *i64, iv: *i64, pjr: *u8, bcx: *i64) -> i64 { 2690 let pbase: *u8 = ch_bt_base(ppath) 2691 let cout: *u8 = sys_mmap(CH_OUT) 2692 let colen: *i64 = sys_mmap(16) as *i64 2693 let lsha: *u8 = sys_mmap(80) 2694 let rsha: *u8 = sys_mmap(80) 2695 let napath: *u8 = sys_mmap(CH_BT_PATHMAX) 2696 let njpath: *u8 = sys_mmap(CH_BT_PATHMAX) 2697 let ob: *u8 = sys_mmap(CH_LINE) 2698 let wire: *u8 = ((cbuf as i64) + off[7]) as *u8 2699 let script: *u8 = ((cbuf as i64) + off[8]) as *u8 2700 let capw: *u8 = ((cbuf as i64) + off[9]) as *u8 2701 let capi: *u8 = ((cbuf as i64) + off[10]) as *u8 2702 let capr: *u8 = ((cbuf as i64) + off[11]) as *u8 2703 let helf: *u8 = ((cbuf as i64) + off[12]) as *u8 2704 let tmo: i64 = iv[3] 2705 let plines: i64 = ch_bt_lines(ppath) 2706 let db2: *u8 = sys_mmap(CH_BT_DAYCELL) 2707 ch_bt_pieceday(pbase, db2) 2708 var o3: i64 = sj_cat(napath, 0, ((cbuf as i64) + off[5]) as *u8) 2709 napath[o3] = 47 as u8 2710 o3 = o3 + 1 2711 o3 = sj_cat(napath, o3, pbase) 2712 napath[o3] = 0 as u8 2713 var o4: i64 = sj_cat(njpath, 0, ((cbuf as i64) + off[6]) as *u8) 2714 njpath[o4] = 47 as u8 2715 o4 = o4 + 1 2716 o4 = sj_cat(njpath, o4, "chbeat_" as *u8) 2717 o4 = sj_cat(njpath, o4, db2) 2718 o4 = sj_cat(njpath, o4, ".jrnl" as *u8) 2719 njpath[o4] = 0 as u8 2720 // 1) local sha -- ONE ruler, nx_filehash, forked on both sides 2721 let hav: *i64 = sys_mmap(32) as *i64 2722 hav[0] = helf as i64 2723 hav[1] = ppath as i64 2724 hav[2] = 0 2725 let hrc: i64 = tr_run_capture_to(helf, hav, cout, CH_OUT - 8, colen, tmo) 2726 var okl: i64 = 0 2727 if hrc == 0 { okl = ch_bt_parse_sha(cout, colen[0], lsha) } 2728 if okl == 0 { ch_frame_append(pjr, sys_now_realtime_sec(), pbase, "nx_claude_harvest" as *u8, "push" as *u8, "fail-localhash" as *u8, ppath); return 1 } 2729 // 2) upload (@@FILE: substitution puts the piece CONTENT into the write argv); a refusal 2730 // (already-landed / CAS) is decided by the hash verify below -- only a DEAD wire is fatal here 2731 let atf: *u8 = sys_mmap(CH_BT_PATHMAX) 2732 var o5: i64 = sj_cat(atf, 0, "@@FILE:" as *u8) 2733 o5 = sj_cat(atf, o5, ppath) 2734 atf[o5] = 0 as u8 2735 let wrc: i64 = ch_bt_wire(wire, script, "nx_fs_write" as *u8, capw, "write" as *u8, napath, atf, 0 as *u8, tmo, cout, colen) 2736 if wrc == 127 { ch_frame_append(pjr, sys_now_realtime_sec(), pbase, "nx_claude_harvest" as *u8, "push" as *u8, "fail-wire-absent" as *u8, ppath); return 1 } 2737 // the write's OWN verdict, read BEFORE the verify overwrites the shared capture buffer 2738 let wrote_ok: i64 = ch_find(cout, colen[0], "NX-FS-WRITE OK" as *u8) 2739 // 3) remote hash verify -- the artifact, never the receipt 2740 let vrc: i64 = ch_bt_wire(wire, script, "nx_filehash" as *u8, capr, napath, 0 as *u8, 0 as *u8, 0 as *u8, tmo, cout, colen) 2741 var okr: i64 = 0 2742 if vrc == 0 { okr = ch_bt_parse_sha(cout, colen[0], rsha) } 2743 var same: i64 = 0 2744 if okr == 1 { same = ch_bt_zeq(lsha, rsha) } 2745 if same == 0 { ch_frame_append(pjr, sys_now_realtime_sec(), pbase, "nx_claude_harvest" as *u8, "push" as *u8, ch_bt_pushreason(wrote_ok, okr, same), napath); return 1 } 2746 // 4) NAS ingest (ch_ingest server-side: validated, marker-idempotent) 2747 let irc: i64 = ch_bt_wire(wire, script, "nx_claude_harvest" as *u8, capi, "ingest" as *u8, napath, njpath, 0 as *u8, tmo, cout, colen) 2748 if irc != 0 { ch_frame_append(pjr, sys_now_realtime_sec(), pbase, "nx_claude_harvest" as *u8, "push" as *u8, "fail-ingest-wire" as *u8, njpath); return 1 } 2749 var infr: i64 = 0 - 1 2750 if ch_find(cout, colen[0], "ALREADY-INGESTED" as *u8) == 1 { infr = plines } else { infr = ch_bt_int_after(cout, colen[0], "INGEST OK frames=" as *u8) } 2751 let mal: i64 = ch_bt_int_after(cout, colen[0], " malformed=" as *u8) 2752 if infr != plines { ch_frame_append(pjr, sys_now_realtime_sec(), pbase, "nx_claude_harvest" as *u8, "push" as *u8, "fail-reconcile" as *u8, njpath); return 1 } 2753 if mal > 0 { ch_frame_append(pjr, sys_now_realtime_sec(), pbase, "nx_claude_harvest" as *u8, "push" as *u8, "fail-malformed" as *u8, njpath); return 1 } 2754 // 5) journal fill announce from the NAS's own size read; an unreadable size is ANNOUNCED, not skipped 2755 let src2: i64 = ch_bt_wire(wire, script, "nx_fs" as *u8, capr, "size" as *u8, njpath, 0 as *u8, 0 as *u8, tmo, cout, colen) 2756 var jb2: i64 = 0 - 1 2757 if src2 == 0 { jb2 = ch_bt_int_after(cout, colen[0], "bytes=" as *u8) } 2758 if jb2 >= 0 { 2759 let fill: i64 = jb2 * 1000 / iv[4] 2760 if fill > bcx[28] { bcx[28] = fill } 2761 var o6: i64 = sj_cat(ob, 0, "CHBEAT JOURNAL day=" as *u8) 2762 o6 = sj_cat(ob, o6, db2) 2763 o6 = sj_cat(ob, o6, " nas_bytes=" as *u8) 2764 o6 = sj_catn(ob, o6, jb2) 2765 o6 = sj_cat(ob, o6, " fill_permil=" as *u8) 2766 o6 = sj_catn(ob, o6, fill) 2767 if fill >= 1000 { o6 = sj_cat(ob, o6, " RED-PAST-CLIFF (gauge window truncates: partition finer than a day)" as *u8) } else { 2768 if fill >= iv[5] { o6 = sj_cat(ob, o6, " AMBER-NEAR-CLIFF" as *u8) } 2769 } 2770 ob[o6] = 10 as u8 2771 sys_write(1, ob, o6 + 1) 2772 } else { 2773 var o7: i64 = sj_cat(ob, 0, "CHBEAT JOURNAL day=" as *u8) 2774 o7 = sj_cat(ob, o7, db2) 2775 o7 = sj_cat(ob, o7, " nas_bytes=UNREAD (size call failed; fill unobserved this beat)" as *u8) 2776 ob[o7] = 10 as u8 2777 sys_write(1, ob, o7 + 1) 2778 } 2779 ch_frame_append(pjr, sys_now_realtime_sec(), pbase, "nx_claude_harvest" as *u8, "push" as *u8, "ok" as *u8, njpath) 2780 bcx[21] = bcx[21] + plines 2781 return 0 2782} 2783// ---------- the beat orchestrator ---------- 2784// bcx map (CH_BT_CTRS slots): 2785// 0 files_seen 1 harvested 2 skipped_unchanged 3 errors 4 frames 5 tooluse_marks 6 lines 2786// 7 tooluse_lines 8 head_known 9 head_unknown 10 headless 11 truncated_files 12 pieces_spooled 2787// 13 bytes_staged 14 days_touched 15 tszero_frames 16 push_attempted 17 push_done 18 push_left 2788// 19 spool_remaining 20 local_ingested_frames 21 nas_confirmed_frames 22 local_malformed 2789// 23 census_read_fail 24 walk_dirs 25 walk_direrrs 26 stat_fallbacks 27 partition_ok 2790// 28 worst_journal_fill_permil 29 type_table_overflow 30 raws_recovered 2791func ch_beat(confpath: *u8, bcx: *i64) -> i64 { 2792 var w0: i64 = 0 2793 while w0 < CH_BT_CTRS { bcx[w0] = 0; w0 = w0 + 1 } 2794 let cbuf: *u8 = sys_mmap(CH_CONF_WIN) 2795 let off: *i64 = sys_mmap(128) as *i64 2796 let iv: *i64 = sys_mmap(64) as *i64 2797 let kt: *i64 = sys_mmap(CH_MK_MAX * 16) as *i64 2798 let kcx: *i64 = sys_mmap(16) as *i64 2799 let crc: i64 = ch_bt_conf(confpath, cbuf, off, iv, kt, kcx) 2800 if crc == (0 - 1) { sj_puts("CHBEAT CONF-UNREADABLE (fail closed)\n" as *u8); return 2 } 2801 if crc == (0 - 2) { return 2 } 2802 let root: *u8 = ((cbuf as i64) + off[0]) as *u8 2803 let state: *u8 = ((cbuf as i64) + off[1]) as *u8 2804 let spool: *u8 = ((cbuf as i64) + off[2]) as *u8 2805 let done: *u8 = ((cbuf as i64) + off[3]) as *u8 2806 let jdir: *u8 = ((cbuf as i64) + off[4]) as *u8 2807 sys_mkdir(state, CH_MODE_755) 2808 sys_mkdir(spool, CH_MODE_755) 2809 sys_mkdir(done, CH_MODE_755) 2810 sys_mkdir(jdir, CH_MODE_755) 2811 if iv[0] == 1 { 2812 var pm: i64 = 0 - 1 2813 if off[5] < 0 { pm = 5 } 2814 if off[6] < 0 { if pm < 0 { pm = 6 } } 2815 if off[7] < 0 { if pm < 0 { pm = 7 } } 2816 if off[8] < 0 { if pm < 0 { pm = 8 } } 2817 if off[9] < 0 { if pm < 0 { pm = 9 } } 2818 if off[10] < 0 { if pm < 0 { pm = 10 } } 2819 if off[11] < 0 { if pm < 0 { pm = 11 } } 2820 if off[12] < 0 { if pm < 0 { pm = 12 } } 2821 if pm >= 0 { sj_puts("CHBEAT CONF-MISSING push=1 needs nas_stage nas_journal wire wire_script cap_write cap_ingest cap_read hash_elf (fail closed)\n" as *u8); return 2 } 2822 } 2823 // MICROSECOND stamp: piece and raw names must be unique ACROSS beats -- a second-resolution stamp 2824 // collided two beats in one second, the truncating rewrite replaced a piece, and the ingest marker 2825 // (keyed on the basename) then silently dropped the replaced frames. Caught by teeth T37/T38. 2826 // Re-split of the SAME raw still reproduces identical names (stamp parsed from the raw's own name). 2827 let now: i64 = sys_now_realtime_us() 2828 let ob: *u8 = sys_mmap(CH_OUT) 2829 let p2: *u8 = sys_mmap(CH_BT_PATHMAX) 2830 let dcx: *i64 = sys_mmap(64) as *i64 2831 // ---- recover: split any crashed raw files left in the spool (deterministic piece names) ---- 2832 let sar: *u8 = sys_mmap(CH_BT_ARENA) 2833 let sfo: *i64 = sys_mmap(8 * CH_BT_MAXFILES) as *i64 2834 let swcx: *i64 = sys_mmap(64) as *i64 2835 let ns: i64 = ch_bt_walk(spool, ".frames" as *u8, sar, sfo, swcx) 2836 if ns < 0 { sj_puts("CHBEAT REFUSED spool walk overflow\n" as *u8); return 2 } 2837 var si: i64 = 0 2838 while si < ns { 2839 let sp2: *u8 = ((sar as i64) + sfo[si]) as *u8 2840 let sb2: *u8 = ch_bt_base(sp2) 2841 if ch_starts(sb2, 0, sj_vlen(sb2), "raw_" as *u8) == 1 { 2842 let stamp2: i64 = sj_atoi_z(((sb2 as i64) + sj_vlen("raw_" as *u8)) as *u8) 2843 let rr: i64 = ch_bt_split(sp2, spool, stamp2, iv[2], dcx) 2844 if rr == 0 { 2845 bcx[30] = bcx[30] + 1 2846 ch_bt_path2(p2, done, sb2) 2847 sys_renameat(sp2, p2) 2848 } 2849 } 2850 si = si + 1 2851 } 2852 // ---- walk + delta-harvest EVERY transcript (full population, never a sample) ---- 2853 let ar: *u8 = sys_mmap(CH_BT_ARENA) 2854 let fo: *i64 = sys_mmap(8 * CH_BT_MAXFILES) as *i64 2855 let wcx: *i64 = sys_mmap(64) as *i64 2856 let nf: i64 = ch_bt_walk(root, ".jsonl" as *u8, ar, fo, wcx) 2857 if nf < 0 { sj_puts("CHBEAT REFUSED transcript walk overflow (raise CH_BT_MAXFILES/CH_BT_ARENA -- never harvest a prefix)\n" as *u8); return 2 } 2858 bcx[0] = nf 2859 bcx[24] = wcx[0] 2860 bcx[25] = wcx[1] 2861 bcx[26] = wcx[2] 2862 let rootl: i64 = sj_vlen(root) 2863 let raw: *u8 = sys_mmap(CH_BT_PATHMAX) 2864 var o7: i64 = sj_cat(raw, 0, spool) 2865 raw[o7] = 47 as u8 2866 o7 = o7 + 1 2867 o7 = sj_cat(raw, o7, "raw_" as *u8) 2868 o7 = sj_catn(raw, o7, now) 2869 o7 = sj_cat(raw, o7, ".frames" as *u8) 2870 raw[o7] = 0 as u8 2871 let sbuf: *u8 = sys_mmap(256) 2872 let kk2: *i64 = sys_mmap(16) as *i64 2873 let hcx: *i64 = sys_mmap(64) as *i64 2874 let ccx: *i64 = sys_mmap(64) as *i64 2875 let ua: *u8 = sys_mmap(CH_BT_TYPEMAX * (CH_NAME_MAX + 8)) 2876 let uo: *i64 = sys_mmap(16 * CH_BT_TYPEMAX) as *i64 2877 let ucx: *i64 = sys_mmap(16) as *i64 2878 let hwmp: *u8 = sys_mmap(CH_BT_PATHMAX * 2) 2879 let stem: *u8 = sys_mmap(CH_BT_PATHMAX) 2880 var fi: i64 = 0 2881 while fi < nf { 2882 let tp: *u8 = ((ar as i64) + fo[fi]) as *u8 2883 let rel: *u8 = ((tp as i64) + rootl + 1) as *u8 2884 ch_bt_hwmpath(state, rel, hwmp) 2885 ch_bt_stat(tp, sbuf, kk2) 2886 let hwm0: i64 = ch_hwm_read(hwmp) 2887 var did: i64 = 0 2888 if kk2[1] >= 0 { if kk2[1] == hwm0 { bcx[2] = bcx[2] + 1; did = 1 } } 2889 if did == 0 { 2890 ch_bt_stem(tp, stem) 2891 let dr: i64 = ch_delta(tp, stem, raw, hwmp, hcx) 2892 if dr < 0 { 2893 bcx[3] = bcx[3] + 1 2894 var oe: i64 = sj_cat(ob, 0, "CHBEAT ERR delta rc=" as *u8) 2895 oe = sj_catn(ob, oe, dr) 2896 oe = sj_cat(ob, oe, " file=" as *u8) 2897 oe = sj_cat(ob, oe, tp) 2898 ob[oe] = 10 as u8 2899 sys_write(1, ob, oe + 1) 2900 } else { 2901 bcx[1] = bcx[1] + 1 2902 bcx[4] = bcx[4] + hcx[0] 2903 if hcx[3] == 1 { 2904 bcx[11] = bcx[11] + 1 2905 var ot: i64 = sj_cat(ob, 0, "CHBEAT TRUNC file=" as *u8) 2906 ot = sj_cat(ob, ot, tp) 2907 ob[ot] = 10 as u8 2908 sys_write(1, ob, ot + 1) 2909 } 2910 if hcx[1] > hcx[2] { ch_bt_census(tp, hcx[2], hcx[1], cbuf, kt, kcx[0], ua, uo, ucx, ccx) } 2911 } 2912 } 2913 fi = fi + 1 2914 } 2915 bcx[5] = ccx[2] 2916 bcx[6] = ccx[0] 2917 bcx[7] = ccx[1] 2918 bcx[8] = ccx[3] 2919 bcx[9] = ccx[4] 2920 bcx[10] = ccx[5] 2921 bcx[23] = ccx[6] 2922 bcx[29] = ccx[7] 2923 // ---- split this run's raw into ts-day pieces (the split re-counts what ch_delta emitted: 2924 // two counters over one population = a free audit) ---- 2925 let src: i64 = ch_bt_split(raw, spool, now, iv[2], dcx) 2926 if src == (0 - 2) { sj_puts("CHBEAT REFUSED day-table overflow (CH_BT_DAYMAX) -- run the backfill in date batches\n" as *u8); return 2 } 2927 if src == (0 - 3) { sj_puts("CHBEAT ERR piece write failed\n" as *u8); return 1 } 2928 bcx[12] = dcx[0] 2929 bcx[13] = dcx[1] 2930 bcx[14] = dcx[2] 2931 bcx[15] = dcx[3] 2932 var recon_ok: i64 = 1 2933 if dcx[4] != bcx[4] { recon_ok = 0 } 2934 ch_bt_path2(p2, done, ch_bt_base(raw)) 2935 sys_renameat(raw, p2) 2936 // ---- ingest every spooled piece locally; push up to push_max to the NAS ---- 2937 let par: *u8 = sys_mmap(CH_BT_ARENA) 2938 let pfo: *i64 = sys_mmap(8 * CH_BT_MAXFILES) as *i64 2939 let pwcx: *i64 = sys_mmap(64) as *i64 2940 let np: i64 = ch_bt_walk(spool, ".frames" as *u8, par, pfo, pwcx) 2941 if np < 0 { sj_puts("CHBEAT REFUSED spool walk overflow\n" as *u8); return 2 } 2942 let mcx: *i64 = sys_mmap(16) as *i64 2943 let ljp: *u8 = sys_mmap(CH_BT_PATHMAX) 2944 let db3: *u8 = sys_mmap(CH_BT_DAYCELL) 2945 let pjr: *u8 = sys_mmap(CH_BT_PATHMAX) 2946 ch_bt_path2(pjr, state, "push.jrnl" as *u8) 2947 var pi: i64 = 0 2948 while pi < np { 2949 let pp: *u8 = ((par as i64) + pfo[pi]) as *u8 2950 let pb: *u8 = ch_bt_base(pp) 2951 if ch_starts(pb, 0, sj_vlen(pb), "cb" as *u8) == 1 { 2952 ch_bt_pieceday(pb, db3) 2953 var o9: i64 = sj_cat(ljp, 0, jdir) 2954 ljp[o9] = 47 as u8 2955 o9 = o9 + 1 2956 o9 = sj_cat(ljp, o9, "chbeat_" as *u8) 2957 o9 = sj_cat(ljp, o9, db3) 2958 o9 = sj_cat(ljp, o9, ".jrnl" as *u8) 2959 ljp[o9] = 0 as u8 2960 let lr: i64 = ch_ingest(pp, ljp, mcx) 2961 if lr >= 0 { bcx[20] = bcx[20] + lr; bcx[22] = bcx[22] + mcx[0] } 2962 var moved: i64 = 0 2963 if iv[0] == 1 { 2964 if bcx[16] < iv[1] { 2965 bcx[16] = bcx[16] + 1 2966 let prc: i64 = ch_bt_push1(pp, cbuf, off, iv, pjr, bcx) 2967 if prc == 0 { 2968 bcx[17] = bcx[17] + 1 2969 ch_bt_path2(p2, done, pb) 2970 sys_renameat(pp, p2) 2971 moved = 1 2972 } else { bcx[18] = bcx[18] + 1 } 2973 } 2974 } 2975 if moved == 0 { bcx[19] = bcx[19] + 1 } 2976 } 2977 pi = pi + 1 2978 } 2979 // ---- local journal fill (every day journal present, from its own stat; budget rides the conf) ---- 2980 let jar: *u8 = sys_mmap(CH_BT_ARENA) 2981 let jfo: *i64 = sys_mmap(8 * CH_BT_MAXFILES) as *i64 2982 let jwcx: *i64 = sys_mmap(64) as *i64 2983 let nj: i64 = ch_bt_walk(jdir, ".jrnl" as *u8, jar, jfo, jwcx) 2984 var ji: i64 = 0 2985 while ji < nj { 2986 let jp2: *u8 = ((jar as i64) + jfo[ji]) as *u8 2987 ch_bt_stat(jp2, sbuf, kk2) 2988 if kk2[1] >= 0 { 2989 let fill2: i64 = kk2[1] * 1000 / iv[4] 2990 if fill2 > bcx[28] { bcx[28] = fill2 } 2991 if fill2 >= iv[5] { 2992 var oa: i64 = sj_cat(ob, 0, "CHBEAT JOURNAL local=" as *u8) 2993 oa = sj_cat(ob, oa, jp2) 2994 oa = sj_cat(ob, oa, " bytes=" as *u8) 2995 oa = sj_catn(ob, oa, kk2[1]) 2996 oa = sj_cat(ob, oa, " fill_permil=" as *u8) 2997 oa = sj_catn(ob, oa, fill2) 2998 if fill2 >= 1000 { oa = sj_cat(ob, oa, " RED-PAST-CLIFF (gauge window truncates: partition finer than a day)" as *u8) } else { oa = sj_cat(ob, oa, " AMBER-NEAR-CLIFF" as *u8) } 2999 ob[oa] = 10 as u8 3000 sys_write(1, ob, oa + 1) 3001 } 3002 } 3003 ji = ji + 1 3004 } 3005 // ---- worklists: the reason travels with the count ---- 3006 var ui: i64 = 0 3007 while ui < ucx[0] { 3008 var ou: i64 = sj_cat(ob, 0, "CHBEAT UNKNOWN-TYPE name=" as *u8) 3009 ou = sj_cat(ob, ou, ((ua as i64) + uo[ui * 2]) as *u8) 3010 ou = sj_cat(ob, ou, " count=" as *u8) 3011 ou = sj_catn(ob, ou, uo[ui * 2 + 1]) 3012 ob[ou] = 10 as u8 3013 sys_write(1, ob, ou + 1) 3014 ui = ui + 1 3015 } 3016 if bcx[29] == 1 { sj_puts("CHBEAT UNKNOWN-TYPE table full -- the distinct list above is a FLOOR, not a total\n" as *u8) } 3017 // ---- partitions: print the sums, not just a verdict ---- 3018 var pok: i64 = 1 3019 if bcx[0] != bcx[1] + bcx[2] + bcx[3] { pok = 0 } 3020 if bcx[5] < bcx[4] { pok = 0 } 3021 if bcx[6] != bcx[8] + bcx[9] + bcx[10] { pok = 0 } 3022 if recon_ok == 0 { pok = 0 } 3023 bcx[27] = pok 3024 var op: i64 = sj_cat(ob, 0, "CHBEAT files seen=" as *u8) 3025 op = sj_catn(ob, op, bcx[0]) 3026 op = sj_cat(ob, op, " = harvested=" as *u8) 3027 op = sj_catn(ob, op, bcx[1]) 3028 op = sj_cat(ob, op, " + skipped_unchanged=" as *u8) 3029 op = sj_catn(ob, op, bcx[2]) 3030 op = sj_cat(ob, op, " + errors=" as *u8) 3031 op = sj_catn(ob, op, bcx[3]) 3032 op = sj_cat(ob, op, " (dirs=" as *u8) 3033 op = sj_catn(ob, op, bcx[24]) 3034 op = sj_cat(ob, op, " direrrs=" as *u8) 3035 op = sj_catn(ob, op, bcx[25]) 3036 op = sj_cat(ob, op, " statfb=" as *u8) 3037 op = sj_catn(ob, op, bcx[26]) 3038 op = sj_cat(ob, op, ")" as *u8) 3039 ob[op] = 10 as u8 3040 sys_write(1, ob, op + 1) 3041 op = sj_cat(ob, 0, "CHBEAT frames harvested=" as *u8) 3042 op = sj_catn(ob, op, bcx[4]) 3043 op = sj_cat(ob, op, " split_recount=" as *u8) 3044 op = sj_catn(ob, op, dcx[4]) 3045 op = sj_cat(ob, op, " tooluse_marks=" as *u8) 3046 op = sj_catn(ob, op, bcx[5]) 3047 op = sj_cat(ob, op, " unnamed_tooluse=" as *u8) 3048 op = sj_catn(ob, op, bcx[5] - bcx[4]) 3049 op = sj_cat(ob, op, " tszero=" as *u8) 3050 op = sj_catn(ob, op, bcx[15]) 3051 op = sj_cat(ob, op, " truncated_files=" as *u8) 3052 op = sj_catn(ob, op, bcx[11]) 3053 ob[op] = 10 as u8 3054 sys_write(1, ob, op + 1) 3055 op = sj_cat(ob, 0, "CHBEAT lines=" as *u8) 3056 op = sj_catn(ob, op, bcx[6]) 3057 op = sj_cat(ob, op, " = head_known=" as *u8) 3058 op = sj_catn(ob, op, bcx[8]) 3059 op = sj_cat(ob, op, " + head_unknown=" as *u8) 3060 op = sj_catn(ob, op, bcx[9]) 3061 op = sj_cat(ob, op, " + headless=" as *u8) 3062 op = sj_catn(ob, op, bcx[10]) 3063 op = sj_cat(ob, op, " (tooluse_lines=" as *u8) 3064 op = sj_catn(ob, op, bcx[7]) 3065 op = sj_cat(ob, op, " census_read_fail=" as *u8) 3066 op = sj_catn(ob, op, bcx[23]) 3067 op = sj_cat(ob, op, ")" as *u8) 3068 ob[op] = 10 as u8 3069 sys_write(1, ob, op + 1) 3070 op = sj_cat(ob, 0, "CHBEAT staged pieces=" as *u8) 3071 op = sj_catn(ob, op, bcx[12]) 3072 op = sj_cat(ob, op, " bytes=" as *u8) 3073 op = sj_catn(ob, op, bcx[13]) 3074 op = sj_cat(ob, op, " days=" as *u8) 3075 op = sj_catn(ob, op, bcx[14]) 3076 op = sj_cat(ob, op, " raws_recovered=" as *u8) 3077 op = sj_catn(ob, op, bcx[30]) 3078 op = sj_cat(ob, op, " local_ingested_frames=" as *u8) 3079 op = sj_catn(ob, op, bcx[20]) 3080 op = sj_cat(ob, op, " local_malformed=" as *u8) 3081 op = sj_catn(ob, op, bcx[22]) 3082 ob[op] = 10 as u8 3083 sys_write(1, ob, op + 1) 3084 op = sj_cat(ob, 0, "CHBEAT push attempted=" as *u8) 3085 op = sj_catn(ob, op, bcx[16]) 3086 op = sj_cat(ob, op, " done=" as *u8) 3087 op = sj_catn(ob, op, bcx[17]) 3088 op = sj_cat(ob, op, " left=" as *u8) 3089 op = sj_catn(ob, op, bcx[18]) 3090 op = sj_cat(ob, op, " nas_confirmed_frames=" as *u8) 3091 op = sj_catn(ob, op, bcx[21]) 3092 op = sj_cat(ob, op, " spool_remaining=" as *u8) 3093 op = sj_catn(ob, op, bcx[19]) 3094 if iv[0] == 0 { op = sj_cat(ob, op, " (push=0 staging mode declared)" as *u8) } 3095 ob[op] = 10 as u8 3096 sys_write(1, ob, op + 1) 3097 // LAST LINE (positional readers). A failed push is a PARTIAL beat, never an OK one -- 3098 // the pieces are safe in the spool, but the NAS record is behind and the verdict says so. 3099 var ov: i64 = 0 3100 if pok == 1 { if bcx[3] == 0 { if bcx[18] == 0 { ov = 1 } } } 3101 var ol: i64 = 0 3102 if ov == 1 { ol = sj_cat(ob, 0, "CHBEAT OK" as *u8) } else { ol = sj_cat(ob, 0, "CHBEAT PARTIAL" as *u8) } 3103 ol = sj_cat(ob, ol, " files=" as *u8) 3104 ol = sj_catn(ob, ol, bcx[0]) 3105 ol = sj_cat(ob, ol, " frames=" as *u8) 3106 ol = sj_catn(ob, ol, bcx[4]) 3107 ol = sj_cat(ob, ol, " pieces=" as *u8) 3108 ol = sj_catn(ob, ol, bcx[12]) 3109 ol = sj_cat(ob, ol, " pushed=" as *u8) 3110 ol = sj_catn(ob, ol, bcx[17]) 3111 ol = sj_cat(ob, ol, " spool=" as *u8) 3112 ol = sj_catn(ob, ol, bcx[19]) 3113 ol = sj_cat(ob, ol, " worst_fill_permil=" as *u8) 3114 ol = sj_catn(ob, ol, bcx[28]) 3115 ob[ol] = 10 as u8 3116 sys_write(1, ob, ol + 1) 3117 if ov == 1 { return 0 } 3118 return 1 3119} 3120 3121// ---------- CE1 leg 2: ce_author_health -- seat-written NishiLang joined to its complexity (2026-09-05) ---------- 3122// Frames carry `path=<p>` for writes since ch_frame_note landed. Every UNIQUE .nx path under the tree prefix that a seat 3123// session wrote is scanned ONCE with the complexity ruler (mc_scan_file -- the one ruler nx_mccabe and its gate share), 3124// and the figures are set against the census's LAST spine row so the board can say what share of the estate's 3125// complexity is seat-written. The complement is NOT "human": it is everything the frames cannot attribute -- human- 3126// authored files AND every write before the first path-bearing frame -- and it is named so, never guessed. A seat is 3127// AI at a seat by definition of the transcript. Counters partition and SUM; a path outside the tree or not .nx is 3128// counted apart; an unreadable path is counted apart; an absent spine makes the denominator UNOBSERVABLE (rc 3), a 3129// journal with no path frames is NO-PATH-FRAMES (rc 4) -- neither ever fabricates a number. 3130// (the CH_AH_* consts sit at the top of the file beside the beat consts: the module parser is single-pass and the 3131// selftest teeth read them before this section) 3132func ch_ah_prefix(p: *u8, pre: *u8) -> i64 { 3133 var i: i64 = 0 3134 while pre[i] != (0 as u8) { if p[i] != pre[i] { return 0 } i = i + 1 } 3135 return 1 3136} 3137// n-th TAB-separated field of line [i,le) -> out (NUL-terminated); returns its length, 0 if absent 3138func ch_ah_field_n(buf: *u8, i: i64, le: i64, want: i64, out: *u8, cap: i64) -> i64 { 3139 var f: i64 = 0 3140 var s: i64 = i 3141 var k: i64 = i 3142 var o: i64 = 0 3143 while k <= le { 3144 var endf: i64 = 0 3145 if k == le { endf = 1 } else { if buf[k] == (9 as u8) { endf = 1 } } 3146 if endf == 1 { 3147 if f == want { 3148 var q: i64 = s 3149 while q < k { if o < cap - 1 { out[o] = buf[q]; o = o + 1 } q = q + 1 } 3150 out[o] = 0 as u8 3151 return o 3152 } 3153 f = f + 1 3154 s = k + 1 3155 } 3156 k = k + 1 3157 } 3158 out[0] = 0 as u8 3159 return 0 3160} 3161// linear lookup in a table of NUL-terminated cells; small tables, no second ruler 3162func ch_ah_find(tab: *u8, n: i64, cell: i64, p: *u8) -> i64 { 3163 var k: i64 = 0 3164 while k < n { 3165 let q: *u8 = ((tab as i64) + k*cell) as *u8 3166 if sj_lit_eq(q, 0, sj_vlen(q), p) == 1 { return k } 3167 k = k + 1 3168 } 3169 return 0 - 1 3170} 3171func ch_ah_lastline(buf: *u8, n: i64) -> i64 { 3172 var i: i64 = 0 3173 var last: i64 = 0 - 1 3174 while i < n { let le: i64 = sj_le(buf, i, n); if le > i { last = i } i = le + 1 } 3175 return last 3176} 3177// a BOUNDED digit run: stops at the first non-digit or at `to` (sj_atoi_z concatenates every digit up to the NUL, 3178// so on a `k=10|j=20` row it would read 1020 -- measured, not assumed) 3179func ch_ah_num(buf: *u8, p0: i64, to: i64) -> i64 { 3180 var v: i64 = 0 3181 var p: i64 = p0 3182 var g: i64 = 1 3183 while g == 1 { 3184 if p >= to { g = 0 } else { 3185 let c: i64 = buf[p] as i64 3186 if c < CH_CH_D0 { g = 0 } else { if c > CH_CH_D9 { g = 0 } else { v = v*CH_DEC + (c - CH_CH_D0); p = p + 1 } } 3187 } 3188 } 3189 return v 3190} 3191func ch_ah_field(buf: *u8, from: i64, to: i64, key: *u8) -> i64 { 3192 let p: i64 = ch_find_from(buf, from, to, key) 3193 if p < 0 { return 0 - 1 } 3194 return ch_ah_num(buf, p + sj_vlen(key), to) 3195} 3196func ce_author_health(jpath: *u8, pre: *u8, spine: *u8, cx: *i64, ob: *u8) -> i64 { 3197 var z: i64 = 0 3198 while z < CH_AH_CTRS { cx[z] = 0; z = z + 1 } 3199 cx[CH_AH_FIRSTTS] = 0 - 1 3200 let lp: *i64 = sys_mmap(16) as *i64 3201 lp[0] = 0 3202 let jb: *u8 = sys_read_file(jpath, lp) 3203 var jn: i64 = lp[0] 3204 if jn < 0 { jn = 0 } 3205 let tab: *u8 = sys_mmap(CH_AH_MAXPATHS * CH_AH_PATHCELL) 3206 var nt: i64 = 0 3207 let stab: *u8 = sys_mmap(CH_AH_MAXSESS * CH_AH_SESSCELL) 3208 var ns: i64 = 0 3209 let pkey: *u8 = "path=" as *u8 3210 let pkl: i64 = sj_vlen(pkey) 3211 let pc: *u8 = sys_mmap(CH_AH_PATHCELL + 8) 3212 let sc: *u8 = sys_mmap(CH_AH_SESSCELL + 8) 3213 var i: i64 = 0 3214 while i < jn { 3215 let le: i64 = sj_le(jb, i, jn) 3216 if le > i { 3217 cx[CH_AH_FRAMES] = cx[CH_AH_FRAMES] + 1 3218 let pp: i64 = ch_find_from(jb, i, le, pkey) 3219 if pp >= 0 { 3220 cx[CH_AH_PATHFRAMES] = cx[CH_AH_PATHFRAMES] + 1 3221 let ts: i64 = ch_ah_num(jb, i, le) 3222 if cx[CH_AH_FIRSTTS] < 0 { cx[CH_AH_FIRSTTS] = ts } else { if ts < cx[CH_AH_FIRSTTS] { cx[CH_AH_FIRSTTS] = ts } } 3223 let sl: i64 = ch_ah_field_n(jb, i, le, 1, sc, CH_AH_SESSCELL) 3224 if sl > 0 { if ch_ah_find(stab, ns, CH_AH_SESSCELL, sc) < 0 { if ns < CH_AH_MAXSESS { 3225 let scell: *u8 = ((stab as i64) + ns*CH_AH_SESSCELL) as *u8 3226 let scl: i64 = sj_cat(scell, 0, sc) 3227 scell[scl] = 0 as u8 3228 ns = ns + 1 3229 } } } 3230 var pl: i64 = le - (pp + pkl) 3231 if pl > CH_AH_PATHCELL - 1 { pl = CH_AH_PATHCELL - 1 } 3232 var q: i64 = 0 3233 while q < pl { pc[q] = jb[pp + pkl + q]; q = q + 1 } 3234 if pl > 0 { if pc[pl-1] == (13 as u8) { pl = pl - 1 } } 3235 pc[pl] = 0 as u8 3236 if pl > 0 { if ch_ah_find(tab, nt, CH_AH_PATHCELL, pc) < 0 { 3237 if nt < CH_AH_MAXPATHS { 3238 let pcell: *u8 = ((tab as i64) + nt*CH_AH_PATHCELL) as *u8 3239 let pcl: i64 = sj_cat(pcell, 0, pc) 3240 pcell[pcl] = 0 as u8 3241 nt = nt + 1 3242 } else { cx[CH_AH_OVERFLOW] = cx[CH_AH_OVERFLOW] + 1 } 3243 } } 3244 } 3245 } 3246 i = le + 1 3247 } 3248 cx[CH_AH_UNIQUE] = nt 3249 cx[CH_AH_SESSIONS] = ns 3250 let hist: *i64 = sys_mmap(MC_HIST_MAX*8 + 64) as *i64 3251 let mc: *i64 = sys_mmap(MC_C_SLOTS*8) as *i64 3252 let work: *u8 = sys_mmap(MC_WORKCAP) 3253 let wo: *i64 = sys_mmap(16) as *i64 3254 wo[0] = 0 3255 var k: i64 = 0 3256 while k < nt { 3257 let p: *u8 = ((tab as i64) + k*CH_AH_PATHCELL) as *u8 3258 var intree: i64 = 0 3259 if ch_ah_prefix(p, pre) == 1 { if mc_ends_nx(p, sj_vlen(p)) == 1 { intree = 1 } } 3260 if intree == 1 { 3261 cx[CH_AH_INTREE] = cx[CH_AH_INTREE] + 1 3262 let f0: i64 = mc[MC_C_FILES] 3263 let n0: i64 = mc[MC_C_FUNCS] 3264 let s0: i64 = mc[MC_C_SUMVG] 3265 let a0: i64 = mc[MC_C_ABOVE] 3266 mc_scan_file(p, hist, mc, work, wo) 3267 if mc[MC_C_FILES] > f0 { 3268 cx[CH_AH_FILES] = cx[CH_AH_FILES] + 1 3269 cx[CH_AH_FUNCS] = cx[CH_AH_FUNCS] + (mc[MC_C_FUNCS] - n0) 3270 cx[CH_AH_SUMVG] = cx[CH_AH_SUMVG] + (mc[MC_C_SUMVG] - s0) 3271 cx[CH_AH_ABOVE] = cx[CH_AH_ABOVE] + (mc[MC_C_ABOVE] - a0) 3272 } else { cx[CH_AH_UNREAD] = cx[CH_AH_UNREAD] + 1 } 3273 } else { cx[CH_AH_OUTSIDE] = cx[CH_AH_OUTSIDE] + 1 } 3274 k = k + 1 3275 } 3276 let sp: *i64 = sys_mmap(16) as *i64 3277 sp[0] = 0 3278 let sb: *u8 = sys_read_file(spine, sp) 3279 let sn: i64 = sp[0] 3280 var den: i64 = 0 3281 if sn > 0 { 3282 let ls: i64 = ch_ah_lastline(sb, sn) 3283 if ls >= 0 { 3284 let lse: i64 = sj_le(sb, ls, sn) 3285 cx[CH_AH_DTS] = ch_ah_num(sb, ls, lse) 3286 cx[CH_AH_DFILES] = ch_ah_field(sb, ls, lse, "files=" as *u8) 3287 cx[CH_AH_DFUNCS] = ch_ah_field(sb, ls, lse, "funcs=" as *u8) 3288 cx[CH_AH_DABOVE] = ch_ah_field(sb, ls, lse, "above_10=" as *u8) 3289 if cx[CH_AH_DFILES] > 0 { den = 1 } 3290 } 3291 } 3292 if den == 0 { cx[CH_AH_DFILES] = 0; cx[CH_AH_DFUNCS] = 0; cx[CH_AH_DABOVE] = 0 } 3293 var rc: i64 = 0 3294 if cx[CH_AH_PATHFRAMES] == 0 { rc = CH_AH_RC_NOPATH } else { if den == 0 { rc = CH_AH_RC_UNOBS } } 3295 var o: i64 = 0 3296 o = sj_cat(ob, o, "=== NX-AUTHOR-HEALTH -- seat-written NishiLang joined to its complexity (codeeffectiveness CE1 leg 2) ===\n" as *u8) 3297 o = sj_cat(ob, o, " journal=" as *u8); o = sj_cat(ob, o, jpath) 3298 o = sj_cat(ob, o, " frames=" as *u8); o = sj_catn(ob, o, cx[CH_AH_FRAMES]) 3299 o = sj_cat(ob, o, " path_frames=" as *u8); o = sj_catn(ob, o, cx[CH_AH_PATHFRAMES]) 3300 o = sj_cat(ob, o, " unique_paths=" as *u8); o = sj_catn(ob, o, cx[CH_AH_UNIQUE]) 3301 o = sj_cat(ob, o, " nx_in_tree=" as *u8); o = sj_catn(ob, o, cx[CH_AH_INTREE]) 3302 o = sj_cat(ob, o, " outside_tree_or_not_nx=" as *u8); o = sj_catn(ob, o, cx[CH_AH_OUTSIDE]) 3303 o = sj_cat(ob, o, " unreadable=" as *u8); o = sj_catn(ob, o, cx[CH_AH_UNREAD]) 3304 o = sj_cat(ob, o, " overflow=" as *u8); o = sj_catn(ob, o, cx[CH_AH_OVERFLOW]) 3305 o = sj_cat(ob, o, " sessions=" as *u8); o = sj_catn(ob, o, cx[CH_AH_SESSIONS]) 3306 o = sj_cat(ob, o, " first_path_frame_ts=" as *u8); o = sj_catn(ob, o, cx[CH_AH_FIRSTTS]) 3307 o = sj_cat(ob, o, "\n tree=" as *u8); o = sj_cat(ob, o, pre) 3308 o = sj_cat(ob, o, "\n seat_written: files=" as *u8); o = sj_catn(ob, o, cx[CH_AH_FILES]) 3309 o = sj_cat(ob, o, " funcs=" as *u8); o = sj_catn(ob, o, cx[CH_AH_FUNCS]) 3310 o = sj_cat(ob, o, " sum_vG=" as *u8); o = sj_catn(ob, o, cx[CH_AH_SUMVG]) 3311 o = sj_cat(ob, o, " above_10=" as *u8); o = sj_catn(ob, o, cx[CH_AH_ABOVE]) 3312 if cx[CH_AH_FUNCS] > 0 { o = sj_cat(ob, o, " permille=" as *u8); o = sj_catn(ob, o, (cx[CH_AH_ABOVE]*MC_PERMILLE)/cx[CH_AH_FUNCS]) } 3313 if den == 1 { 3314 o = sj_cat(ob, o, "\n denominator (mccabe spine row ts=" as *u8); o = sj_catn(ob, o, cx[CH_AH_DTS]) 3315 o = sj_cat(ob, o, "): files=" as *u8); o = sj_catn(ob, o, cx[CH_AH_DFILES]) 3316 o = sj_cat(ob, o, " funcs=" as *u8); o = sj_catn(ob, o, cx[CH_AH_DFUNCS]) 3317 o = sj_cat(ob, o, " above_10=" as *u8); o = sj_catn(ob, o, cx[CH_AH_DABOVE]) 3318 o = sj_cat(ob, o, "\n not_seat_attributed: files=" as *u8); o = sj_catn(ob, o, cx[CH_AH_DFILES] - cx[CH_AH_FILES]) 3319 o = sj_cat(ob, o, " funcs=" as *u8); o = sj_catn(ob, o, cx[CH_AH_DFUNCS] - cx[CH_AH_FUNCS]) 3320 o = sj_cat(ob, o, " above_10=" as *u8); o = sj_catn(ob, o, cx[CH_AH_DABOVE] - cx[CH_AH_ABOVE]) 3321 o = sj_cat(ob, o, " (human-authored PLUS every write before ts=" as *u8); o = sj_catn(ob, o, cx[CH_AH_FIRSTTS]) 3322 o = sj_cat(ob, o, ", which carried no path -- UNATTRIBUTED, never guessed)\n partition: seat_written + not_seat_attributed = denominator, by construction\n" as *u8) 3323 } else { 3324 o = sj_cat(ob, o, "\n denominator: UNOBSERVABLE (no mccabe spine row at " as *u8); o = sj_cat(ob, o, spine); o = sj_cat(ob, o, " -- run nx_mccabe first; nothing is fabricated)\n" as *u8) 3325 } 3326 o = sj_cat(ob, o, "NX-AUTHOR-HEALTH frames=" as *u8); o = sj_catn(ob, o, cx[CH_AH_FRAMES]) 3327 o = sj_cat(ob, o, " path_frames=" as *u8); o = sj_catn(ob, o, cx[CH_AH_PATHFRAMES]) 3328 o = sj_cat(ob, o, " unique_paths=" as *u8); o = sj_catn(ob, o, cx[CH_AH_UNIQUE]) 3329 o = sj_cat(ob, o, " seat_files=" as *u8); o = sj_catn(ob, o, cx[CH_AH_FILES]) 3330 o = sj_cat(ob, o, " seat_funcs=" as *u8); o = sj_catn(ob, o, cx[CH_AH_FUNCS]) 3331 o = sj_cat(ob, o, " seat_above_10=" as *u8); o = sj_catn(ob, o, cx[CH_AH_ABOVE]) 3332 o = sj_cat(ob, o, " den_files=" as *u8); o = sj_catn(ob, o, cx[CH_AH_DFILES]) 3333 o = sj_cat(ob, o, " den_funcs=" as *u8); o = sj_catn(ob, o, cx[CH_AH_DFUNCS]) 3334 o = sj_cat(ob, o, " den_above_10=" as *u8); o = sj_catn(ob, o, cx[CH_AH_DABOVE]) 3335 o = sj_cat(ob, o, " verdict=" as *u8) 3336 if rc == 0 { o = sj_cat(ob, o, "MEASURED" as *u8) } 3337 if rc == CH_AH_RC_UNOBS { o = sj_cat(ob, o, "UNOBSERVABLE-DENOMINATOR" as *u8) } 3338 if rc == CH_AH_RC_NOPATH { o = sj_cat(ob, o, "NO-PATH-FRAMES" as *u8) } 3339 o = sj_cat(ob, o, "\n" as *u8) 3340 ob[o] = 0 as u8 3341 return rc 3342} 3343 3344 3345// Request accounting reads local observation snapshots only. No provider calls or journal writes. 3346// Existing CH_WIN/CH_AH_MAXPATHS/CH_BT_TYPEMAX bound scan bytes, requests, JSON depth. 3347const CHU_SAFE:i64=9007199254740991 // exact JSON integer interoperability limit 3348const CHU_REQUIRED_FIELDS:i64=32767 // bits0..14: exact observed request schema 3349const CHU_ROW:i64=21 // mask, kind, six identity spans, six counters, epoch 3350func chu_uint(q:*u8,s:i64,n:i64)->i64 { 3351 if n<1{return -1};var v:i64=0;var i:i64=0 3352 while i<n{let c:i64=q[s+i] as i64;if c<48||c>57{return -1};let d:i64=c-48 3353 if v>(CHU_SAFE-d)/10{return -1};v=v*10+d;i=i+1} 3354 return v 3355} 3356func chu_key(t:*NxJsonTok,ctx:i64)->i64 { 3357 let s:i64=t.tok_off+1;let e:i64=t.tok_off+t.tok_len-1 3358 if ctx==1{ 3359 if sj_lit_eq(t.src,s,e,"type")==1{return 0} 3360 if sj_lit_eq(t.src,s,e,"timestamp")==1{return 1} 3361 if sj_lit_eq(t.src,s,e,"payload")==1{return 2} 3362 } 3363 if ctx==2{ 3364 if sj_lit_eq(t.src,s,e,"thread_id")==1{return 3} 3365 if sj_lit_eq(t.src,s,e,"response_id")==1{return 4} 3366 if sj_lit_eq(t.src,s,e,"turn_id")==1{return 5} 3367 if sj_lit_eq(t.src,s,e,"session_id")==1{return 6} 3368 if sj_lit_eq(t.src,s,e,"root_turn_id")==1{return 7} 3369 if sj_lit_eq(t.src,s,e,"usage")==1{return 8} 3370 } 3371 if ctx==3{ 3372 if sj_lit_eq(t.src,s,e,"input_tokens")==1{return 9} 3373 if sj_lit_eq(t.src,s,e,"cached_input_tokens")==1{return 10} 3374 if sj_lit_eq(t.src,s,e,"cache_write_input_tokens")==1{return 11} 3375 if sj_lit_eq(t.src,s,e,"output_tokens")==1{return 12} 3376 if sj_lit_eq(t.src,s,e,"reasoning_output_tokens")==1{return 13} 3377 if sj_lit_eq(t.src,s,e,"total_tokens")==1{return 14} 3378 } 3379 return -1 3380} 3381func chu_value(t:*NxJsonTok,ctx:i64,r:*i64,depth:i64)->i64 { 3382 if depth>CH_BT_TYPEMAX{return -1} 3383 if t.kind==NX_JSON_LBRACE{ 3384 var kind:i64=nx_json_next(t) 3385 if kind==NX_JSON_RBRACE{return 0} 3386 while 1==1{ 3387 if kind!=NX_JSON_STRING{return -1} 3388 var x:i64=t.tok_off+1 3389 while x<t.tok_off+t.tok_len-1{if t.src[x]==(92 as u8){return -1};x=x+1} 3390 let key:i64=chu_key(t,ctx) 3391 if key>=0{let bit:i64=1<<key;if (r[0]&bit)!=0{return -1};r[0]=r[0]|bit} 3392 if nx_json_next(t)!=NX_JSON_COLON{return -1} 3393 kind=nx_json_next(t) 3394 var child:i64=0 3395 if key==2{if kind!=NX_JSON_LBRACE{return -1};child=2} 3396 if key==8{if kind!=NX_JSON_LBRACE{return -1};child=3} 3397 if key==0{ 3398 if kind!=NX_JSON_STRING{return -1} 3399 var ki:i64=t.tok_off+1;while ki<t.tok_off+t.tok_len-1{if t.src[ki]==(92 as u8){return -1};ki=ki+1} 3400 if sj_lit_eq(t.src,t.tok_off+1,t.tok_off+t.tok_len-1,"token_usage_record")==1{r[1]=1} 3401 } 3402 if key==1||key>=3&&key<=7{ 3403 if kind!=NX_JSON_STRING{return -1} 3404 let n:i64=t.tok_len-2;if n<1||n>CH_NAME_SCAN{return -1} 3405 if utf8_validate((t.src as i64+t.tok_off+1) as *u8,n)!=n{return -1} 3406 var j:i64=t.tok_off+1;while j<t.tok_off+t.tok_len-1{if t.src[j]==(92 as u8){return -1};j=j+1} 3407 var at:i64=2;if key>=3{at=(key-1)*2} 3408 r[at]=t.tok_off+1;r[at+1]=n 3409 } 3410 if key>=9{ 3411 if kind!=NX_JSON_NUMBER{return -1} 3412 let v:i64=chu_uint(t.src,t.tok_off,t.tok_len);if v<0{return -1};r[14+key-9]=v 3413 } 3414 if chu_value(t,child,r,depth+1)!=0{return -1} 3415 kind=nx_json_next(t) 3416 if kind==NX_JSON_RBRACE{return 0} 3417 if kind!=NX_JSON_COMMA{return -1} 3418 kind=nx_json_next(t) 3419 } 3420 } 3421 if t.kind==NX_JSON_LBRACKET{ 3422 var kind:i64=nx_json_next(t);if kind==NX_JSON_RBRACKET{return 0} 3423 while 1==1{ 3424 if chu_value(t,0,r,depth+1)!=0{return -1};kind=nx_json_next(t) 3425 if kind==NX_JSON_RBRACKET{return 0};if kind!=NX_JSON_COMMA{return -1};kind=nx_json_next(t) 3426 } 3427 } 3428 if t.kind>=NX_JSON_STRING&&t.kind<=NX_JSON_NULL{return 0} 3429 return -1 3430} 3431func chu_row(t:*NxJsonTok,q:*u8,n:i64,r:*i64)->i64 { 3432 var i:i64=0;while i<CHU_ROW{r[i]=0;i=i+1} 3433 t.src=q;t.len=n;t.pos=0;t.kind=0 3434 if nx_json_next(t)!=NX_JSON_LBRACE{return -1} 3435 if chu_value(t,1,r,0)!=0{return -1} 3436 if nx_json_next(t)!=NX_JSON_EOF{return -1} 3437 if (r[0]&1)==0{return -1} 3438 if r[1]==0{return 0} 3439 if r[0]!=CHU_REQUIRED_FIELDS{return -1} 3440 let s:i64=r[2];if r[3]!=24{return -1} 3441 if q[s+19]!=(46 as u8)||q[s+23]!=(90 as u8){return -1} 3442 if ch_digits(q,s+20,s+23)==0{return -1} 3443 let epoch:i64=ch_iso_epoch(q,s,s+19);if epoch<=0{return -1} 3444 let hh:i64=chu_uint(q,s+11,2);let mm:i64=chu_uint(q,s+14,2);let ss:i64=chu_uint(q,s+17,2) 3445 if hh>23||mm>59||ss>59{return -1} 3446 let mo:i64=chu_uint(q,s+5,2);let day:i64=chu_uint(q,s+8,2);let year:i64=chu_uint(q,s,4) 3447 var days:i64=31 3448 if mo==4||mo==6||mo==9||mo==11{days=30} 3449 if mo==2{days=28;if year%4==0{if year%100!=0||year%400==0{days=29}}} 3450 if day>days{return -1} 3451 r[20]=epoch 3452 if r[15]>r[14]||r[16]>r[14]||r[18]>r[17]{return -1} 3453 if r[14]>CHU_SAFE-r[17]{return -1} 3454 if r[19]!=r[14]+r[17]{return -1} 3455 return 1 3456} 3457func chu_span_same(q:*u8,a:*i64,b:*i64,slot:i64)->i64 { 3458 if a[slot+1]!=b[slot+1]{return 0} 3459 var i:i64=0;while i<a[slot+1]{if q[a[slot]+i]!=q[b[slot]+i]{return 0};i=i+1} 3460 return 1 3461} 3462func chu_totals(q:*u8,n:i64,from:i64,to:i64,table:*i64,t:*NxJsonTok,r:*i64,c:*i64)->i64 { 3463 var i:i64=0;while i<10{c[i]=0;i=i+1} 3464 var pos:i64=0 3465 while pos<n{ 3466 let end:i64=sj_le(q,pos,n) 3467 if end==n{return -2} 3468 if end>pos{ 3469 let rowrc:i64=chu_row(t,(q as i64+pos) as *u8,end-pos,r) 3470 if rowrc<0{return -3} 3471 if rowrc==1{ 3472 var s:i64=2;while s<14{r[s]=r[s]+pos;s=s+2} 3473 // Reconcile all requests in this byte snapshot before filtering time. A conflicting 3474 // repetition outside the requested time window cannot silently change membership. 3475 var found:i64=-1;var j:i64=0 3476 while j<c[0]{ 3477 let old:*i64=(table as i64+j*CHU_ROW*8) as *i64 3478 if chu_span_same(q,r,old,4)==1&&chu_span_same(q,r,old,6)==1{found=j;break};j=j+1 3479 } 3480 if found>=0{ 3481 let old:*i64=(table as i64+found*CHU_ROW*8) as *i64 3482 var same:i64=1;s=2;while s<14{if chu_span_same(q,r,old,s)==0{same=0};s=s+2} 3483 s=14;while s<CHU_ROW{if r[s]!=old[s]{same=0};s=s+1} 3484 if same==0{return -4};c[1]=c[1]+1 3485 }else{ 3486 if c[0]>=CH_AH_MAXPATHS{return -5} 3487 let dest:*i64=(table as i64+c[0]*CHU_ROW*8) as *i64 3488 s=0;while s<CHU_ROW{dest[s]=r[s];s=s+1};c[0]=c[0]+1 3489 if r[20]>=from&&r[20]<to{ 3490 c[2]=c[2]+1;s=0;while s<6{if c[4+s]>CHU_SAFE-r[14+s]{return -6};c[4+s]=c[4+s]+r[14+s];s=s+1} 3491 } 3492 } 3493 }else{c[3]=c[3]+1} 3494 } 3495 pos=end+1 3496 } 3497 return 0 3498} 3499 3500// NDJSON request observations reuse the reconciled table. A terminal record is required 3501// for consumers to accept a complete stream; successful writes do not imply durability. 3502func chu_write_hash(fd:i64,q:*u8,n:i64,hash:*Sha256)->i64 { 3503 var off:i64=0 3504 while off<n{let k:i64=sys_write(fd,(q as i64+off) as *u8,n-off);if k<=0||k>n-off{return 3};if (hash as i64)>0{sha256_update(hash,(q as i64+off) as *u8,k)};off=off+k} 3505 return 0 3506} 3507func chu_write_all(fd:i64,q:*u8,n:i64)->i64{return chu_write_hash(fd,q,n,0 as *Sha256)} 3508func chu_request_records_to(fd:i64,hash:*Sha256,q:*u8,table:*i64,from:i64,to:i64,c:*i64,digest:*u8)->i64 { 3509 let d:*u8=sys_mmap(CH_OUT);if (d as i64)<=0{return 3} 3510 var j:i64=0;var emitted:i64=0;var rc:i64=0 3511 while j<c[0]{ 3512 let r:*i64=(table as i64+j*CHU_ROW*8) as *i64 3513 if r[20]>=from&&r[20]<to{ 3514 var o:i64=sj_cat(d,0,"{\"schema\":\"nishi.context-request-observation.v1\",\"scan_sha256\":\"") 3515 o=sj_cat(d,o,digest);o=sj_cat(d,o,"\",\"sequence\":");o=sj_catn(d,o,emitted) 3516 var s:i64=2 3517 while s<14{ 3518 var label:*u8=",\"timestamp\":\"" 3519 if s==4{label=",\"thread_id\":\""};if s==6{label=",\"response_id\":\""} 3520 if s==8{label=",\"turn_id\":\""};if s==10{label=",\"session_id\":\""};if s==12{label=",\"root_turn_id\":\""} 3521 o=sj_cat(d,o,label);var k:i64=0;while k<r[s+1]{d[o]=q[r[s]+k];o=o+1;k=k+1};o=sj_cat(d,o,"\"");s=s+2 3522 } 3523 o=sj_cat(d,o,",\"usage\":{\"input_tokens\":");o=sj_catn(d,o,r[14]) 3524 o=sj_cat(d,o,",\"cached_input_tokens\":");o=sj_catn(d,o,r[15]) 3525 o=sj_cat(d,o,",\"cache_write_input_tokens\":");o=sj_catn(d,o,r[16]) 3526 o=sj_cat(d,o,",\"output_tokens\":");o=sj_catn(d,o,r[17]) 3527 o=sj_cat(d,o,",\"reasoning_output_tokens\":");o=sj_catn(d,o,r[18]) 3528 o=sj_cat(d,o,",\"total_tokens\":");o=sj_catn(d,o,r[19]) 3529 o=sj_cat(d,o,"},\"provider\":null,\"requested_model\":null,\"actual_model\":null,\"role\":null,\"task_id\":null,\"attempt_id\":null,\"review_id\":null,\"accepted_deployed_outcome\":null,\"elapsed_ms\":null,\"billed_spend\":null,\"attribution\":\"recorded identities only; joins unverified\"}\n") 3530 if chu_write_hash(fd,d,o,hash)!=0{rc=3;break};emitted=emitted+1 3531 };j=j+1 3532 } 3533 if rc==0{ 3534 var o:i64=sj_cat(d,0,"{\"schema\":\"nishi.context-request-stream-end.v1\",\"scan_sha256\":\"") 3535 o=sj_cat(d,o,digest);o=sj_cat(d,o,"\",\"emitted_requests\":");o=sj_catn(d,o,emitted) 3536 o=sj_cat(d,o,",\"expected_requests\":");o=sj_catn(d,o,c[2]) 3537 o=sj_cat(d,o,",\"complete\":true,\"scope\":\"reconciled selected byte and time window only\",\"estate_coverage\":null,\"net_savings\":null}\n") 3538 if emitted!=c[2]{rc=3}else{rc=chu_write_hash(fd,d,o,hash)} 3539 } 3540 if sys_munmap(d,CH_OUT)!=0{rc=3};return rc 3541} 3542 3543func chu_request_records(fd:i64,q:*u8,table:*i64,from:i64,to:i64,c:*i64,digest:*u8)->i64{return chu_request_records_to(fd,0 as *Sha256,q,table,from,to,c,digest)} 3544func chu_emit_to(fd:i64,hash:*Sha256,path:*u8,digest:*u8,state:*u8,rc:i64,extent:i64,start:i64,end:i64,head:i64,tail:i64,from:i64,to:i64,c:*i64)->i64 { 3545 let d:*u8=sys_mmap(CH_OUT);if (d as i64)<=0{return 3} 3546 var o:i64=sj_cat(d,0,"{\"schema\":\"nishi.context-request-window.v1\",\"state\":\"") 3547 o=sj_cat(d,o,state);o=sj_cat(d,o,"\",\"code\":");o=sj_catn(d,o,rc) 3548 o=sj_cat(d,o,",\"source_path_bytes_hex\":") 3549 let hex:*u8="0123456789abcdef" 3550 let pn:i64=sj_vlen(path) 3551 if pn>CH_AH_PATHCELL{o=sj_cat(d,o,"null")}else{ 3552 o=sj_cat(d,o,"\"");var pi:i64=0;while pi<pn{let b:i64=path[pi] as i64;d[o]=hex[b>>4];d[o+1]=hex[b&15];o=o+2;pi=pi+1};o=sj_cat(d,o,"\"") 3553 } 3554 o=sj_cat(d,o,",\"scan_sha256\":") 3555 if (digest as i64)==0{o=sj_cat(d,o,"null")}else{o=sj_cat(d,o,"\"");o=sj_cat(d,o,digest);o=sj_cat(d,o,"\"")} 3556 o=sj_cat(d,o,",\"snapshot_extent\":");o=sj_catn(d,o,extent) 3557 o=sj_cat(d,o,",\"scan_start\":");o=sj_catn(d,o,start) 3558 o=sj_cat(d,o,",\"scan_end\":");o=sj_catn(d,o,end) 3559 o=sj_cat(d,o,",\"discarded_head_bytes\":");o=sj_catn(d,o,head) 3560 o=sj_cat(d,o,",\"discarded_tail_bytes\":");o=sj_catn(d,o,tail) 3561 o=sj_cat(d,o,",\"start_inclusive_epoch\":");o=sj_catn(d,o,from) 3562 o=sj_cat(d,o,",\"end_exclusive_epoch\":");o=sj_catn(d,o,to) 3563 o=sj_cat(d,o,",\"observed_at_epoch\":");o=sj_catn(d,o,sys_now_realtime_sec()) 3564 o=sj_cat(d,o,",\"window_coverage\":\"scanned-complete-records-only; broader-history-unknown\",\"totals\":") 3565 if rc!=0{o=sj_cat(d,o,"null,\"unique_requests\":null")}else{ 3566 o=sj_cat(d,o,"{\"input_tokens\":");o=sj_catn(d,o,c[4]) 3567 o=sj_cat(d,o,",\"cached_input_tokens\":");o=sj_catn(d,o,c[5]) 3568 o=sj_cat(d,o,",\"cache_write_input_tokens\":");o=sj_catn(d,o,c[6]) 3569 o=sj_cat(d,o,",\"output_tokens\":");o=sj_catn(d,o,c[7]) 3570 o=sj_cat(d,o,",\"reasoning_output_tokens\":");o=sj_catn(d,o,c[8]) 3571 o=sj_cat(d,o,",\"total_tokens\":");o=sj_catn(d,o,c[9]) 3572 o=sj_cat(d,o,"},\"unique_requests\":");o=sj_catn(d,o,c[2]) 3573 o=sj_cat(d,o,",\"snapshot_unique_requests\":");o=sj_catn(d,o,c[0]) 3574 o=sj_cat(d,o,",\"duplicate_records\":");o=sj_catn(d,o,c[1]) 3575 o=sj_cat(d,o,",\"ignored_records\":");o=sj_catn(d,o,c[3]) 3576 } 3577 o=sj_cat(d,o,",\"cached_input_is_subset\":true,\"reasoning_is_subset\":true,\"cumulative_usage_excluded\":true,\"attribution\":\"mixed-window; temporal overlap is not task causality\",\"billed_spend\":null,\"quota_attribution\":null,\"task_attributable_tokens\":null,\"net_savings\":null}\n") 3578 let wr:i64=chu_write_hash(fd,d,o,hash);let rel:i64=sys_munmap(d,CH_OUT);if wr!=0||rel!=0{return 3};return rc 3579} 3580func chu_emit(path:*u8,digest:*u8,state:*u8,rc:i64,extent:i64,start:i64,end:i64,head:i64,tail:i64,from:i64,to:i64,c:*i64)->i64{return chu_emit_to(1,0 as *Sha256,path,digest,state,rc,extent,start,end,head,tail,from,to,c)} 3581func ch_usage_window_sink(path:*u8,from:i64,to:i64,start:i64,end:i64,requests:i64,fdout:i64,hash:*Sha256)->i64 { 3582 let c:*i64=sys_mmap(80) as *i64 3583 if (c as i64)<=0{return 3} 3584 if sj_vlen(path)>CH_AH_PATHCELL||from<0||to<=from||start<0||end<start||end-start>CH_WIN{ 3585 chu_emit_to(fdout,hash,path,0 as *u8,"invalid-boundary",2,-1,start,end,0,0,from,to,c);sys_munmap(c as *u8,80);return 2} 3586 let fd:i64=sys_openat_rd(path) 3587 if fd<0{chu_emit_to(fdout,hash,path,0 as *u8,"source-open-failed",3,-1,start,end,0,0,from,to,c);sys_munmap(c as *u8,80);return 3} 3588 let extent:i64=sys_lseek(fd,0,2) 3589 if extent<end||extent<0{sys_close(fd);chu_emit_to(fdout,hash,path,0 as *u8,"snapshot-unavailable",3,extent,start,end,0,0,from,to,c);sys_munmap(c as *u8,80);return 3} 3590 let n:i64=end-start;let q:*u8=sys_mmap(n+8) 3591 let table:*i64=sys_mmap(CH_AH_MAXPATHS*CHU_ROW*8) as *i64 3592 let r:*i64=sys_mmap(CHU_ROW*8) as *i64 3593 var t:*NxJsonTok=0 as *NxJsonTok 3594 if (q as i64)>0&&(table as i64)>0&&(r as i64)>0{t=nx_json_new(q,n)} 3595 let dh:*u8=sys_mmap(SHA256_DIGEST_BYTES*2+1) 3596 let db:*u8=sys_mmap(SHA256_DIGEST_BYTES) 3597 var digest:*u8=0 as *u8 3598 var rc:i64=0;var head:i64=0;var tail:i64=0;var partial:i64=0 3599 if (q as i64)<=0||(table as i64)<=0||(r as i64)<=0||(t as i64)<=0||(dh as i64)<=0||(db as i64)<=0{rc=3}else{ 3600 if start>0{ 3601 if sys_lseek(fd,start-1,0)!=start-1{rc=3}else{if sys_read(fd,q,1)!=1{rc=3}else{if q[0]!=(10 as u8){partial=1}}} 3602 } 3603 if rc==0{ 3604 if sys_lseek(fd,start,0)!=start{rc=3}else{ 3605 var got:i64=0 3606 while got<n{let k:i64=sys_read(fd,(q as i64+got) as *u8,n-got);if k<=0{rc=3;break};got=got+k} 3607 } 3608 } 3609 if rc==0{ 3610 if sha256_digest_checked_native(q,n,db)!=0{rc=3}else{ 3611 let hex:*u8="0123456789abcdef";var di:i64=0 3612 while di<SHA256_DIGEST_BYTES{let b:i64=db[di] as i64;dh[di*2]=hex[b>>4];dh[di*2+1]=hex[b&15];di=di+1} 3613 dh[SHA256_DIGEST_BYTES*2]=0 as u8;digest=dh 3614 } 3615 } 3616 if rc==0{ 3617 if partial==1{while head<n{let b:u8=q[head];head=head+1;if b==(10 as u8){break}}} 3618 var last:i64=n;while last>head{if q[last-1]==(10 as u8){break};last=last-1} 3619 tail=n-last 3620 rc=chu_totals((q as i64+head) as *u8,last-head,from,to,table,t,r,c) 3621 } 3622 } 3623 let after:i64=sys_lseek(fd,0,2) 3624 if after<extent{rc=3} 3625 if sys_close(fd)!=0{rc=3} 3626 var state:*u8="observed" 3627 if rc!=0{state="refused-unreconciled"} 3628 let emitted:i64=chu_emit_to(fdout,hash,path,digest,state,rc,extent,start,end,head,tail,from,to,c) 3629 if emitted!=0{rc=3} 3630 if rc==0&&requests==1{rc=chu_request_records_to(fdout,hash,(q as i64+head) as *u8,table,from,to,c,digest)} 3631 if (dh as i64)>0{sys_munmap(dh,SHA256_DIGEST_BYTES*2+1)} 3632 if (db as i64)>0{sys_munmap(db,SHA256_DIGEST_BYTES)} 3633 if (q as i64)>0{sys_munmap(q,n+8)} 3634 if (table as i64)>0{sys_munmap(table as *u8,CH_AH_MAXPATHS*CHU_ROW*8)} 3635 if (r as i64)>0{sys_munmap(r as *u8,CHU_ROW*8)} 3636 if (t as i64)>0{sys_munmap(t as *u8,NX_JSONTOK_BYTES)} 3637 sys_munmap(c as *u8,80) 3638 if rc!=0{return 3};return 0 3639} 3640func ch_usage_window_mode(path:*u8,from:i64,to:i64,start:i64,end:i64,requests:i64)->i64{return ch_usage_window_sink(path,from,to,start,end,requests,1,0 as *Sha256)} 3641func ch_usage_window(path:*u8,from:i64,to:i64,start:i64,end:i64)->i64 { 3642 return ch_usage_window_mode(path,from,to,start,end,0) 3643} 3644 3645// Explicit optional creation; existing paths are never overwritten. Partial artifacts 3646// remain as failure evidence. The compact stdout receipt is not itself a durable journal. 3647const CHU_SNAPSHOT_MODE:i64=384 // POSIX owner read/write, no group or world access 3648func ch_usage_requests_file(path:*u8,from:i64,to:i64,start:i64,end:i64,output:*u8)->i64 { 3649 let wn:i64=sha256_workspace_bytes();let work:*u8=sys_mmap_shared(wn) 3650 let out:*u8=sys_mmap_shared(CH_OUT) 3651 let sync:*NxFileWriteResult=sys_mmap_shared(__size_of(NxFileWriteResult)) as *NxFileWriteResult 3652 var rc:i64=0;var opened:i64=0;var extent:i64=-1;var sync_rc:i64=0;var close_rc:i64=0;var dir_rc:i64=0;var sync_attempted:i64=0;var dir_attempted:i64=0 3653 var stage:*u8="allocation" 3654 if (work as i64)<=0||(out as i64)<=0||(sync as i64)<=0{rc=3}else{ 3655 if sha256_init_workspace(work,wn)!=0{rc=3} 3656 if rc==0{ 3657 stage="output-boundary" 3658 if sj_vlen(output)<1||sj_vlen(output)>CH_AH_PATHCELL{rc=2}else{ 3659 stage="exclusive-open";let fd:i64=sys_openat_exclusive(output,CHU_SNAPSHOT_MODE) 3660 if fd<0{rc=fd}else{ 3661 opened=1;stage="observe-write" 3662 rc=ch_usage_window_sink(path,from,to,start,end,1,fd,work as *Sha256) 3663 extent=sys_lseek(fd,0,1);if rc==0&&extent<0{rc=extent} 3664 if rc==0{stage="file-fsync";sync_attempted=1;sync_rc=sys_fsync(fd);if sync_rc!=0{rc=sync_rc}} 3665 close_rc=sys_close(fd);if rc==0&&close_rc!=0{stage="file-close";rc=close_rc} 3666 if rc==0{stage="directory-sync";dir_attempted=1;dir_rc=fio_sync_parent(output,sync);if dir_rc!=0{rc=dir_rc}} 3667 } 3668 } 3669 } 3670 var o:i64=sj_cat(out,0,"{\"schema\":\"nishi.context-request-artifact.v1\",\"state\":\"") 3671 if rc==0{o=sj_cat(out,o,"retained");stage="complete"}else{o=sj_cat(out,o,"failed")} 3672 o=sj_cat(out,o,"\",\"stage\":\"");o=sj_cat(out,o,stage);o=sj_cat(out,o,"\",\"code\":");o=sj_catn(out,o,rc) 3673 o=sj_cat(out,o,",\"created\":");o=sj_catn(out,o,opened);o=sj_cat(out,o,",\"bytes\":");o=sj_catn(out,o,extent) 3674 o=sj_cat(out,o,",\"artifact_sha256\":") 3675 let hex:*u8="0123456789abcdef" 3676 if rc==0{ 3677 let digest:*u8=out+CH_OUT-SHA256_DIGEST_BYTES;sha256_final(work as *Sha256,digest) 3678 o=sj_cat(out,o,"\"");var i:i64=0;while i<SHA256_DIGEST_BYTES{let b:i64=digest[i] as i64;out[o]=hex[b>>4];out[o+1]=hex[b&15];o=o+2;i=i+1};o=sj_cat(out,o,"\"") 3679 }else{o=sj_cat(out,o,"null")} 3680 o=sj_cat(out,o,",\"file_fsync_code\":");if sync_attempted==1{o=sj_catn(out,o,sync_rc)}else{o=sj_cat(out,o,"null")} 3681 o=sj_cat(out,o,",\"file_close_code\":");if opened==1{o=sj_catn(out,o,close_rc)}else{o=sj_cat(out,o,"null")} 3682 o=sj_cat(out,o,",\"directory_sync_code\":");if dir_attempted==1{o=sj_catn(out,o,dir_rc)}else{o=sj_cat(out,o,"null")} 3683 o=sj_cat(out,o,",\"output_path_bytes_hex\":") 3684 if sj_vlen(output)>CH_AH_PATHCELL{o=sj_cat(out,o,"null")}else{ 3685 o=sj_cat(out,o,"\"");var pi:i64=0;while output[pi]!=(0 as u8){let b:i64=output[pi] as i64;out[o]=hex[b>>4];out[o+1]=hex[b&15];o=o+2;pi=pi+1};o=sj_cat(out,o,"\"") 3686 } 3687 o=sj_cat(out,o,",\"scope\":\"selected observation snapshot; identity joins unverified\",\"estate_coverage\":null,\"net_savings\":null}\n") 3688 if chu_write_all(1,out,o)!=0{rc=3} 3689 } 3690 if (sync as i64)>0{if sys_munmap(sync as *u8,__size_of(NxFileWriteResult))!=0{rc=3}} 3691 if (out as i64)>0{if sys_munmap(out,CH_OUT)!=0{rc=3}} 3692 if (work as i64)>0{if sys_munmap(work,wn)!=0{rc=3}} 3693 if rc!=0{return 3};return 0 3694} 3695 3696func main(argc: i64, argv: *i64) -> i64 { 3697 if argc>=2{ 3698 let uv:*u8=argv[1] as *u8 3699 if sj_lit_eq(uv,0,sj_vlen(uv),"usage-window")==1||sj_lit_eq(uv,0,sj_vlen(uv),"usage-requests")==1{ 3700 if argc!=7&&argc!=8{sj_puts("usage-window <jsonl> <start-inclusive-epoch> <end-exclusive-epoch> <scan-start-byte> <scan-end-byte>; usage-requests accepts optional exclusive-output-path\n");return 2} 3701 if argc==8&&sj_lit_eq(uv,0,sj_vlen(uv),"usage-requests")!=1{return 2} 3702 let a:*u8=argv[3] as *u8;let b:*u8=argv[4] as *u8 3703 let c:*u8=argv[5] as *u8;let d:*u8=argv[6] as *u8 3704 if argc==8{return ch_usage_requests_file(argv[2] as *u8,chu_uint(a,0,sj_vlen(a)),chu_uint(b,0,sj_vlen(b)),chu_uint(c,0,sj_vlen(c)),chu_uint(d,0,sj_vlen(d)),argv[7] as *u8)} 3705 return ch_usage_window_mode(argv[2] as *u8,chu_uint(a,0,sj_vlen(a)),chu_uint(b,0,sj_vlen(b)),chu_uint(c,0,sj_vlen(c)),chu_uint(d,0,sj_vlen(d)),sj_lit_eq(uv,0,sj_vlen(uv),"usage-requests")) 3706 } 3707 } 3708 3709 if argc < 3 { sj_puts("usage: nx_claude_harvest {frames <transcript.jsonl> <ws> <outjournal> | delta <transcript.jsonl> <ws> <outjournal> <hwmfile> | ingest <framesfile> <journal> | gauge <journal> [days] | page <journal> <outfile> [days] | propose <journal> <intake_jrnl> <threshold_permil> [filer] | bootgauge <framesjournal> [k] | learn <transcript.jsonl> <ws> <outfile> <markersconf> | beat <chbeat.conf> | journal <journal> <planpath> <rung> | classes <journal> | selftest <scratch-prefix>}\n" as *u8); sys_exit(2); return 2 } 3710 let verb: *u8 = argv[1] as *u8 3711 let vl: i64 = sj_vlen(verb) 3712 if sj_lit_eq(verb, 0, vl, "selftest" as *u8) == 1 { 3713 let rc: i64 = ch_selftest(argv[2] as *u8) 3714 sys_exit(rc) 3715 return rc 3716 } 3717 if sj_lit_eq(verb, 0, vl, "authorhealth" as *u8) == 1 { 3718 if argc < 3 { sj_puts("authorhealth needs <journal> [treeprefix] [spine]\n" as *u8); sys_exit(2); return 2 } 3719 var ahpre: *u8 = CH_AH_TREE as *u8 3720 if argc >= 4 { ahpre = argv[3] as *u8 } 3721 var ahspn: *u8 = CH_AH_SPINE as *u8 3722 if argc >= 5 { ahspn = argv[4] as *u8 } 3723 let acx: *i64 = sys_mmap(8 * CH_AH_CTRS) as *i64 3724 let aob: *u8 = sys_mmap(CH_OUT) 3725 let arc: i64 = ce_author_health(argv[2] as *u8, ahpre, ahspn, acx, aob) 3726 sys_write(1, aob, sj_vlen(aob)) 3727 let ahfd: i64 = sys_openat_wr(CH_AH_STATUS as *u8, CH_MODE_644) 3728 if ahfd >= 0 { sys_write(ahfd, aob, sj_vlen(aob)); sys_close(ahfd) } 3729 sys_exit(arc) 3730 return arc 3731 } 3732 if sj_lit_eq(verb, 0, vl, "classes" as *u8) == 1 { 3733 let dc: *u8 = sys_mmap(CH_OUT) 3734 let dcl: i64 = ch_classes(argv[2] as *u8, dc) 3735 sys_write(1, dc, dcl) 3736 sys_exit(0) 3737 return 0 3738 } 3739 if sj_lit_eq(verb, 0, vl, "journal" as *u8) == 1 { 3740 if argc < 5 { sj_puts("journal needs <journal> <planpath> <rung>\n" as *u8); sys_exit(2); return 2 } 3741 let rj: i64 = ch_journal(argv[2] as *u8, argv[3] as *u8, argv[4] as *u8) 3742 if rj == 0 { sj_puts("JOURNAL OK one measure row appended\n" as *u8) } 3743 if rj == 4 { sj_puts("JOURNAL ALREADY today (idempotent, plan unchanged)\n" as *u8) } 3744 if rj == 5 { sj_puts("JOURNAL REFUSED insufficient data (no claude actions) -- nothing written\n" as *u8) } 3745 if rj == 1 { sj_puts("JOURNAL FAIL plan missing or unwritable (a beat never creates a plan)\n" as *u8) } 3746 sys_exit(rj) 3747 return rj 3748 } 3749 if sj_lit_eq(verb, 0, vl, "beat" as *u8) == 1 { 3750 let bcx: *i64 = sys_mmap(8 * CH_BT_CTRS) as *i64 3751 let rc: i64 = ch_beat(argv[2] as *u8, bcx) 3752 sys_exit(rc) 3753 return rc 3754 } 3755 if sj_lit_eq(verb, 0, vl, "bootgauge" as *u8) == 1 { 3756 var k: i64 = 3 3757 if argc >= 4 { let kz: i64 = sj_atoi_z(argv[3] as *u8); if kz > 0 { k = kz } } 3758 let d: *u8 = sys_mmap(CH_OUT) 3759 let dl: i64 = ch_bootgauge(argv[2] as *u8, k, d) 3760 sys_write(1, d, dl) 3761 sys_exit(0) 3762 return 0 3763 } 3764 if sj_lit_eq(verb, 0, vl, "learn" as *u8) == 1 { 3765 if argc < 6 { sj_puts("learn needs <transcript.jsonl> <ws> <outfile> <markersconf>\n" as *u8); sys_exit(2); return 2 } 3766 let lcx: *i64 = sys_mmap(64) as *i64 3767 let lg: i64 = ch_learn(argv[2] as *u8, argv[3] as *u8, argv[4] as *u8, argv[5] as *u8, lcx) 3768 if lg < 0 { sj_puts("LEARN FAIL rc=" as *u8); let eb4: *u8 = sys_mmap(32); var e4: i64 = sj_catn(eb4, 0, lg); eb4[e4] = 10 as u8; sys_write(1, eb4, e4 + 1); sys_exit(1); return 1 } 3769 let ob4: *u8 = sys_mmap(256) 3770 var o4: i64 = sj_cat(ob4, 0, "LEARN OK kept=" as *u8) 3771 o4 = sj_catn(ob4, o4, lg) 3772 o4 = sj_cat(ob4, o4, " markers=" as *u8) 3773 o4 = sj_catn(ob4, o4, lcx[1]) 3774 o4 = sj_cat(ob4, o4, " truncated=" as *u8) 3775 o4 = sj_catn(ob4, o4, lcx[0]) 3776 ob4[o4] = 10 as u8 3777 sys_write(1, ob4, o4 + 1) 3778 sys_exit(0) 3779 return 0 3780 } 3781 if sj_lit_eq(verb, 0, vl, "frames" as *u8) == 1 { 3782 if argc < 5 { sj_puts("frames needs <transcript.jsonl> <ws> <outjournal>\n" as *u8); sys_exit(2); return 2 } 3783 let tcx: *i64 = sys_mmap(16) as *i64 3784 let got: i64 = ch_frames(argv[2] as *u8, argv[3] as *u8, argv[4] as *u8, tcx) 3785 if got < 0 { sj_puts("HARVEST FAIL rc=" as *u8); let eb: *u8 = sys_mmap(32); var eo: i64 = sj_catn(eb, 0, got); eb[eo] = 10 as u8; sys_write(1, eb, eo + 1); sys_exit(1); return 1 } 3786 let ob: *u8 = sys_mmap(256) 3787 var oo: i64 = sj_cat(ob, 0, "HARVEST OK frames=" as *u8) 3788 oo = sj_catn(ob, oo, got) 3789 oo = sj_cat(ob, oo, " truncated=" as *u8) 3790 oo = sj_catn(ob, oo, tcx[0]) 3791 ob[oo] = 10 as u8 3792 sys_write(1, ob, oo + 1) 3793 sys_exit(0) 3794 return 0 3795 } 3796 if sj_lit_eq(verb, 0, vl, "ingest" as *u8) == 1 { 3797 if argc < 4 { sj_puts("ingest needs <framesfile> <journal>\n" as *u8); sys_exit(2); return 2 } 3798 let mcx: *i64 = sys_mmap(16) as *i64 3799 let r: i64 = ch_ingest(argv[2] as *u8, argv[3] as *u8, mcx) 3800 if r == (0 - 2) { sj_puts("ALREADY-INGESTED (marker present, journal untouched)\n" as *u8); sys_exit(0); return 0 } 3801 if r < 0 { sj_puts("INGEST FAIL rc=" as *u8); let eb2: *u8 = sys_mmap(32); var e2: i64 = sj_catn(eb2, 0, r); eb2[e2] = 10 as u8; sys_write(1, eb2, e2 + 1); sys_exit(1); return 1 } 3802 let ob2: *u8 = sys_mmap(256) 3803 var o2: i64 = sj_cat(ob2, 0, "INGEST OK frames=" as *u8) 3804 o2 = sj_catn(ob2, o2, r) 3805 o2 = sj_cat(ob2, o2, " malformed=" as *u8) 3806 o2 = sj_catn(ob2, o2, mcx[0]) 3807 ob2[o2] = 10 as u8 3808 sys_write(1, ob2, o2 + 1) 3809 sys_exit(0) 3810 return 0 3811 } 3812 if sj_lit_eq(verb, 0, vl, "gauge" as *u8) == 1 { 3813 var days: i64 = 0 3814 if argc >= 4 { days = sj_atoi_z(argv[3] as *u8) } 3815 let d: *u8 = sys_mmap(CH_OUT) 3816 let dl: i64 = ch_gauge_json(argv[2] as *u8, days, d) 3817 sys_write(1, d, dl) 3818 if ch_find(d, dl, "\"evidence_state\":\"source_open_failed\"" as *u8) == 1 { sys_exit(CH_AH_RC_UNOBS); return CH_AH_RC_UNOBS } 3819 sys_exit(0) 3820 return 0 3821 } 3822 if sj_lit_eq(verb, 0, vl, "page" as *u8) == 1 { 3823 if argc < 4 { sj_puts("page needs <journal> <outfile> [days]\n" as *u8); sys_exit(2); return 2 } 3824 var days2: i64 = 0 3825 if argc >= 5 { days2 = sj_atoi_z(argv[4] as *u8) } 3826 let rp: i64 = ch_page(argv[2] as *u8, argv[3] as *u8, days2) 3827 if rp != 0 { sj_puts("PAGE FAIL\n" as *u8); sys_exit(1); return 1 } 3828 sj_puts("PAGE OK\n" as *u8) 3829 sys_exit(0) 3830 return 0 3831 } 3832 if sj_lit_eq(verb, 0, vl, "delta" as *u8) == 1 { 3833 if argc < 6 { sj_puts("delta needs <transcript.jsonl> <ws> <outjournal> <hwmfile>\n" as *u8); sys_exit(2); return 2 } 3834 let hcx: *i64 = sys_mmap(64) as *i64 3835 let r: i64 = ch_delta(argv[2] as *u8, argv[3] as *u8, argv[4] as *u8, argv[5] as *u8, hcx) 3836 if r < 0 { sj_puts("DELTA FAIL (missing transcript or unwritable journal)\n" as *u8); sys_exit(1); return 1 } 3837 let ob: *u8 = sys_mmap(256) 3838 var oo: i64 = sj_cat(ob, 0, "DELTA OK frames=" as *u8) 3839 oo = sj_catn(ob, oo, hcx[0]) 3840 oo = sj_cat(ob, oo, " from_hwm=" as *u8) 3841 oo = sj_catn(ob, oo, hcx[2]) 3842 oo = sj_cat(ob, oo, " new_hwm=" as *u8) 3843 oo = sj_catn(ob, oo, hcx[1]) 3844 oo = sj_cat(ob, oo, " truncated=" as *u8) 3845 oo = sj_catn(ob, oo, hcx[3]) 3846 ob[oo] = 10 as u8 3847 sys_write(1, ob, oo + 1) 3848 sys_exit(0) 3849 return 0 3850 } 3851 if sj_lit_eq(verb, 0, vl, "propose" as *u8) == 1 { 3852 if argc < 5 { sj_puts("propose needs <journal> <intake_jrnl> <threshold_permil> [filer]\n" as *u8); sys_exit(2); return 2 } 3853 let thr: i64 = sj_atoi_z(argv[4] as *u8) 3854 let filer: *u8 = sys_mmap(128) 3855 var fo: i64 = 0 3856 if argc >= 6 { fo = sj_cat(filer, 0, argv[5] as *u8) } else { fo = sj_cat(filer, 0, "nx_pm_intake" as *u8) } 3857 filer[fo] = 0 as u8 3858 let co: *u8 = sys_mmap(CH_OUT) 3859 let cl: *i64 = sys_mmap(16) as *i64 3860 let r: i64 = ch_propose(argv[2] as *u8, argv[3] as *u8, thr, filer, co, cl) 3861 if r == 0 { sj_puts("PROPOSED " as *u8); if cl[0] > 0 { sys_write(1, co, cl[0]) } sj_puts("\n" as *u8); sys_exit(0); return 0 } 3862 if r == 2 { sj_puts("BELOW-THRESHOLD\n" as *u8); sys_exit(0); return 0 } 3863 if r == 4 { sj_puts("ALREADY-PROPOSED (marker present)\n" as *u8); sys_exit(0); return 0 } 3864 if r == 5 { sj_puts("SKIP-INSUFFICIENT (no frames)\n" as *u8); sys_exit(0); return 0 } 3865 if r == 3 { sj_puts("REFUSED intake window exceeded\n" as *u8); sys_exit(3); return 3 } 3866 sj_puts("PROPOSE FAIL (filer)\n" as *u8) 3867 sys_exit(1) 3868 return 1 3869 } 3870 sj_puts("unknown verb\n" as *u8) 3871 sys_exit(2) 3872 return 2 3873}