From 91895afd3cc3966c280e28c3e5178fc669bade29 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Tue, 1 Sep 2026 20:19:24 -0600 Subject: [PATCH] =?UTF-8?q?fix(tools-health):=20audit-cdecl=20is=20a=20HEA?= =?UTF-8?q?LTH=20check,=20not=20a=20regression=20suite=20=E2=80=94=20sampl?= =?UTF-8?q?e=20by=20default?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Drew, correctly: "this is a tools health test, not a full regression test." audit-cdecl re-parsed every declaration in all 4,168 TUs and handed each to real gcc — ~787s of pure-Python collection before the first cc1 call. It made `make tools-health` unrunnable: >15 min, killed twice, never completed once. `--limit` already existed and its own help calls it "a fast smoke run"; nothing was using it. Sampled by default (CDECL_AUDIT_TUS ?= 60); the exhaustive form stays as `audit-cdecl-full` for when cdecl.py itself changes. audit-cdecl : >9 min -> 61s (4,777 declarations adjudicated, 0 rejected) tools-health: never completed -> 333s, rc=0, all green Known limit, recorded not hidden: --limit takes the FIRST N TUs, not a random sample, so the smoke run always exercises the same files. Randomising the sample (or rotating by seed) is the follow-up. --- Makefile | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Makefile b/Makefile index d32ee3b719..aecc264424 100644 --- a/Makefile +++ b/Makefile @@ -184,7 +184,16 @@ audit-corpus: # so the candidate set is every depth-0 statement, and there is no hand-maintained candidate regex # to rot. The real cross-gcc then adjudicates BOTH the parse and the residue (R34): it compiles each # declaration beside this parser's reconstruction of it, and a statement gcc also rejects is not C. +# SAMPLED BY DEFAULT (P31 S70). This is a HEALTH check, not a regression suite. The full pass +# re-parses every declaration in all 4,168 TUs and hands each to real gcc: ~787s of pure-Python +# collection before the first cc1 call, and it made `make tools-health` unrunnable (>15 min, killed +# twice). The exhaustive form still exists as `audit-cdecl-full` — run it when cdecl.py itself +# changes, not on every health check. +CDECL_AUDIT_TUS ?= 60 audit-cdecl: + $(VENV_PY) tools/cdecl.py --audit --gcc --limit $(CDECL_AUDIT_TUS) + +audit-cdecl-full: $(VENV_PY) tools/cdecl.py --audit --gcc # Binary-citizenship gate (Phase-28 T7, R36 via R32). Asserts every onboarded binary