From e830e63be5f31d237d9cbf559778a07a5530f87b Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Wed, 2 Sep 2026 14:55:15 -0600 Subject: [PATCH] =?UTF-8?q?fix(draw=5Fwaves):=20normalise=20exclude=20rows?= =?UTF-8?q?=20to=20(binary,=20fn)=20=E2=80=94=20the=20list=20was=20excludi?= =?UTF-8?q?ng=20NOTHING?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit My own regression from the same session: exclude_audit.parse now returns 4-tuples (it carries the WALL pin and each entry's note), and draw_waves built `skip` straight from them, so every membership test against a 2-tuple missed and the exclude list had no effect at all — while the run reported success. Caught by MEASURING the pool rather than trusting the run: it came back 88 non-main + 45 main = the full frontier, when a 25-entry list should have reduced it. Now 69 and 41, which reconciles exactly (88 - 16 carve-blocked - 3 non-main walls; 45 - 4 open main walls, PopMatrix/PushMatrix being linked and already refused). The silently-narrowed-scope shape again, and the third time this session that counting the RESULT rather than trusting the REPORT is what caught it. --- tools/draw_waves.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tools/draw_waves.py b/tools/draw_waves.py index 5b1471e13..9ebc795c1 100644 --- a/tools/draw_waves.py +++ b/tools/draw_waves.py @@ -179,7 +179,11 @@ def main(): sys.exit(msg + "\n (--exclude-stale-ok to draw anyway)") print(msg + "\n --exclude-stale-ok given: proceeding, and ignoring those entries.") ex_rows = [(b, f) for b, f, k, _ in classified if k not in EA.STALE] - skip = set(ex_rows) + # NORMALISE TO (binary, fn). `exclude_audit.parse` returns 4-tuples (it carries the WALL pin + # and the entry's note), and the membership tests below are 2-tuples — building `skip` from the + # raw rows silently matched NOTHING and excluded NOTHING while reporting success. Caught by + # measuring the pool instead of trusting the run: it came back 88+45 = the FULL frontier. + skip = {(b, f) for b, f, *_ in ex_rows} bins = sorted(os.path.basename(p) for p in glob.glob('src/*') if os.path.isdir(p)) if a.only_main: