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.
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.
Status
| Field | Value |
|---|---|
| State | STARTED |
| Parent sprint | Sprint 25 |
| Now | Analysis task DONE; implementation tasks follow. |
| Waiting on | Nothing. |
| Next | Add the implementation tasks from the analysis. |
| Last touched | 2026-08-11 |
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.
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 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. 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. |
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
pr-raiseskill — one place both submit-PR skills read;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. - Deleting whole workflows is sequenced with the local-review task:
claude-code-review.yml(auto review on PR events) andmisspell.ymlretire when the local code-review skill lands, since they are the review coverage that skill replaces; the on-demandclaude.ymltrigger stays. The gate-reduction task deletespr.ymlentirely.
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.