From 7b477c82b9dacb9b91fe60dc9e602f7fd7c98e1f Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Mon, 22 Jun 2026 02:13:17 -0600 Subject: [PATCH] =?UTF-8?q?feat(phase-21):=20wave=5Ftargets=20=E2=80=94=20?= =?UTF-8?q?exclude=20self-MATCH-but-gate-rejected=20via=20drafter=20verdic?= =?UTF-8?q?t=20too?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit close=0 alone missed fns sig_unify regresses to close>0 post-transform (e.g. func_8014B944, self-MATCH every wave, never banks). Also match the drafter's 'none — MATCH' where_stuck verdict. Excluded set 7 -> 16; pool waves now draft more FRESH targets (wave-8 close-rate already up to 0.21). --- tools/wave_targets.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/tools/wave_targets.py b/tools/wave_targets.py index 65d1808667..9e3deb9411 100644 --- a/tools/wave_targets.py +++ b/tools/wave_targets.py @@ -65,13 +65,22 @@ def backlog_walls(): def plumbing_blocked(): - """near-misses with closeness==0 = match_one MATCH but the whole-binary gate REJECTED (DEF-side / - TU loose-typing plumbing). Re-drafting just reproduces the same byte-correct body the gate rejects - again -> it can NEVER bank via a worker wave (Phase-21 finding). Skip in POOL selection so agents - draft FRESH targets instead; these stay in the backlog as recovery-tooling / hand-finish fuel - (an improved sig_unify / recovery gate can still bank them out-of-band, as the arity-extend fix did).""" - return {r["name"] for r in backlog.load_best() - if r.get("status") == "near" and r.get("closeness") == 0 and r.get("name")} + """SELF-MATCH-but-gate-REJECTED near-misses (DEF-side / TU loose-typing plumbing). Re-drafting just + reproduces the same byte-correct body the gate rejects again -> NEVER banks via a worker wave + (Phase-21 finding). Skip in POOL selection so agents draft FRESH targets; these stay in the backlog + as recovery-tooling / hand-finish fuel (an improved sig_unify / recovery gate banks them out-of-band). + + Signal: closeness==0 (post-recovery match_one MATCH) OR a drafter self-MATCH verdict in where_stuck + ('none — MATCH …'). The latter is needed because sig_unify can REGRESS a self-MATCH draft to close>0 + post-transform (Phase-19), so it dodges the ==0 filter though the body is byte-correct & gate-blocked.""" + blocked = set() + for r in backlog.load_best(): + if r.get("status") != "near" or not r.get("name"): + continue + ws = (r.get("where_stuck") or "").strip().lower() + if r.get("closeness") == 0 or ws.startswith("none —") or ws.startswith("none -") or "— match" in ws or "match_one match" in ws: + blocked.add(r["name"]) + return blocked def emit(batch, out):