Skip to content

☀️ 70% – adopt sixty-four exact owners on 175a3bdc6: eleven main-image functions and fifty-three scene sequences - #6

Open
wowwheaties wants to merge 7 commits into
PascalPixel:mainfrom
wowwheaties:wip/gs1-en-pr
Open

☀️ 70% – adopt sixty-four exact owners on 175a3bdc6: eleven main-image functions and fifty-three scene sequences#6
wowwheaties wants to merge 7 commits into
PascalPixel:mainfrom
wowwheaties:wip/gs1-en-pr

Conversation

@wowwheaties

@wowwheaties wowwheaties commented Sep 4, 2026

Copy link
Copy Markdown

Summary

Seven commits on main (175a3bd), rebased today from b873d4e. Together they install 64 exact owners main does not have — 53 overlay scene sequences and 11 main-image functions, all at differing_halfwords=0. README 67.32% → 69.94%; check progress full-C bytes 562,036 → 598,688 (41.68% → 44.40% of executable), main-image 124,932 → 127,466, overlays 437,104 → 471,222. One register entry retires (resource_37b:0200101a named two bytes of alignment padding). No owner loses its source.

Overlay owners follow the call-binding contract: legacy Func_02xxxxxx names that bind to two runtime targets in the audited extent are separated into distinct declarations (_a suffix, per the field-scene-selector precedent) and declared as absolute_symbols on each owner's translation unit. Sources install at their registered paths, the overlay assembly regions become AlchemyC_ placeholders with referenced local labels kept, and retained-region, dossier, unmatchable and recon draft records retire with the assembly.

Main-image functions went through alchemy check integrate --apply (11 accepted, 0 rejected). The compiler_zero_rematerialization_mismatch group (080b6d30, 080b9dc4) is fully refuted by ordinary C89 spellings and is removed; 080b8db8 leaves compiler_entry_scheduling_module and 080b6e7c leaves compiler_commutative_address_mismatch for the same reason.

Second commit: make candidate-corpus-check aborts at the first candidate draft whose legacy call name binds to two runtime targets; twenty-two such drafts get _a/_b declarations with runtime symbols on retained candidate units (your retained-overlay-380/-383 shape, reviewed span = overlay evidence). No production C or bytes change. Owners whose reviewed span and overlay evidence disagree, or lack evidence, are left for you (findings comment).

Third commit closes overlay 37b. Its two unregistered executable owners are recovered as exact C through alchemy decompile / diff / adopt (resource_37b:02001b44, 164 bytes; resource_37b:02000c8c, 548 bytes), and alchemy unit flatten consolidates the forty-six exact owners. The approved GCC 2.96 route cannot compile that as one file (its scheduler loops or faults once about thirty of these wrapper-heavy scene functions share a module, while every function and each half compiles, and your 61-owner scene_382.c is fine), so the overlay stays three units by role — scene_37b.c, scene_37b_steps.c, scene_37b_actor_steps.c, plus your existing scene-event-runtime unit untouched — with conflicting declarations resolved at file scope and cross-owner call-word collisions bound bare/_a with runtime symbols, your 382 style. alchemy diff --unit reports 46/46 owners exact from the shared objects. Two owners of the earlier landing had reused your existing register names (SequenceA / SequenceC) and are renamed.

Commits four to six, same method: two address-named owners renamed by evidenced role; resource_39e:02000e94 (236 bytes) and resource_3b0:02000564 (588 bytes) recovered as exact C through decompile / diff / adopt (the 3b0 owner carries _a/_b/_c call aliases with runtime symbols; adopt writes the register and retires evidence but stops at its own source check when a retained call-identity unit exists, so the unit and placeholder were finished in the tool's own output shape). Neither overlay can be flattened yet: 39e has six and 3b0 four reviewed owners still retained (listed in the commit bodies).

Commit seven: three more resource_39e owners recovered as exact C (02000104 IntegrateEffectMotion, 02000388 SceneData_SelectRecordByScene3cAndFlag895, 02001160 FieldScene_RunFiveActorBeatAndSetFlag301).

Rebase onto 175a3bd

Nothing in the branch touches tools/, so the workspace consolidation, the data-described asset build and the retired wave/family/dashboard surface apply unchanged. Conflicts were confined to the keyed registries and the generated figures: source-paths.json, translation-units.json and dossiers.json merged entry-by-entry, each surviving entry kept verbatim, and make coverage regenerated the SVGs and the README status line at each commit. The only entries that leave are the ones your own tools retire: 29 dossiers that adopt drops as their owners become exact, five 37b translation units that unit flatten absorbs (their three owners land in overlay-37b-steps), and the one padding register entry. Your overlay 376 and 385 recoveries and the seven dossiers you added are untouched; this branch works on 372, 373, 375, 377, 37b, 37f, 381, 383, 38e, 395, 396, 39a, 39e, 3a8, 3ab, 3af, 3b0, 3b1, 3b9, 3ba, 3bb, 3bc and 3bf. git diff --check is clean on every commit.

Gates (on 175a3bd)

  • make verify, test, targets, classification-check, progress-report, coverage-check: green on every commit. full ROM contract ok: gs1-en, identical=True, unowned_bytes=0.
  • alchemy check owners: owner registers ok after every adoption — 0 unmatchable, 0 sealed, 0 drafts.
  • candidate-corpus-check: fails on untouched 175a3bd at Func_02008bd8: ambiguous overlay call identity ({200c954, 200c95c}). With the second commit it runs past that group and stops at Func_0200778c ({200daac, 200dad4}) in resource_39c — same class, your code, not separated here because its reviewed span has no overlay-assembly.json evidence.
  • correspondence-check: fails identically on untouched 175a3bd at resource_385:02000cc8: ja overlay owner differs at +0x58 (c4 != b8), in the actor-presentation overlay landed today. Overlay locality otherwise reaches 3095/3139 matched here against 3042/3086 on main.

Review notes

  • Compiler here is a linux-x64 source build of the pinned agscc 5ec3e2e + agbcc da598c1 with GNU binutils 2.10 GAS as as; make verify reproduces the ROM byte-exact with it, so the digests admitted locally for linux-x64 are xgcc 8d820fc3…, cpp0 067cb31d…, tradcpp0 faeae3eb…, cc1 fc3c3172…, as 8eb4386c…, agbcc/old_agbcc 6f02c717… (Ubuntu binutils 2.42 quirk: -mfpu=softfpa objects are flagged VFP, so as is wrapped to -mfpu=fpa). Nothing in the branch changes the pinned digests.
  • Eleven more overlay owners from the earlier line remain non-exact under this pin (1–25 halfwords each; the list is in the previous findings comment) and are withheld.
  • Four exact owners are withheld because they sit inside generated_call_script_module retained regions marked proven (resource_374:02000bbc, resource_399:02000f90, resource_39e:02000658, resource_39e:0200071c); their byte-exact C is available as a refutation of those records if you want it.
  • The new CONTRIBUTING asks for related owners grouped in maintained modules rather than one-function files. 37b is already in that shape here. Say the word and I will reshape the rest of the overlays the same way instead of re-landing the per-owner form.

@wowwheaties
wowwheaties force-pushed the wip/gs1-en-pr branch 2 times, most recently from 78d0247 to d8ed831 Compare September 4, 2026 01:14
@wowwheaties wowwheaties changed the title ☀️ 67% – adopt forty-three exact owners: thirteen main-image functions and thirty scene sequences ☀️ 67% – adopt forty-seven exact owners: thirteen main-image functions and thirty-four scene sequences Sep 4, 2026
@wowwheaties wowwheaties changed the title ☀️ 67% – adopt forty-seven exact owners: thirteen main-image functions and thirty-four scene sequences ☀️ 68% – adopt seventy-six exact owners: thirteen main-image functions and sixty-three scene sequences Sep 4, 2026
@wowwheaties wowwheaties changed the title ☀️ 68% – adopt seventy-six exact owners: thirteen main-image functions and sixty-three scene sequences ☀️ 68% – adopt eighty-six exact owners: thirteen main-image functions and seventy-three scene sequences Sep 4, 2026
@wowwheaties wowwheaties changed the title ☀️ 68% – adopt eighty-six exact owners: thirteen main-image functions and seventy-three scene sequences ☀️ 69% – adopt one hundred sixty-three exact owners: thirteen main-image functions and one hundred fifty scene sequences Sep 4, 2026
@wowwheaties

Copy link
Copy Markdown
Author

Independent re-check of every overlay owner this branch adopts (152, listed from source-paths.json vs 9dbf29f), each scored one at a time with overlay score <adopted source> --owner <owner> --span <regions.json span_bytes> on 8cb65f1: 150/152 differing_halfwords=0. The other two are resource_371:02002cb4 (1146 vs registered 1148) and resource_3a6:020011a0 (182 vs 184): both are exact through their final return, and the registered span includes the alignment halfword after it (the same shape as resource_378:0200290c, adopted 1930 inside its 1932 region), so they read dh=1 at the registered span and dh=0 at the adopted one. The registry spans are left as they were.

@wowwheaties wowwheaties changed the title ☀️ 69% – adopt one hundred sixty-three exact owners: thirteen main-image functions and one hundred fifty scene sequences ☀️ 70% – adopt one hundred fifty-seven exact owners on 187bb9749: twelve main-image functions and one hundred forty-five scene sequences Sep 4, 2026
@wowwheaties wowwheaties changed the title ☀️ 70% – adopt one hundred fifty-seven exact owners on 187bb9749: twelve main-image functions and one hundred forty-five scene sequences ☀️ 70% – adopt one hundred fifty-seven exact owners on ad3f68eb7: twelve main-image functions and one hundred forty-five scene sequences Sep 4, 2026
@wowwheaties wowwheaties changed the title ☀️ 70% – adopt one hundred fifty-seven exact owners on ad3f68eb7: twelve main-image functions and one hundred forty-five scene sequences ☀️ 70% – adopt one hundred fifty-seven exact owners on c09d64ce7: twelve main-image functions and one hundred forty-five scene sequences Sep 4, 2026
@wowwheaties wowwheaties changed the title ☀️ 70% – adopt one hundred fifty-seven exact owners on c09d64ce7: twelve main-image functions and one hundred forty-five scene sequences ☀️ 70% – adopt one hundred fifty-seven exact owners on b108ba161: twelve main-image functions and one hundred forty-five scene sequences Sep 4, 2026
@wowwheaties wowwheaties changed the title ☀️ 70% – adopt one hundred fifty-seven exact owners on b108ba161: twelve main-image functions and one hundred forty-five scene sequences ☀️ 70% – adopt one hundred sixty-six exact owners on b108ba161: twelve main-image functions and one hundred fifty-four scene sequences Sep 4, 2026
@wowwheaties wowwheaties changed the title ☀️ 70% – adopt one hundred sixty-six exact owners on b108ba161: twelve main-image functions and one hundred fifty-four scene sequences ☀️ 70% – adopt one hundred sixty-six exact owners on bb5647fd4: twelve main-image functions and one hundred fifty-four scene sequences Sep 4, 2026
@wowwheaties
wowwheaties force-pushed the wip/gs1-en-pr branch 2 times, most recently from 352c3d4 to af75605 Compare September 4, 2026 15:07
@wowwheaties wowwheaties changed the title ☀️ 70% – adopt one hundred sixty-six exact owners on bb5647fd4: twelve main-image functions and one hundred fifty-four scene sequences ☀️ 70% – adopt one hundred sixty-one exact owners on 3a7184a5a: twelve main-image functions and one hundred forty-nine scene sequences Sep 4, 2026
@wowwheaties wowwheaties changed the title ☀️ 70% – adopt one hundred sixty-one exact owners on 3a7184a5a: twelve main-image functions and one hundred forty-nine scene sequences ☀️ 70% – adopt one hundred sixty-four exact owners on 3a7184a5a: twelve main-image functions and one hundred fifty-two scene sequences Sep 4, 2026
@wowwheaties wowwheaties changed the title ☀️ 70% – adopt one hundred sixty-four exact owners on 3a7184a5a: twelve main-image functions and one hundred fifty-two scene sequences ☀️ 70% – adopt one hundred sixty-six exact owners on 3a7184a5a: twelve main-image functions and one hundred fifty-four scene sequences Sep 4, 2026
@wowwheaties wowwheaties changed the title ☀️ 70% – adopt one hundred sixty-six exact owners on 3a7184a5a: twelve main-image functions and one hundred fifty-four scene sequences ☀️ 70% – adopt one hundred sixty-seven exact owners on 3a7184a5a: twelve main-image functions and one hundred fifty-five scene sequences Sep 4, 2026
@wowwheaties wowwheaties changed the title ☀️ 70% – adopt one hundred sixty-seven exact owners on 3a7184a5a: twelve main-image functions and one hundred fifty-five scene sequences ☀️ 70% – adopt one hundred sixty-eight exact owners on 3a7184a5a: twelve main-image functions and one hundred fifty-six scene sequences Sep 5, 2026
wowwheaties added a commit to wowwheaties/alchemy that referenced this pull request Sep 5, 2026
…e main-image functions and one hundred fifty-six scene sequences

Replays PR PascalPixel#6 onto 620ea96 after the unidentified-tree retirement:
the same one hundred sixty-eight exact owners (12 main-image functions,
156 overlay scene sequences) that main does not have, carried over as a
single squashed cherry-pick of the five commits that sat on 3a7184a.
Every source, assembly retirement, recon draft removal, overlay-assembly
region split and assets/code change merged without conflict; only the
four registries needed rebuilding by hand:

- source-paths.json = upstream register, minus the three name-only
  RunEventScript02 registrations with no overlay assembly evidence
  (resource_371:02001064, resource_37b:02000554, resource_3c5:0200186c)
  that sit wholly inside adopted owners, plus our 168 entries (89 new
  keys, 79 name-only keys given a source).
- dossiers.json = upstream records minus the 86 drafts these adoptions
  retire.
- README.md and the two readme SVGs regenerated by make coverage.

No compiler, flag, routing, or tool changes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@wowwheaties wowwheaties changed the title ☀️ 74% – adopt seventy exact owners on c379b6595: seven main-image functions and sixty-three scene sequences ☀️ 74% – adopt seventy-one exact owners on c379b6595: seven main-image functions and sixty-four scene sequences Sep 5, 2026
wowwheaties added a commit to wowwheaties/alchemy that referenced this pull request Sep 5, 2026
…functions and sixty-four scene sequences

PR PascalPixel#6 reduced to what main still lacks after your own harvest: every
owner main reached itself is dropped (your versions stay), leaving 64 overlay scene sequences and 7 main-image functions
that on this tip are still retained assembly or name-only registrations. Each overlay
owner was re-adopted on this tip through thumb2c adopt at its
registered span with its registered or next free sequence name. The
main-image functions are spelled Func_<address> in source with no
alias line, register under their semantic names, and retire their
games/gs1/asm and recon drafts. Retained overlay-assembly regions
around adopted owners were shortened, cloned, or retired with an
evidence line on each; name-only RunEventScript registrations wholly
inside adopted owners had no assembly evidence left and were dropped.
No compiler, flag, routing, or tool changes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@wowwheaties wowwheaties changed the title ☀️ 74% – adopt seventy-one exact owners on c379b6595: seven main-image functions and sixty-four scene sequences ☀️ 74% – adopt seventy-three exact owners on 7d8a72083: eight main-image functions and sixty-five scene sequences Sep 5, 2026
wowwheaties added a commit to wowwheaties/alchemy that referenced this pull request Sep 5, 2026
…e functions and sixty-five scene sequences

PR PascalPixel#6 reduced to what main still lacks after your own harvest: every
owner main reached itself is dropped (your versions stay), leaving 65 overlay scene sequences and 8 main-image functions
that on this tip are still retained assembly or name-only registrations. Each overlay
owner was re-adopted on this tip through thumb2c adopt at its
registered span with its registered or next free sequence name. The
main-image functions are spelled Func_<address> in source with no
alias line, register under their semantic names, and retire their
games/gs1/asm and recon drafts. Retained overlay-assembly regions
around adopted owners were shortened, cloned, or retired with an
evidence line on each; name-only RunEventScript registrations wholly
inside adopted owners had no assembly evidence left and were dropped.
No compiler, flag, routing, or tool changes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@wowwheaties
wowwheaties force-pushed the wip/gs1-en-pr branch 2 times, most recently from b88b2a7 to 4a640d6 Compare September 5, 2026 19:00
wowwheaties added a commit to wowwheaties/alchemy that referenced this pull request Sep 5, 2026
…e functions and sixty-five scene sequences

PR PascalPixel#6 reduced to what main still lacks after your own harvest: every
owner main reached itself is dropped (your versions stay), leaving 65 overlay scene sequences and 8 main-image functions
that on this tip are still retained assembly or name-only
registrations. Each overlay owner was re-adopted on this tip through
thumb2c adopt at its registered span with its registered or next free
sequence name; resource_3ba:02002aec is adopted at its 190-byte extent
inside its 192-byte region, the alignment halfword after its return
staying retained, the same shape as resource_378:0200290c. The
main-image functions are spelled Func_<address> in source with no
alias line, register under their semantic names, and retire their
games/gs1/asm and recon drafts. main:080b8db8 was recorded as a
proven-retained compiler_entry_scheduling_module (classification.json
group: the entry schedule needs forbidden register constraints); an
ordinary C89 spelling — the context parameter reassigned from the
local context block, which keeps GCC from folding the known zero into
the compared pointer — links byte-exact, so that record retires with
its assembly (expected_files 2 -> 1, expected_bytes 976 -> 708).
Retained overlay-assembly regions around adopted owners were
shortened, cloned, or retired (42 region edits, evidence line on each);
name-only RunEventScript registrations wholly inside adopted owners
had no assembly evidence left and were dropped. No compiler, flag,
routing, or tool changes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@wowwheaties wowwheaties changed the title ☀️ 74% – adopt seventy-three exact owners on 7d8a72083: eight main-image functions and sixty-five scene sequences ☀️ 74% – adopt seventy-four exact owners on 7d8a72083: eight main-image functions and sixty-six scene sequences Sep 5, 2026
wowwheaties added a commit to wowwheaties/alchemy that referenced this pull request Sep 5, 2026
… functions and sixty-six scene sequences

PR PascalPixel#6 reduced to what main still lacks after your own harvest: every
owner main reached itself is dropped (your versions stay), leaving 66 overlay scene sequences and 8 main-image functions
that on this tip are still retained assembly or name-only registrations. Each overlay
owner was re-adopted on this tip through thumb2c adopt at its
registered span with its registered or next free sequence name. The
main-image functions are spelled Func_<address> in source with no
alias line, register under their semantic names, and retire their
games/gs1/asm and recon drafts. Retained overlay-assembly regions
around adopted owners were shortened, cloned, or retired with an
evidence line on each; name-only RunEventScript registrations wholly
inside adopted owners had no assembly evidence left and were dropped.
No compiler, flag, routing, or tool changes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
wowwheaties added a commit to wowwheaties/alchemy that referenced this pull request Sep 5, 2026
… functions and sixty-six scene sequences

PR PascalPixel#6 reduced to what main still lacks after your own harvest: every
owner main reached itself is dropped (your versions stay), leaving 66 overlay scene sequences and 8 main-image functions
that on this tip are still retained assembly or name-only registrations. Each overlay
owner was re-adopted on this tip through thumb2c adopt at its
registered span with its registered or next free sequence name. The
main-image functions are spelled Func_<address> in source with no
alias line, register under their semantic names, and retire their
games/gs1/asm and recon drafts; main:080b8db8 was recorded as a
proven-retained compiler_entry_scheduling_module and an ordinary C89
spelling links byte-exact, so that classification record retires with
its assembly. resource_3ba:02002aec is adopted at its 190-byte extent
inside its 192-byte region (alignment halfword retained). Retained
overlay-assembly regions
around adopted owners were shortened, cloned, or retired with an
evidence line on each; name-only RunEventScript registrations wholly
inside adopted owners had no assembly evidence left and were dropped.
No compiler, flag, routing, or tool changes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@wowwheaties wowwheaties changed the title ☀️ 74% – adopt seventy-four exact owners on 7d8a72083: eight main-image functions and sixty-six scene sequences ☀️ 74% – adopt seventy-six exact owners on 7d8a72083: ten main-image functions and sixty-six scene sequences Sep 6, 2026
wowwheaties added a commit to wowwheaties/alchemy that referenced this pull request Sep 6, 2026
…nctions and sixty-six scene sequences

PR PascalPixel#6 reduced to what main still lacks after your own harvest: every
owner main reached itself is dropped (your versions stay), leaving 66 overlay scene sequences and 10 main-image functions
that on this tip are still retained assembly or name-only registrations. Each overlay
owner was re-adopted on this tip through thumb2c adopt at its
registered span with its registered or next free sequence name. The
main-image functions are spelled Func_<address> in source with no
alias line, register under their semantic names, and retire their
games/gs1/asm and recon drafts; main:080b8db8 was recorded as a
proven-retained compiler_entry_scheduling_module and an ordinary C89
spelling links byte-exact, so that classification record retires with
its assembly. resource_3ba:02002aec is adopted at its 190-byte extent
inside its 192-byte region (alignment halfword retained). Retained
overlay-assembly regions
around adopted owners were shortened, cloned, or retired with an
evidence line on each; name-only RunEventScript registrations wholly
inside adopted owners had no assembly evidence left and were dropped.
No compiler, flag, routing, or tool changes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@wowwheaties wowwheaties changed the title ☀️ 74% – adopt seventy-six exact owners on 7d8a72083: ten main-image functions and sixty-six scene sequences ☀️ 69% – adopt fifty exact owners on 90687df3d: ten main-image functions and forty scene sequences Sep 6, 2026
wowwheaties added a commit to wowwheaties/alchemy that referenced this pull request Sep 6, 2026
…s and forty scene sequences

PR PascalPixel#6 re-landed on main 90687df under the re-pinned agscc/agbcc
toolchain and the new overlay call-binding contract. Every owner was
re-scored on this tip: 53 still link byte-exact with no source edit; 50 land here
(40 overlay scene sequences, 10 main-image functions); the remaining
19 overlay owners from the previous PR changed bytes under the
post-reload constant-mode cselib correction (identical constant
arguments now share a register) and are withheld until they are exact. Three further exact owners
(resource_374:02000bbc, resource_39e:02000658, resource_39e:0200071c)
lie inside proven generated_call_script_module retained regions and
are withheld rather than editing that evidence; their byte-exact C is
available as a refutation of those records.

Overlay owners: legacy call names that bind to two runtime targets in
the audited extent are separated into distinct declarations (`_a`
suffix, per the field-scene-selector precedent) and declared as
absolute_symbols on each owner's translation unit; only colliding
names are declared. Sources install at their registered paths, the
overlay assembly regions become AlchemyC_ placeholders with referenced
local labels kept, and retained-region, dossier, unmatchable and recon
draft records retire with the assembly. Owners main no longer
registers were re-registered under their previous names.

Main-image functions went through `alchemy check integrate --apply`
(10 accepted, 0 rejected). The compiler_zero_rematerialization_mismatch
classification group (080b6d30, 080b9dc4) is fully refuted by ordinary
C89 spellings and is removed; 080b8db8 leaves
compiler_entry_scheduling_module for the same reason.

Gates: make verify (full gs1-en ROM byte-exact) green on this tree
with the compiler bundle built from the pinned agscc/agbcc sources and
GNU binutils 2.10 GAS on linux-x64.
@wowwheaties

Copy link
Copy Markdown
Author

Re-landed on 90687df (one commit, d2c17eb): 54 owners at differing_halfwords=0 — 44 overlay scene sequences and 10 main-image functions, README 67.95% → 68.71%, make verify green. Beyond the owners, four things from this pass may be useful to you:

1. linux-x64 admission of the restored bundle. Built from the pinned agscc 919451b + agbcc da598c1 sources with GNU binutils 2.10 GAS as as; the full gs1-en ROM is byte-identical, make test/compiler-regression-check pass. Digests from that green verify, if you want to pin them:

xgcc      8d820fc39d325880901e3a97cbdcd22f23ab0a07466badb69c4f84a0ff47aef8
cpp0      067cb31d4530fadd8e1db62f0ab9c0c56b8b1b160fa586fc2d6471ccc1dfcbe5
tradcpp0  faeae3ebdfa029ad972e30ccd7fd19797686437790d99e58aff9955b1908baa2
cc1       1a4d19ceaa06e91214134baf8e87f19a26ad5e36ad3850c266052c6860d0a526
as        8eb4386cb65b04ccfee4c9708501c981d2f0399712545844e0f376c5a3ab33df
old_agbcc 6f02c7175ab43dea778afe0aebab0c45f872cbba231c8fcde7549e8d72aef1fe

One host quirk: Ubuntu 24.04 binutils 2.42 flags -mfpu=softfpa objects as VFP (e_flags 0x604) and ld refuses to merge them with the GAS-2.10 compiler objects (0x204); -mfpu=fpa in assembly_command yields 0x204 and links. Everything else in the route was untouched.

2. Evidence on the post-reload constant-mode correction. 19 overlay owners that were exact under the previous pin changed bytes under this one, all the same way: identical constant arguments now share one register where the ROM materialises each separately. Smallest cases (both were exact before):

  • resource_371:02000c28Call4(Func_02005056, -1, -1, -1, 0): ROM movs r0,#1 … movs r1,#1; movs r2,#1; movs r3,#0; negs r1; negs r2; negs r0; now movs r0,#1; negs r0; adds r1,r0; movs r3,#0; adds r2,r1 (8 bytes shorter).
  • resource_375:0200150cCall3_120(Func_020031ca, 188 << 17, 188 << 17, 15): ROM movs r2,#188; movs r0,#15; lsls r1,r1,#17; lsls r2,r2,#17; now lsls r1,r1,#17; adds r2,r1,#0.
    HImode/(s16) respellings do not change it. If the corrected cselib is right, these 19 (and, I suspect, most of the 91 you dropped with the re-pin) are compiler-unemittable rather than mis-spelled; if the ROM is right, the correction is too eager on post-reload CONST_INT reuse. Sources for all 19 are available on request.

3. alchemy adopt cannot land colliding-name overlay C. Every scene sequence here has legacy names bound to two runtime targets (up to 17 per owner), which the contract resolves through absolute_symbols on a translation unit. But the unit cannot exist when adopt scores: an exact-c unit is rejected while the .s still owns the bytes (state disagrees with production C/assembly ownership), and a retained unit is rejected once the register has the path (is not a complete unmapped reviewed retained overlay owner), which overlay adopt --apply demands first. So no ordering works from the CLI; this PR reproduces adopt.rs by hand (register → listing-derived region lines → AlchemyC_ placeholder with referenced .L_ labels → unit → region/dossier/draft retirement → check owners). If you'd rather have that as a PR against the tool, say so.

4. Refuted records. compiler_zero_rematerialization_mismatch (080b6d30, 080b9dc4) links byte-exact from ordinary C89 and is removed here. Four further exact owners sit inside proven generated_call_script_module regions (resource_374:02000bbc, resource_399:02000f90, resource_39e:02000658, resource_39e:0200071c) and are withheld rather than editing that evidence; three call-target-mismatch residues closed by separating the colliding declarations one call site at a time, which may be worth a catalogued repair in alchemy match.

@wowwheaties

Copy link
Copy Markdown
Author

Findings from today's lanes on 90687df, for your judgement (nothing here is in the PR beyond the exact owners):

1. Register alias families. Where translation-units.json declares a colliding callee as NAME_a/NAME_b with no bare NAME, a candidate that spells the second site with the bare name or an ad-hoc _a binds both sites to the first target and shows as call-target-mismatch forever. Spelling the sites with the declared family names in site order closes it (resource_3a2:02000924 is in this PR that way). If overlay adopt is meant to rewrite bare names to the declared family, it did not for this owner; if the bare name is meant to be an error, a lint would save future drafts from the same wall.

2. A floor class blocks most of the near-exact tail. 26 owners (11.9 KB) sit at differing_halfwords ≤ 5 with wrong_instructions=0, topology equal, and a residue that is one of:

  • two independent ready instructions in the other order (a strb vs the mov r2,r8 address materialisation for the next statement — identical residue in resource_382:02001090 and resource_385:02000c1c; a movs r2,#0 vs lsls r1,r1,#7 argument setup in main:08095dd0; a hoisted ldr rN,[pc] one slot early in main:080a8578 / main:080cd260 / main:08020198);
  • a register choice for a value with one use (ldr r1 vs ldr r3 for the ident compare in main:080fa264, MPlayContinue; r2 vs r3 for the pool constant in resource_383:02001348; r0 vs r2 for a loaded compare operand in resource_3a5:020004e4);
  • the epilogue trampoline pop {r1}; bx r1 (the function returns a value the draft discarded — fixable, and worth a lint: two owners closed once the return type was corrected).
    Every source respelling we tried on the first two kinds (wrapper calls, temps, statement order, loop shape, join points, declaration order; 5–10 forms per owner, notes in the lane results) either held or regressed by re-allocating the whole block. Your scoreboard already names these classes (scheduling_floor, allocation_uncovered); the question is whether owners in this state qualify for a classification record the way compiler_zero_rematerialization_mismatch did, because that is where the remaining bytes are: of 396 fresh and re-scored drafts today, 85 are at ≤ 20 halfwords and only 7 reached 0.

3. Fresh drafts. alchemy decompile seeds for the 110 no_candidate main owners and 400 unregistered overlay owners scored between 30 and 1,100 halfwords; cheap-model passes converge within 3 passes and then stall (main: 105 rows, 0 exact). The candidate sources for every row are available if you want them as recon drafts.

Owners at ≤ 5 (dh, bytes): main:080b6d30 1/—, main:0801faa8 1/160, resource_39b:02001730 1/572, main:080fa264 2/28, resource_387:02000d68 2/64, main:080b6a60 2/128, resource_373:020032b0 2/208, main:08098848 2/268, main:08095dd0 2/460, resource_3a5:020004e4 2/936, resource_383:02001348 2/1608, resource_3a0:02000324 3/52, main:080a8578 3/140, resource_382:02001090 3/172, resource_385:02000c1c 3/172, main:080cd260 3/248, main:08021d88 4/114, main:080b0958 4/164, main:08020198 4/172, resource_3af:02001db0 4/480, main:080e0c84 4/956, resource_378:0200088c 4/4080, resource_3b1:02001978 5/144, resource_39c:020016c4 5/204.

@wowwheaties

Copy link
Copy Markdown
Author

Findings from running the full make audit set on 699b9d6 with a linux-x64 source build of the restored pin (all six ROMs present), for your judgement:

1. candidate-corpus-check aborts on the first draft with a colliding legacy call name (Func_02008bd8 in resource_380:02004260), and behind it on every later such draft, so the audit never reached the 3ax–3cx corpus. The second commit on this branch separates those names into _a/_b declarations with runtime symbols on retained candidate units (your retained-overlay-380/-383 shape), and names two intra-extent callees the reference never reaches by bl. With that the audit runs to completion: sources=280 nonexact=49 exact_retained=0 exact_unmapped=1 unverified_retained_fragments=10.

2. Twelve corpus owners cannot carry a unit under both checks. check integrate requires a unit owner's extent to equal the reviewed span in games/gs1/semantic/regions.json; build-full requires it to equal the sum of that owner's overlay-assembly.json regions. They disagree for: 371:02000c28 (2354 vs 2352), 38d:020019b0 (2060/2002), 39f:02002500 (1640/942), 3a4:02001838 (1236/1208), 3a5:0200088c (940/910), 3a8:020026c0 (2756/2710), 3b9:02001cd4 (1804/1778), 3bb:020010dc (532/508), 3bd:020013f8 (6220/6210), 3c9:020008b4 (2508/2454), 3c9:0200423c (1692/1274), 3af:02002c84 (1228/966). Ten of them the audit already skips as unverified-retained-fragment; resource_3bd:020013f8 and resource_3c9:0200423c it compiles, and their colliding names still abort it there — that boundary reconciliation is yours. resource_39c:02001c9c, resource_3b3:02002384 and resource_3ba:02000540 are the mirror case (39c shown): regions.json gives it a 160-byte retained candidate extent but overlay-assembly.json has no evidence for it, so build-full rejects any unit (has no overlay assembly evidence) while the audit compiles its draft and aborts on Func_0200778c ({200daac, 200dad4}). Until those records exist the corpus audit stops at 39c; with temporary units for all three it ran to completion (that is where the numbers above come from). resource_3af:02002c84 also names four callees by their own resource address (Func_02000bb8 …) instead of the reference call word, and 0x020039ec is reached from six differently named sites, so it needs the same per-site treatment.

3. exact_unmapped=1: resource_37a:02001be8. Its byte-exact C moved back to the corpus in 699b9d6; the audit flags it as an exact candidate without a placeholder.

4. correspondence-check fails on your new owner resource_3c5:02001b10 (FieldScene_RunActorEventSequence): ja overlay owner differs at +0x400 (2f != b8) while cross-edition --span 2396 reports core_identical=yes for all six editions. Same result on your untouched tip here, so either a JA dump difference (all six ROMs here are header version 0) or a symbol whose EN address is not among the paired call targets.

5. Environment notes for make test / make audit on a fresh host: dashboard-server tests::music_client_regressions needs bun on PATH; family_m2c tests need upstream m2c cloned into m2c/; three families/waves tests read out/gs1-en/reports/compiler-families.json, which make families produces but audit orders after test.

… functions and forty-six scene sequences

PR PascalPixel#6 re-landed on main b873d4e (agscc 5ec3e2e unchanged). Five owners
of the previous landing are now main's own recovered modules
(resource_3a2:02000924, :02000ac0, :02000b2c, :02000c30 in
scene-actor-events and resource_3ad:02001760 in scene-party-departure)
and drop out; every remaining owner was re-scored on this tip with a
linux-x64 source build of the pinned compilers and links byte-exact
with no source edit. 57 land here (46 overlay scene sequences, 11
main-image functions). Four further exact owners (resource_374:02000bbc,
resource_399:02000f90, resource_39e:02000658, resource_39e:0200071c)
lie inside proven generated_call_script_module retained regions and
are withheld rather than editing that evidence.

Overlay owners: legacy call names that bind to two runtime targets in
the audited extent are separated into distinct declarations (`_a`
suffix, per the field-scene-selector precedent) and declared as
absolute_symbols on each owner's translation unit; only colliding
names are declared. Sources install at their registered paths, the
overlay assembly regions become AlchemyC_ placeholders with referenced
local labels kept, and retained-region, dossier, unmatchable and recon
draft records retire with the assembly. Owners main no longer
registers were re-registered under their previous names.

Main-image functions went through `alchemy check integrate --apply`
(11 accepted, 0 rejected). The compiler_zero_rematerialization_mismatch
classification group (080b6d30, 080b9dc4) is fully refuted by ordinary
C89 spellings and is removed; 080b8db8 leaves
compiler_entry_scheduling_module and 080b6e7c leaves
compiler_commutative_address_mismatch for the same reason.

Gates: make verify (full gs1-en ROM byte-exact) green on this tree
with the compiler bundle built from the pinned agscc 5ec3e2e / agbcc
da598c1 sources and GNU binutils 2.10 GAS on linux-x64.
…didate drafts

`make candidate-corpus-check` on b873d4e aborts at the first candidate
draft whose legacy call name binds to two runtime targets in its audited
extent (Func_02008bd8 in resource_380:02004260), and behind it at every
further draft with the same defect. Per the call-binding contract each
colliding name is separated into distinct C declarations (`_a`, `_b`, …
in reference call-site order) and its runtime symbols are declared on a
retained candidate unit, following the existing retained-overlay-380 /
retained-overlay-383 precedent; the intra-extent callees of
resource_3b7:02000e5c and resource_3bd:0200109c, which the reference
never reaches by `bl`, are declared at the loader runtime base.
Twenty-two drafts change and twenty-two
`retained-overlay-<overlay>-<entry>-call-identity` units are declared,
each with the reviewed span from games/gs1/semantic/regions.json as its
owner extent, which also equals its overlay-assembly evidence. Drafts
that already carry a partial separation on an existing unit are
untouched, and so are the owners whose reviewed span and overlay
evidence disagree or whose evidence is absent (no unit can satisfy both
`check integrate` and `build-full` there; listed in the PR).
resource_38f:020008ec had no registered owner and is registered
name-only under the adopt route's derived name so its unit can be
declared. Where a draft spells fewer calls than the reference has sites
for a name, the spelled calls bind to the leading sites and every
site's symbol is still declared; those drafts stay non-exact
candidates, as before.

No production C, owner source paths, coverage, or ROM bytes change.
Recover the two unregistered executable owners of resource_37b as exact
C under the approved route and flatten the wholly exact overlay into one
module. resource_37b:02001b44 (164 bytes, SceneActor_PlaceActorPairAtCells)
clears an actor flag and places an actor and a second cell pair through
the shared scene runtime; its two constant-argument calls pass their
operands through an inline call wrapper so the constants reach the
argument registers unshared. resource_37b:02000c8c (548 bytes,
FieldScene_RunPanAndBurstSequence) saves the camera pointer cell at
0x03001e70, pans the copied camera record by 0x10000 per step in the
direction selected by the record's third word against 0xb30000, runs
three timed burst loops, and pans back; its loops compare against the
bound with `!=` so the counters stay counting up as the reference does,
and Func_020031a8 / Func_020031bc / Func_02003214 bind to two runtime
targets each and are separated into `_a`/`_b` declarations with explicit
runtime symbols. The register entry resource_37b:0200101a named two
bytes of alignment padding (overlay-assembly evidence
alignment_padding) and is retired. `alchemy unit flatten gs1
resource_37b` consolidates the forty-six exact owners; the approved
GCC 2.96 route cannot compile that single module (its scheduler loops
or faults once about thirty of these wrapper-heavy scene functions
share one file, while every function and each half compiles), so the
overlay stays three compilation units by role: overlays/scene_script/
scene_37b.c (overlay-37b-unit, the scene sequences), scene_37b_steps.c
(overlay-37b-steps, the guarded and five-value steps) and
scene_37b_actor_steps.c (overlay-37b-actor-steps, actor and table
helpers), and the existing scene-event-runtime unit keeps its five
accessor owners and file since the tooling's regression fixture names
it. Conflicting per-file declarations are resolved once at file
scope, call words that bind to two runtime targets across owners keep
the bare name for one owner and a `_a` alias for the other with both
runtime symbols declared on the unit, and two owners of the earlier
landing that reused existing register names (FieldScene_RunScene37b
SequenceA / SequenceC) are renamed FieldScene_RunExtendedCameraSequence
and FieldScene_CueActorTwoWhenCell13_7. Every owner links byte-exact
from its shared object.

Checks run: alchemy diff (both recovered owners differing_halfwords=0),
alchemy adopt (02001b44), owner registers ok, alchemy unit flatten
--apply, alchemy diff --unit on all three units (46/46 exact), make
build-full, make verify.
Two overlay scene owners still carried address-derived register names and
address filenames from an earlier landing. Neither is a name the evidence
supports, and CONTRIBUTING keeps addresses in the owner register and the
ABI alias, not in names or paths.

resource_3af:02000c28 selects a cue record from the scene selector word and
runs it, so it becomes FieldScene_RunCueBySceneSelector at
overlays/scene_primary_script/run_cue_by_scene_selector.c.

resource_3a8:02001ed8 scales an actor pair and then raises the prompt, so it
becomes FieldScene_ScaleActorPairAndPrompt at
overlays/scene_primary_script/scale_actor_pair_and_prompt.c.

Each owner's register entry, translation-unit source path and the definition
in its source moved together; the `#define <Name> Func_<address>` line stays
as the ABI alias it is.

Checks: make coverage, make verify.
resource_39e:02000e94 (236 bytes, FieldScene_RunPrimarySequence) is the last
non-exact registered owner of the Xian school-and-rooftops overlay. It takes
scene record 19, steps the shared runtime four times with a decreasing step
count while lifting the record's 0x10 word by 0x10000 and pinning its 0x40
word, clears the display halfword at 0x1e of the record referenced from 0x50,
lifts the same word by 0x180000, raises cue 227 and spawns four effects
through the overlay's four SpawnEffect veneers at 0x02001040, 0x02001058,
0x0200107a and 0x02001096.

The reference reloads the lift word after the halfword store instead of
reusing the value the loop left in a register, and it materialises the lift
constant only after that reload; a plain read is common-subexpression
eliminated with the loop's last store and reorders that constant, so the
cleared display halfword and the lift that follows it are `volatile` and
nothing else is. The four spawn calls pass their record reads directly, which
is what leaves the second argument loaded last at every site. The halfword is
stored from an `s32` zero so it shares the zero the stack arguments use
instead of taking a pool word.

`alchemy diff --owner resource_39e:02000e94 --align` reports
differing_halfwords=0 over the reviewed 236-byte extent and `alchemy adopt`
installs it, retiring the region's `structured_scene_module` entry, its
dossier and the recon draft. The overlay is not yet closed: 2716 executable
bytes of resource_39e remain unresolved, so `alchemy unit flatten gs1
resource_39e` still refuses the module.

`alchemy adopt` also rewrote games/gs1/recon/en/dossiers.json in its canonical
one-line form, which is the form on main; an earlier commit on this branch had
expanded it.

Checks: alchemy build full (byte-identical), make coverage, make verify,
make test. make candidate-corpus-check still stops at the pre-existing
resource_39c:02001c9c gap (Func_0200778c ambiguous overlay call identity).
resource_3b0:02000564 (588 bytes, FieldScene_RunFourActorStagingSequence) was
the overlay's only owner still outside ordinary C. It reads the scene record
through the pointer cell at 0x03001e70, opens the scene at state 0x203,
publishes the record's first two words to the shared cells 0x02009938 and
0x0200993c, stages actor 9 and then actors 10, 11 and 12 at 0x500000 by
0xd20000, gives each of the three the same 0x8000 scale words at 0x18 and
0x1c and the same per-frame updater at 0x6c, sets their facings, targets and
timings, and leaves the scene at state 0x202.

The word stored at 0x6c is the Thumb pointer to this overlay's own
OverlayObject_Add160ToFields18And1c at 0x020080a5, not an opaque constant.
Spelling it as that function's address through its `Func_020000a4` ABI alias
is also what reproduces the reference schedule: a bare pool constant is
created after the 0x8000 scale constant and the scheduler then hoists its load
ahead of it, while the symbol reference is created before it, as the reference
has it.

Three legacy call names reach more than one runtime target from this owner
(Func_0200178a two, Func_0200190c three, Func_02001914 two), so they are
declared separately as `_a`, `_b` and `_c` with explicit runtime symbols, as
the overlay's sibling owners already do.

`alchemy diff --owner resource_3b0:02000564 --align` and `alchemy diff --unit`
both report differing_halfwords=0 over the reviewed 588-byte extent, and
`alchemy build full` stays byte-identical. `alchemy adopt` registered the
owner and retired the region's `structured_scene_module` entry, its dossier
and the recon draft, but stopped before rewriting the overlay assembly because
the owner's retained call-identity translation unit still named the draft it
had just removed; that unit is now the production unit for this source
(exact-c, its call-identity symbols kept and the ABI alias binding added) and
the assembly region carries the `AlchemyC_02000564` placeholder the tool emits.

The overlay is still not closed: 502 executable bytes remain unresolved and
four reviewed owners are unadopted, at 0x02000030 (76 bytes), 0x020000c0
(192), 0x02000240 (452) and 0x020010a0 (144), so `alchemy unit flatten gs1
resource_3b0` still refuses the module.

Checks: alchemy build full (byte-identical), alchemy check owners, make
coverage, make verify, make test. make candidate-corpus-check still stops at
the pre-existing resource_39c:02001c9c gap (Func_0200778c ambiguous overlay
call identity).
resource_39e:02000104 (54 bytes, IntegrateEffectMotion) is the per-frame
integrator of the overlay's scene effects: it adds the three velocity words
at 0x44-0x4c into the position words at 0x08-0x10, the two rate words at
0x30 and 0x34 into the accumulators at 0x18 and 0x1c, and the step at 0x64
into the sprite angle at 0x1e of the object the record points to at 0x50.
resource_3b2:02000da4 is the longer sibling with the velocity decay; its
effect and sprite layout is reused here rather than rederived. The sprite
pointer load must stay below the 0x1c store, and the approved GCC only keeps
it there when both references are volatile: its scheduler drops a
store-to-load dependence unless the pending write and the read are both
volatile, so exactly that pair carries the qualifier and nothing else does.

resource_39e:02000388 (140 bytes, SceneData_SelectRecordByScene3cAndFlag895)
is a scene-record selector of the same family as
SceneData_SelectRecordByScene21: the published word at Data_02000240 + 448
selects the record at 0x0200c8f0, the word at + 450 selects 0x0200cae8, and
the fall-through arm primes the record at 0x0200c998 with cue 0x895 at 0x7a,
0xaa, 0x10a and 0x122 and the two fixed words at 0xc8 and 0xd0 when story
flag 0x895 is already set, then announces it with Func_020047dc. The record
is reached through a pointer, not through the symbol with constant offsets:
the reference keeps the plain base in a register and walks it with `adds`,
while symbol-plus-offset spellings fold each field into its own pool word.
The flag id reaches the test through an inline call wrapper, which is what
leaves it out of the block's shared constants and reloads it for the stores.

resource_39e:02001160 (384 bytes, FieldScene_RunFiveActorBeatAndSetFlag301)
attaches actors 13, 14, 15, 16 and 18 to scene 19, plays dialogue 0x187a
over their moves, faces and camera cues, settles the record's fields at 0x0c,
0x3c and 0x18, shows the sprite halfword at 0x1e, and closes by setting story
flag 0x301. Four legacy call names reach two runtime targets each from this
owner (Func_020055f0, Func_02005674, Func_02005680 and Func_02005696), so
each is declared twice with an `_a` alias and both runtime symbols are
declared in its translation unit, as the overlay's sibling owners already do.
`alchemy adopt` scores, registers, installs and retires through that unit but
cannot rewrite the overlay assembly for a colliding-name owner: the unit it
needs is invalid while the assembly still owns the bytes. The unit is the
production unit for this source (exact-c, its call-identity symbols kept) and
the assembly region carries the `AlchemyC_02001160` placeholder in the shape
the tool emits, checked by `alchemy overlay audit resource_39e`.

The overlay is not closed. Six reviewed owners remain outside ordinary C and
none of them can be adopted through the current records:

  - 0x02000518 (320), 0x02000658 (196) and 0x0200071c (928) are covered by
    the retained region resource_39e:0200064c (1090 bytes,
    structured_scene_module, strong). It starts twelve bytes inside
    0x02000518's reviewed span and ends inside 0x0200071c's, so it lies
    wholly inside no owner and adoption refuses all three pending a boundary
    audit. Byte-exact C already exists for 0x02000658 and 0x0200071c.
  - 0x02000cd4 (198), 0x02000f80 (156) and 0x0200102c (282) have reviewed
    spans that their own evidence records as excluding their literal pools
    (0x02000d9c-0x02000db3, 0x0200101c-0x0200102b and
    0x02001148-0x0200115f). Compiled C emits its pool inside the function,
    so no candidate can be as short as the recorded extent: the decompiled
    draft of 0x02000cd4 is 224 bytes against a reviewed 198. A `--span` may
    not grow to fit a candidate, so these three are blocked pending the same
    boundary audit.

2140 executable bytes of resource_39e remain unresolved, so `alchemy unit
flatten gs1 resource_39e` still refuses the module.

Checks: alchemy build full (byte-identical), alchemy overlay audit
resource_39e, alchemy check owners, make coverage, make verify, make test.
make candidate-corpus-check still stops at the pre-existing
resource_39c:02001c9c gap (Func_0200778c ambiguous overlay call identity).
@wowwheaties

Copy link
Copy Markdown
Author

Rebased onto 175a3bd and re-verified there; the PR is mergeable again and the body is updated with the new numbers.

Nothing in the branch touches tools/, so the workspace consolidation, the data-described asset build and the retired wave/family/dashboard surface applied unchanged. Conflicts were only in the keyed registries and the generated figures. source-paths.json, translation-units.json and dossiers.json were merged entry-by-entry rather than by text, so every surviving upstream entry is byte-identical to yours, and make coverage regenerated the SVGs and the README status line at each of the seven commits. The only entries that leave are the ones your own tools retire: 29 dossiers adopt drops as owners become exact, five 37b translation units unit flatten absorbs (their three owners land in overlay-37b-steps), and the one register entry that named two bytes of alignment padding. Your 376 and 385 recoveries and the seven dossiers you added today are untouched. git diff --check is now clean on every commit.

On 175a3bd: 64 exact owners, README 67.32% → 69.94%, full-C bytes 562,036 → 598,688. make verify, test, targets, classification-check, progress-report and coverage-check are green on every commit.

Two audit gates still fail, both identically on untouched 175a3bd:

  • correspondence-check stops at resource_385:02000cc8: ja overlay owner differs at +0x58 (c4 != b8), in the actor-presentation overlay you landed today. Overlay locality otherwise reaches 3095/3139 matched here against 3042/3086 on main.
  • candidate-corpus-check stops on main at Func_02008bd8: ambiguous overlay call identity ({200c954, 200c95c}). With the second commit here it runs past that group and stops at Func_0200778c ({200daac, 200dad4}) in resource_39c — same class, but its reviewed span has no overlay-assembly.json evidence, so I left it for you rather than guess the split.

The new CONTRIBUTING asks for related owners grouped in maintained modules instead of one-function files. Overlay 37b is already in that shape here. Say the word and I will reshape the remaining overlays the same way rather than re-landing the per-owner form.

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