Drew T
758ab7de65
feat(phase-23): lora-grind gate — +14 fns x0 propagated (fleet 63.72%)
2026-06-30 05:00:13 -06:00
Drew T
c1230fa6ea
feat(phase-22): T2 close=0 recovery batch — 14 fns ×134 (fleet 63.29%->63.66%)
...
- R14 corrects cookbook §26 ('close=0 recovery exhausted'): recover_giant + the
whole-binary gate still banks a ~15-20%% tail. Banked 7 close=0 reach-134 fns
(func_80156ECC/80147E44/8015ADB0/801661CC/80166054/8012CFA8/8012A62C); dedup_propagate
--auto-from swept those + 7 pre-existing inline-matched bonus fns ×134 (14 total)
- the other ~33 close=0 are the genuine DEF-side loose-typing / masked-residual wall
- func_80132784 HARD-DEFER (hoist-vs-remat + register-lifetime-reuse not C-expressible)
- §28c distilled: close=0-not-exhausted recipe + the dedup_propagate registry-skip
recovery (register via append_groups; bytes were already check-all-correct)
- make check-all 136/136 byte-identical (R22); dedup 1619->1633 validated/0 failed;
0 NON_MATCHING (G4)
2026-06-26 04:14:06 -06:00
Drew T
d789d9c242
feat(phase-22): T2 — giant func_80163C2C banked ×134 via Blk16/Buf32 type-lift (fleet 63.25%->63.29%)
...
- second struct-walled close=0 giant (167 ins): lift Blk16(u32x4)+Buf32(2xBlk16) to
src/shared/engine_types.h, remove the Blk16 dupes from ov_SC01_077.c + the -O0 split
ov_SC01_077_a.c (byte-neutral), recover_giant, harvest_verify MATCH, dedup_propagate
×134 (+22378 ins byte-weighted)
- struct-walled trio done: func_80156B74 + func_80163C2C banked; func_8014F74C is a
masked residual (grinder fuel, not type-liftable)
- make check-all 136/136 byte-identical (R22); dedup 1618->1619 validated/0 failed;
0 NON_MATCHING (G4)
2026-06-26 03:51:11 -06:00
Drew T
b5a1fe6dab
feat(phase-22): T2 — giant func_80156B74 banked ×134 via engine_types.h type-lift (fleet 63.22%->63.25%)
...
- struct-walled close=0 giant (cookbook §28 case #3 ) is bankable: lift the S8/B8
typedefs from ov_SC01_077.c's prelude to src/shared/engine_types.h (shared via
engine_core.h; byte-neutral), recover_giant block-scopes externs, whole-binary
harvest_verify MATCH, dedup_propagate ×134 (214 ins, +28676 ins byte-weighted)
- cookbook §28b: the type-lift recipe + the serialize-make-jobs gotcha (concurrent
make corrupted an .o and dropped the registry write; re-ran dedup_propagate idempotent)
- make check-all 136/136 byte-identical (R22); dedup 1617->1618 validated/0 failed;
0 NON_MATCHING (G4)
2026-06-26 03:45:35 -06:00
Drew T
75dc869099
feat(phase-22): T1 — calibrate hand-loop; func_8015126C banked x134 (fleet 63.18%->63.22%)
...
- func_8015126C (254-ins top-5 giant): cracked the §25 coalescing residual with a
register-pin idiom (cmp79 __asm__("$4") + lazy in-&& assign -> $a0, not hoisted)
+ the canonical-extern recovery (rewrite each engine_core.h-callee extern to its
canonical def-sig, move ALL externs block-scope) so it banks whole-binary, not just
match_one. dedup_propagate x134; make check-all 136/136 byte-identical; dedup-check
1617 validated / 0 failed
- proves the Phase-22 loop end-to-end (hand-crack -> bank -> x134 propagate -> verify)
- CURRENT_PHASE.md: T0/T1 closed; the close=0-giant wall = draft self-contained externs
conflicting with engine_core.h canonical sigs, deterministically fixable (T4 lever)
2026-06-26 02:54:39 -06:00
Drew T
e5ae5958d5
feat(phase-21): recover-a gate — +1 fns x1 propagated (fleet 63.17%)
2026-06-25 00:57:32 -06:00
Drew T
1c1b75026a
feat(phase-21): worker gate — +7 fns x4 propagated (fleet 63.13%)
2026-06-24 23:16:18 -06:00
Drew T
3943c34ac4
feat(phase-21): worker gate — +6 fns x4 propagated (fleet 62.98%)
2026-06-24 22:48:09 -06:00
Drew T
05e98070ba
feat(phase-21): drop-straggler propagation banks 3 _a fns x134 (fleet 216104 / 344010 = 62.82%)
...
dedup_propagate now isolates+drops cross-overlay stragglers instead of all-or-nothing
revert. Wave-2: 2 loose-typing stragglers (func_8012E5CC/func_8012C750 compile-fail
ov_SC01_000) auto-dropped + kept x1; 3 clean fns propagated x134.
2026-06-24 22:09:47 -06:00
Drew T
1e3410ffc1
feat(phase-21): propagate 10 _a-wave fns x134 — _a vein is a real x134 lever (fleet 215699 / 344010 = 62.70%)
2026-06-24 20:35:19 -06:00
Drew T
ccd61d6528
feat(phase-21): worker gate — +1 fns x1 propagated (fleet 62.31%)
2026-06-23 19:35:21 -06:00
Drew T
b5eb1718af
feat(phase-21): grinder gate — +1 fns x1 propagated (fleet 62.27%)
2026-06-23 14:15:31 -06:00
Drew T
3074584982
feat(phase-21): grinder gate — +1 fns x1 propagated (fleet 62.23%)
2026-06-23 12:45:22 -06:00
Drew T
c2bad12d6c
feat(phase-21): worker gate — +13 fns x12 propagated (fleet 62.19%)
2026-06-23 12:39:39 -06:00
Drew T
296d834467
feat(phase-21): worker gate — +13 fns x13 propagated (fleet 61.73%)
2026-06-23 12:18:12 -06:00
Drew T
3299d7f1a2
feat(phase-21): worker gate — +1 fns x1 propagated (fleet 61.16%)
2026-06-22 10:51:47 -06:00
Drew T
382a559502
feat(phase-21): worker gate — +2 fns x2 propagated (fleet 61.12%)
2026-06-22 09:27:29 -06:00
Drew T
72e71811d3
feat(phase-21): grinder gate — +1 fns x1 propagated (fleet 61.04%)
2026-06-22 08:54:00 -06:00
Drew T
b1272109c0
feat(phase-21): worker gate — +3 fns x2 propagated (fleet 61.0%)
2026-06-22 08:51:03 -06:00
Drew T
9e9278d4a8
feat(phase-21): grinder gate — +1 fns x1 propagated (fleet 60.93%)
2026-06-22 05:31:06 -06:00
Drew T
c63a41b1a8
feat(phase-21): worker gate — +1 fns x1 propagated (fleet 60.89%)
2026-06-22 05:07:05 -06:00
Drew T
43a356b3fb
feat(phase-21): worker gate — +6 fns x5 propagated (fleet 60.85%)
2026-06-22 04:25:30 -06:00
Drew T
06496b5238
feat(phase-21): worker gate — +4 fns x4 propagated (fleet 60.65%)
2026-06-22 03:30:16 -06:00
Drew T
33e21d3050
feat(phase-21): worker gate — +3 fns x3 propagated (fleet 60.5%)
2026-06-22 02:50:42 -06:00
Drew T
77644039b8
feat(phase-21): worker gate — +6 fns x6 propagated (fleet 60.38%)
2026-06-22 02:10:22 -06:00
Drew T
7d46a6056e
feat(phase-21): worker gate — +4 fns x4 propagated (fleet 60.15%)
2026-06-22 01:34:03 -06:00
Drew T
8a6db99b85
feat(phase-21): worker gate — +3 fns x3 propagated (fleet 59.99%)
2026-06-22 00:53:33 -06:00
Drew T
1332f43d55
feat(phase-21): worker gate — +4 fns x4 propagated (fleet 59.87%)
2026-06-22 00:05:35 -06:00
Drew T
28767a6a07
feat(phase-21): worker gate — +1 fns x1 propagated (fleet 59.72%)
2026-06-21 23:26:10 -06:00
Drew T
a1b29eac8a
feat(phase-21): recovery gate — +2 fns x2 propagated (fleet 59.68%)
2026-06-21 22:51:51 -06:00
Drew T
125222d14e
feat(phase-21): worker gate — +7 fns x6 propagated (fleet 59.6%)
2026-06-21 22:35:16 -06:00
Drew T
7f272eb6b8
feat(phase-21): worker gate — +5 fns x4 propagated (fleet 59.37%)
2026-06-21 22:02:17 -06:00
Drew T
1d7c31393c
feat(phase-21): worker gate — +7 fns x4 propagated (fleet 59.21%)
2026-06-21 15:17:27 -06:00
Drew T
4d00a40609
feat(phase-21): worker gate — +4 fns x2 propagated (fleet 59.05%)
2026-06-21 13:50:39 -06:00
Drew T
bee543722d
feat(phase-21): worker gate — +1 fns x1 propagated (fleet 58.98%)
2026-06-21 13:04:40 -06:00
Drew T
76c5feb116
feat(phase-21): worker gate — +1 fns x1 propagated (fleet 58.94%)
2026-06-21 12:50:16 -06:00
Drew T
c2e93e50cd
feat(phase-21): T3 — backlog ledger + shared gate stage (validated, +0.08%)
...
- tools/backlog.py: near-miss ledger (.run/backlog.jsonl + docs/backlog.md ranked by
reach->closeness->size; drop-now-matched filter, P9). tools/gate_stage.py: the shared
deterministic spine both worker+grinder call (canon_resident_calls -> cast_call_sites ->
sig_unify -> harvest_verify --chunk 1 -> dedup_propagate --auto-from -> backlog -> summary).
- validated end-to-end on a real 30-draft m2c sample: banked func_801710DC + propagated x134
(dedup 1506->1508), 29 near-misses logged+ranked. make check-all 136/136 byte-identical
(R22); fleet 58.82%->58.90%; dedup-check 1508 validated/0 failed (G3/P9).
- capped-fns reframe (R14): they're matched-inline (propagation-blocked), not draftable ->
deferred to the worker; not claiming the unbanked +0.3% (P9).
2026-06-21 12:32:21 -06:00
Drew T
6c5bd1c4a9
feat(phase-20): cast_call_sites.py — the §17a-1 callee-cast cap tool; 6 recovered, fleet 58.63%->58.82%
...
- tools/cast_call_sites.py: per draft, callee whose canonical TU sig != draft's
intended sig -> decl->canonical (kills in-TU conflicting types, keeps symbol in
scope) + call-site cast ((ret(*)(args))func_X)(args) (codegen-neutral: gcc folds
the cast of a known symbol -> direct jal). Pure --in/--out; whole-binary gate is
the arbiter (G3/P9). Pipeline: canon_resident_calls -> cast_call_sites ->
sig_unify -> harvest_verify --chunk 1
- recovered 6 of T6 batch-1's 33 gate-fails byte-identical (func_80153C44/8015CF58/
801711FC/80161BE0/801683D8/8015F948); 5 propagated x134 + 1 local; check-all 136/136
- R14 CORRECTION of cookbook §20's '~33' projection (byte-proven): the batch is NOT
mostly callee-conflicts — ~6 callee (cast-recovered), ~18 DEF-side loose-typing wall
(def's matchable sig conflicts with the unchangeable caller-canonical; caller-side
fix BLOCKED because INCLUDE_ASM declares no symbol -> a shared macro's internal
extern is load-bearing in the 133 stub overlays), + a small DATA tail. The def-side
needs re-drafting under the caller-canonical sig (future wave), not a text transform
- cookbook §20 RESOLUTION + SETUP tool inventory (R16/R21/R30); CURRENT_PHASE log (R28)
- fleet 58.63% -> 58.82%, dedup 1501 -> 1508, 0 NON_MATCHING (G4)
2026-06-21 02:04:39 -06:00
Drew T
9991e4d6be
feat(phase-20): T6 batch-1 — harvest wave 41/48 match_one, 8 banked (7 x134), fleet 58.35->58.63%
...
- Ultracode wave on 48 cached reach-134 <=90-ins targets: 41/48 match_one MATCH (85%)
- whole-binary byte-gate: 8/41 banked (canon 3 + sig_unify 5); 7 propagated x134 + 1 local;
dedup 1494->1501, check-all 136/136, +0.28%
- FINDING (R14/P9): match_one->gate gap ~80% this batch = EXTERN-CODEGEN-COUPLING (a callee's
declared sig changes the call codegen; match_one uses the draft externs, the gate uses the
overlay decls). The 33 lost are byte-correct vs the wrong externs -> need a callee-extern-
canonicalize pass (NOT sig_unify, which rewrites the def-sig and regresses byte-correct drafts)
- the 7 DIFFs = gcc-class diagnoses: T3c store-vs-load (8014F2E0/80150528) CONFIRMED unsteerable
(sched.c); SS10 hoist-vs-remat (80149374/801493D0); IV-combine (80177AD4); hoisted-invariant
order (80177F84); 80161A90 = -O1 (build-infra)
2026-06-21 00:57:04 -06:00
Drew T
4f5f73c480
feat(phase-20): T1 — typedef lift closes the type-blocked propagation cap (9 fns ×134)
...
- build_engine_types.py: add find_typedefs() (brace-aware) + typedef_name() (anon-struct,
fn-ptr, alias) + same-name/overlap collision guards; lift 14 typedefs to engine_types.h
in source order after the named structs (A801593E4 -> S801593E4 dep preserved)
- engine_types.h: 48 named types + 14 typedefs; ov_SC01_077 byte-neutral (still d19c9580)
- dedup_propagate --auto-from: 9 reach-134 fns propagated x134 (8013E4B4 80148C9C 8014A238
8014C118 80153978 801593E4 80168664 8016B964 8017AD0C); engine_core.h +9 DEFINE macros
- FINDING (R14/P9): cap was 16; only 9 were TYPE-blocked (all freed). The other 7 fail on
undeclared callees/data (80142B2C 801535F4 80155E30 80157580 801576A8 80168F40 80170B48)
-> the SS19 declaration-plumbing class, a recovery-tooling lever, NOT the type-lift
- check-all 136/136 byte-identical; fleet 58.00%% -> 58.35%%; dedup 1485 -> 1494 / 0 failed; 0 NON_MATCHING (G4)
2026-06-20 23:49:58 -06:00
Drew T
c43b6d0830
feat(phase-19): T3 struct-lift + propagation top-up — fleet 57.93%->58.00%
...
- build_engine_types.py --strip: lifted 48 named types -> src/shared/engine_types.h
(byte-neutral, ov_SC01_077 d19c9580); unblocked +4 struct-using matches -> propagated ×134
(incl. func_80147514, a T2 match freed by the lift)
- check-all 136/136 BYTE-IDENTICAL (R22); fleet 57.93% -> 58.00%; phase total 56.64% -> 58.00%
- KEY FINDING: propagation (not matching) now caps the fleet-% yield — ~16 banked matches stay
ov_SC01_077-local because their bodies use typedef'd/anonymous/sibling local types that the
named-struct-only build_engine_types can't lift (dedup_propagate compiles_standalone rejects).
Phase-20 lever: extend the type-lift to typedefs -> recovers those ×134 for ~0 agent tokens
2026-06-20 19:57:34 -06:00
Drew T
3e99d2836d
feat(phase-19): T3 batch-2 wave — 25 matched, 8 propagated ×134, fleet 57.62%->57.93%
...
- Ultracode wave (38 targets, clean hints after the gen_harvest_targets fix): 35/38 match_one
MATCH (92%, up from 88%); 2 of 3 garble-retries now match; 3 DIFF = genuine (delay-slot
schedule, call-crossing hoist-vs-remat, narrow-param STOP)
- gen_harvest_targets.py: fixed INLINE_DEF_RE (was matching indented `if(func_X(...)){`
call-exprs as defs -> garbled callee hints agents pasted as externs); 0 garbled of 749
- whole-binary gate: 25 banked. ALL 18 stage failures were the shared-caller ARITY class ->
NEW tools/fix_arity_callers.py automates the no-proto caller-extern recovery (+8); 10 remain
= genuine loose-typing conflicts (caller sig != def sig), Phase-16 documented wall
- pipeline finding folded in: gate canon-only FIRST, sig_unify FALLBACK (.run/t3_gate2.sh)
- propagated 8 ×134 (17 stayed ov_SC01_077-local: inline named structs need engine_types lifting)
- check-all 136/136 BYTE-IDENTICAL (R22); dedup 1475->1483 validated/0 failed; 0 NON_MATCHING (G4)
- fleet byte-identical 57.62% -> 57.93% (+0.31%)
2026-06-20 19:51:50 -06:00
Drew T
2f9b0d9906
feat(phase-19): T3 batch-1 wave — 30 matched, 25 propagated ×134, fleet 56.64%->57.62%
...
- Ultracode wave (50 agents, §17 toolkit): 44/50 match_one MATCH (88%); 6 DIFF = genuine
gcc-quirk tail (fold-const constant-last, GCSE/reload, loop-IV combine, reg time-sharing,
narrow-param), correctly stubbed (no false matches)
- whole-binary gate (the sole arbiter, G3/P9): 30 banked. Two pipeline findings (R14):
- sig_unify REGRESSES already-canonical agent drafts -> gate canon-only FIRST, sig_unify
FALLBACK (.run/t3_gate2.sh) recovered +5 vs unconditional sig_unify
- 2 arity conflicts recovered via the T2 no-proto caller-extern fix (func_8014AB7C/AC10)
- propagated 25 ×134 (dedup_propagate --auto-from; incl. the T2-deferred func_8017209C);
~5 stayed ov_SC01_077-local (inline named structs, need engine_types lifting)
- check-all 136/136 BYTE-IDENTICAL (R22); dedup 1450->1475 validated/0 failed;
fleet byte-identical 56.64% -> 57.62% (+0.98%); 0 NON_MATCHING (G4)
- 14 still-failing (3 agent-garble from a gen_harvest_targets garbled-sig bug, 1 struct,
10 genuine codegen near-miss) -> batch-2 retry candidates
2026-06-20 19:27:53 -06:00
Drew T
6d9cd213a2
feat(phase-18): Step-1 recovery — +2 matches (func_8012F68C parse-fix x134, func_8012A418 sibling-decl reconcile)
...
- func_8012F68C: agent left a malformed 'extern if(...)' line -> fixed to a proper extern; gated x134.
- func_8012A418: reconciled a stale 'M2C_UNK func_8012A418()' sibling forward-decl to the real
'void func_8012A418(void)' sig; byte-gated, banked REAL in ov_SC01_077 (local-type body, not shared-macro).
- Step-1 total: 22 reach-134 matches (18 propagated x134 + 4 local REAL); deferred to Phase 19:
3 TU-integration cases (func_80147514/8017209C/80168F40, standalone-MATCH) + 3 codegen DIFFs
(func_80131CA8/80150528/8014E5B4) + the per-file -O0 class (func_8013C360 +17 siblings) + 2 genuine
residuals (func_8014F2E0 §10 sched, func_8012C2D0 loop-guard order).
- make check-all 136/136 byte-identical (R22); 0 NON_MATCHING (G4).
2026-06-20 14:39:51 -06:00
Drew T
fa0d4a3f62
feat(phase-18): Step-1 wave banks 20 reach-134 matches (55.94->56.60%)
...
- bounded Step-1 wave (.run/harvest_wave_p18s1.js): 31 tractable reach-134 targets, agents
taught §17 toolkit + embedded canonical callee sigs + call-site-cast/re-validate fix.
- match_one MATCH 28/31 (90%, vs calibration 12/16); whole-binary gate 20 verified:
7 pins, 5 barrier, 1 array-decay, 2 call-site-cast, 12 reconstruct, 1 other. 17 propagated
x134 (3 have h_exact membership <134 -> banked REAL in ov_SC01_077 only).
- fleet 55.94 -> 56.60%; make check-all 136/136 byte-identical (R22); 0 NON_MATCHING (G4).
- 3 DIFFs well-characterized: func_8013C360 = per-FILE -O0 class (18 scattered -O0 fns;
agent's C byte-exact at -O0, needs an -O0 split file like src/boot.c -> Phase 19);
func_8014F2E0 = §10 store-vs-load scheduler tie-break; func_8012C2D0 = NEW gcc loop-guard
operand-order class (irreducible). 8 gate-fails are recoverable sibling-decl/parse cases.
2026-06-20 14:30:36 -06:00
Drew T
d593ee20fe
feat(phase-18): Step-3b calibration — §17-toolkit wave banks 9 reach-134 matches (55.58->55.94%)
...
- upgraded harvest wave (.run/harvest_wave_3b.js) teaches the §17 TOOLKIT: triage the
match_one diff -> reconstruct / array-decay / register-pins+barrier (instead of stubbing
the regalloc tail). Calibration: 16 fresh tractable reach-134 targets.
- whole-binary close-rate 9/16 = 56% (vs Phase-17 baseline 33%): 2 via register pins
(func_8012CB64, func_801468C8), 2 via array-decay (func_80149544, func_80149584),
5 via clean reconstruction. Each reach-134 -> propagated x134 (config/dedup.us.yaml +9).
- FINDING (R16 flywheel): the match_one->gate gap (12->6 then ->9) is the §3a call-site
CASTS the agents skipped + sig_unify narrowing the extern to canonical -> conflict.
Recovered 3 by call-site arity-cast / void-return cast (codegen-neutral). Step-1 prompt
must teach call-site casts + re-validate after sig_unify.
- make check-all 136/136 byte-identical (R22); dedup-check 1432 validated, 0 failed;
0 NON_MATCHING in any default build (G4).
2026-06-20 13:40:11 -06:00
Drew T
f1bbcd241f
feat(phase-18): VERDICT REVERSED — func_8012B8E4 hand-matched via register pinning
...
The 'unsteerable' regalloc-order class is NOT unsteerable. Drew's directive (hand-match
everything) exposed the lever I'd skipped: explicit register pinning.
- func_8012B8E4 (the flagship circular reach-134 'unsteerable' fn): 21 -> MATCH via
* register pins: register s32 d __asm__("$16"); register s32 s1ang __asm__("$17")
-> FORCES the $s0/$s1 global allocation gcc otherwise density-orders the other way
* branch-polarity invert (§3-T4): 24->21
* explicit clamp temps (t=u6+0x1000; iVar4=u5-t): fixes the reassociation, 7->3
* scheduling barrier __asm__ __volatile__("" : : "r"(u5)): anchors the last sll, 3->MATCH
- byte-gated (harvest_verify, G3/P9) + propagated x134 (per-overlay gate); 134 byte-identical
- recipe = §10-family hand technique (pins + barriers); labor-intensive (per-fn register map
from the asm) but it WORKS -> the circular tail IS hand-matchable, not asm-only
- supersedes the T1-T5 'unsteerable' verdict; cookbook §17 + PhaseEnd to be revised accordingly
2026-06-20 12:17:54 -06:00
Drew T
52cfc22972
feat(phase-18): T6 — func_801399A8 matched + propagated x134 (fleet 55.51->55.55%)
...
- reach-134 STRUCTURAL_MISS target closed by the research idioms:
* for-loop structure (vs do-while) -> correct beqz delay-slot scheduling
* statement-order in the for-update (cookbook §2-T2) -> final 2 increments
* sig_unify canonical retype (s32 return + s32 data, integer address arithmetic)
-> resolves the TU-level conflicting-types gate failure that match_one masked
- byte-gated (harvest_verify, G3/P9): ov_SC01_077 stays d19c9580 BYTE-IDENTICAL
- propagated to all 134 overlays via dedup_propagate (per-overlay gate, fail-closed)
- make check-all: 136 passed / 0 failed; fleet 190,949 -> 191,083 / 344,010 = 55.55%
- KEY reframe: the STRUCTURAL_MISS bucket IS matchable (idioms work); distinct from
the PERMUTER_CLASS/circular regalloc-order tail which is unsteerable (T1-T3 verdict)
2026-06-20 11:48:12 -06:00
Drew T
0dd9bf6bac
feat(phase-17): calibration harvest wave — fleet 55.04%->55.51% (+0.47%)
...
- Ultracode wave: 30 high-reach tractable residuals, parallel guided-hand-matching
agents (m2c + Ghidra-C cache + asm + actor-struct + S1/S2/S3a playbook), self-
validate match_one. 18/30 match_one MATCH (60%); 10/30 whole-binary verified (33%)
after sig_unify recovered 2 -> all 10 propagated x134; 2 demo fns caught up
- 136/136 byte-identical (R22 clean check-all); REAL +1,610; 1421 dedup groups
- KEY FINDING: the match_one->whole-binary gap (60%->33%) is 100% SIG CONFLICTS
(shared callees like func_80131CA8 declared inconsistently across parallel agents),
NOT codegen. The canonical-sig layer (deferred as low-value) is the ESSENTIAL
enabler -> would lift 33% toward 60%. 12/30 are the genuine gcc-quirk tail (DIFF).
- Ghidra pre-pass: tools/ghidra_scripts/DecompileFunctions.java (headless batch
decompile -> .run/ghidra_c cache; no /mcp needed); 300 tractable targets sized
- harness: .run/harvest_wave_s3.js (embedded-targets Workflow; args channel doesn't
transit arrays). cost ~1.89M tokens / 30 fns
2026-06-19 20:54:45 -06:00
Drew T
19f005ea11
feat(phase-17): guided hand-matching demo — GO; 4/5 close-rate; loose-typing wall breakable
...
Pivot from the failed brute-force to the Ghidra-driven hand-match loop (Drew's steer).
DEMO sampled 5 residuals; 4 reached full whole-binary byte-matches:
- func_8012D3B4 (PERMUTER_CLASS) — closed + propagated x134 (DEFINE_func_8012D3B4)
- func_8012832C (STRUCTURAL_MISS switch) — closed
- func_8015F89C (fnptr-call, §15-S2) — closed
- func_80147B5C (pure struct) — closed (first try)
- func_8012A328 (STRUCTURAL_MISS) — 60/60 structure + correct regs, 1-instr gcc
placement quirk (the §10 hard-tail minority; permuter floor-polluted)
KEY FINDING: the Phase-16 "loose-typing wall" is a signature-CONSISTENCY problem, not
fundamental — resolved by a 5-move playbook (return-widening void->s32; sign cast (u16);
arity cast — refines the §14e arity dead-end; param-canonical-matching; fn-ptr-table
typing), all byte-neutral.
- canonical-widenings (byte-neutral, fleet re-verified): engine_core.h RotTransPers +
func_80029504 -> s32; ov_SC01_077.c func_801288B0/801289F0 -> s32
- docs/hand-matching-process.md (NEW): full replicable process + idioms + the §3a
playbook + current banked state + automation roadmap (fresh-session-safe)
- fleet: make check-all 136/136 byte-identical (R22); 55.00% -> 55.04%; dedup-check 1409/0
- config/dedup.us.yaml: +1 group (func_8012D3B4, 134 members)
- CURRENT_PHASE.md progress log updated
2026-06-19 18:03:49 -06:00