fix(phase-30): T0.5 — import trigger matches Ghidra's actual 'not found' phrase (probe caught +0/371 silent no-fire); probe findings logged

This commit is contained in:
Drew T
2026-07-30 16:52:05 -06:00
parent 19766a6dc3
commit bd76f2373c
2 changed files with 17 additions and 2 deletions
+13
View File
@@ -84,6 +84,19 @@ stub on a named wall/behemoth/queue ledger** — 140/140 byte-identical througho
## Per-task log
### T0.5 ▶ launched + probed (2026-07-30)
`tools/prefetch_fleet.py` (committed `commit:1220`): 126 programs / 7,966 uncached representatives.
**Probe 1 (main):** +1,525/2,002 cached in <1 min — the decompile leg is CHEAP; **477 main addrs
have no defined function in the program** (main's 06-14 auto-analysis gap) → follow-up: a
`DefineFunctions.java` completion pass over main from splat entries (the Phase-10 mechanism), then
re-run (resumable). **Probe 2 (import leg): FAILED then FIXED** — my missing-program matcher
checked "not exist"/"NOT_FOUND"; Ghidra's actual phrase is "Requested project program file(s)
**not found**" → the self-healing import never fired (+0/371, +0/315). One-line trigger broadening;
re-probe running. T1a (deterministic recovery sweep, 108 fns / 50 binaries, driver-committed banks,
no-propagate — reach≥2 winners ride T3 Lane A) launched concurrently; commit-scope interaction
VERIFIED safe (driver delegates to gate_stage's scoped `git add -u src/` — ghidra/ churn cannot
leak into bank commits).
### T0(e2)+(f) ✅ — autopsy refreshed; frontier regenerated + the three populations PINNED (2026-07-30)
- **Autopsy** (`collect -j12` + `report`): 1,349 rows — **1,178 near / 63 nobuild / 108
match_one-MATCH** (T1's stranded-draft fuel, 3× the S16 sample), 0 classifier errors,
+4 -2
View File
@@ -142,8 +142,10 @@ def main():
if rc != 0 and not p.startswith(("SLUS", "sep8", "aug31")) and p != "resident":
# program likely missing -> import on demand, retry once. NEVER -overwrite an
# existing program; ghidra_import_raw stages under the alias only when absent.
tail = open(log, errors="replace").read()[-400:]
if "not exist" in tail or "NOT_FOUND" in tail or "Unable to locate" in tail:
tail = open(log, errors="replace").read()[-600:]
# Ghidra's actual phrase: "Requested project program file(s) not found: <name>"
if ("not found" in tail or "not exist" in tail or "NOT_FOUND" in tail
or "Unable to locate" in tail):
if import_overlay(p, log) == 0:
rc = run_decompile(p, addrfile, log)
got = len(cached()) - before