code wiki / _hdl_build / nx_ecomat_domtrend_lib.nx

nx_ecomat_domtrend_lib.nx

buildroot/runtime/_hdl_build/nx_ecomat_domtrend_lib.nx

11909 B285 linesdepth 5pulls 6 transitivereach 3 importersview sourcekind librarytopic ecomat
docsdependenciesstructsconstsfunctions

about

nx_ecomat_domtrend_lib.nx -- EXACT growth attribution from the per-domain ledger. This is the consumer that closes debt 1785514540. nx_ecomat_trend reads the AGGREGATE ledger and can only attribute a span whose domain count held still -- measured 406 permil of real movement. The per-domain ledger (nx_ecomat_domledger) records who held what, so the same question becomes arithmetic instead of inference: diff two beats BY NAME. ADVANCEMENT = sum over domains present in BOTH beats of (cur_last - cur_first) EXPANSION = the levels and bar carried in by domains present ONLY in the later beat RETIRED = levels carried out by domains present ONLY in the earlier beat Nothing is ambiguous, because nothing is inferred from a total. A domain that was declared at the bottom can no longer be mistaken for a domain that climbed, which was the entire defect: the headline sum_cur/sum_bar falls when you declare a frontier, so the ecosystem's own self-grade punished expansion and made honest growth unreadable. SNAPSHOT CHOICE: first beat vs last beat. Intermediate beats are counted and reported but not diffed pairwise -- the endpoints answer "where are we vs where we started", and reporting the beat count lets a reader see how much history backs that. license_tier: ORIGINAL No hw writes (Rule 26).

dependencies 1 imports · 3 importers

nx_ecomat_trend_lib.nx nx_ecomat_domtrend_lib.nx nx_ecomat_domtrend_gate.nx nx_ecomat_domtrend_live_gate.nx nx_sota_page.nx

imports: nx_ecomat_trend_lib.nx

imported by: nx_ecomat_domtrend_gate.nxnx_ecomat_domtrend_live_gate.nxnx_sota_page.nx

structs

none

consts

23const DT_LOG: *u8 = "knowledge/status/ecomat_domains.log"
24const DT_MAX_D: i64 = 256
29const DT_NAME_CAP: i64 = 128
30const DT_OUT_SLOTS: i64 = 24
31const DT_SPACE: i64 = 32
33const DTO_BEATS: i64 = 0
34const DTO_ROWS: i64 = 1
35const DTO_FIRST_EPOCH: i64 = 2
36const DTO_LAST_EPOCH: i64 = 3
37const DTO_FIRST_N: i64 = 4
38const DTO_LAST_N: i64 = 5
39const DTO_ADVANCE: i64 = 6
40const DTO_EXPAND_CUR: i64 = 7
41const DTO_EXPAND_BAR: i64 = 8
42const DTO_RETIRED_CUR: i64 = 9
43const DTO_COMMON: i64 = 10
44const DTO_NEW: i64 = 11
45const DTO_DECOMP_PERMIL: i64 = 12
46const DTO_CAPPED: i64 = 13
48const DT_ERR_NOLOG: i64 = 0 - 1
49const DT_ERR_ONEBEAT: i64 = 0 - 2
53const DT_ERR_TRUNCATED: i64 = 0 - 3
57const DT_ERR_CAPPED: i64 = 0 - 4
59const DT_END_TAG: *u8 = "ECOMATDOM-END"
60const DT_END_TAG_LEN: i64 = 13

functions

63func dt_name(buf: *u8, ls: i64, le: i64, out: *u8) -> i64
called by 1: em_domtrend_buf calls 1: el_match
96func dt_end_count(buf: *u8, n: i64, epoch: i64) -> i64
called by 1: em_domtrend_buf calls 2: el_matchtr_field
119func dt_slot(names: *u8, n: i64, want: *u8) -> i64
called by 1: em_domtrend_buf
131func em_domtrend_buf(buf: *u8, n: i64, out: *i64) -> i64
274func em_domtrend(logpath: *u8, out: *i64) -> i64
called by 2: mainmain calls 2: ss_readallem_domtrend_buf