code wiki / _hdl_build / nx_growth_series.nx

nx_growth_series.nx

buildroot/runtime/_hdl_build/nx_growth_series.nx

53376 B1159 linesdepth 5pulls 6 transitivereach 0 importersview sourcekind tool
docsdependenciesstructsconstsfunctions

about

nx_growth_series.nx -- THE TIME SPINE for the exec/managerial/operational wedding cake. nx_pm_board emits the three tiers correctly. What the estate had NOWHERE was TIME: measured 2026-08-15, ecomat hist EMPTY, frontier hist EMPTY, comparewatch unseeded, token_efficiency.log 1417B -- so no board could answer "how did this change since last week". A LEVEL CANNOT EXPRESS GROWTH: growth is a DERIVATIVE and needs two samples in time. This organ adds ONLY that dimension. Every number it records is COMPOSED from nx_pm_board through tr_run_capture and every historical number is READ from journals already on disk. Zero measurement logic is duplicated: one ruler per figure. nx_growth_series beat [log] [board-elf] -> append ONE dated row; a BEAT-FAIL is ALSO a row nx_growth_series report [log] -> d/w/m deltas + the per-axis HORIZON nx_growth_series mine [journal] -> retro-computed workstream history, FULL population nx_growth_series selftest [scratchlog] -> gate teeth incl. named negative controls ROW SHAPE -- the ECOMAT shape already proven in knowledge/status/ecosystem_maturity.log, so reader idiom transfers. Line-anchored, each field name appears EXACTLY ONCE, canonical verdict LAST so a positional reader can anchor on it. A FIELD THAT COULD NOT BE READ IS -1, NEVER 0. "Could not look" and "measured zero" are different facts, and a series that confuses them reports a collapse that never happened. NO GUESSED CEILINGS. Every buffer here is sized from the thing that fills it -- needles from the key, emit lines from the field count, the mine day-grid from the journal's own epoch span. The one remaining bound (GS_BOARDCAP) guards a SUBPROCESS's output, whose size is genuinely unknowable in advance; it is named for that single purpose and its truncation ANNOUNCES as a RED row rather than being absorbed. A ceiling that has to be guessed is a defect generator in both directions. license_tier: ORIGINAL No hw writes (Rule 26). expect_exit: 0

dependencies 3 imports · 0 importers

nx_sovjson_lib.nx nx_syscalls.nx nx_tool_run.nx nx_growth_series.nx

imports: nx_sovjson_lib.nxnx_syscalls.nxnx_tool_run.nx

imported by: nobody (leaf or entry point)

call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown

main gs_streq gs_beat sys_mmap nxa_die sys_write sys_exit nxa_lock_take nxa_lock_addr sys_write ↻ nxa_lock_give nxa_lock_addr ↻ nxa_report_overrun sys_write ↻ nxa_dump_printable sys_write ↻ nxa_dump_sizes sys_write ↻ tr_run_capture sys_mmap ↻ sys_pipe2 sys_fork sys_close sys_dup3 sys_execve_clean sys_close_inherited sys_close_inherited_proc sys_openat_rd sys_mmap ↻ sys_getdents64 dirent_reclen sys_close ↻ sys_munmap sys_execve tr_exec_failed sys_write ↻ sys_exit ↻ sys_read sys_wait4 wait_status_rc

structs

none

consts

38const GS_BOARDCAP: i64 = 4194304
39const GS_MODE: i64 = 420
41const GS_TAB: i64 = 9
42const GS_NL: i64 = 10
43const GS_SPACE: i64 = 32
44const GS_QUOTE: i64 = 34
45const GS_MINUS: i64 = 45
46const GS_SLASH: i64 = 47
47const GS_D0: i64 = 48
48const GS_D9: i64 = 57
49const GS_COLON: i64 = 58
50const GS_EQ: i64 = 61
51const GS_LBRACK: i64 = 91
52const GS_RBRACK: i64 = 93
55const GS_DAY: i64 = 86400
56const GS_WEEK: i64 = 604800
57const GS_MONTH: i64 = 2592000
58const GS_ABSENT: i64 = 0 - 1
90const GS_NF: i64 = 20
92const GS_VK: i64 = 0
93const GS_VB: i64 = 1
94const GS_VD: i64 = 2
95const GS_VR: i64 = 3
96const GS_VO: i64 = 4
97const GS_NV: i64 = 5

functions

99func gs_strlen(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n }
100func gs_puts(s: *u8) -> i64 { sys_write(1, s, gs_strlen(s)); return 0 }
101func gs_werr(s: *u8) -> i64 { sys_write(2, s, gs_strlen(s)); return 0 }
called by 2: gs_beatmain calls 2: sys_writegs_strlen
105func gs_linecap() -> i64 { return GS_NF * 128 + 1024 }
107func gs_names(t: *i64) -> i64
called by 2: gs_beatgs_report
131func gs_streq(a: *u8, b: *u8) -> i64
called by 1: main
142func gs_append(path: *u8, buf: *u8, n: i64) -> i64
153func gs_find(buf: *u8, from: i64, to: i64, pat: *u8, pl: i64) -> i64
171func gs_findz(buf: *u8, from: i64, to: i64, pat: *u8) -> i64 { return gs_find(buf, from, to, pat, gs_strlen(pat)) }
173func gs_all_digits(buf: *u8, s: i64, e: i64) -> i64
called by 1: gs_frame
191func gs_needle_json(key: *u8, outlen: *i64) -> *u8
205func gs_needle_row(key: *u8, outlen: *i64) -> *u8
called by 1: gs_row_field calls 2: gs_strlensys_mmap
219func gs_num_at(buf: *u8, to: i64, start: i64) -> i64
245func gs_json_int(buf: *u8, from: i64, to: i64, key: *u8) -> i64
255func gs_json_count(buf: *u8, from: i64, to: i64, key: *u8) -> i64
278func gs_region(buf: *u8, to: i64, key: *u8, nextkey: *u8, out: *i64) -> i64
302func gs_axis_adoption(elf: *u8) -> i64
334func gs_axis_finance(elf: *u8, v: *i64) -> i64
368func gs_axis_laws(elf: *u8, v: *i64) -> i64
396func gs_axis_owner(elf: *u8, v: *i64) -> i64
414func gs_beat(logp: *u8, boardelf: *u8, adoptelf: *u8, effelf: *u8, lawelf: *u8, ownelf: *u8) -> i64
486func gs_row_field(buf: *u8, s: i64, e: i64, key: *u8) -> i64
497func gs_observed(be: i64, ecur: i64) -> i64
503func gs_report(logp: *u8) -> i64
629func gs_prefix_at(buf: *u8, s: i64, e: i64, pat: *u8) -> i64
called by 1: gs_frame
648func gs_frame(buf: *u8, s: i64, e: i64, out: *i64) -> i64
670func gs_mine_scan(buf: *u8, n: i64, tot: *i64, meta: *i64) -> i64
called by 2: gs_minegs_selftest calls 2: sys_mmapgs_frame
699func gs_mine(jrnl: *u8) -> i64
883func gs_t(nm: *u8, got: i64, want: i64, ctr: *i64) -> i64
900func gs_q(d: *u8, p: i64) -> i64 { d[p] = GS_QUOTE as u8; return p + 1 }
902func gs_fixture(d: *u8) -> i64
called by 1: gs_selftest calls 2: sj_catgs_q
936func gs_jfixture(d: *u8) -> i64
called by 1: gs_selftest calls 1: sj_cat
963func gs_ffixture(d: *u8) -> i64
called by 1: gs_selftest calls 2: sj_catgs_q
987func gs_lfixture(d: *u8) -> i64
called by 1: gs_selftest calls 2: sj_catgs_q
1011func gs_selftest(scratch: *u8) -> i64
1127func main(argc: i64, argv: *i64) -> i64