Files
BFM-decomp/config/wave_exclude.txt
T
Drew T aaed146bb2 fix(docs): restore §429 which I deleted, and retract a false accusation in §434
TWO REAL DEFECTS I INTRODUCED, both found by the audit:

1. §429 WAS SILENTLY DELETED. My §428a rewrite (commit:3659) wrote t[:start]+new instead of
   t[:start]+new+t[end:], truncating everything below §428a. §429 ('every held pointer
   needs its own local') was the casualty and had been gone for the rest of the session.
   Restored verbatim from commit:3658, between §428a and §430. All of 426-434 now present;
   index 1103 sections.

2. §434 ACCUSED AN AGENT OF INVENTING ITS CITATION OF §265. §265 exists and says exactly
   what the agent said — 'THE VERBATIM-ASM BANK LANE: A FUNCTION NO -O2 C CAN EVER MATCH
   BANKS AS A RAW __asm__ BODY' — with four named byte-banked precedents. I ran
   cookbook_index --resolve 265, which resolves a LINE number not a section, and believed
   it without opening §265. Retracted in the section itself.

   The verdict also needed narrowing: gated, the §265 transcription of SaveLoadRoutine is
   BYTE-IDENTICAL for the function itself and fails only because substituting one half of
   the shared frame moves 3,989 bytes across 262 symbols. True statement: neither can bank
   SEPARATELY; the route is to transcribe/resegment the PAIR together via §265. The
   exclude entries now say 'excluded from DRAWS only' and name that route, instead of
   reading as 'unmatchable'.

I also mis-read the draft as containing INCLUDE_ASM by grepping raw text — all three hits
were in comments. Sixth instance this session of reading prose as code.
2026-09-02 17:05:44 -06:00

50 lines
4.6 KiB
Plaintext

# config/wave_exclude.txt — THE canonical wave exclude list. (P31 S72)
#
# There were NINE session-snapshot exclude files and SEVEN walls ledgers under .run/, with no way
# to tell which was current. This is the one, it is TRACKED, and it is regenerated, not hand-edited:
#
# tools/exclude_audit.py config/wave_exclude.txt --write config/wave_exclude.txt.new
#
# `draw_waves --exclude-file config/wave_exclude.txt` AUDITS it first and REFUSES to draw if any
# entry is stale (--exclude-stale-ok overrides, loudly). Regenerate as part of every tool fix: an
# exclude list records what the TOOLING could not do, and becomes a list of work you decided not to
# do the moment the tooling improves. Measured on its predecessor one day after it was written:
# 88 of 107 entries stale, 46 of them open drawable functions totalling 12,750 instructions.
#
# TWO CLASSES:
# CARVE-BLOCKED — DERIVED (tools/split_indicator.py). Disappears when the subseg is split.
# WALL — CURATED. Cannot be re-derived, which is why this file is tracked. The `# WALL:`
# annotation is re-read as a PIN by exclude_audit.parse, so a wall survives
# regeneration; its note is its refutation list — what was measured and found
# inert — so keep it, and beat it before reopening the entry.
#
# NOT INCLUDED: .run/t3wall_list.txt (99 BARE function names, no binary). R48 — the same name is a
# different function in another overlay, so a bare-name exclude over-excludes silently fleet-wide.
main:PopMatrix # WALL: compiler wall (merged from S68_walls_332.txt)
main:PushMatrix # WALL: compiler wall (merged from S68_walls_332.txt)
main:func_8005D9C4 # WALL: no jump table — curated compiler fact, not a tooling limit
main:func_8005ECC0 # WALL: no jump table — curated compiler fact, not a tooling limit
main:func_8005F0C8 # WALL: compiler wall (merged from S68_walls.txt)
main:func_80062144 # WALL: no jump table — curated compiler fact, not a tooling limit
md_MAIN_034:func_800CB00C # WALL: compiler wall (merged from S68_walls_332.txt)
ov_SC01_084:func_80182328 # CARVE-BLOCKED: ov_SC01_084_jr_8017F690 owns >1 raw jtbl span — needs a split
ov_SC01_084:func_80182A00 # CARVE-BLOCKED: ov_SC01_084_jr_8017F690 owns >1 raw jtbl span — needs a split
ov_SC02_005:func_80185060 # CARVE-BLOCKED: ov_SC02_005_jr_80181D30 owns >1 raw jtbl span — needs a split
ov_SC02_005:func_80185E80 # CARVE-BLOCKED: ov_SC02_005_jr_80181D30 owns >1 raw jtbl span — needs a split
ov_SC02_011:func_80183178 # CARVE-BLOCKED: ov_SC02_011_jr_8017AE2C owns >1 raw jtbl span — needs a split
ov_SC02_011:func_80183630 # CARVE-BLOCKED: ov_SC02_011_jr_8017AE2C owns >1 raw jtbl span — needs a split
ov_SC02_011:func_8018418C # CARVE-BLOCKED: ov_SC02_011_jr_8017AE2C owns >1 raw jtbl span — needs a split
ov_SC02_011:func_80188E3C # CARVE-BLOCKED: ov_SC02_011_jr_8017AE2C owns >1 raw jtbl span — needs a split
ov_SC03_105:func_801806F8 # CARVE-BLOCKED: ov_SC03_105_jr_8017C8D0 owns >1 raw jtbl span — needs a split
ov_SC03_105:func_80180ABC # CARVE-BLOCKED: ov_SC03_105_jr_8017C8D0 owns >1 raw jtbl span — needs a split
ov_SC03_105:func_80180EC0 # CARVE-BLOCKED: ov_SC03_105_jr_8017C8D0 owns >1 raw jtbl span — needs a split
ov_SC03_105:func_801813BC # CARVE-BLOCKED: ov_SC03_105_jr_8017C8D0 owns >1 raw jtbl span — needs a split
ov_SC03_105:func_801818E8 # CARVE-BLOCKED: ov_SC03_105_jr_8017C8D0 owns >1 raw jtbl span — needs a split
ov_SC03_105:func_80181C84 # CARVE-BLOCKED: ov_SC03_105_jr_8017C8D0 owns >1 raw jtbl span — needs a split
ov_SC03_105:func_801834A4 # WALL: loop.c movable ordering, closeness 6 (S71)
ov_SC03_105:func_8018624C # CARVE-BLOCKED: ov_SC03_105_jr_8017C8D0 owns >1 raw jtbl span — needs a split
ov_SC03_105:func_801867D0 # CARVE-BLOCKED: ov_SC03_105_jr_8017C8D0 owns >1 raw jtbl span — needs a split
ov_SC06_022:func_8017DF28 # WALL: expand_block_move copy_addr_to_reg pseudo + cse reuse, closeness 2 (S71)
main:func_8002B0B4 # WALL: §179-C/§434 — no epilogue; every exit is a raw j/jr into labels inside SaveLoadRoutine, with which it shares one 0x40 frame. Same route as its twin: the §265 pair transcription, not a per-function draft. Excluded from DRAWS only.
main:SaveLoadRoutine # WALL: §296/§434 — SaveLoadRoutine (1139) and func_8002B0B4 (76) are ONE 0x40 frame across two symbols. NOT unmatchable: the §265 verbatim-asm lane transcribes SaveLoadRoutine BYTE-IDENTICAL (measured S73); it fails the whole-binary gate only because substituting one alone moves 3,989 bytes across 262 symbols of the shared frame. Route = transcribe/resegment the PAIR TOGETHER (§265), not a per-function draft. Excluded from DRAWS only.