The panels gate did not run; every gate now declares a cadence
Some checks failed
ci / check (push) Failing after 3s
Some checks failed
ci / check (push) Failing after 3s
CB-REV-0002 #7 found the H1 harnesses were run by no gate. The fix created a `panels` target and registered it — and did not add it to `make all`. So the gate existed, passed lint, and ran nowhere: the same defect one level up, committed in the fix for it. The registry checked that a gate's target EXISTS. It never checked that the gate RUNS, and six of ten registered gates are absent from `make all`. Some are legitimately manual — cost-budget needs spend data, gate-review is periodic. So a gate may be manual, but it must SAY so: every entry now declares cadence = all | manual | none, loop-lint requires it, and a gate claiming "all" that is not in `all:` fails. Both rules mutation-verified. panels is cadence = all and now runs there, so the figures in CB-EV-0030 and CB-EV-0031 are regenerated by the gate rather than by hand. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
da58e78e4a
commit
43e93126e0
3 changed files with 34 additions and 1 deletions
|
|
@ -303,6 +303,29 @@ def check_gate_registry(root=REPO):
|
|||
out.append(Finding(
|
||||
"gates", "gates.toml",
|
||||
f"entry names target {target!r}, which the Makefile lacks"))
|
||||
|
||||
# CB-REV-0002 #7, generalised. The registry checked that a gate's
|
||||
# target EXISTS; it never checked that the gate RUNS. `panels` was
|
||||
# added to close "the harness is run by no gate" and passed lint while
|
||||
# running nowhere -- the same defect, one level up.
|
||||
#
|
||||
# A gate may legitimately be manual. It must SAY so, and one that says
|
||||
# it runs in `make all` must be there.
|
||||
for g in gates:
|
||||
target = g.get("target")
|
||||
if not target:
|
||||
continue
|
||||
cadence = g.get("cadence")
|
||||
if cadence not in ("all", "manual", "none"):
|
||||
out.append(Finding(
|
||||
"gates", "gates.toml",
|
||||
f"{target!r} declares no cadence — say whether `make all` runs "
|
||||
f"it, or a gate can exist without ever running"))
|
||||
elif cadence == "all" and target not in deps:
|
||||
out.append(Finding(
|
||||
"gates", "gates.toml",
|
||||
f"{target!r} declares cadence=\"all\" and `make all` does not "
|
||||
f"run it — a gate that does not run is not a gate"))
|
||||
return out
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue