You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit dce6a01
Browse filesBrowse the repository at this point in the historyBrowse files
ci(lint): run the .claude/hooks self-test matrices in the required job (#11799)
`.claude/hooks/` holds the enforcement behind worktree-first and the stash
ban, and each guard ships a hermetic self-test matrix whose header says to
re-run it after touching the hook. Nothing ran them — a grep for `selftest`
over `.github/workflows/` matched nothing — so a guard that had silently
stopped guarding landed green.
Adds one step to the `lint` job (`Lint & Repo Gates`, a required status
context) that DISCOVERS every `.claude/hooks/**/*.selftest.sh` at run time
and runs it. No hook is modified: `.claude/**` is governed surface and this
workflow is not.
- discovered, never listed, so a matrix added tomorrow is picked up with no
edit here
- an empty discovery is red, not green (#4690)
- tolerate-and-collect (#10814): a bare loop under `bash -e` would abort at
the first red matrix and leave the rest unrun, neither green nor red
- a step of the required job rather than a job of its own, so a red guard
stops the merge queue instead of publishing an advisory context (#5617)
Baseline measured on main before wiring: guard-main-checkout-bash 121/0,
guard-shared-stash 32/0. Non-vacuity: with the bash guard's sole BLOCK
verdict mutated to `exit 0` (scratch, restored byte-identical), the step
exits 1, names the failing matrix, and the second matrix still runs.
Claude-Session: https://claude.ai/code/session_015ahemw8RcTgqtxrj15PEZx
Co-authored-by: Claude <noreply@anthropic.com>
0 commit comments