nx_release_delta_lib.nx
buildroot/runtime/nx_release_delta_lib.nx
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
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
| 23 | const RD_NL: i64 = 10 |
| 24 | const RD_CR: i64 = 13 |
| 25 | const RD_TAB: i64 = 9 |
| 26 | const RD_PIPE: i64 = 124 |
| 27 | const RD_SPACE: i64 = 32 |
| 28 | const RD_AMP: i64 = 38 |
| 29 | const RD_HASH: i64 = 35 |
| 30 | const RD_SEMI: i64 = 59 |
| 31 | const RD_LT: i64 = 60 |
| 32 | const RD_GT: i64 = 62 |
| 33 | const RD_DQ: i64 = 34 |
| 34 | const RD_SQ: i64 = 39 |
| 35 | const RD_BSL: i64 = 92 |
| 36 | const RD_D0: i64 = 48 |
| 37 | const RD_D9: i64 = 57 |
| 38 | const RD_BYTE: i64 = 255 |
| 39 | const RD_CTRL_MAX: i64 = 31 // bytes at or below this are control characters: rendered as one space |
| 40 | const RD_BASE10: i64 = 10 |
| 41 | const RD_DATE_W: i64 = 10 // YYYY-MM-DD |
| 42 | const RD_LOG_PFX: *u8 = "log|" |
| 43 | const RD_LOG_PFX_LEN: i64 = 4 |
| 44 | const RD_KIND_LAND: *u8 = "land" |
| 45 | const RD_KIND_RETRACT: *u8 = "retract" |
| 46 | const RD_KIND_MEASURE: *u8 = "measure" |
| 47 | const RD_ACTOR_OPERATOR: *u8 = "operator" |
| 48 | const RD_V_ACCEPT: *u8 = "ACCEPT" |
| 50 | const RD_AF_ID: i64 = 0 |
| 51 | const RD_AF_SUBJ: i64 = 1 |
| 52 | const RD_AF_VERD: i64 = 2 |
| 53 | const RD_AF_DATE: i64 = 3 |
| 54 | const RD_AF_ACTOR: i64 = 4 |
| 55 | const RD_AF_WORDS: i64 = 5 |
| 57 | const RD_RF_SUBJ: i64 = 1 |
| 58 | const RD_RF_PERCEPT: i64 = 4 |
| 59 | const RD_RF_TIER: i64 = 5 |
| 60 | const RD_RF_DATE: i64 = 6 |
| 62 | const RD_MAX_SUBJ: i64 = 32 |
| 63 | const RD_REC: i64 = 512 |
| 64 | const RD_F_SUBJ: i64 = 0 |
| 65 | const RD_W_SUBJ: i64 = 64 |
| 66 | const RD_F_VERD: i64 = 64 |
| 67 | const RD_W_VERD: i64 = 16 |
| 68 | const RD_F_DATE: i64 = 80 |
| 69 | const RD_W_DATE: i64 = 16 |
| 70 | const RD_F_ID: i64 = 96 |
| 71 | const RD_W_ID: i64 = 96 |
| 72 | const RD_F_WORDS: i64 = 192 |
| 73 | const RD_W_WORDS: i64 = 160 |
| 74 | const RD_F_RPCT: i64 = 352 |
| 75 | const RD_W_RPCT: i64 = 16 |
| 76 | const RD_F_RDATE: i64 = 368 |
| 77 | const RD_W_RDATE: i64 = 16 |
| 78 | const RD_F_RTIER: i64 = 384 |
| 79 | const RD_W_RTIER: i64 = 16 |
| 80 | const RD_F_RSEEN: i64 = 400 |
| 81 | const RD_F_OPSEEN: i64 = 401 |
| 83 | const RD_LIST_CAP: i64 = 24 |
| 84 | const RD_TEXT_CAP: i64 = 240 |
| 85 | const RD_ENT_MAX: i64 = 6 // the longest entity rd_esc_html emits per input byte |
| 86 | const RD_ITEM_RESERVE: i64 = 2048 // static bytes one list item or table row can add beside its escaped text |
| 87 | const RD_COUNTS: i64 = 4 |
| 88 | const RD_C_LAND: i64 = 0 |
| 89 | const RD_C_RETRACT: i64 = 1 |
| 90 | const RD_C_MEASURE: i64 = 2 |
| 91 | const RD_C_LISTED: i64 = 3 |
| 139 | const RD_AF_TARGETS: i64 = 6 |
| 140 | const RD_SYM_PFX: *u8 = "ga_accept_" |
| 141 | const RD_SYM_PFX_LEN: i64 = 10 |
| 142 | const RD_COMMA: i64 = 44 |
| 143 | const RD_F_DESC: i64 = 408 |
| 144 | const RD_W_DESC: i64 = 104 |
functions
| 93 | func rd_rec(tab: *u8, i: i64) -> *u8 { return ((tab as i64) + i * RD_REC) as *u8 } |
| 94 | func rd_str(rec: *u8, off: i64) -> *u8 { return ((rec as i64) + off) as *u8 } |
| 95 | func 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 |
| 96 | func rd_byte(b: *u8, i: i64) -> i64 { return (b[i] as i64) & RD_BYTE } |
| 98 | func rd_cmp_slice(a: *u8, ao: i64, an: i64, b: *u8) -> i64 |
| 110 | func 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 } called by 9: rd_find_subjrd_subject_ofrd_land_sincerr_collectrr_gate_hasmain+3 calls 1: rd_cmp_slice |
| 111 | func rd_find_subj(tab: *u8, ns: i64, v: *u8, so: i64, n: i64) -> i64 |
| 119 | func rd_find_subj_z(tab: *u8, ns: i64, z: *u8) -> i64 { return rd_find_subj(tab, ns, z, 0, al_slen(z)) } |
| 120 | func rd_line_end(b: *u8, n: i64, p: i64) -> i64 |
| 126 | func rd_subj_add(tab: *u8, ns: i64, v: *u8, so: i64, n: i64) -> i64 |
| 145 | func rd_subject_of(v: *u8, vl: i64, f: *i64) -> i64 |
| 170 | func rd_op_latest(rows: *u8, n: i64, tab: *u8, since_out: *u8) -> i64 |
| 208 | func rd_ref_latest(rows: *u8, n: i64, tab: *u8, ns0: i64) -> i64 |
| 237 | func rd_ent_num(out: *u8, o0: i64, v: i64) -> i64 |
| 248 | func rd_esc_html(out: *u8, o0: i64, src: *u8, so: i64, n: i64) -> i64 |
| 266 | func rd_esc_z(out: *u8, o: i64, z: *u8) -> i64 { return rd_esc_html(out, o, z, 0, al_slen(z)) } |
| 273 | func rd_land_since(plan: *u8, n: i64, since: *u8, dom: *u8, out: *u8, o0: i64, cap: i64, counts: *i64) -> i64 |
| 339 | func 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 |