Files
Cesarus85--mjolnir-vr/docs/object_matching_logs/sound_classes_obj.md
T
Jonas VolmanandClaude Fable 5 dd2c9e0f0d Match sound classes object
Reapply the historical Claude-assisted return-expression live-range lever, correct sound_class_data ownership, and record strict relocated-data evidence.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-20 11:05:26 -07:00

71 lines
3.6 KiB
Markdown

# `source/sound/sound_classes.obj` strategy ledger
## Strict closeout
- Compiler: XDK 3911 `CL.Exe` 13.00.9254.1 with
`/O2 /Oy- /DDEBUG /Dxbox`.
- January target: `build/split/source/sound/sound_classes.obj`.
- All 12 functions pass the strict COFF comparator: 1,104 padded code bytes
and 64 relocations.
- All 38 target-owned non-code sections are accepted: 3,319 logical bytes
and 51 relocations. Thirty-seven sections are strict fingerprint matches;
`_sound_classes` has identical normalized bytes and independently resolved
relocation destinations, with its csplit string-owner attribution recorded
in `config/semantic_data_matches.json`.
- `_sound_class_data` is now the target's undefined external record rather
than a candidate-only four-byte COMMON definition.
The final lookup lever is source-faithful and defined C. The local
`definition` pointer remains for both field assertions, while the final return
re-forms the same proven element as `&sound_classes[class_index]`. Keeping the
index live through the return gives VC7 the January ESI-index/EDI-definition
allocation. `_sound_class_get` is exactly 208 padded bytes, 18 relocations,
and normalized SHA-256
`94cb85335dd2d7a8df3858d5f19def3472fc2fe6869825370127078f852d65a0`.
The object is admitted as `Matching`, and its former parked entry is removed.
Future changes must preserve all 12 function fingerprints, all 38 accepted
target-owned data sections, and the complete rebuilt symbol inventory.
This is a retroactive ledger for work completed before per-object logs became
mandatory. It records only evidence preserved in Git, `config/parked.json`,
source comments, and the current progress report. Per-experiment hashes that
were not retained by the original lane are not invented here.
## Historical scope and baseline
- Compiler: XDK 3911 `CL.Exe` 13.00.9254.1,
`/O2 /Oy- /DDEBUG /Dxbox`.
- January target: `build/split/source/sound/sound_classes.obj`.
- Pre-closeout ordinary inventory: 11/12 functions exact; 787/980 meaningful code
bytes credited.
- `_sound_class_get` was the only code residual.
- Ordinary non-code report: `.rdata` 932/932 bytes; `.data` is 2,452 bytes at
96.32953%. The object is not eligible for `Matching` without a fresh strict
ownership comparison of that `.data`.
## Historical parked residual
| Function | Size T/B | Relocs T/B | Hash T/B | First preserved evidence | Class |
|---|---:|---:|---|---|---|
| `_sound_class_get` | `0xD0/0xD0` | `18/18` | `94cb85335dd2d7a8df3858d5f19def3472fc2fe6869825370127078f852d65a0` / `6b1d112cd08fd123c3ce0cdc72232802444600c5e669463144181f64f4572c00` | First relocation target `+0x16`, candidate `+0x13`; remaining code uses an ESI/EDI index-pointer mirror. | register allocation |
## Preserved experiment history
The historical lookup lane reconstructed the definition table, assertions,
and pointer-return behavior. The final source comment and parked record prove
that equal size and all 18 relocation identities were reached, but the lane
did not preserve a row-by-row experiment matrix. Do not claim unrecorded
spelling variants as tested.
Known exhausted class: declaration/index-pointer lifetime spellings that leave
the ESI/EDI mirror unchanged. Unsafe controls remain prohibited: `volatile`
anchors, inline assembly, byte patches, undefined behavior, or flag changes.
## Reopen and disposition
The residual is closed. Reopen only if a later source change fails the strict
whole-unit regression manifest; do not repeat declaration/register sweeps or
weaken the exact return-expression lifetime. The object is strict-complete and
must remain `Matching` while every recorded invariant continues to pass.