Skip to content

ci: converge matrix to single 'CI' required-check job - #44

Merged
johnnyhuy merged 2 commits into
mainfrom
feat/ci-required-check
Sep 19, 2026
Merged

johnnyhuy merged 2 commits into
mainfrom
feat/ci-required-check

Conversation

@johnnyhuy

Copy link
Copy Markdown
Contributor

Summary

Add a convergence job that waits on the Python matrix and treats the Mojo job as informational. The new `ci` job is the single required status check on a new main-branch ruleset (follow-up commit).

Before: 9 separate checks on every PR → 9 individual checks required in branch protection / rulesets.
After: 1 `ci` check that fans out internally → ruleset requires just `ci`.

Why

  • Matrix simplicity. The Python matrix currently fans out 6 ways (ubuntu/macos × 3.11/3.12/3.13). Configuring rulesets to require every combination is brittle; future OS / Python bumps would silently lose required-check coverage.
  • Mojo is nightly-quality. Existing workflow already has `continue-on-error: true` on Mojo. The convergence job makes that explicit: Mojo failures surface as `::warning::` annotations but don't block the ruleset.
  • One green tick for reviewers. Same UX as projects that converge internally and expose a single status to branch protection.

Changes

```.github/workflows/ci.yml`

  • Adds `ci` job: `needs: [python, mojo]`, `if: always()`
  • Python matrix failure → `ci` fails (ruleset blocks merge)
  • Mojo failure → `ci` stays green, surfaces as warning (informational)

Follow-up

A second commit (or a follow-up PR) creates the main-branch ruleset requiring `ci`. The ruleset can't apply retroactively to a merged PR — it'll govern future merges from this point on.

Testing

This PR itself is the test. CI will show 1 green `CI` check + the 9 underlying checks; the merge button enables off the single check.

Compute the next version from today's date and the most recent
calver tag, then pass it via release-as so every push to main
produces a release PR (e.g. 2026.9.1, 2026.9.2, 2026.10.1).

Same-month pushes bump the patch counter; new months reset to
patch 1. release-please has no native calver strategy, so this
overrides its conventional-commit-derived version with the
computed one each run.
PRs to main show nine separate status checks (Python matrix × 6
platforms + Mojo + CodeQL + Socket Security), which makes branch
ruleset configuration brittle — each platform combination would
need to be listed. Add a final ``ci`` job that waits on the
Python matrix and treats the Mojo job as informational (Mojo
toolchain is nightly-quality, not a blocker).

The ``ci`` job is the single required status check on the main
branch ruleset. Reviewers see one green tick; the underlying
matrix detail is still visible on the PR.

- Adds ``needs: [python, mojo]`` + ``if: always()`` convergence job
- Python matrix failure → ``ci`` fails
- Mojo failure → ``ci`` stays green, surfaces as ``::warning::``
@johnnyhuy
johnnyhuy merged commit fef603a into main Sep 19, 2026
13 checks passed
@johnnyhuy
johnnyhuy deleted the feat/ci-required-check branch September 19, 2026 09:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant