code wiki / (root) / nx_release_delta_lib.nx

nx_release_delta_lib.nx

buildroot/runtime/nx_release_delta_lib.nx

20851 B412 linesdepth 6pulls 10 transitivereach 202 importersview sourcekind librarytopic release
docsdependenciesstructsconstsfunctions

about

nx_release_delta_lib.nx -- THE RELEASE DELTA: what changed on the boards since the operator last judged (2026-09-04). WHY. /world/beach carried a build stamp and nothing about what that build changed. The operator's acceptance plane (knowledge/store/accept-) held four REJECT rows and one UNJUDGED from 2026-08-30 and nothing after, while every seat since shipped plumbing, telemetry, backends and gates -- progress the review page could not show, so "the review page has not moved" was true of the PAGE even where it was false of the WORK. Operator 2026-09-04: consistent progress each release on the review page. This lib is the pure arithmetic under gpe_release_block: given the accept-plane rows, the referee-plane rows and a board's log rows, it derives (1) the latest operator verdict per subject and the date of the newest one, (2) every `land` row dated strictly AFTER that date, (3) the referee percept beside each subject, and (4) the exact accept-row recipe for THIS build, and renders them as one HTML block. It reads NO files and forks NOTHING: the emitter hands it buffers, the gate hands it fixtures, and the same bytes are judged either way. LAW. THE FLIP IS THE RECEIPT, THE ACCEPT ROW IS THE PROOF. A land row here is a seat's claim that something shipped; only an operator ACCEPT row moves a subject out of INCOMPLETE, and this block prints the row to file. ROW ORDER IS WRITE ORDER (nx_accept_lib's law): the last operator row per subject wins; dates are printed, and the since-date is the GREATEST date over operator rows, never the last row's. Two bounds, both ANNOUNCED in the block: RD_LIST_CAP land rows listed (the rest counted), RD_TEXT_CAP bytes of a row's text (the board keeps all). license_tier: ORIGINAL No hw writes (Rule 26).

dependencies 3 imports · 7 importers

nx_syscalls.nx nx_comparewatch_lib.nx nx_accept_lib.nx nx_release_delta_lib.nx nx_game_page_emit_sand_review.nx nx_game_page_gpu_timing_current_ca nx_game_page_gpu_timing_pool_candi nx_game_page_identity_candidate.nx nx_release_delta_gate.nx nx_release_recent_candidate_t205.n nx_release_recent_lib.nx

imports: nx_syscalls.nxnx_comparewatch_lib.nxnx_accept_lib.nx

imported by: nx_game_page_emit_sand_review.nxnx_game_page_gpu_timing_current_candidate.nxnx_game_page_gpu_timing_pool_candidate.nxnx_game_page_identity_candidate.nxnx_release_delta_gate.nxnx_release_recent_candidate_t205.nxnx_release_recent_lib.nx

structs

none

consts

23const RD_NL: i64 = 10
24const RD_CR: i64 = 13
25const RD_TAB: i64 = 9
26const RD_PIPE: i64 = 124
27const RD_SPACE: i64 = 32
28const RD_AMP: i64 = 38
29const RD_HASH: i64 = 35
30const RD_SEMI: i64 = 59
31const RD_LT: i64 = 60
32const RD_GT: i64 = 62
33const RD_DQ: i64 = 34
34const RD_SQ: i64 = 39
35const RD_BSL: i64 = 92
36const RD_D0: i64 = 48
37const RD_D9: i64 = 57
38const RD_BYTE: i64 = 255
39const RD_CTRL_MAX: i64 = 31 // bytes at or below this are control characters: rendered as one space
40const RD_BASE10: i64 = 10
41const RD_DATE_W: i64 = 10 // YYYY-MM-DD
42const RD_LOG_PFX: *u8 = "log|"
43const RD_LOG_PFX_LEN: i64 = 4
44const RD_KIND_LAND: *u8 = "land"
45const RD_KIND_RETRACT: *u8 = "retract"
46const RD_KIND_MEASURE: *u8 = "measure"
47const RD_ACTOR_OPERATOR: *u8 = "operator"
48const RD_V_ACCEPT: *u8 = "ACCEPT"
50const RD_AF_ID: i64 = 0
51const RD_AF_SUBJ: i64 = 1
52const RD_AF_VERD: i64 = 2
53const RD_AF_DATE: i64 = 3
54const RD_AF_ACTOR: i64 = 4
55const RD_AF_WORDS: i64 = 5
57const RD_RF_SUBJ: i64 = 1
58const RD_RF_PERCEPT: i64 = 4
59const RD_RF_TIER: i64 = 5
60const RD_RF_DATE: i64 = 6
62const RD_MAX_SUBJ: i64 = 32
63const RD_REC: i64 = 512
64const RD_F_SUBJ: i64 = 0
65const RD_W_SUBJ: i64 = 64
66const RD_F_VERD: i64 = 64
67const RD_W_VERD: i64 = 16
68const RD_F_DATE: i64 = 80
69const RD_W_DATE: i64 = 16
70const RD_F_ID: i64 = 96
71const RD_W_ID: i64 = 96
72const RD_F_WORDS: i64 = 192
73const RD_W_WORDS: i64 = 160
74const RD_F_RPCT: i64 = 352
75const RD_W_RPCT: i64 = 16
76const RD_F_RDATE: i64 = 368
77const RD_W_RDATE: i64 = 16
78const RD_F_RTIER: i64 = 384
79const RD_W_RTIER: i64 = 16
80const RD_F_RSEEN: i64 = 400
81const RD_F_OPSEEN: i64 = 401
83const RD_LIST_CAP: i64 = 24
84const RD_TEXT_CAP: i64 = 240
85const RD_ENT_MAX: i64 = 6 // the longest entity rd_esc_html emits per input byte
86const RD_ITEM_RESERVE: i64 = 2048 // static bytes one list item or table row can add beside its escaped text
87const RD_COUNTS: i64 = 4
88const RD_C_LAND: i64 = 0
89const RD_C_RETRACT: i64 = 1
90const RD_C_MEASURE: i64 = 2
91const RD_C_LISTED: i64 = 3
139const RD_AF_TARGETS: i64 = 6
140const RD_SYM_PFX: *u8 = "ga_accept_"
141const RD_SYM_PFX_LEN: i64 = 10
142const RD_COMMA: i64 = 44
143const RD_F_DESC: i64 = 408
144const RD_W_DESC: i64 = 104

functions

93func rd_rec(tab: *u8, i: i64) -> *u8 { return ((tab as i64) + i * RD_REC) as *u8 }
94func rd_str(rec: *u8, off: i64) -> *u8 { return ((rec as i64) + off) as *u8 }
95func rd_rec_zero(rec: *u8) -> i64 { var i: i64 = 0; while i < RD_REC { rec[i] = 0 as u8; i = i + 1 } return 0 }
called by 1: rd_subj_add
96func rd_byte(b: *u8, i: i64) -> i64 { return (b[i] as i64) & RD_BYTE }
98func rd_cmp_slice(a: *u8, ao: i64, an: i64, b: *u8) -> i64
110func rd_slice_eq(a: *u8, ao: i64, an: i64, b: *u8) -> i64 { if rd_cmp_slice(a, ao, an, b) == 0 { return 1 } return 0 }
111func rd_find_subj(tab: *u8, ns: i64, v: *u8, so: i64, n: i64) -> i64
119func rd_find_subj_z(tab: *u8, ns: i64, z: *u8) -> i64 { return rd_find_subj(tab, ns, z, 0, al_slen(z)) }
called by 1: main calls 2: rd_find_subjal_slen
120func rd_line_end(b: *u8, n: i64, p: i64) -> i64
126func rd_subj_add(tab: *u8, ns: i64, v: *u8, so: i64, n: i64) -> i64
145func rd_subject_of(v: *u8, vl: i64, f: *i64) -> i64
170func rd_op_latest(rows: *u8, n: i64, tab: *u8, since_out: *u8) -> i64
208func rd_ref_latest(rows: *u8, n: i64, tab: *u8, ns0: i64) -> i64
237func rd_ent_num(out: *u8, o0: i64, v: i64) -> i64
called by 1: rd_esc_html calls 1: al_catn
248func rd_esc_html(out: *u8, o0: i64, src: *u8, so: i64, n: i64) -> i64
266func rd_esc_z(out: *u8, o: i64, z: *u8) -> i64 { return rd_esc_html(out, o, z, 0, al_slen(z)) }
273func rd_land_since(plan: *u8, n: i64, since: *u8, dom: *u8, out: *u8, o0: i64, cap: i64, counts: *i64) -> i64
339func rd_emit(out: *u8, o0: i64, cap: i64, stamp: i64, since: *u8, tab: *u8, ns: i64, land: *u8, counts: *i64, plans_read: i64, plans_declared: i64) -> i64