You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(chapel-ci): always-on aggregator gate to fix path-filtered required-checks (#90)
## Summary
Closes a soft regression introduced by the chapel-ci ruleset patch:
the six chapel-ci jobs are path-filtered, so they only run on PRs that
touch chapel/** / Cargo / src/main.rs. When the Base ruleset requires
those job contexts, PRs that don't touch any of those paths leave the
required checks \"expected but not reported\" — they get blocked
indefinitely.
The fix is an always-on aggregator pattern: a single \`chapel-ci-gate\`
job replaces the six individual jobs as the required check.
## Mechanics
1. \`on:\` block drops the \`paths:\` filter — workflow triggers on
every PR.
2. New \`detect-relevant-changes\` job diffs against the PR base and
sets
\`outputs.relevant = true|false\` using the same path list that lived
in the on-trigger.
3. Each of the six gates gains \`needs: detect-relevant-changes\` +
\`if: needs.detect-relevant-changes.outputs.relevant == 'true'\`. They
skip cleanly on irrelevant PRs.
4. \`chapel-ci-gate\` job (\`if: always()\`, \`needs: [all 6 +
detect]\`):
- SUCCESS immediately if no chapel-relevant paths changed.
- SUCCESS if all 6 underlying jobs returned \`success\`.
- FAILURE if any underlying job failed/cancelled.
## Ruleset migration (post-merge, separate operation)
Currently the Base ruleset (id \`14968583\`) requires the 6 individual
chapel-ci jobs. Once this PR merges and \`chapel-ci-gate\` is proven
green on main, run:
\`\`\`bash
gh api repos/hyperpolymath/panic-attack/rulesets/14968583 \\
--jq 'del(.bypass_actors) | (.rules[] |
select(.type==\"required_status_checks\") |
.parameters.required_status_checks) |= [{\"context\":
\"chapel-ci-gate\"}]' \\
> /tmp/patch.json
gh api -X PUT repos/hyperpolymath/panic-attack/rulesets/14968583 --input
/tmp/patch.json
\`\`\`
## Test plan
- [ ] All 6 chapel-ci jobs green on this PR (workflow self-tests itself)
- [ ] chapel-ci-gate green on this PR
- [ ] After merge: ruleset PUT switches required check from 6 → 1
- [ ] Verify next non-chapel PR is no longer blocked by chapel-ci
## Parallel work
The same pattern applies to ephapax #244 (Coq build oracle ruleset gap).
Once panic-attack proves the pattern, the same refactor lands on
\`ephapax/.github/workflows/coq-build.yml\`.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments