From 05cd7a58086cc7095618d7e3235de7b2fa3ecdde Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Mon, 27 Jul 2026 19:46:04 -0600 Subject: [PATCH] fix(phase-29): commit the jtbl carve config that belonged with func_801789AC's bank MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MY ERROR: the previous commit scoped `git add` to src/ and tools/ and omitted config/, leaving the jtbl carve's config (overlays.mk + splat.ov_SC01_077.yaml) uncommitted. harvest_verify KEEPS a carve on success, so that config is part of the banked state — HEAD was an incomplete change set, and the R22 140/140 I reported was verified WITH these files present, not without them. CAUGHT BY jtbl_family_bank's precondition check ("config/ or src/ has uncommitted changes"), not by me and not by any gate. A build without them appeared byte-identical, but that was an INCREMENTAL build reusing objects — the same trap that produced a false all-clear earlier today — so it is not evidence either way. Committing what R22 actually verified removes the ambiguity rather than reasoning about it. Lesson, same shape as R32 pointed at commit hygiene: a scoped `git add` is an assertion about the change set's boundary, and nothing checks it. The tool preconditions are the only thing standing between a partial commit and a broken HEAD. --- config/overlays.mk | 2 +- config/splat.ov_SC01_077.yaml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/config/overlays.mk b/config/overlays.mk index 983aac28a..b07cf5ef2 100644 --- a/config/overlays.mk +++ b/config/overlays.mk @@ -21,7 +21,7 @@ ov_SC01_077_ELF := $(ov_SC01_077_OUT).elf ov_SC01_077_MAPFILE := $(ov_SC01_077_OUT).map ov_SC01_077_LD_SCRIPT := $(ov_SC01_077_OUT).ld ov_SC01_077_SPLAT_YAML := config/splat.ov_SC01_077.yaml -ov_SC01_077_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_077_a.o,ov_SC01_077_jr_8012ACE0.o,tail2.data.o,ov_SC01_077_jr_80135888.o,tail3.data.o,ov_SC01_077_jr_80135A4C.o,tail4.data.o,ov_SC01_077_jr_80135D20.o,tail5.data.o,ov_SC01_077_jr_801380E0.o,tail6.data.o,ov_SC01_077_o0.o,tail7.data.o,ov_SC01_077.o,tail8.data.o,ov_SC01_077_jr_8015444C.o,tail9.data.o,ov_SC01_077_jr_80154C24.o,ov_SC01_077_jr_801588CC.o,tail10.data.o,ov_SC01_077_jr_80159C84.o,tail11.data.o,ov_SC01_077_jr_8015A3C8.o,tail12.data.o,ov_SC01_077_jr_8015AE2C.o,tail13.data.o,ov_SC01_077_jr_8015C32C.o,tail14.data.o,ov_SC01_077_jr_8016AB6C.o,tail15.data.o,ov_SC01_077_jr_801734BC.o,tail16.data.o,ov_SC01_077_jr_80178D40.o,tail17.data.o,ov_SC01_077_jr_8017A4AC.o,tail18.data.o,ov_SC01_077_jr_8017AE2C.o,tail19.data.o,ov_SC01_077_jr_80182268.o,tail20.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC01_077_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_077_a.o,ov_SC01_077_jr_8012ACE0.o,tail2.data.o,ov_SC01_077_jr_80135888.o,tail3.data.o,ov_SC01_077_jr_80135A4C.o,tail4.data.o,ov_SC01_077_jr_80135D20.o,tail5.data.o,ov_SC01_077_jr_801380E0.o,tail6.data.o,ov_SC01_077_o0.o,tail7.data.o,ov_SC01_077.o,tail8.data.o,ov_SC01_077_jr_8015444C.o,tail9.data.o,ov_SC01_077_jr_80154C24.o,ov_SC01_077_jr_801588CC.o,tail10.data.o,ov_SC01_077_jr_80159C84.o,tail11.data.o,ov_SC01_077_jr_8015A3C8.o,tail12.data.o,ov_SC01_077_jr_8015AE2C.o,tail13.data.o,ov_SC01_077_jr_8015C32C.o,tail14.data.o,ov_SC01_077_jr_8016AB6C.o,tail15.data.o,ov_SC01_077_jr_801734BC.o,tail16.data.o,ov_SC01_077_jr_801789AC.o,ov_SC01_077_jr_80178D40.o,tail17.data.o,ov_SC01_077_jr_8017A4AC.o,tail18.data.o,ov_SC01_077_jr_8017AE2C.o,tail19.data.o,ov_SC01_077_jr_80182268.o,tail20.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC01_077/ov_SC01_077.o: JTBL_PADS := 0,0,4,0,4,0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20,+0x38,+0x58,+0x70,+0x90,+0xa8 build/src/ov_SC01_077/ov_SC01_077_a.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x14 build/src/ov_SC01_077/ov_SC01_077_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0xcc diff --git a/config/splat.ov_SC01_077.yaml b/config/splat.ov_SC01_077.yaml index b98a55547..1748be284 100644 --- a/config/splat.ov_SC01_077.yaml +++ b/config/splat.ov_SC01_077.yaml @@ -79,6 +79,7 @@ segments: - [0x341d4, c, ov_SC01_077_jr_8015C32C] - [0x42a14, c, ov_SC01_077_jr_8016AB6C] - [0x4b364, c, ov_SC01_077_jr_801734BC] + - [0x50854, c, ov_SC01_077_jr_801789AC] - [0x50be8, c, ov_SC01_077_jr_80178D40] - [0x52354, c, ov_SC01_077_jr_8017A4AC] - [0x52cd4, c, ov_SC01_077_jr_8017AE2C] @@ -127,6 +128,7 @@ segments: - [0xb0ab0, data, tail15] - [0xb0b10, .rodata, ov_SC01_077_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb0b24, data, tail16] + - [0xb0cb4, .rodata, ov_SC01_077_jr_801789AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb0ccc, .rodata, ov_SC01_077_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb0ed0, data, tail17] - [0xb0ed4, .rodata, ov_SC01_077_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)