fix(config): fleet clean sweep found 5 more drifted overlays that incremental gates had hidden — ov_SC03_002/ov_SC01_077/ov_SC04_019/ov_SC01_084 JTBL_INTERLEAVE orders regenerated from their yamls (interleave_check --fix), ov_SC05_010 jr_8017C8D0 pads 0,0 -> 0 (the 09:20 maintenance repair was blanket-reverted by the 10:21 ds1 wave commit); each byte-identical from a clean per-binary rebuild (P31 S62)

This commit is contained in:
Drew T
2026-08-26 14:34:32 -06:00
parent ab9e5770c7
commit 05f13d6c9f
2 changed files with 11 additions and 5 deletions
+5 -5
View File
@@ -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,ov_SC01_077_o0.o,tail6.data.o,ov_SC01_077.o,tail7.data.o,ov_SC01_077_jr_8015444C.o,ov_SC01_077_jr_80154C24.o,ov_SC01_077_jr_801588CC.o,ov_SC01_077_jr_80159C84.o,tail8.data.o,ov_SC01_077_jr_8015A3C8.o,tail9.data.o,ov_SC01_077_jr_8015AE2C.o,tail10.data.o,ov_SC01_077_jr_8015C32C.o,tail11.data.o,ov_SC01_077_jr_8016AB6C.o,tail12.data.o,ov_SC01_077_jr_80171B4C.o,ov_SC01_077_jr_801734BC.o,tail13.data.o,ov_SC01_077_jr_801789AC.o,ov_SC01_077_jr_80178D40.o,tail14.data.o,ov_SC01_077_jr_8017A4AC.o,tail15.data.o,ov_SC01_077_jr_8017AE2C.o,tail16.data.o,ov_SC01_077_jr_80180B64.o,ov_SC01_077_jr_8018103C.o,ov_SC01_077_jr_80181BE4.o,tail17.data.o,ov_SC01_077_jr_801820DC.o,ov_SC01_077_jr_80182268.o,ov_SC01_077_jr_80182E7C.o,ov_SC01_077_jr_80183324.o,ov_SC01_077_jr_80183AF0.o,ov_SC01_077_jr_80183BAC.o,ov_SC01_077_jr_80183CF4.o,tail18.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,ov_SC01_077_o0.o,tail6.data.o,ov_SC01_077.o,tail7.data.o,ov_SC01_077_jr_8015444C.o,ov_SC01_077_jr_80154C24.o,ov_SC01_077_jr_801588CC.o,ov_SC01_077_jr_80159C84.o,tail8.data.o,ov_SC01_077_jr_8015A3C8.o,tail9.data.o,ov_SC01_077_jr_8015AE2C.o,tail10.data.o,ov_SC01_077_jr_8015C32C.o,tail11.data.o,ov_SC01_077_jr_8016AB6C.o,tail12.data.o,ov_SC01_077_jr_80171B4C.o,ov_SC01_077_jr_801734BC.o,tail13.data.o,ov_SC01_077_jr_801789AC.o,ov_SC01_077_jr_80178D40.o,tail14.data.o,ov_SC01_077_jr_8017A4AC.o,tail15.data.o,ov_SC01_077_jr_8017AE2C.o,tail16.data.o,ov_SC01_077_jr_80180B64.o,ov_SC01_077_jr_8018103C.o,ov_SC01_077_jr_80181BE4.o,tail17.data.o,ov_SC01_077_jr_80181F08.o,tail18.data.o,ov_SC01_077_jr_801820DC.o,ov_SC01_077_jr_80182268.o,ov_SC01_077_jr_80182E7C.o,ov_SC01_077_jr_80183324.o,ov_SC01_077_jr_80183AF0.o,ov_SC01_077_jr_80183BAC.o,ov_SC01_077_jr_80183CF4.o,tail19.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,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0xcc,+0xe0
@@ -324,7 +324,7 @@ ov_SC03_002_ELF := $(ov_SC03_002_OUT).elf
ov_SC03_002_MAPFILE := $(ov_SC03_002_OUT).map
ov_SC03_002_LD_SCRIPT := $(ov_SC03_002_OUT).ld
ov_SC03_002_SPLAT_YAML := config/splat.ov_SC03_002.yaml
ov_SC03_002_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_002.o,ov_SC03_002_jr_8012ACE0.o,tail2.data.o,ov_SC03_002_jr_80135888.o,tail3.data.o,ov_SC03_002_jr_80135A4C.o,tail4.data.o,ov_SC03_002_jr_80135D20.o,tail5.data.o,ov_SC03_002_jr_801380E0.o,ov_SC03_002_o0c.o,tail6.data.o,ov_SC03_002_jr_8013F350.o,tail7.data.o,ov_SC03_002_jr_8013FFD8.o,tail8.data.o,ov_SC03_002_jr_80140608.o,tail9.data.o,ov_SC03_002_jr_8015444C.o,ov_SC03_002_jr_80154C24.o,ov_SC03_002_jr_801588CC.o,ov_SC03_002_jr_80159C84.o,tail10.data.o,ov_SC03_002_jr_8015A3C8.o,tail11.data.o,ov_SC03_002_jr_8015AE2C.o,tail12.data.o,ov_SC03_002_jr_8015C32C.o,tail13.data.o,ov_SC03_002_jr_8016AB6C.o,tail14.data.o,ov_SC03_002_jr_80171B4C.o,ov_SC03_002_jr_801734BC.o,tail15.data.o,ov_SC03_002_jr_801789AC.o,ov_SC03_002_jr_80178D40.o,tail16.data.o,ov_SC03_002_jr_8017A4AC.o,tail17.data.o,ov_SC03_002_jr_8017AE2C.o,ov_SC03_002_jr_8017D604.o,tail18.data.o,ov_SC03_002_jr_80181D78.o,ov_SC03_002_jr_8018431C.o,tail19.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
ov_SC03_002_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_002.o,ov_SC03_002_jr_8012ACE0.o,tail2.data.o,ov_SC03_002_jr_80135888.o,tail3.data.o,ov_SC03_002_jr_80135A4C.o,tail4.data.o,ov_SC03_002_jr_80135D20.o,tail5.data.o,ov_SC03_002_jr_801380E0.o,ov_SC03_002_o0c.o,tail6.data.o,ov_SC03_002_jr_8013F350.o,tail7.data.o,ov_SC03_002_jr_8013FFD8.o,tail8.data.o,ov_SC03_002_jr_80140608.o,tail9.data.o,ov_SC03_002_jr_8015444C.o,ov_SC03_002_jr_80154C24.o,ov_SC03_002_jr_801588CC.o,ov_SC03_002_jr_80159C84.o,tail10.data.o,ov_SC03_002_jr_8015A3C8.o,tail11.data.o,ov_SC03_002_jr_8015AE2C.o,tail12.data.o,ov_SC03_002_jr_8015C32C.o,tail13.data.o,ov_SC03_002_jr_8016AB6C.o,tail14.data.o,ov_SC03_002_jr_80171B4C.o,ov_SC03_002_jr_801734BC.o,tail15.data.o,ov_SC03_002_jr_801789AC.o,ov_SC03_002_jr_80178D40.o,tail16.data.o,ov_SC03_002_jr_8017A4AC.o,tail17.data.o,ov_SC03_002_jr_8017AE2C.o,ov_SC03_002_jr_8017D604.o,tail18.data.o,ov_SC03_002_jr_80181BCC.o,tail19.data.o,ov_SC03_002_jr_80181D78.o,ov_SC03_002_jr_8018431C.o,tail20.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
build/src/ov_SC03_002/ov_SC03_002.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x14
build/src/ov_SC03_002/ov_SC03_002_jr_8012ACE0.o: JTBL_PADS := 0,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0xcc,+0xe0
build/src/ov_SC03_002/ov_SC03_002_jr_80135D20.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x18
@@ -470,7 +470,7 @@ ov_SC04_019_ELF := $(ov_SC04_019_OUT).elf
ov_SC04_019_MAPFILE := $(ov_SC04_019_OUT).map
ov_SC04_019_LD_SCRIPT := $(ov_SC04_019_OUT).ld
ov_SC04_019_SPLAT_YAML := config/splat.ov_SC04_019.yaml
ov_SC04_019_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_019.o,ov_SC04_019_jr_8012ACE0.o,tail2.data.o,ov_SC04_019_jr_80135888.o,tail3.data.o,ov_SC04_019_jr_80135A4C.o,tail4.data.o,ov_SC04_019_jr_80135D20.o,tail5.data.o,ov_SC04_019_jr_801380E0.o,ov_SC04_019_o0c.o,tail6.data.o,ov_SC04_019_jr_8013F350.o,tail7.data.o,ov_SC04_019_jr_8013FFD8.o,tail8.data.o,ov_SC04_019_jr_80140608.o,tail9.data.o,ov_SC04_019_jr_8015444C.o,ov_SC04_019_jr_80154C24.o,ov_SC04_019_jr_801588CC.o,ov_SC04_019_jr_80159C84.o,tail10.data.o,ov_SC04_019_jr_8015A3C8.o,tail11.data.o,ov_SC04_019_jr_8015AE2C.o,tail12.data.o,ov_SC04_019_jr_8015C32C.o,tail13.data.o,ov_SC04_019_jr_8016AB6C.o,tail14.data.o,ov_SC04_019_jr_80171B4C.o,ov_SC04_019_jr_801734BC.o,tail15.data.o,ov_SC04_019_jr_801789AC.o,ov_SC04_019_jr_80178D40.o,tail16.data.o,ov_SC04_019_jr_8017A4AC.o,tail17.data.o,ov_SC04_019_jr_8017AE2C.o,tail18.data.o,ov_SC04_019_jr_80181804.o,ov_SC04_019_jr_80183E6C.o,ov_SC04_019_jr_80185D70.o,tail19.data.o,ov_SC04_019_jr_80186570.o,tail20.data.o,ov_SC04_019_jr_801878E8.o,ov_SC04_019_jr_80188E1C.o,ov_SC04_019_jr_8018CC40.o,tail21.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
ov_SC04_019_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_019.o,ov_SC04_019_jr_8012ACE0.o,tail2.data.o,ov_SC04_019_jr_80135888.o,tail3.data.o,ov_SC04_019_jr_80135A4C.o,tail4.data.o,ov_SC04_019_jr_80135D20.o,tail5.data.o,ov_SC04_019_jr_801380E0.o,ov_SC04_019_o0c.o,tail6.data.o,ov_SC04_019_jr_8013F350.o,tail7.data.o,ov_SC04_019_jr_8013FFD8.o,tail8.data.o,ov_SC04_019_jr_80140608.o,tail9.data.o,ov_SC04_019_jr_8015444C.o,ov_SC04_019_jr_80154C24.o,ov_SC04_019_jr_801588CC.o,ov_SC04_019_jr_80159C84.o,tail10.data.o,ov_SC04_019_jr_8015A3C8.o,tail11.data.o,ov_SC04_019_jr_8015AE2C.o,tail12.data.o,ov_SC04_019_jr_8015C32C.o,tail13.data.o,ov_SC04_019_jr_8016AB6C.o,tail14.data.o,ov_SC04_019_jr_80171B4C.o,ov_SC04_019_jr_801734BC.o,tail15.data.o,ov_SC04_019_jr_801789AC.o,ov_SC04_019_jr_80178D40.o,tail16.data.o,ov_SC04_019_jr_8017A4AC.o,tail17.data.o,ov_SC04_019_jr_8017AE2C.o,ov_SC04_019_jr_80181804.o,ov_SC04_019_jr_80183E6C.o,ov_SC04_019_jr_80185D70.o,tail18.data.o,ov_SC04_019_jr_80186570.o,tail19.data.o,ov_SC04_019_jr_801878E8.o,ov_SC04_019_jr_80188E1C.o,ov_SC04_019_jr_8018CC40.o,tail20.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
build/src/ov_SC04_019/ov_SC04_019.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x14
build/src/ov_SC04_019/ov_SC04_019_jr_8012ACE0.o: JTBL_PADS := 0,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0xcc,+0xe0
build/src/ov_SC04_019/ov_SC04_019_jr_80135D20.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x18
@@ -792,7 +792,7 @@ ov_SC01_084_ELF := $(ov_SC01_084_OUT).elf
ov_SC01_084_MAPFILE := $(ov_SC01_084_OUT).map
ov_SC01_084_LD_SCRIPT := $(ov_SC01_084_OUT).ld
ov_SC01_084_SPLAT_YAML := config/splat.ov_SC01_084.yaml
ov_SC01_084_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_084.o,ov_SC01_084_jr_8012ACE0.o,tail2.data.o,ov_SC01_084_jr_80135888.o,tail3.data.o,ov_SC01_084_jr_80135A4C.o,tail4.data.o,ov_SC01_084_jr_80135D20.o,tail5.data.o,ov_SC01_084_jr_801380E0.o,ov_SC01_084_o0c.o,tail6.data.o,ov_SC01_084_jr_8013F350.o,tail7.data.o,ov_SC01_084_jr_8013FFD8.o,tail8.data.o,ov_SC01_084_jr_80140608.o,tail9.data.o,ov_SC01_084_jr_8015444C.o,ov_SC01_084_jr_80154C24.o,ov_SC01_084_jr_801588CC.o,ov_SC01_084_jr_80159C84.o,tail10.data.o,ov_SC01_084_jr_8015A3C8.o,tail11.data.o,ov_SC01_084_jr_8015AE2C.o,tail12.data.o,ov_SC01_084_jr_8015C32C.o,tail13.data.o,ov_SC01_084_jr_8016AB6C.o,tail14.data.o,ov_SC01_084_jr_80171B4C.o,ov_SC01_084_jr_801734BC.o,tail15.data.o,ov_SC01_084_jr_801789AC.o,ov_SC01_084_jr_80178D40.o,tail16.data.o,ov_SC01_084_jr_8017A4AC.o,tail17.data.o,ov_SC01_084_jr_8017AE2C.o,ov_SC01_084_jr_8017CA80.o,tail18.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
ov_SC01_084_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_084.o,ov_SC01_084_jr_8012ACE0.o,tail2.data.o,ov_SC01_084_jr_80135888.o,tail3.data.o,ov_SC01_084_jr_80135A4C.o,tail4.data.o,ov_SC01_084_jr_80135D20.o,tail5.data.o,ov_SC01_084_jr_801380E0.o,ov_SC01_084_o0c.o,tail6.data.o,ov_SC01_084_jr_8013F350.o,tail7.data.o,ov_SC01_084_jr_8013FFD8.o,tail8.data.o,ov_SC01_084_jr_80140608.o,tail9.data.o,ov_SC01_084_jr_8015444C.o,ov_SC01_084_jr_80154C24.o,ov_SC01_084_jr_801588CC.o,ov_SC01_084_jr_80159C84.o,tail10.data.o,ov_SC01_084_jr_8015A3C8.o,tail11.data.o,ov_SC01_084_jr_8015AE2C.o,tail12.data.o,ov_SC01_084_jr_8015C32C.o,tail13.data.o,ov_SC01_084_jr_8016AB6C.o,tail14.data.o,ov_SC01_084_jr_80171B4C.o,ov_SC01_084_jr_801734BC.o,tail15.data.o,ov_SC01_084_jr_801789AC.o,ov_SC01_084_jr_80178D40.o,tail16.data.o,ov_SC01_084_jr_8017A4AC.o,tail17.data.o,ov_SC01_084_jr_8017AE2C.o,ov_SC01_084_jr_8017CA80.o,tail18.data.o,ov_SC01_084_jr_8017F690.o,tail19.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
build/src/ov_SC01_084/ov_SC01_084.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x14
build/src/ov_SC01_084/ov_SC01_084_jr_8012ACE0.o: JTBL_PADS := 0,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0xcc,+0xe0
build/src/ov_SC01_084/ov_SC01_084_jr_80135D20.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x18
@@ -3884,7 +3884,7 @@ build/src/ov_SC05_010/ov_SC05_010_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (
build/src/ov_SC05_010/ov_SC05_010_jr_8015AE2C.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
build/src/ov_SC05_010/ov_SC05_010_jr_8016AB6C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
build/src/ov_SC05_010/ov_SC05_010_jr_80178D40.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x178
build/src/ov_SC05_010/ov_SC05_010_jr_8017C8D0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
build/src/ov_SC05_010/ov_SC05_010_jr_8017C8D0.o: JTBL_PADS := 0 # §8e pads (jtbl_carve.py) tables=+0x0 (S62 fleet sweep: pads_audit-derived, one 8-entry table 0x9d944..0x9d964)
build/src/ov_SC05_010/ov_SC05_010_o0c.o: JTBL_PADS := 0,4,4,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x38,+0xa8,+0x118
ov_SC05_010_CHECK_SHA := config/check.ov_SC05_010.sha
ov_SC05_010_SYMBOLS := config/symbols.ov_SC05_010.txt
+6
View File
@@ -5,6 +5,7 @@ file silently breaks that (P31 S62: ov_SC03_015, ov_SC02_005 — extract rot + u
ALIGNED or the first mismatching positions. Zero-token; run after any overlays.mk or splat yaml restore."""
import re,sys
ov=sys.argv[1]
fix='--fix' in sys.argv[2:]
mk=open('config/overlays.mk').read()
m=re.search(r'^%s_JTBL_INTERLEAVE := --order (\S+)'%ov,mk,re.M)
order=m.group(1).split(',') if m else []
@@ -15,6 +16,11 @@ for a,k,n in re.findall(r'^\s*- \[0x([0-9a-fA-F]+), (\.rodata|data|bin|c), (\S+?
elif k=='.rodata': yseq.append(n+'.o')
elif k=='bin' and n=='trailing': yseq.append('trailing.o')
print('%s order n=%d yaml n=%d %s'%(ov,len(order),len(yseq),'ALIGNED' if order==yseq else 'DRIFT'))
if fix and order!=yseq and m:
# --fix: the yaml is what `make extract` splits, so the order is REGENERATED from it (never edited by hand)
new=m.group(0).replace(m.group(1),','.join(yseq))
mk2=mk.replace(m.group(0),new,1); open('config/overlays.mk','w').write(mk2)
print(' FIXED: order rewritten from the yaml (%d pieces)'%len(yseq))
for i in range(max(len(order),len(yseq))):
o=order[i] if i<len(order) else '-'; yy=yseq[i] if i<len(yseq) else '-'
if o!=yy: print(' !! %-36s | %s'%(o,yy))