Commit Graph

658 Commits

Author SHA1 Message Date
Drew T 0dca62485a feat(decomp): ox wave dk overlays — 15 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 14:09:24 -06:00
Drew T 2fea549c53 feat(decomp): ox wave dr overlays — 28 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 13:55:25 -06:00
Drew T a5eecbbec7 chore(decomp): commit in-tree banked work before the next gate
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).
2026-08-25 13:24:01 -06:00
Drew T 9f4aecd7c8 feat(decomp): ox wave dp overlays — 54 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 13:21:14 -06:00
Drew T bca5eff072 fix(config): RESTORE config/overlays.mk — the entire 5,077-line overlay registry was empty
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.
2026-08-25 12:59:54 -06:00
Drew T 7891069c4b feat(decomp): ox wave dk overlays — 2 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 12:37:47 -06:00
Drew T c95dde87a8 feat(decomp): ox wave dl overlays — 1 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 12:30:13 -06:00
Drew T 7713700d72 feat(decomp): ox wave dj overlays — 43 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 12:21:43 -06:00
Drew T ca5fd2e225 feat(decomp): ox wave di overlays — 81 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 12:13:33 -06:00
Drew T 8aa67e0313 chore(decomp): commit in-tree banked work before the next gate
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).
2026-08-25 11:55:29 -06:00
Drew T 8b21ba556a fix(jtbl): two REDs — a bank changed an object's table count, the pad spec did not
ov_SC02_005 and ov_SC07_006 both failed to assemble with "jtbl_rodata_pads: consumed 1
rodata .align(s) but 2 pad spec(s) given", both from wave dd (commit:2847).

CAUSE, not guessed: dd banked a function CARRYING A SWITCH into each object
(func_8018A150 / func_80183524). A switch changes how many .rdata jump tables the object
emits, and JTBL_PADS is a static per-object spec written by jtbl_carve at CARVE time — it
describes the table population as it was, and nothing re-derives it when banking changes it.

Verified rather than assumed, the same experiment both times: set the spec to the count now
emitted and rebuild. Both are BYTE-IDENTICAL, so the banks are correct and the spec was
stale — the opposite of ov_SC04_018 this morning, where the identical symptom came from a
LOST bank and the spec was right. The symptom does not tell you which; the byte gate does.

  ov_SC02_005  9c233988b061...  GREEN with 0
  ov_SC07_006  7ca772be5656...  GREEN with 0

Both binaries were RED from 11:00 (dd's commit) until now — every draft gated against them
in that window was rejected for a reason that had nothing to do with the draft.
2026-08-25 11:50:10 -06:00
Drew T 80d9db532e feat(decomp): ox wave dg overlays — 100 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 11:43:23 -06:00
Drew T 7e1f554a05 feat(decomp): ox wave df overlays — 124 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 11:27:56 -06:00
Drew T 5357c8b448 feat(decomp): ox wave de overlays — 192 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 11:17:00 -06:00
Drew T 27a9c118ef feat(decomp): ox wave dd overlays — 217 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 11:00:28 -06:00
Drew T 520a4ca3f2 feat(decomp): ox wave da overlays — 74 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 10:17:06 -06:00
Drew T 5f23d5bacf feat(decomp): ox wave cy overlays — 6 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 09:31:44 -06:00
Drew T 67bd99aa3f feat(decomp): ox wave cx overlays — 50 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 09:10:16 -06:00
Drew T 3dd093741f feat(decomp): ox wave cu overlays — 47 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 07:51:35 -06:00
Drew T 642c4b76af feat(decomp): ox wave cs overlays — 42 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 06:58:41 -06:00
Drew T 0f3d638d96 feat(decomp): ox wave cr overlays — 12 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 06:31:32 -06:00
Drew T 216668950c feat(decomp): ox wave cq overlays — 53 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 06:12:26 -06:00
Drew T 8ab6c1082f feat(decomp): ox wave cn overlays — 3 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 05:35:12 -06:00
Drew T 9b40d20aa9 feat(decomp): ox wave cl overlays — 3 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 05:18:22 -06:00
Drew T c10171e8d9 feat(decomp): ox wave co overlays — 43 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 05:01:27 -06:00
Drew T 69d2611903 feat(decomp): ox wave cm overlays — 30 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 04:24:00 -06:00
Drew T 3eb8056f22 feat(decomp): ox wave ck overlays — 69 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 03:57:39 -06:00
Drew T 10dadb6c1c feat(decomp): ox wave ci overlays — 34 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 02:54:38 -06:00
Drew T 82b4cd5b55 feat(decomp): ox wave ch overlays — 88 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 02:36:04 -06:00
Drew T ec8ade5692 feat(decomp): -O0 U3 — 48 banked across the x3 carve group, zero model tokens
The 16-fn -O0 cluster (0x8013B568..0x8013C964), remapped from the ov_SC01_077 exemplars
(16/16 matched there) into all three freshly carved -O0 objects:

  ov_SC02_037  16/16      ov_MAIN_012  16/16      ov_SC03_107  16/16

All three BYTE-IDENTICAL against config/check.<ov>.sha after the batch, and corpus.stubs
reports zero of the 16 addresses still open in any of them. 48 functions for zero model
tokens — the entire cost was a partitioning fix.

R14 NOTE ON THE INSTRUMENT: sweep_parallel summarised "banked=44 notbanked=4" while the
byte gate and corpus.stubs both say 48/48. The bytes win; its counter undercounts (drafts
banked in a later chunk after a bisect appear not to be credited). Worth a look before that
number is ever quoted as a rate.

Three drafts per overlay came with a gather_externs warning — a sibling callee with no
file-scope decl in ov077 (func_8013B83C, func_8013BD74). They banked anyway: C89 implicit
declaration covers a same-TU sibling whose stub sits in the same object. The gate decided,
not the warning.

With U2's 4, this closes the -O0 U2/U3 thread: 52 functions / ~6,730 instructions banked
tonight from the stranded -O0 population without drafting a line.
2026-08-25 02:19:38 -06:00
Drew T c03cd6f3a2 feat(config): -O0 U3 step 1 — carve the 16-fn cluster out of jr_801380E0 in the x3 group
ov_SC02_037, ov_MAIN_012 and ov_SC03_107 never received the P30 _o0c carve, so the 16-fn
-O0 cluster at 0x8013B568..0x8013C98C sat inside their -O2 `jr_801380E0` object. Opt level
is a property of the FILE (§116), so every remap into it was correctly rejected by the gate
— 16 functions x 3 overlays unreachable for a partitioning reason, not a matching one.

o0_subsplit at [0x8013B568, 0x8013C98C) per overlay. All three BYTE-IDENTICAL after
`make extract && make build`, which is the whole claim of a carve — it moves nothing:

  ov_SC02_037  b0c5394ae23cd5f0cbb32687f61bca669151bf5f
  ov_MAIN_012  d6b3e8b971cdd6c53aea8c4f265afb82b363283c
  ov_SC03_107  87d02b578a27a947f1da381255a1faa3f05cedfd

A LOCKING RULE THIS EARNED. ov_MAIN_012's dry run planned 5 regions around an "-O2 island"
at func_8013C0F8 [def]; the real run planned 3, and the function is an INCLUDE_ASM stub in
both HEAD and the carved tree — nothing was lost. The dry run had read a MID-GATE
SUBSTITUTION: a lane had a candidate body in that TU, the gate rejected it, and the stub
came back. o0_subsplit derives its plan from which functions are matched, so a plan derived
outside the per-binary lock can be a plan about a tree state that never existed. Derive the
plan INSIDE `.run/auto/gate.<bin>.lock`, carve under the same lock — which is what the real
runs did, and why they saw the truth.

Next: populate the 3x16 from the ov_SC01_077 exemplars (16/16 matched there), then gate.
2026-08-25 02:14:34 -06:00
Drew T 4b7ebe7954 feat(decomp): ox wave cg overlays — 36 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 01:50:53 -06:00
Drew T 2a95f6e0f1 feat(decomp): ox wave ce overlays — 40 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 00:14:57 -06:00
Drew T f94cdac931 fix(jtbl): drop the stale 2-table pad spec that made ov_SC07_002 unbuildable
The binary has been RED since wave bp (commit:2687), where the gate-time jtbl carve
wrote 'JTBL_PADS := 0,0  # tables=+0x0,+0x20' for ov_SC07_002_jr_8017C8D0.o. The
object emits ONE rodata .align, so jtbl_rodata_pads refused every build:

  consumed 1 rodata .align(s) but 2 pad spec(s) given — table-count drift vs the carve
  make: *** [build/src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.o] Error 1

The carve itself is legitimate — jr_isolate_all's jr_inventory resolves every
committed .rodata carve in this binary to exactly one banked owner (R32/R33), so this
was never an orphaned carve. Only the pad SPEC was wrong, and §8e's own rule is that a
single-table span gets no line at all (its pipeline stays byte-identical to pre-§8e).
Removing the line restores it:

  sha1 fad71342019704d1dd6ec25f2f3934c97e322624 == config/check.ov_SC07_002.sha

Found by the A-prop agent's scoped R22 (141 binaries affected, 96 SHA-checked), which
also fixed ov_SC07_010 — a binary whose committed tree state had provably never been
built. Two RED binaries had been sitting in the fleet while every lane gated against
them; neither was noticed because no lane checks a binary it is not currently touching.
2026-08-24 23:52:50 -06:00
Drew T ba2833739a feat(decomp): ox wave cc overlays — 18 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-24 23:36:29 -06:00
Drew T 8b2a1e5f1f feat(decomp): ox wave ca overlays — 42 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-24 21:40:22 -06:00
Drew T 826d5dfe1c feat(decomp): ox wave bz overlays — 21 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-24 20:44:52 -06:00
Drew T 536c420e59 feat(decomp): ox wave bs overlays — 10 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-24 19:42:03 -06:00
Drew T 210dba7afe feat(decomp): ox wave bw overlays — 47 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-24 19:15:01 -06:00
Drew T 88673d3708 feat(decomp): ox wave bv overlays — 44 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-24 18:43:23 -06:00
Drew T 5be231d446 feat(decomp): ox wave bu overlays — 42 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-24 18:02:49 -06:00
Drew T 1cbe3004f8 feat(decomp): ox wave bt overlays — 44 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-24 17:31:22 -06:00
Drew T 1ae1012a9e feat(decomp): ox wave bq overlays — 81 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-24 15:09:11 -06:00
Drew T 57255bc56c feat(decomp): ox wave bp overlays — 44 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-24 14:43:48 -06:00
Drew T f74ad7ac8a feat(decomp): jtbl lane — func_801E5358 banked in md_SC03_135 (88 ins, island-end)
carve→draft→bank through harvest_verify's gate-time jtbl prep (island split §260); whole-binary SHA green.
2026-08-24 12:27:29 -06:00
Drew T b801b499ef feat(decomp): jtbl lane — func_8017DCC0 banked in ov_SC03_014 (45 ins, tail)
carve→draft→bank through harvest_verify's gate-time jtbl prep (tail carve §8a); whole-binary SHA green.
2026-08-24 12:23:48 -06:00
Drew T a931423c7a feat(jtbl): the 154-A island split WORKS — byte-proven on md_SC03_076/func_801F218C
The whole split is ONE inserted config line plus jr_isolate_all --only, exactly as
the adversarial review concluded (no _pre piece, no ld_interleave change, the
- [0x0, .rodata, md_SC03_076] island piece untouched):

  - [0x268, .rodata, md_SC03_076_jr_801F218C]
  - [0x2d24, c, md_SC03_076_jr_801F218C]

FRESH negative control, measured now rather than inherited (the study's +8/0x144
baseline was measured on func_801F0F28 and misattributed):

  baseline  whole-binary sha1 9a165e368009a79bcc2ebb06bcb13e6da20d460e (green)
            md_SC03_076.o .rodata sh_size 0x27c  (the whole island)
  after     whole-binary sha1 9a165e368009a79bcc2ebb06bcb13e6da20d460e (green)
            md_SC03_076.o .rodata sh_size 0x268
            md_SC03_076_jr_801F218C.o .rodata sh_size 0x14  (the 5-entry table)

So the SHA is unchanged AND the object-level discriminator proves the split really
happened — the pair rules out the no-op reading of a green build.

Island census for the record (file offsets): D_801EF468 0x000-0x0D8, D_801EF540
0x0D8-0x144, then the migrated tables of func_801EFBB4 0x144, func_801F0210 0x1B4,
func_801F0734 0x1EC, func_801F0A9C 0x214, func_801F0F28 0x23C, func_801F218C 0x268
-> 0x27C = the island end. The island is a STACK: only the end-adjacent table carves
cheaply, and each isolation exposes the next one, so the module peels from the end.
2026-08-24 10:58:29 -06:00
Drew T e1479c1900 feat(decomp): ox wave bh overlays — 155 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-24 10:52:11 -06:00
Drew T 7f70a9f42f feat(decomp): ox wave ba overlays — 287 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-24 07:28:26 -06:00
Drew T b4161aa25f feat(decomp): ox wave ar overlays — 69 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-24 06:23:04 -06:00