Drafts the ledgers already recorded as byte-correct (closeness 0 / reloc shape MATCH), re-judged against today's tree by rtu_match + reloc_identity, staged, and gated on the whole-binary SHA. Ledger: .run/resolver/verdicts.jsonl
Drafts the ledgers already recorded as byte-correct (closeness 0 / reloc shape MATCH), re-judged against today's tree by rtu_match + reloc_identity, staged, and gated on the whole-binary SHA. Ledger: .run/resolver/verdicts.jsonl
Uncommitted src/ changes found at gate entry. These are banked functions from a lane that gates with commit=False, not residue — preserved, not reverted. Top-level src/*.c (main TUs) are excluded by construction (S59).
jtbl_pads_fix.write_pads split its line on ':' but ':=' contains a colon, so each write appended a
second ': JTBL_PADS'; its 'restore' path wrote the poisoned form, and the gater's pre-gate blanket
commit (commit:2996) adopted it — R52's exact shape. From that moment every 'make' of every binary
died with "target pattern contains no '%'", which voided wave fb's re-gate, the 10-binary pads
re-audit, and two interleave probes. Line restored to its pre-damage text (JTBL_PADS := 0,0,
tables=+0x0,+0x28), byte-verified by a GREEN resident build. write_pads now splits the path once
and writes through mk_write; mk_write now REFUSES parse-poisoned lines (R43).
Uncommitted src/ changes found at gate entry. These are banked functions from a lane that gates with commit=False, not residue — preserved, not reverted. Top-level src/*.c (main TUs) are excluded by construction (S59).
Drafts the ledgers already recorded as byte-correct (closeness 0 / reloc shape MATCH), re-judged against today's tree by rtu_match + reloc_identity, staged, and gated on the whole-binary SHA. Ledger: .run/resolver/verdicts.jsonl
Uncommitted src/ changes found at gate entry. These are banked functions from a lane that gates with commit=False, not residue — preserved, not reverted. Top-level src/*.c (main TUs) are excluded by construction (S59).
Uncommitted src/ changes found at gate entry. These are banked functions from a lane that gates with commit=False, not residue — preserved, not reverted. Top-level src/*.c (main TUs) are excluded by construction (S59).
Second registry wipe today. commit:2911 ('ox wave ei overlays — 1 banked') committed
config/overlays.mk as a zero-line file, exactly as commit:2863 did this morning, and the
consequence was identical: no overlay can build, so every gate rejects every draft. Waves
ei/ej/ek/el/em gated ~1,100 drafts and banked 2 between them, with 675 backlog rows reading
'match_one MATCH but the whole-binary gate rejected' — the local oracle proving the drafts
were byte-correct while the tree could not build them.
WHY config_sane() DID NOT FIRE. I added it at 13:0x. The gater process has been running since
midnight and executes the code it loaded at startup — Python does not reload, and a
long-running lane never re-invokes its own module. The runbook already states this ('tool code
next invocation, lane args/env only on a fresh shell') and I applied it to the drafter and the
maintenance lane today while leaving the gater untouched. A guard that is not running is not a
guard.
Restored from commit:2911^ (5,083 lines, 141 binaries). The gater is restarted in the same
change so the protection is actually live.
Uncommitted src/ changes found at gate entry. These are banked functions from a lane that gates with commit=False, not residue — preserved, not reverted. Top-level src/*.c (main TUs) are excluded by construction (S59).
commit:2863 ("ox wave dk overlays — 2 banked") committed config/overlays.mk as a ZERO-LINE
file, deleting the registry that defines all 141 overlay binaries: EXE paths, VRAM bases,
ASM_DIR/SRC_DIR roots, symbol files, and every JTBL_PADS spec.
BLAST RADIUS while it was empty:
* main could not build AT ALL. Its object glob prunes sibling binaries via
$($(b)_ASM_DIR); with no binaries registered, every overlay's asm/<ov>/nonmatchings/*.s
fell into MAIN's OBJS and was assembled standalone, where glabel/endlabel/nonmatching
are undefined ("unrecognized opcode `glabel func_801831C8'").
* the main lane found its committed baseline RED and REFUSED to draft or gate (correctly,
R43) — 1,288 open main stubs idle behind it.
* overlay gates collapsed: GATE do banked 0 of 236 gated, GATE dk 2 of 445 drafts.
* every overlay left BINARIES, so check-all's fleet scope collapsed with it.
HOW IT HAPPENED — two failures, neither sufficient alone:
1. A NON-ATOMIC WRITE. The version at commit:2863^ was ALREADY damaged: it ends with a stray
partial line ("uto.txt") after the proper final line — one writer's tail landing after
another's. This file is rewritten in place with no tmp+rename while lanes edit it
concurrently (jtbl carves, o0 subsplits, pad specs).
2. A BLANKET COMMITTER. "tree dirty at gate entry — committing it rather than reverting"
swept the truncated file into a commit. R42 says commit rather than revert and that
stands for src/ — but a tool cannot tell a truncated config from an intended one, and
this is the second time that reasoning has destroyed a registry (P28's yaml.safe_dump,
H5: never silently drop content on a rewrite).
Restored from commit:2863^ with the stray fragment removed; make parses it again. Atomic
writes and a sanity guard on the committer come next.