Drew T
c0e8fbdaae
phase-36: T6 — the rung-D instrument fixed (the target was assembled from a listing), rung R built (R2/R3/R4/R5)
...
THE INSTRUMENT (R40). Two campaigns returned "0 of 16" with a straight face; both were the harness. The target object had
been assembled from a DISASSEMBLY LISTING, which is a second toolchain with its own answers:
- objdump prints the pseudo-instruction `move` for `addu rX,rY,$zero`; gas assembles `move` as `or` — 24 wrong words in
one 234-instruction function, silently;
- a listing's %hi/%lo pairs come back RESOLVED with no relocation, while every candidate carries one, and the masked
scorer compares reloc operands.
The permuter therefore scored 28 for a body that IS byte-identical: score 0 was unreachable and every NO-MATCH was its own.
- tools/delever_permute.py: the target is now the tree's OWN (levered) body compiled by the build's tail into a
one-function object — the candidates' relocations by construction — and `match_one` must call that body a MATCH against
the ROM listing before the search starts (R34 keeps it from being circular). Base score for the tree's own body: 0.
- tools/p16_permute.py `setup(target_o=)` + tools/permuter_ils.py `--target-o` (defaults unchanged).
- `--positive-control TU FN`: perturb a matching body by one commutative swap, require the permuter back to 0.
- tools/verbatim_target_s.py --gas now VERIFIES itself: assemble, disassemble, compare word by word with the image,
`.word 0x…`-patch what does not reproduce (24 in that function), REFUSE what still disagrees. The listing is a public
artifact (decomp.me) and was wrong for every function containing a `move`.
THE PROFILE. The weight profile now comes from the register a needed pin names, not just the site kind: callee-saved
($16-$23) is an allocation-order residual -> regalloc; caller-saved ($2/$3/$4-$7) is not -> cse. Read from the bytes: the
residual on func_80163EC8 (`register … __asm__("$2")`) is `and v0,v1,v0` against `and v0,v0,v1` — the operand order of one
`&` — and the regalloc profile weights perm_commutative 2.0 while cse weights it 40.0.
RUNG R (tools/delever.py --recipes): the cookbook's byte-neutral shape recipes, mechanically, seeded with the body's
lever-free text — R2 the formerly-pinned declarations permuted, R4 one moved through the whole declaration run, R3 an
initializer split placed after the run (C89), R5 the operand order of one commutative operator (the caller-saved lever, and
the only recipe needing no pinned declaration). Identity control on both the splice and the oracle before any verdict;
markers scrubbed within the banked body's own span only; selftest cases on a fixture whose answers are known by hand.
Also: a threading race in the site cache published the empty dict before filling it and made a whole batch report
"no site in this TU"; the file-scope asm dropper took an asm-LABEL clause for a statement. SETUP + dictionary rows.
2026-09-09 11:08:20 -06:00
Drew T
22a31bc025
phase-36: T6 — the kit corpus and the tool index regenerated for delever_permute.py (tool_census --check: 0 gaps)
2026-09-09 10:23:35 -06:00
Drew T
6e1677b4da
phase-36: T6 rung D built and calibrated — tools/delever_permute.py, the GTE levers on the ladder (462/462), four harness defects
...
- tools/delever_permute.py: one exemplar per RESIDUE text class from the ledger (copies desc, needed asc) prepared as a
single-function TU (delever's rung-A rewrite; other definitions -> prototypes; shared-header includes -> their prototypes;
INCLUDE_ASM and file-scope asm dropped; the build's own CPPFLAGS through cpp -P), the target regenerated from the ROM image in
BOTH forms (--gas for target.o, splat for match_one), permuter_ils with the profile from the NEEDED kinds, a winner banked only
through delever --apply-body + the GTE re-fold. Scratch/winners keyed alias+fn (R48).
- the control (R39/R56, new): every attempt first requires the LEVERED body to be match_one MATCH against the regenerated target,
then records the lever-free body's distance. --calibrate --limit 12: 12 of 12 MATCH; starting distance min 8 / median 78 / max 276.
- delever: ("B","gte-lever") joins REMOVABLE — a direct statement's clobbers reset to its canonical set, a variant-macro use pointed
at the canonical macro whose name comes from the variant definition's SIGNATURE (gte_rt_m -> gte_rtv0tr, not Sony's gte_rt);
462 of 462 gte-lever sites now offered to the ladder, 0 before. gte_consolidate.canonical_match() is the one reader of the
canonical table (R33), direct_rewrite refactored onto it; both selftests green.
- p16_permute.setup(outdir=) + permuter_ils --pd: a scratch dir keyed by the caller, defaults unchanged.
- four harness defects found by running it: the splat listing is not assemblable (R98 in a second place); pycparser rejects
__attribute__ and the permuter then silently permutes nothing; include_asm.h injects a file-scope .include "labels.inc" that
collides with the permuter's own macro.inc; an asm-LABEL clause is not an asm statement (a bare scan ate one and left a headless
K&R body). SETUP row (R21), dictionary row (R87), .gitignore allowlist for the outcomes ledger.
2026-09-09 10:21:16 -06:00
Drew T
b1d6c8f78e
phase-36: T6 opened — the residue measured from the ledger (12,970 bodies / 1,804 classes; median 1 needed site), the permuter harness read, the two feasibility probes passed (a target listing regenerated from the ROM image; a one-function lever-free base through make_base_c and compile.sh → an object holding only the exemplar); the rung-D driver's design settled in the 🛑 block §2 for the next session; S98 closes at 90 % context
2026-09-09 07:18:13 -06:00
Drew T
d025e67e71
phase-36: T5 CLOSE — the GTE consolidation and the dead-macro sweep: include/gte_inline.h (50 canonical macros for 9,102 definitions), 8,951 per-TU definitions deleted, 629 clobber variants freed byte-identical and 70 kept as marked levers, 575 direct statements → Sony-named calls, 274 dead launder macros swept; the census learns cross-file macro names (10 launders surfaced in two shared headers, 6 removed); per-TU asm macro definitions 9,540 → 314 with 0 canonical duplicates; THE NUMBER 34,091 sites (incl. 462 GTE levers) in 12,712 bodies, all marked, 0 orphans — lever_census --check OK; R22 218/218; SETUP rows; kit corpus; the 🛑 block for T6
2026-09-09 07:12:06 -06:00
Drew T
4bc987426c
src(phase-36): T5 sweep3 — 274 dead asm-bearing macro definitions deleted in 133 files (uses counted per governing definition; SHB 416 → 142) | R22 check-all: 218 passed, 0 failed of 218 | census: 34,087 sites all marked · per-TU asm macro definitions 9,540 → 314 · GTE levers 462 · the selftest no longer writes the real canonical table
2026-09-09 07:00:40 -06:00
Drew T
3b2c5178b6
phase-36: T5 — the scrub of 3 markers orphaned by the rejudge (R22 218/218, r22_sweep1.log); delever --scrub --dirty-ok; the sweep's dead-macro test skips a name's sibling definitions (SHB is defined twice per unit, so nothing was ever dead); kit corpus
2026-09-09 06:38:42 -06:00
Drew T
02810debd1
src(phase-36): T5 batch gte3 — md_MAIN_026 consolidated (3 definitions deleted, an object-like MVMVA's bare uses → gte_rt() calls, 2 variant trials freed) | R22 check-all: 218 passed, 0 failed of 218 | census: 34,087 sites all marked · GTE levers 462 · per-TU asm macro definitions 588
2026-09-09 06:32:35 -06:00
Drew T
5b6e1a2fe7
phase-36: T5 — the consolidation applied (644 files: 8,951 per-TU GTE definitions gone, 629 clobber variants byte-identical without the clobber, 70 kept as marked levers, 575 direct statements → canonical calls, 85 header-bound homonyms kept) + the marker repair (scrub 344 misplaced, re-mark 349); four instrument fixes: scoped renames, header-bound homonyms kept, object-like macros, the canonical table stable (the header's definitions in the inventory) and the census cache keyed on the tables; R22 218/218; the number 34,090 (33,625 + 465 GTE levers) all marked, 0 orphans, --check OK; kit corpus; log entry
2026-09-09 06:29:00 -06:00
Drew T
666d4b5aec
src(phase-36): T5 batch gte2 — gte_consolidate: batch gte2 — 244 files: 237 consolidated, 0 defs-only, 6 unchanged, 1 refused, 0 no-recipe · definitions deleted 895 / renamed as lever variants 60 (variant trials: 213 freed, 65 kept) · header-bound definitions kept 5 · use renames 105 · direct statements → calls 115 / lever 108 / unmatched 17 · markers 184 · compiles 1240 · final 237/237 written files identical · refused 1 (restored, ledgered) | R22 check-all: 218 passed, 0 failed of 218 | census: THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 34,085 sites in 12,710 bodies (1,757 distinct) · marked !FAKE 33,741 · UNMARKED 344 (delever_cycle)
2026-09-09 06:01:52 -06:00
Drew T
145ab77194
src(phase-36): T5 batch gte1 — gte_consolidate: batch gte1 — 400 files: 400 consolidated, 0 defs-only, 0 unchanged, 0 refused, 0 no-recipe · definitions deleted 8056 / renamed as lever variants 5 (variant trials: 416 freed, 5 kept) · header-bound definitions kept 80 · use renames 930 · direct statements → calls 460 / lever 252 / unmatched 185 · markers 276 · compiles 1146 · final 400/400 identical | R22 check-all: 218 passed, 0 failed of 218 | census: THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 33,901 sites in 12,601 bodies (1,756 distinct) · marked !FAKE 33,665 · UNMARKED 236 (delever_cycle)
2026-09-09 05:55:45 -06:00
Drew T
0bd784c64e
phase-36: T5 (header step) — the GTE consolidation: tools/gte_consolidate.py (signatures by the build's own maspsx→as tail: bytes + operand counts + clobbers; one canonical text per signature under Sony's names, Sony's clobbers canonical even when every definition carries the steer; lever variants <name>_m tried as canonical first; direct statements → canonical calls; --sweep), include/gte_inline.h (50 macros for 9,102 definitions) included from common.h — R22 218/218; the census's gte-lever class + per-TU definition count + strict gate; the cycle's MODE=gte; dictionary + SETUP rows; kit corpus; log entry
2026-09-09 05:28:50 -06:00
Drew T
917c68afd9
phase-36: T4 CLOSE — the mechanical campaign over the whole population: 16,334 bodies judged in 13 gated batches (3,341 lever-free = 20.5 %; 21,063 of 56,445 sites removed or rewritten = 37.3 %; 8,239 replays, 1 disagreement; 49,487 compiles); the file-scope asm statements judged too (batch tus11: 6 barriers NEEDED, 7 .section blocks refused as asm-data and marked); THE NUMBER 53,234 → 33,625 sites (−36.8 %) in 12,501 bodies (1,728 distinct), 33,625 marked, 0 UNMARKED, 0 orphans — lever_census --check OK; the residue 12,967 bodies in 1,803 distinct classes (pins-only 6,018 · pins+asm 4,310 · asm-only 2,141 · C/D-only 498); published by make report (README line 30, progress.json counts.levers, the timeline); kit corpus; the 🛑 block rewritten for T5
2026-09-09 05:05:33 -06:00
Drew T
f087282a3e
src(phase-36): T4 batch tus11 — delever: batch tus11 — 5 files (TUs; 5 drawable) · 5 bodies: 0 lever-free, 5 residue, 0 refused · sites removed 0 / needed 10 / refused 7 / deferred 0 · replays 0 (0 disagreed) · compiles 20 in 2 s wall · final 5/5 identical · written 5 files | R22 check-all: 218 passed, 0 failed of 218 | census: THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 33,625 sites in 12,501 bodies (1,728 distinct) · marked !FAKE 33,625 · UNMARKED 0 (delever_cycle)
2026-09-09 04:56:50 -06:00
Drew T
0cb78a6a75
src(phase-36): T4 batch headers2 — delever: batch headers2 — 171 files (headers; 171 drawable) · 171 bodies: 37 lever-free, 133 residue, 0 refused · sites removed 199 / needed 332 / refused 0 / deferred 1 · replays 86 (0 disagreed) · compiles 967 in 146 s wall · final 171/171 identical · written 170 files | R22 check-all: 218 passed, 0 failed of 218 | census: THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 33,625 sites in 12,501 bodies (1,728 distinct) · marked !FAKE 33,612 · UNMARKED 13 (delever_cycle)
2026-09-09 04:51:20 -06:00
Drew T
9184678f1a
src(phase-36): T4 batch headers1 — delever: batch headers1 — 200 files (headers; 371 drawable) · 200 bodies: 42 lever-free, 158 residue, 0 refused · sites removed 302 / needed 340 / refused 1 / deferred 0 · replays 18 (1 disagreed) · compiles 40597 in 1460 s wall · final 200/200 identical · written 196 files | R22 check-all: 218 passed, 0 failed of 218 | census: THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 33,812 sites in 12,538 bodies (1,787 distinct) · marked !FAKE 33,301 · UNMARKED 511 (delever_cycle)
2026-09-09 04:46:19 -06:00
Drew T
cb2fb5e6db
src(phase-36): T4 batch tus10 — delever: batch tus10 — 83 files (TUs; 83 drawable) · 362 bodies: 99 lever-free, 258 residue, 2 refused · sites removed 411 / needed 483 / refused 37 / deferred 3 · replays 4 (0 disagreed) · compiles 1171 in 25 s wall · final 83/83 identical · written 83 files | R22 check-all: 218 passed, 0 failed of 218 | census: THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 34,100 sites in 12,570 bodies (1,823 distinct) · marked !FAKE 32,973 · UNMARKED 1,127 (delever_cycle)
2026-09-09 04:18:13 -06:00
Drew T
aa70308cf1
src(phase-36): T4 batch tus9 — delever: batch tus9 — 300 files (TUs; 383 drawable) · 1901 bodies: 454 lever-free, 1430 residue, 8 refused · sites removed 2244 / needed 2937 / refused 42 / deferred 9 · replays 522 (0 disagreed) · compiles 5262 in 294 s wall · final 300/300 identical · written 297 files | R22 check-all: 218 passed, 0 failed of 218 | census: THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 34,459 sites in 12,656 bodies (1,909 distinct) · marked !FAKE 32,473 · UNMARKED 1,986 (delever_cycle)
2026-09-09 04:15:14 -06:00
Drew T
d9e01a398b
src(phase-36): T4 batch tus8 — delever: batch tus8 — 300 files (TUs; 683 drawable) · 602 bodies: 208 lever-free, 394 residue, 0 refused · sites removed 432 / needed 601 / refused 1 / deferred 0 · replays 206 (0 disagreed) · compiles 1458 in 48 s wall · final 300/300 identical · written 300 files | R22 check-all: 218 passed, 0 failed of 218 | census: THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 36,419 sites in 13,044 bodies (2,173 distinct) · marked !FAKE 29,642 · UNMARKED 6,777 (delever_cycle)
2026-09-09 04:07:41 -06:00
Drew T
fa008b8629
phase-36: T4 — the census's known-true controls keyed on their bodies' T1 text hashes (N-A once the campaign edits a control body: tus7 removed func_80184034's three bare-name pins and the census refused a correct tree); the cycle's FINISH=<label> mode completes a batch from its green logs (tus7 finished so: 34f03003d); kit corpus; log entry
2026-09-09 04:04:14 -06:00
Drew T
34f03003df
src(phase-36): T4 batch tus7 — delever: batch tus7 — 300 files (TUs; 983 drawable) · 1407 bodies: 432 lever-free, 973 residue, 2 refused · sites removed 1855 / needed 2032 / refused 6 / deferred 0 · replays 589 (0 disagreed) · compiles 3211 in 101 s wall · final 300/300 identical · written 300 files | R22 check-all: 218 passed, 0 failed of 218 | census: THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 36,764 sites in 13,224 bodies (2,199 distinct) · marked !FAKE 29,045 · UNMARKED 7,719 (delever_cycle)
2026-09-09 04:02:44 -06:00
Drew T
3e60fdf418
src(phase-36): T4 batch tus6 — delever: batch tus6 — 300 files (TUs; 1283 drawable) · 1409 bodies: 301 lever-free, 1108 residue, 0 refused · sites removed 1667 / needed 2377 / refused 0 / deferred 0 · replays 897 (0 disagreed) · compiles 2505 in 63 s wall · final 300/300 identical · written 300 files | R22 check-all: 218 passed, 0 failed of 218 | census: THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 38,580 sites in 13,622 bodies (2,225 distinct) · marked !FAKE 27,018 · UNMARKED 11,562 (delever_cycle)
2026-09-09 03:55:13 -06:00
Drew T
ca761c4f66
src(phase-36): T4 batch tus5 — delever: batch tus5 — 300 files (TUs; 1583 drawable) · 1225 bodies: 63 lever-free, 1162 residue, 0 refused · sites removed 1821 / needed 5783 / refused 0 / deferred 0 · replays 624 (0 disagreed) · compiles 3110 in 73 s wall · final 300/300 identical · written 300 files | R22 check-all: 218 passed, 0 failed of 218 | census: THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 39,918 sites in 13,820 bodies (2,224 distinct) · marked !FAKE 25,081 · UNMARKED 14,837 (delever_cycle)
2026-09-09 03:51:31 -06:00
Drew T
5e10b19e80
src(phase-36): T4 batch tus4 — delever: batch tus4 — 300 files (TUs; 1883 drawable) · 2224 bodies: 673 lever-free, 1551 residue, 0 refused · sites removed 2143 / needed 3936 / refused 0 / deferred 0 · replays 1328 (0 disagreed) · compiles 4095 in 158 s wall · final 300/300 identical · written 300 files | R22 check-all: 218 passed, 0 failed of 218 | census: THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 41,414 sites in 13,872 bodies (2,225 distinct) · marked !FAKE 19,995 · UNMARKED 21,419 (delever_cycle)
2026-09-09 03:47:39 -06:00
Drew T
ce87370664
src(phase-36): T4 batch tus3 — delever: batch tus3 — 300 files (TUs; 2183 drawable) · 2513 bodies: 194 lever-free, 2319 residue, 0 refused · sites removed 2925 / needed 6699 / refused 0 / deferred 0 · replays 1251 (0 disagreed) · compiles 5347 in 194 s wall · final 300/300 identical · written 300 files | R22 check-all: 218 passed, 0 failed of 218 | census: THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 43,517 sites in 14,550 bodies (2,250 distinct) · marked !FAKE 16,077 · UNMARKED 27,440 (delever_cycle)
2026-09-09 03:42:19 -06:00
Drew T
77a1298cb7
phase-36: T4 — batch tus3 killed mid-apply by the harness's low-memory guard (22 GB free): recovered by dropping its 641 ledger rows (backup) and --restore (50 files, src clean); --restore now drops the in-flight label's rows itself (inflight.json carries the label); the cycle's usage: run it DETACHED (setsid nohup) with a tiny waiter; SETUP row; kit corpus; log entry
2026-09-09 03:35:35 -06:00
Drew T
dd01cbdf6e
phase-36: T4 (tool fixes between batches) — 'done' is per body (tu, fn, after-hash): keying it by text alone let every fleet-wide copy of an all-NEEDED exemplar pass as done unmarked (2204 → 2483 drawable files); the includer map cached per file (29 s → 1.3 s per batch, equal to the uncached map); the cycle waits out a transient .git/index.lock and clears a stale one (batch tus2's commit was lost to one and committed by hand, 85905840c); kit corpus; the log entry with tus1/tus2 — the number 46,424 sites in 14,758 bodies · marked 9,393 · unmarked 37,031
2026-09-09 03:30:53 -06:00
Drew T
85905840c7
src(phase-36): T4 batch tus2 — delever: batch tus2 — 300 files (TUs; 2483 drawable) · 2752 bodies: 495 lever-free, 2257 residue, 0 refused · sites removed 3505 / needed 5262 / refused 0 / deferred 0 · replays 1350 (0 disagreed) · compiles 5616 in 251 s wall · final 300/300 identical · written 297 files | R22 check-all: 218 passed, 0 failed of 218 | census: THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 46,424 sites in 14,758 bodies (2,258 distinct) · marked !FAKE 9,393 · UNMARKED 37,031 (committed by hand: the cycle's git add hit a stale .git/index.lock created 03:24:19 during the batch's fleet run)
2026-09-09 03:29:13 -06:00
Drew T
a605e1dbaf
src(phase-36): T4 batch tus1 — delever: batch tus1 — 300 files (TUs; 2204 drawable) · 1392 bodies: 299 lever-free, 1093 residue, 0 refused · sites removed 3342 / needed 4177 / refused 0 / deferred 0 · replays 1364 (0 disagreed) · compiles 1794 in 59 s wall · final 300/300 identical · written 300 files | R22 check-all: 218 passed, 0 failed of 218 | census: THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 49,787 sites in 15,243 bodies (2,244 distinct) · marked !FAKE 4,391 · UNMARKED 45,396 (delever_cycle)
2026-09-09 03:20:08 -06:00
Drew T
e5f59c12f4
phase-36: T3 close — the campaign tool proven end to end on ov_SC04_011 (batches t3_tus1 + t3_tus2, R22 218/218 each): the zero-register use composed into its host edit (the one refused body redrawn via --redraw), a removed site consumes its trailing !FAKE marker, the census counts ORPHAN markers (--check fails on them; the walk cache keyed on the tool's hash — it had hidden them) and delever --scrub removes them (2 scrubbed here, object identical, R22 218/218 wall 143 s); the cycle's greps fixed (no ^ anchor, an empty verify line refuses, THE PHASE'S NUMBER line, entries before the checkpoint block); the number 53,033 sites / 15,638 bodies (2,246 distinct) · 310 marked · 0 orphans; SETUP + dictionary rows; kit corpus; the t3_tus1 entry rewritten from the logs (R66); the 🛑 block rewritten for T4
2026-09-09 03:14:30 -06:00
Drew T
7ee458dd7f
src(phase-36): T3 batch t3_tus2 — delever: batch t3_tus2 — 1 files (TUs; 1 drawable) · 2 bodies: 0 lever-free, 1 residue, 1 refused · sites removed 2 / needed 2 / refused 1 / deferred 0 · replays 0 (0 disagreed) · compiles 6 in 3 s wall · final 1/1 identical · written 1 files | R22 check-all: 218 passed, 0 failed of 218 | census: THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 53,033 sites in 15,638 bodies (2,246 distinct) · marked !FAKE 310 · UNMARKED 52,723 (delever_cycle)
2026-09-09 02:56:55 -06:00
Drew T
cd24727ddb
src(phase-36): T3 batch t3_tus1 — | R22 check-all: 218 passed, 0 failed of 218 | census: lever_census: 218 binaries · 4,121 TUs + 3,181 headers · coverage OK · unclassified 0 · verbatim excluded 13 fn / 14 sites (manifest 13) (delever_cycle)
2026-09-09 02:50:39 -06:00
Drew T
39e3e1851f
phase-36: T3 (tools) — tools/delever.py the campaign tool: --plan/--apply (the file is the write unit, its final compile through every recipe the proof; 'done' = a ledger fact keyed by the body's normalized text before/after; replay from an exemplar in one compile; !FAKE markers on class A/B survivors; --restore from inflight.json; --apply-body for T6/T7; a selftest with a stub oracle), the launder-ASSIGNMENT rewrite (989 of 4,793 direct launders — deleting them made cc1 2.7.2 abort: the probe's 'Done' error, reproduced 3/3), macro shapes (SHB deleted, a launder expression valued, compound macros refused for T5), the oracle's COMPILE-CRASH verdict + judge_all + the mtime restore, the census's src_stamp/head, tools/delever_cycle.sh (apply → R22 → census → log + headline → commit); selftest OK; census 53,234 unchanged; calibration 177/177; plan ov_SC04_011 = 18 files / 176 bodies / 540 sites; SETUP + dictionary rows; kit corpus; T7 waves need Drew's direct approval (decisions)
2026-09-09 02:45:58 -06:00
Drew T
89676f096a
phase-36: S97 close checkpoint — the 🛑 headline names T0–T2 as committed (T2 617f29e30), the open T1b split for Drew, S98's §0; Ghidra MCP stopped (R23)
2026-09-09 02:11:27 -06:00
Drew T
772052dff2
phase-36: checkpoint for T3 — the 🛑 block's §0–§2 rewritten (T0–T2 done at 617f29e30; the number 53,234 sites / 15,679 bodies / 2,227 distinct; the probe's pricing; T3's build order and the paid-for gotchas)
2026-09-09 02:03:52 -06:00
Drew T
617f29e30c
phase-36: T2 — the oracle and the probe: tools/delever_oracle.py (4,284 recipes via make -n -W; a candidate compiled in place to a scratch object and compared with the fleet run's; calibrated 177/177 untouched + twin 32/32 + positive control DIFFERS) and tools/delever.py (positional rewrites per lever class, rung A strip-all + rung B greedy, headers serial after the TU phase); --probe on 283 distinct bodies: A identical 53/283, sites removed 561/1,309 (42.9 %), needed 748 (launder 77 %, barrier 82 %, pins 45 % — v0/v1 + a0–a3 dominant), 0.225 s per compile — T4 priced at ~94k compiles ≈ 0.5 h, the residue ≈ 81 % of bodies ≈ 1,800 distinct exemplars; dictionary + SETUP rows; kit corpus; the 🛑 block for T3
2026-09-09 02:03:04 -06:00
Drew T
a1407bdfc1
phase-36: T1b — the verbatim manifest learns the in-function form (49 rows: 27 PERMANENT hand asm incl. 22 per-overlay scratchpad stack-switch trampolines, 8 Sony GsTMDfast* routines carried as asm, 11 DECOMPILE-NOW + 3 UNCERTAIN game bodies never decompiled); verbatim_check detects the form structurally via lever_census.whole_body_asm_functions (--strict: 2,709 bodies, no drift); the census defers exclusion to the manifest's dispositions — the phase's number 53,234 sites in 15,679 bodies (2,227 distinct); progress.py counts PERMANENT (27) + SDK (8) with a dated correction; README/wiki/verification/gen3 docs corrected (14 game functions were asm in C shells); kit corpus
2026-09-09 01:44:31 -06:00
Drew T
357f8a1ed3
phase-36: T1 — tools/lever_census.py, the self-asserting lever census (coverage asm 80,396 = 66,415 live + 7,189 macro-block + 6,792 comment/dead; 4/4 controls; the five manifest bodies excluded): 53,221 pin/asm sites in 15,666 bodies (2,214 distinct) — 37,720 register pins + 15,501 asm statements, 0 marked; 6,911 GTE ops and 23 whole-body asm routines in C shells (2,683 sites, outside the manifest — Drew's call) set apart; progress.py levers block + README sentence; dictionary + SETUP rows; kit corpus; the 🛑 block for T2
2026-09-09 00:52:22 -06:00
Drew T
63b8866261
phase-36: T0 — baseline (R22 clean fleet 218/218 in 88 s), the P36 evidence allowlist, CURRENT_PHASE.md from the approved plan (levers off: pins + asm statements + volatile + register, GTE consolidated, grind to zero; R100–R106 ratified at gate 1)
2026-09-09 00:21:44 -06:00
Drew T
e6d98dd1d4
chore(phase-35): CLOSE — Gen3's dedup phase: one source per unique function (3,175 shared headers, 3,173 registry groups incl. the h_text tier, the macro header gone, the five twins from one directory, S1 a tools-health gate with a second oracle, 14 macro-era tools frozen and 4 retired behind a guard, the published counts corrected) — v2.1.0
...
- PhaseEnd_Phase35.md written; CURRENT_PHASE.md archived to phase-ends/logs/Phase35.md (R19); DIGEST §0/§2 appended (step 3b)
- T0–T8 + T5b across S94–S96 (S94 died at 91 % without a checkpoint; S95 recovered it from the transcript; S96 finished)
- close: R22 clean fleet 218/218; tools-health OK (S1 10,180/10,180, 0 violations; dedup-check 3173/0; the guard 0)
- rules: R96–R99 ratified at gate 1; candidates (a)–(g) proposed for Phase 36 gate 1
- v2.0.0 -> v2.1.0
2026-09-08 23:19:40 -06:00
Drew T
c1a901373f
phase-35: checkpoint at the 90 % context guard — T0–T8 (+T5b) closed; the 🛑 block rewritten for T9, the close (Tier 1, Max, fresh session): gates, the metrics table with its commands, the milestone items, the reviewer sequence, the PhaseEnd/DIGEST/log steps, seven rule candidates, gotchas
2026-09-08 22:53:19 -06:00
Drew T
ce837b1e46
docs(phase-35): T8 — the record: The-dedup-engine.md rewritten for the shared-source model (the shape, the h_exact/h_text/h_norm tiers, share_body and its four first-day defects, the S1 gate and the second oracle, the numbers as a dated derivation); Repository-layout, Where-the-project-goes-next, Verification-and-progress, how-to ch.10, README prose, gen3-standards (§4 row struck, DoD item met), gen3-handoff (dated snapshots); cookbook §453 + a retirement banner on §14, the index regenerated; decision-log P35 (R31), accelerators P35, DIGEST §4; doc_links strict 0 broken, wiki 32/32, kit coverage OK, kit corpus
2026-09-08 22:52:09 -06:00
Drew T
e7b0cfb626
docs(phase-35): T5b verify — tools-health OK with the text tier in every rung (S1 10,180/10,180, dedup-check 3173/0, the guard 0); the timeline regenerated
2026-09-08 22:47:26 -06:00
Drew T
ac8c29edb1
src(phase-35): T5b — the text tier: 38 same-address functions whose bytes vary per binary (the TU's declaration environment carries the original per-overlay variance) share one text each through h_text registry groups with per-member h_exact — 1,957 private copies in 1,540 TUs replaced by the include, 38 headers (func_<VRAM>__t<hash8>.h), 138/138 binaries green per binary, 0 rejected; dedup_integrate C1 per member (3173 validated, 0 failed); share_census indexes h_text groups by site, exports text classes, the S1 text half is a violation (0 now), the census json carries the oracle's counts; share_body --bucket text; progress.py/README: 103,015 bodies written once, 38 text-tier functions / 2,030 sites, 1,668 copies of 381 tiny bodies deferred; R22 clean fleet 218/218 in 90 s; SETUP; kit corpus
2026-09-08 22:39:42 -06:00
Drew T
a2d6f036a9
phase-35: the second oracle's finding decided (Max, delegated) — T5b: a text tier (h_text groups with per-member h_exact) for the 38 same-address texts whose bytes vary per overlay through the TU's declaration environment (2,030 sites); the 380 same-address texts inside the deferred cross-address classes stay deferred for the names phase's parameterized form; T5b inserted before T8
2026-09-08 22:01:09 -06:00
Drew T
c8224e657f
tools(phase-35): T7 — the S1 invariant wired into tools-health (share_census --selftest + --check --strict-macros --strict-text, by exit code), C2c/C2d in dedup_integrate --check (one source under src/shared/ defining one function; every member's site includes it — from the census's per-instance forms), progress.py: unique_function_bodies 105,007 / duplicate_source_copies 160 in 51 ledgered classes + the dated corrections list + the README sentence; the second oracle refined (distinct TUs; deferred vs pending vs violation): 380 texts deferred inside cross-address classes, 38 same-address texts / 2,030 sites byte-variant per binary (PENDING the owner), 0 violations; negative control in place: one reverted include -> S1 FAIL naming the class + C2d naming the member; tools-health OK (551 s)
2026-09-08 21:46:05 -06:00
Drew T
79eb66fa07
phase-35: checkpoint refreshed at the T6 close — state (HEAD, dedup numbers, tools) and the resume sequence T7 → T9
2026-09-08 21:17:00 -06:00
Drew T
93b4706c96
docs(phase-35): T6 CLOSE — tools-health OK with the macro-form guard (0 LIVE tools reference the retired form; 14 frozen, 38 retired); the timeline regenerated against the committed digest (74 rows); the wiki's dedup page repointed from the retired dedup_propagate to share_body (T8 rewrites it); the cycle driver's dictionary row without rule ids (the kit's leak check); the three red chain runs and their causes in the phase log
2026-09-08 21:16:02 -06:00
Drew T
db63fcc673
tools(phase-35): T6 part 2 — the dead macro branches dropped from 12 live tools; the macro-form guard in tool_census --check (ast scan of every LIVE tool, FROZEN/retired/6 whitelisted detectors excluded; 0 LIVE tools reference the retired form; --guard-root negative control: the pre-T4 tree flags exactly the 12 fixed + 3 retired); progress.py: an empty-bodied included member is EMPTY, not folded into REAL (the R32 bucket assertion caught the double count) — the fleet denominator 363,221 -> 363,680 (+459: SC03_015's 219 single-site macros, SC03_118 +3, the never-extended members of five groups) and REAL 360,744 -> 350,533 with EMPTY up the same; progress.json + README block + fleet table regenerated; SETUP; kit corpus
2026-09-08 20:53:05 -06:00
Drew T
5a9f455e60
tools(phase-35): T6 part 1 — 14 macro-era tools FROZEN (tools/frozen.py: one refusal from main(), imports never exit; the plan's 7 + 7 the guard census found, family_remap's CLI among them), 4 retired to tools/sunset/ (dedup_propagate + dedup_extend -> share_body.py with add_members_surgical and the load_sig library moved verbatim; macro_draft; test_reconcile_ledger), six lane callers repointed to share_body --apply --bucket new, validate_targets imports share_body, tool_census accepts FROZEN; dictionary + sunset README rows; kit corpus
2026-09-08 20:34:41 -06:00