From 005b-golden.md's task table (design 005b).
- Depends on: T1
Goal: running probes defaults to the set the working tree's diff affects.
The full sweep becomes the explicit case (--all), and probe_all.py is
renamed run_probes.py — a name that says "all" should not be the tool
whose default is a subset (C1).
Context. probe_all.py (repo root) runs the full suite, and already
accepts explicit probe names as positional args. Devs verifying a game change
today either run the full sweep or hand-pick names. Probes are not a
presubmit lane and stay out of presubmit.py — #458 settled that routing
costs more than it saves at presubmit's timescale; this command is the fast
path instead.
PR shape: a stack of two, at different cognitive levels (E3) —
1. T3a — the rename, mechanical, no behaviour change. `git mv
probe_all.py run_probes.py`, then update every reference in the same
PR — tools/pr/probe_gate.py (imports it and spawns it; also its
RESULTS_MARKER prose), tools/pr/merge_pr.py, probe.py,
presubmit.py, tools/nflib/ docstrings, the tools/tests/ suite,
notes/machines.md, notes/probes.md. No compatibility shim: grep says
every caller is in-repo, so delete the old name outright (B12).
tools/tests/test_doc_pointers.py guards the doc references. ⚠️ T3a does
not depend on T1 — it can land first of everything; if T1 is already
open, T1's harness tuple and premise test rename in whichever PR lands
second.
2. T3b — the behaviour change, stacked on T1 and T3a:
- ./run_probes.py (bare) — diff the working tree against origin/main
(override with --base), select via T1, run that set. Print the set
and the matched rules first; an empty set prints why and exits 0.
- ./run_probes.py --all — the full suite (today's bare behaviour).
- ./run_probes.py <name>… — explicit names, unchanged.
- ./dev.py check appends one line when the diff affects probes: the
count, and the bare ./run_probes.py invocation to run them (C5). No
new dev.py verb.
Tests: T3a rides the existing suite plus a grep in the PR body showing
zero remaining probe_all references. T3b unit-tests the selection plumbing
(tools/tests/); the run path reuses the existing sweep machinery.
Done when: the bare invocation runs exactly the affected probes; --all
runs the full suite; a tools-only change exits 0 explaining the empty set;
no reference to probe_all.py remains.
No comments.