Skip to content

Replace 117 overlay edits with repaired function records and retire no-op records - #1802

Merged
foxtacles merged 6 commits into
isledecomp:masterfrom
foxtacles:overlay-edit-cleanup-2-2026-09-09
Sep 10, 2026
Merged

foxtacles merged 6 commits into
isledecomp:masterfrom
foxtacles:overlay-edit-cleanup-2-2026-09-09

Conversation

@foxtacles

@foxtacles foxtacles commented Sep 10, 2026

Copy link
Copy Markdown
Member

This continues #1801 and lowers the ReproBit intervention cost from 65,428 to 58,553 (−6,875) by replacing effective-source edits with function records that repair finds on its own.

Method. Every file with effective-source edits was compiled with all its edits, with each single edit removed, and with none; the objects were compared strictly outside the debug sections. An edit whose removal changes nothing but function bodies (no data, exception-table or section-order difference) is a candidate: the edit is removed and rbit repair re-finds the affected bodies with declaration carriers, which cost 1 point instead of 100. Files where the candidate set removed together was still bodies-only were batched; files where repair found no carrier for some function keep their edits.

Commits.

  • 51 edits in 35 record-free files (repair re-found 76 functions, 73 records). 65,428 → 63,082.
  • 30 edits in 13 files holding only cheap records (28 records updated). 63,082 → 60,971.
  • 31 edits in 18 files, partial removals of the declaration carriers only, the edits that pin data or section order stay (40 records updated, one source layout adjusted). 60,971 → 59,063.
  • 3 more edits and six records that had become no-ops (their functions are exact without a carrier), with two donors left without a consumer. 59,063 → 58,678.
  • isle.cpp and act3.cpp lose their last declaration carriers (6 records updated). 58,678 → 58,553.

Tried and refused, so the campaign stops here. Retiring an expensive record so the widened discovery could re-author it (the 500-point mosaics of VTable0x30 and LinkEdgesAndFaces, the 250-point rewrite of FUN_10061010): repair finds no fresh carrier state that reproduces those bodies and does not author rewriting records from scratch. Removing the remaining carriers of files that hold rewriting or mosaic records (legonavcontroller, legoroi, legolod, legoanimationmanager, legocharactermanager): the rewrite bodies move and the same gap applies. Moving FindSoundByKey's owning-key constructor into the real source: its header declaration shifts the line tables of legosoundmanager.cpp, whose _Tree::_Erase is a register-bijection record, a family without a measured-pin repair.

Kept on purpose. Semantic edits (noop_assign, local_ids, assert_reseat and the like) are never removed: they carry claims. Files whose functions no carrier reproduced keep their edits: legospline, mxbitmap, mxcontrolpresenter, doors, legotexturepresenter, legoracers, mxmain, legoracespecial, legopathactor, mxdiskstreamcontroller, legovideomanager (its Tickle is a register-bijection record, a family without a measured-pin repair), legosoundmanager, act3actors (the Brickster rewrite moves), and the dual-target mxdirectx files.

ReproBit. Three fixes landed on its master during this round: 1f974d2 (the streamed probe progress overran its planned upper bound when in-flight compiles landed after the plan was reached), ca5cf38 (a record re-authored to itself is a restatement, not a remove-and-add of one identifier) and 059ae01 (a rediscovered saved carrier is never re-added). The PR pins ReproBit 0.2.2, which carries these fixes; verify itself is unchanged.

A cold rbit verify on the final tree is byte-identical for all three targets with a clean authenticity verdict.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Go9hpkbGxzV6BU1BEsWs9E

foxtacles and others added 5 commits September 9, 2026 19:15
A census of the effective-source edits (each file compiled with all its
edits, with one removed, and with none; objects compared strictly
outside the debug sections) found 35 files whose edits change nothing
but function bodies: no data, exception table or section-order
difference. Their 51 edits are removed and rbit repair re-found the 76
affected functions with newly discovered declaration carriers (73
function records on cheap donors, 1,560 choices tested). A cold verify
is byte-identical for all three targets with a clean authenticity
verdict. Cost 65,428 -> 63,082.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Go9hpkbGxzV6BU1BEsWs9E
Thirteen files that hold only cheap equal-body and same-slot records
lose all their effective-source edits: act2actor, ambulance, infocenter,
islepathactor, legoanimmmpresenter, legocarbuildpresenter,
legomodelpresenter, mxatom, mxmusicmanager, mxnotificationmanager,
mxvideomanager, raceskel and score. Their objects differ without the
edits only in function bodies, and rbit repair re-found those bodies
with newly discovered declaration carriers (28 function records
updated, 1,617 choices tested). Files whose functions no carrier
reproduced (doors, legotexturepresenter, mxcontrolpresenter,
legovideomanager) keep their edits. A cold verify is byte-identical for
all three targets with a clean authenticity verdict. Cost 63,082 ->
60,971.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Go9hpkbGxzV6BU1BEsWs9E
Eighteen files keep the effective-source edits that pin their data or
section order and lose the declaration carriers whose removal changes
only function bodies: buildings, helicopter, hospital, legoanim,
legogamestate, legoobjectfactory, legotree, legoutils,
legoworldpresenter, mxdsmultiaction, mxmediapresenter, mxregion,
mxstillpresenter, mxstreamcontroller, mxvariabletable, registrationbook
and towtrack partially, mxticklemanager entirely. Each file's candidate
set was first checked removed together (objects identical outside the
function bodies), then rbit repair re-found the bodies with newly
discovered carriers in sixteen passes (40 function records updated, one
source layout adjusted, 4,211 choices tested). Files whose functions no
carrier reproduced keep their edits. A cold verify is byte-identical for
all three targets with a clean authenticity verdict. Cost 60,971 ->
59,063.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Go9hpkbGxzV6BU1BEsWs9E
Six function records had become no-ops after the earlier removals: the
composed body already equals the compiler's own output for ~RaceSkel,
the InfocenterState constructor, LegoAnimNodeData::GetRotation,
TowTrack::HandlePathStruct, LegoGameState::History::WriteScoreHistory
and MxStillPresenter::LoadFrame. They are retired together with the two
donors left without a consumer, and act3, legocachesoundmanager and
mxtransitionmanager each lose one declaration carrier; rbit repair
re-found the affected bodies in five passes. A cold verify is
byte-identical for all three targets with a clean authenticity verdict.
Cost 59,063 -> 58,678.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Go9hpkbGxzV6BU1BEsWs9E
Both files kept one declaration carrier whose removal changes only
function bodies; rbit repair re-found those bodies with existing and
newly discovered compiler choices (6 function records updated, 96
choices tested). A cold verify is byte-identical for all three targets
with a clean authenticity verdict. Cost 58,678 -> 58,553.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Go9hpkbGxzV6BU1BEsWs9E
@foxtacles foxtacles changed the title Replace 115 overlay edits with repaired function records and retire no-op records Replace 117 overlay edits with repaired function records and retire no-op records Sep 10, 2026
The release carries the repair fixes made while replacing overlay edits
with function records (streamed probe progress overrun, a record
re-authored to itself, a rediscovered saved carrier added twice) and the
wider repair discovery; verify itself is unchanged.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Go9hpkbGxzV6BU1BEsWs9E
@foxtacles
foxtacles merged commit 563915f into isledecomp:master Sep 10, 2026
13 checks passed
@foxtacles
foxtacles deleted the overlay-edit-cleanup-2-2026-09-09 branch September 10, 2026 15:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant