feat(phase-29 Task-13B): directed permuter wins first try; 3 latent gate defects fixed at root

First run of the Task-13A-targeted grinder (--once --batch 8 --permute-secs 90):
  targeting: ON — 1665 classified; only bucket=permuter is admitted
  targeting skipped 1601 non-permuter candidates
    {redraft 707, structural 583, integration 305, unclassified 4, unknown 2}
  permuter WON func_80181F78 @ ov_SC03_014 (close was 1)   [~6 min]

BANKED 2 (both whole-binary byte-gated, R22 clean-fleet 140/140):
- func_80181F78 (8 ins)  — classified DELAY-SLOT / schedule
- func_80141B90 (29 ins) — classified IMM-VALUE / cse
Both were classified bucket=permuter by residual_class BEFORE the run: the classifier
predicted a search-closer could reach them, and one did. First end-to-end validation of
the targeting thesis.

THREE latent defects, all pre-existing, all unreachable while the grinder banked nothing
since Phase 21 — the fix made it win and every one fired at once (cookbook §60a):

1. gate_stage commit path crashed on src=None. `src` is DELIBERATELY never defaulted
   (Phase 26-A: a default silently PINS the gate to the main .c), but the commit did
   `git add src …` unconditionally -> every caller that omits it (grinder, orchestrator,
   idiom_hunt) crashes THE MOMENT IT BANKS. Now `git add -u src/`, which also retires the
   `src/ov_*/*.c` filename glob that once omitted 4 R22-verified banks from a commit.
2. _xform ladder dirs (-cn/-cast/-rc/-uni) ACCUMULATE across runs: they held 34 stale
   drafts, so the gate processed 34 when the grinder submitted 1, and banked one function
   it was never asked to try — which would have been committed under a message naming a
   different one. Nothing wrong entered the tree (G3/P9 held; the gate banks only
   byte-identical output) but report and work had diverged. Now cleared per run.
3. grinder called gate_stage with the default propagate=True = `dedup_propagate
   --auto-from`, the §55b fleet-wide path that timed out at 3600s and left 90/140 overlays
   broken — and being INSIDE the gate it takes the banks down with it. Now propagate=False;
   banks commit cheap, propagation is its own targeted --addr batch (§55b law).

R22: make clean && extract-all && check-all -> 140 passed, 0 failed of 140.
tools-health OK (dedup 1847/0, C1 234343/234343); 0 NON_MATCHING (G4).
This commit is contained in:
Drew T
2026-07-21 11:24:48 -06:00
parent b3ab5c2253
commit b8ee9fa9d2
8 changed files with 1866 additions and 1738 deletions
+19 -1
View File
@@ -1426,7 +1426,25 @@ void func_80141A60(void)
}
INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_80140608", func_80141B90);
extern s16 D_800B9A02;
extern u8 D_801151C8[];
extern s32 D_801151D0;
extern u16 D_80115116;
extern unsigned short D_80115112;
extern u8 D_800B9A15;
extern void func_8013FAF8(s16, s16);
void func_80141B90(void)
{
volatile double reserved;
D_801151D0 = ((unsigned int *)D_801151C8)[(*(unsigned short *)&D_800B9A02)];
((void (*)(s32, s32))func_8013FAF8)(2, 3);
if (D_80115116 == 0)
{
D_800B9A15 = 0;
D_80115112 = (long long) (D_80115112 + 1);
}
}
DEFINE_func_80141C04() /* dedup: shared engine-core @0x80141C04 (src/shared) */
+23 -1
View File
@@ -3564,7 +3564,29 @@ INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017EB7C", func_80181E8
INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017EB7C", func_80181EEC);
INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017EB7C", func_80181F78);
extern void func_8012C218(void *a0);
void func_80181F78(void)
{
int new_var;
((s32 (*)(s32)) func_8012C218)(new_var);
new_var = 0;
}
INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017EB7C", func_80181F98);