mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-28 23:00:29 -04:00
fix(phase-30): T4 — 2 'Phase-22 grinder bugs' verified STALE (already fixed); real fixes: asm_subdir_for derives from corpus (R33), --fix-def-sig help carries the §119 warning
Verified against code rather than the ledger: the split-blind lookup globs */ correctly, and the churn was fixed by T5's input-signature gating. Both struck. asm_subdir_for was still a parallel oracle (silent g[0] on multi-match) -> now corpus.asm_path. --fix-def-sig defaults off correctly but advertised 'Byte-neutral; gate arbitrates' — the claim T84 refuted (signedness-wrong header decl over a byte-correct draft; 137 members held at 0 until the flag was dropped). A defect ledger nobody re-verifies decays into busywork — verify before scheduling.
This commit is contained in:
@@ -109,6 +109,23 @@ the T2 log entries; check both background tasks' outcomes first (`git log` for t
|
||||
|
||||
## Per-task log
|
||||
|
||||
### T4 (partial) ✅ — the two "Phase-22 grinder bugs" are STALE carry items; the real fixes were elsewhere
|
||||
Verified against the code, not the list (R14 on our own defect ledger):
|
||||
- **"split-file-blind lookup" — ALREADY FIXED.** `asm_subdir_for` globs `nonmatchings/*/` which
|
||||
matches every split; verified on a `_jr_` fn, an `_o0` fn, and an absent fn. Struck.
|
||||
- **"churn-without-blacklist" — ALREADY FIXED.** The blind `tried.clear()` was replaced by
|
||||
input-signature gating in the T5 targeting work (re-open only fns whose draft mtime/closeness
|
||||
changed), and the blacklist exists. Struck.
|
||||
- **Real fix taken instead (R33):** `asm_subdir_for` was a PARALLEL implementation of
|
||||
`corpus.asm_path` that silently took `g[0]` on multiple matches — now derived from the oracle.
|
||||
- **`--fix-def-sig` posture:** flag correctly defaults OFF, but its help still advertised
|
||||
"Byte-neutral; gate arbitrates" — the exact claim T84 refuted (it imposed a signedness-wrong
|
||||
header decl over a byte-correct draft, `slti`/`sltiu`, and held 137 members at 0 until DROPPED).
|
||||
Help now carries the §119 warning. **The posture was right; the documentation was the defect.**
|
||||
**Lesson for the phase close:** the carried-defect list had 2 of its entries already fixed. A
|
||||
defect ledger nobody re-verifies decays into busywork — verify before scheduling (R35's sequencing
|
||||
applied to the backlog of *our own* bugs).
|
||||
|
||||
### T3 wave 1 (Ultracode, 14 agents, 1.20M tok) — 14/14 match_one MATCH → **8/14 BANKED**; the gate's propagation TIMEOUT left the fleet half-written (caught, reverted, tool fixed)
|
||||
**The wave:** 14 fresh reach-138 cores in ov_SC01_077 (117,162 gain-ins in play), one agent each,
|
||||
drafting against the §31 map + cookbook with `match_one`/`rtu_match` self-verification. **All 14
|
||||
|
||||
@@ -770,9 +770,14 @@ def main():
|
||||
"(they normally need tools/jtbl_family_bank.py). The whole-binary byte-gate stays "
|
||||
"the sole arbiter, but expect ~0%% — and do NOT read that 0%% as a wall.")
|
||||
ap.add_argument("--fix-def-sig", action="store_true",
|
||||
help="T6: rewrite each member draft's DEF signature to the shared-header (engine_core.h) "
|
||||
"canonical decl, so a member forward-declared there with a different sig (e.g. s32* vs "
|
||||
"void*) stops throwing `conflicting types` and compiles. Byte-neutral; gate arbitrates.")
|
||||
help="A REPAIR, NOT A DEFAULT (§119, T84 — do not pass it routinely). Rewrites each member "
|
||||
"draft's DEF signature to the shared-header (engine_core.h) canonical decl, so a member "
|
||||
"forward-declared there with a DIFFERENT sig (e.g. s32* vs void*) stops throwing "
|
||||
"`conflicting types`. It is a repair for drafts whose def contradicts a CORRECT header, "
|
||||
"and a BREAKER for drafts whose def is right and the header is wrong: on 0x80161c98 it "
|
||||
"imposed a signedness-wrong `s32 a1` over the true `u32`, turning a byte-correct draft "
|
||||
"into a 1-instruction DIFF (slti vs sltiu) and holding 137 members at 0 until the flag "
|
||||
"was DROPPED. Use only after a member fails on a def-vs-header conflict you have read.")
|
||||
ap.add_argument("--reconcile", default=None, metavar="RAWDIR",
|
||||
help="M2 def-side-wall path: per (exemplar,sibling), symbol-remap the RAW draft in RAWDIR "
|
||||
"then canon_sig_reconcile against the sibling TU (Q5-proven). Implies --no-preclassify.")
|
||||
|
||||
+9
-4
@@ -18,7 +18,7 @@ Usage: grinder.py [--permute-secs 120] [-j 14] [--batch 10] [--max-nins 220]
|
||||
"""
|
||||
import argparse, glob, json, os, shutil, subprocess, sys, time
|
||||
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||
import p16_permute, gate_stage, backlog, autopsy
|
||||
import p16_permute, gate_stage, backlog, autopsy, corpus
|
||||
|
||||
REPO = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
AUTODIR = ".run/auto"
|
||||
@@ -74,9 +74,14 @@ def log(m):
|
||||
|
||||
|
||||
def asm_subdir_for(binary, fn):
|
||||
"""the asm subdir holding binary's <fn>.s (main or _a/_o0 split); None if absent."""
|
||||
g = glob.glob(os.path.join(REPO, f"asm/{binary}/nonmatchings/*/{fn}.s"))
|
||||
return os.path.dirname(os.path.relpath(g[0], REPO)) if g else None
|
||||
"""the asm subdir holding binary's <fn>.s (main or any _a/_o0/_jr split); None if absent.
|
||||
|
||||
DERIVED from corpus.asm_path (R33) instead of a second glob implementation. The glob was not
|
||||
split-BLIND (the `*` matches every subdir — the Phase-22 'split-file-blind lookup' carry item is
|
||||
STALE, verified P30 T4), but it was a parallel oracle that silently took g[0] when several
|
||||
matched, and a parallel oracle is the defect class corpus.py exists to retire."""
|
||||
p = corpus.asm_path(binary, fn)
|
||||
return os.path.dirname(os.path.relpath(p, REPO)) if p and os.path.exists(p) else None
|
||||
|
||||
|
||||
def heartbeat(state, current=None, banked=0, fp=None):
|
||||
|
||||
Reference in New Issue
Block a user