compress_real_vector3d_to_int32 (544) and _clamp (512) are now written and
measure size exact, relocations exact 38/38 address-for-address, 181/181 and
164/164 instructions, differing only by one transposition. NOT exact, no
credit claimed.
Recovered from January's bytes: 11/11/10-bit fields with 1023.5f/511.5f
scales and 0x7ff/0x3ff masks; pack ((k << 11) | j) << 11 | i; a
SELF-REFERENCING round-trip copy through one local (&v2 in, *result back
into v2); the assert message goes through the global temporary with a format
that is exactly 36 bytes including NUL, which is what pins 0x%x%x%x rather
than a spaced form. The clamp twin folds PIN into the same multiply.
Two spellings bracket the target: one local gives the correct sub esp,0x10
frame but an interleaved copy (10 insns off), while a separate decompressed
local gives the correct grouped aliasing-safe copy but a 12-byte-too-large
frame (2 bytes off). January needs both. The one-local form is landed
because a frame-size mismatch is structural under the campaign's
frame-layout law, so the byte-closer variant is the wrong reconstruction.
Copy-schedule variants measured inert: named pointer, inner-scoped pointer,
declaration order, and combinations. Naming the packed value regresses to
528 bytes.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Four previously unwritten functions strict exact on first compile:
compress_real_to_int8 (96B), _int8_clamp (80B), _int16 (112B), _int16_clamp
(96B). Object 9/19 -> 13/19; board 4,822 -> 4,826 functions and 667,591 ->
667,975 strict code bytes, with no previously exact function changed.
These are the oracles the fast_ftol attribution predicted - each ends in
fld <param>; fistp <local>, which no ordinary C conversion emits under this
compiler - so they were unreachable until the helper was admitted today.
January pins two details: the scaled value is reassigned into the PARAMETER
rather than a fresh local, and the clamp variants fold PIN into the same
multiply-and-store statement. The int16 pair round through
(real)floor(z * 32767.5f).
get_vertex_size is blocked by a header disagreement, recorded rather than
forced: January asserts type < 12 and indexes a 12-entry table, while the
repository enum has 18 members after importing six later types. The
recovered table is in the ledger for whoever corrects the enum under a full
board rebuild.
uncompress_int32_to_real_vector3d is fully decoded but left unwritten: two
spellings give 128 and 112 bytes against January's 144, which stages results
through float locals. Not landed non-exact.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Retain 18 strict exact-function gains across Actions, Actor Combat, Decals, Game Engine, Object Lights, and Bipeds after removing donor bodies that regressed exact objects, emitted unowned code, or violated source-credibility rules. Name authenticated private symbols, move declarations to owner headers, record honest residual parks, and preserve units.obj at 189/189.
Records the operational findings from the +44,928 byte run in the repo rather
than only in private notes, so other tools and sessions can act on them.
The load-bearing one: writing UNWRITTEN functions outyields closing residuals.
Wave 3 targeted the closest residuals on the board - padded size AND relocation
count already matching, only instruction selection differing - and returned
11%. Wave 4 reconstructed missing functions from the target disassembly and
returned 30,720 bytes. There are ~1,000,000 bytes of unwritten functions left
against ~100,000 of residual, so that is where the work is.
Also documented: the parallel fan-out architecture (gate.py is a single-TU
compile that never writes build/, so one worker per disjoint .c file is safe,
and nobody but the orchestrator runs ninja); that --disas is an index-aligned
zip which HIDES insert/delete holes, and alndiff.py is needed to see them; the
header blast-radius trap with its full bisect table; verification discipline
including the fact that board.py's per-object listing is truncated and cannot
be diffed to detect regressions; and the fake-matching guards with three
refusals from this run as worked examples.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>