Commit abc58b1
authored
## Summary
Closes the path-filter blocker that prevents #244 (the owner action that
adds `required_status_checks` to the Base ruleset on `main`) from
landing
without collateral damage.
The `Coq build — formal/_CoqProject` check shipped in #231 is
path-filtered
to `formal/**` + the workflow file itself. Once the Base ruleset (id
`14285235`) gains a `required_status_checks` rule naming that context,
every
PR that does NOT touch `formal/**` would leave the check "expected but
not
reported" and be blocked indefinitely.
Fix: refactor to the always-on aggregator pattern. The single new
context
that goes into the ruleset is `coq-build-gate`; it ALWAYS runs and
reports
the right verdict regardless of which paths changed.
## Mechanics
1. `on:` block drops the `paths:` filter — workflow triggers on every PR
and every push to main.
2. New `detect-relevant-changes` job diffs against the PR base
(`github.event.pull_request.base.sha` / `github.event.before`) and sets
`outputs.relevant = true|false` using the same path list that lived in
the on-trigger (`formal/` + this workflow).
3. The existing `coq-build` job gains `needs: detect-relevant-changes` +
`if: needs.detect-relevant-changes.outputs.relevant == 'true'`. It
skips cleanly on irrelevant PRs.
4. New `coq-build-gate` job (`if: always()`, `needs: [detect,
coq-build]`):
- SUCCESS immediately if `RELEVANT != 'true'`.
- FAILURE if `detect-relevant-changes` itself didn't succeed
(fail-safe).
- SUCCESS iff `coq-build.result == 'success'` on a relevant change.
- FAILURE otherwise.
The `coq-build` job itself is untouched: same `coqorg/coq:8.18`
container
with `--user root`, same `coq_makefile -f _CoqProject -o build.mk &&
make`,
same `Print Assumptions` audit of the four Phase D theorems
(`preservation_l1`, `preservation_l2_via_l1`,
`preservation_l2_app_eff_beta_linear`,
`preservation_l2_app_eff_beta_ground_nonlinear`).
## Ruleset migration (post-merge, separate operation)
Once this PR is green on main, the #244 owner action becomes:
```bash
# Append required_status_checks naming `coq-build-gate` (NOT the underlying
# `Coq build — formal/_CoqProject`, because that one skips on irrelevant PRs
# and would re-introduce the exact "expected but not reported" block this
# PR exists to avoid).
gh api -X PUT repos/hyperpolymath/ephapax/rulesets/14285235 --input /tmp/patch.json
```
## Test plan
- [ ] `coq-build-gate` green on this PR (path is
`.github/workflows/coq-build.yml`
→ relevant=true → coq-build runs → gate aggregates).
- [ ] After merge, a no-formal-change PR shows `coq-build-gate` green
while
`coq-build` is "Skipped".
- [ ] After merge, the #244 owner action switches the Base ruleset's
required context from absent to `coq-build-gate`.
- [ ] An intentional broken-build PR (touching `formal/`) shows
`coq-build-gate` red and admin-merge blocked.
## Prior-art
panic-attack#90 (already landed) applied the same pattern to
`chapel-ci.yml`.
This PR is the single-job variant of the same refactor.
## Refs
- #244 — owner action this PR unblocks
- #231 — `coq-build.yml` ships
- #236 — EACCES container fix
- #243 — Print Assumptions audit expansion
- panic-attack#90 — prior-art (chapel-ci aggregator)
Generated with [Claude Code](https://claude.com/claude-code)
1 parent 7c4c3f5 commit abc58b1
1 file changed
Lines changed: 84 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
21 | 34 | | |
22 | 35 | | |
23 | 36 | | |
24 | 37 | | |
25 | 38 | | |
26 | | - | |
27 | | - | |
28 | | - | |
29 | 39 | | |
30 | 40 | | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | 41 | | |
35 | 42 | | |
36 | 43 | | |
| |||
40 | 47 | | |
41 | 48 | | |
42 | 49 | | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
43 | 82 | | |
44 | 83 | | |
| 84 | + | |
| 85 | + | |
45 | 86 | | |
46 | 87 | | |
47 | 88 | | |
| |||
98 | 139 | | |
99 | 140 | | |
100 | 141 | | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
0 commit comments