Skip to content

Commit 277a3c1

Browse files
committed
chore(specs): make CI health a hard gate in maintenance checklist
The maintenance pass (PR #1063) shipped while CI on main was red for 9 days and fuzz had 5 failures. Root causes: - Spec only required nightly/fuzz green, not CI on main - Maintain skill only checked nightly.yml and fuzz.yml, missing ci.yml - No language marking the check as a blocker that prevents merging Changes: - Rename "Nightly CI" → "CI Health", add "CI on main is green" check - Mark the section as a hard gate — pass cannot complete while red - Expand escalation policy to cover all workflows, not just nightly - Update maintain skill with concrete `gh` commands for CI on main - Add "never silently skip" instruction for the agent Ref: #1088 #1089 #1090 #1091
1 parent 76726f4 commit 277a3c1

File tree

2 files changed

+36
-11
lines changed

2 files changed

+36
-11
lines changed

.claude/commands/maintain.md

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,29 @@ Make the simplifications. Run tests after each change. The goal is less code tha
7474

7575
`AGENTS.md` and `CLAUDE.md` reflect current specs, commands, tooling, and workflows.
7676

77-
### 10. Nightly CI is healthy
78-
79-
Nightly and fuzz workflows green for past week. Fuzz targets compile. Git-sourced deps resolve.
80-
81-
Key tools: `gh run list --workflow=nightly.yml --limit 7`, `gh run list --workflow=fuzz.yml --limit 7`
82-
83-
If failures persist >2 days, escalate per the policy in `specs/012-maintenance.md`.
77+
### 10. All CI is healthy (HARD GATE)
78+
79+
**This section is a blocker.** The maintenance pass MUST NOT be marked complete
80+
while any of these checks are red.
81+
82+
1. **CI on main is green** — check the latest CI run on the `main` branch. If
83+
any job (Audit, Test, Lint, Examples, Fuzz Compile Check) fails, fix it
84+
before proceeding. Common failures: `cargo vet` missing certifications,
85+
dependency audit advisories, clippy warnings.
86+
2. **Nightly workflow green** for past 7 days.
87+
3. **Fuzz workflow green** for past 7 days. If a fuzz target crashes, open a
88+
GitHub issue with the crash artifact, reproduction command, and base64 input.
89+
4. Fuzz targets compile. Git-sourced deps resolve.
90+
91+
Key tools:
92+
- `gh run list --workflow=ci.yml --branch=main --limit 5` (CI on main)
93+
- `gh run list --workflow=nightly.yml --limit 7` (nightly)
94+
- `gh run list --workflow=fuzz.yml --limit 7` (fuzz)
95+
- `gh api repos/OWNER/REPO/actions/runs/RUN_ID/jobs` (inspect failed jobs)
96+
97+
If failures persist >2 days, escalate per `specs/012-maintenance.md`.
98+
If the agent cannot fix a failure, it MUST open a GitHub issue and report the
99+
pass as blocked — never silently skip.
84100

85101
## Execution
86102

specs/012-maintenance.md

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,20 +111,28 @@ dependency rot, or security gaps ship in a release.
111111
- Build/test commands work
112112
- Pre-PR checklist covers current tooling
113113

114-
### Nightly CI
114+
### CI Health
115115

116+
- **CI on main is green** — the latest CI run on `main` must pass. Any failure
117+
(audit, test, lint, examples) is a blocker that must be fixed before
118+
proceeding with the rest of the maintenance pass.
116119
- Nightly and fuzz workflows green for past week
117120
- Fuzz targets compile
118121
- Git-sourced dependencies still resolve
119122

120-
#### Nightly Escalation Policy
123+
#### Escalation Policy
121124

122-
Failures persisting **>2 consecutive days** are blocking:
125+
Failures persisting **>2 consecutive days** on any workflow (CI, nightly, fuzz)
126+
are blocking:
123127
1. Open GitHub issue with label `ci:nightly`
124128
2. Link failing run(s)
125129
3. Assign to most recent contributor in failing area
126130
4. If upstream dep change: pin to known-good rev, open follow-up issue
127131

132+
**This section is a hard gate.** The maintenance pass MUST NOT be marked
133+
complete or merged while any of the above checks are red. If the agent cannot
134+
fix a failure, it must open a GitHub issue and report the pass as blocked.
135+
128136
## Deferred Items
129137

130138
When a maintenance pass identifies issues too large to fix inline (e.g.
@@ -149,7 +157,8 @@ Sections dependencies, tests, examples, code quality, and nightly CI are fully
149157
automatable. Security, documentation, specs, simplification, and agent config
150158
require human or agent review.
151159

152-
Nightly check enforced by `just check-nightly`, called by `just release-check`.
160+
CI health check enforced by `just check-nightly` (nightly + fuzz) and manual
161+
inspection of CI on `main` (audit, test, lint). Called by `just release-check`.
153162

154163
## Invocation
155164

0 commit comments

Comments
 (0)