ci: cut runner load from drafts, re-pushes, and the mutation canary

TH
1h ago
+145-44

Summary

Reduces load on GitHub runners. In a 5-hour sample (2026-10-14), the advisory mutation canary used about 16% of runner time, mostly on PRs that only edited a workspace package.json. Agents also re-push often, and each push restarts every lane.

  • Mutation canary: LANE_TOOLING is split into LANE_SOURCES (lane code and config, including vitest.config.ts and scripts/lib/) and LANE_DEPENDENCIES (root and workspace package.json, the lockfile).
    • A diff touching only dependencies runs the self-test.
    • Mutants run only through gh workflow run mutation-affected.yml --ref <branch> [-f base=<parent>], which passes --with-dependencies.
  • Device smoke lanes: they skip drafts, start on ready_for_review, and cancel on converted_to_draft. A gate test enforces this.
  • Agent docs: push once per review round. Allow 2,500 lines for one coherent change with self-contained commits.
    • Two duplicate lines were removed to fit the guidance budget. check:fallow already runs in check:affected. The misrouted-path rule repeats "If selection rules change, plant a failure".

10 files.

Validation

At 2a4c15cb1:

  • pnpm check:affected --run passes.
  • The mutation and gate workflow tests pass (25/25).
  • Removing either draft guard fails the new test, and the new selection test fails on main.
  • A fresh-context review's findings were applied, except the two doc deletions above.

No device runs: workflow and tooling changes only.

🤖 Generated with Claude Code