Story: Absorb PR checks locally: targeted checks, local review, CDash submissions
Table of Contents
This page documents a story in Sprint 25. It captures the goal, current status, acceptance criteria, and the tasks that compose it.
1. Goal
We spend a lot of time waiting for GitHub PR checks. The site checks and drift checks add little signal at PR time, yet they gate every merge. Absorb their cost locally instead:
- Submit-PR skills classify the change and run only the checks it needs. A doc-only change runs the site build. A C++ change runs the full build and tests.
- Code review runs locally as a skill. Findings are registered against the task and addressed before the PR goes up.
- ctest runs locally. Builds submit to CDash as experimental for visibility.
- GitHub CI keeps the continuous builds and nightlies.
The objective is higher velocity without losing quality. More analysis is needed on every CI workflow and on how it maps to a local equivalent.
2. Status
| Field | Value |
|---|---|
| State | DONE |
| Parent sprint | Sprint 25 |
| Now | Nothing. |
| Waiting on | Nothing. |
| Next | Nothing. |
| Last touched | 2026-09-23 |
3. Acceptance
- Site checks and drift checks are removed from the PR gate.
- Submit-PR skills classify the change type and run the matching local checks.
- A doc-only change does not trigger a full build.
- A C++ change runs the full build and ctest locally.
- Code review runs locally as a skill and registers findings against the task.
- Local builds submit to CDash as experimental builds.
- GitHub CI keeps the continuous builds and nightlies.
4. Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| Analyse all CI workflows and map each check to its local equivalent | DONE | 2026-08-11 | 2026-08-11 | Inventory every GitHub Actions workflow and check that gates PRs today (site checks, drift checks, build, ctest, code review, pr-gate, …). For each, decide its fate: run locally before submit, stay on GitHub, or retire. Produce the change-classification rules the submit-PR skills will use. |
| Scaffold story: Absorb PR checks locally | DONE | 2026-08-11 | Story scaffolding rides this task: documents, sprint wiring, and the scaffold PR. Close it before merging that PR. | |
| Classify changes and run targeted local checks in the submit-PR skills | DONE | 2026-08-11 | 2026-08-11 | Replace the unconditional build and ctest in compass-pr-raise with change classification: read the changed files, bucket them per the rule table in the CI workflows and local checks knowledge doc (docs / code / ci / python tooling), and run only the matching checks. Record the class and the verification in the PR description. compass-pr-address-review reuses the classification for its per-round verification. |
| Delete the PR gate: no GitHub CI on pull requests | DONE | 2026-08-11 | 2026-08-11 | The pr.yml workflow gated every pull request with site, roundtrip, drift, and classifier jobs that now run locally via the submit-PR skills — a vestigial ~7s shell gating on nothing real. Delete the workflow entirely (classify, pr-gate, and the retired functional jobs together) and remove the branch-protection required check. The review is the quality backstop on GitHub; the submit-PR skills are the gate. |
| Wire the local code review into the submit-PR flow and retire the GitHub review workflows | DONE | 2026-08-12 | 2026-08-12 | Run the code-review skill locally before submit: findings are recorded against the task and addressed in the round. When the local skill is the review coverage, retire claude-code-review.yml (auto review on PR events) and misspell.yml; the on-demand claude.yml trigger stays. |
5. Decisions
- The analysis and the change-classification rule table live in the CI workflows and local checks knowledge doc; the implementation tasks follow it.
- The PR gate is deleted entirely:
pr.yml(classify, pr-gate, and the retired functional jobs together) and the branch-protection required check are gone. The review is the quality backstop on GitHub; the submit-PR skills are the gate. - GitHub CI keeps the continuous builds, nightlies, site deploy, and coverage jobs.
- The classification rule table lives in the
compass-pr-raiseskill — one place both submit-PR skills read;compass-pr-address-reviewlinks to it. ctestruns viacompass test run(host-wide build lock); local CDash submissions use--cdash Experimental.- The PR gate (
pr.yml) is untouched by the classification task; its reduction is a follow-up task. - The review workflows are deleted:
claude-code-review.yml(auto review on PR events) andmisspell.yml(the typo-fix bot) went with the local-review task, since thecompass-code-review-prskill (run bycompass-pr-raisebefore submit) is the review coverage they replaced; the on-demandclaude.ymltrigger stays. The gate-reduction task deletedpr.ymlentirely.
6. Out of scope
- Changing what GitHub CI runs: the continuous builds and nightlies stay in place.
- Retiring CDash: it stays, with local builds submitting as experimental.
- Tooling beyond the submit-PR and review skills, and beyond the check mappings the analysis task produces.
7. Result
Closed at sprint 25 close. Every task is done.