12 of the 54 suites under tests/scripts/ are executed by nothing. They are not
in scripts/agent-preflight.sh's SUITES array, not in the explicit
python3 tests/scripts/test_*.py list of the agent-record job, not in any
other workflow, and not in CTest:
test_check_arm_isa_build
test_check_cpu_isa_build
test_check_pr_size
test_check_role_discipline
test_compiler_pragma_boundaries
test_cpu_kernel_bench
test_gen_vulkan_spirv
test_main_baseline <- registered by #274's repair; the rest are not
test_mlx_system_headers
test_now_render
test_ready_for_helper
test_record_merge_shape
Reproduce:
for f in tests/scripts/test_*.py; do b=$(basename "$f" .py)
grep -q "$b" scripts/agent-preflight.sh || grep -q "$b" .github/workflows/ci.yml || echo "$b"
done
(test_check_role_discipline is named inside scripts/check-pr-size.py as a
path classification, not as an execution; test_cpu_kernel_bench is named in
examples/CMakeLists.txt for a different target.)
Why no checker notices
scripts/check-test-registration.py is the natural home and cannot see this
class by construction. Its REQUIRED_TESTS (scripts/check-test-registration.py:35)
is a fixed two-entry map naming one C++ target, and its wiring_errors() proves
only that the checker and its own mutation suite are wired into preflight and
CI. It is a self-guard, not a population guard, so a new Python suite added
tomorrow is silently unregistered exactly like these twelve.
Found by
The fresh review of PR #397 (issue #274). That PR's tests/scripts/test_main_baseline.py
is 44 tests guarding every claim the row makes, and grep -rn test_main_baseline .
returned exactly one hit: the file itself. The instance is fixed in #397 by
registering it in both places. The class is this issue.
What closing this looks like
Extend check-test-registration.py (or add a sibling) so that every
tests/scripts/test_*.py is either executed by preflight + CI, or listed in an
explicit, commented exemption set that names why. Changing that checker's
semantics is a spec + red-before-mutation + green-after change under AGENTS.md
"Changing the rules or a checker", and it must add its mutations to
tests/scripts/test_check_test_registration.py and re-pin
MUTATION_MANIFEST_SHA256 — which is why it was judged out of scope for the
#397 review repair rather than done inline.
Then register (or consciously exempt) the other eleven suites. Several of them
almost certainly fail today, which is the point.
12 of the 54 suites under
tests/scripts/are executed by nothing. They are notin
scripts/agent-preflight.sh'sSUITESarray, not in the explicitpython3 tests/scripts/test_*.pylist of theagent-recordjob, not in anyother workflow, and not in CTest:
Reproduce:
(
test_check_role_disciplineis named insidescripts/check-pr-size.pyas apath classification, not as an execution;
test_cpu_kernel_benchis named inexamples/CMakeLists.txtfor a different target.)Why no checker notices
scripts/check-test-registration.pyis the natural home and cannot see thisclass by construction. Its
REQUIRED_TESTS(scripts/check-test-registration.py:35)is a fixed two-entry map naming one C++ target, and its
wiring_errors()provesonly that the checker and its own mutation suite are wired into preflight and
CI. It is a self-guard, not a population guard, so a new Python suite added
tomorrow is silently unregistered exactly like these twelve.
Found by
The fresh review of PR #397 (issue #274). That PR's
tests/scripts/test_main_baseline.pyis 44 tests guarding every claim the row makes, and
grep -rn test_main_baseline .returned exactly one hit: the file itself. The instance is fixed in #397 by
registering it in both places. The class is this issue.
What closing this looks like
Extend
check-test-registration.py(or add a sibling) so that everytests/scripts/test_*.pyis either executed by preflight + CI, or listed in anexplicit, commented exemption set that names why. Changing that checker's
semantics is a spec + red-before-mutation + green-after change under AGENTS.md
"Changing the rules or a checker", and it must add its mutations to
tests/scripts/test_check_test_registration.pyand re-pinMUTATION_MANIFEST_SHA256— which is why it was judged out of scope for the#397 review repair rather than done inline.
Then register (or consciously exempt) the other eleven suites. Several of them
almost certainly fail today, which is the point.