ci: moon concern matrix; dissolve gates; gate every leg (RIG-2700 T5) - #621
Open
rigel-mintaka wants to merge 1 commit into
Open
ci: moon concern matrix; dissolve gates; gate every leg (RIG-2700 T5)#621rigel-mintaka wants to merge 1 commit into
rigel-mintaka wants to merge 1 commit into
Conversation
This was referenced Aug 25, 2026
|
Compass engineering docs preview: https://compass-runner-2700-ci-moon.compass-eng-docs.pages.dev Deployed from Changed pages: |
mattwilkinsonn
previously approved these changes
Aug 25, 2026
auto-merge was automatically disabled
August 25, 2026 19:53
Pull Request is not mergeable
rigel-mintaka
force-pushed
the
compass-runner/2699-ci-gtk3-e2e-peer-job
branch
from
August 25, 2026 19:57
2db9cda to
bc4118f
Compare
rigel-mintaka
force-pushed
the
compass-runner/2700-ci-moon-concern-matrix
branch
from
August 25, 2026 19:59
beefbfd to
d99941e
Compare
rigel-mintaka
force-pushed
the
compass-runner/2699-ci-gtk3-e2e-peer-job
branch
from
August 25, 2026 20:03
bc4118f to
922ad2a
Compare
rigel-mintaka
force-pushed
the
compass-runner/2700-ci-moon-concern-matrix
branch
from
August 25, 2026 20:04
d99941e to
eb849b0
Compare
mattwilkinsonn
force-pushed
the
compass-runner/2699-ci-gtk3-e2e-peer-job
branch
from
August 25, 2026 20:30
922ad2a to
164c02d
Compare
mattwilkinsonn
force-pushed
the
compass-runner/2700-ci-moon-concern-matrix
branch
from
August 25, 2026 20:30
eb849b0 to
6a2c345
Compare
Base automatically changed from
compass-runner/2699-ci-gtk3-e2e-peer-job
to
main
August 25, 2026 20:30
Reverse the one-job CI decision the final way the frozen decomposition plans: replace the monolithic `gates` job with a moon-owned concern matrix and gate every special-infrastructure leg on a computed affected flag, so a PR pays only for the concerns it touches and each concern reports as its own named check. A new `setup` job runs a bun/TS generator (`tools/ci-matrix/`) that reads moon's own affected closure (`moon query projects --affected --upstream deep --downstream direct` on a PR; the full set on push/schedule) and every project's `ci-group.<name>` tag, then emits the GitHub Actions matrix plus four special-leg affected flags. moon owns discovery; the generator owns only grouping, and fails loud — naming the offending project — on any untagged or double-tagged project or coverage gap, so there is no hand-maintained YAML project enumeration to drift. The pure translation core is exhaustively unit-tested; the workflow step is a thin impure shell around it. The `moon` matrix job fans out one leg per concern group (go / bun / nix / forks) discovered at run time, `fail-fast: false`, no `continue-on-error`. An unaffected group runs as a seconds-long green placeholder so the check names stay stable and the matrix is never empty. The four special legs (pgtest, microVM, forge oracle, gtk3 e2e) each gain `needs: setup` and a job-level gate on their paired flag; the `CI` rollup requires plain success from `setup` and `moon` and accepts a special leg's skip only when its paired flag is `false` (a failed setup leaves the flag empty, so the skip is not excused and the rollup reds — fail-safe, never blanket skipped-is-green). Tag scheme uses a DOT delimiter (`ci-group.bun`), not the colon the record first drafted: moon 2.5.3 tag ids forbid a colon. `renovate-preflight` gains a `ci` aggregate task, closing a latent silent-skip where the moon sweep passed it over. `ci-matrix` is registered in `.moon/workspace.yml` so the generator's own project is discoverable and its `ci-group.bun` tag is covered by the very assertion it enforces. Refs RIG-2700 Co-authored-by: Matt Wilkinson <matt@rigel.build>
rigel-mintaka
force-pushed
the
compass-runner/2700-ci-moon-concern-matrix
branch
from
August 25, 2026 20:32
6a2c345 to
2170d37
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Reverse the one-job CI decision the final way the frozen decomposition plans:
replace the monolithic
gatesjob with a moon-owned concern matrix and gateevery special-infrastructure leg on a computed affected flag, so a PR pays only
for the concerns it touches and each concern reports as its own named check.
A new
setupjob runs a bun/TS generator (tools/ci-matrix/) that reads moon'sown affected closure (
moon query projects --affected --upstream deep --downstream directon a PR; the full set on push/schedule) and every project'sci-group.<name>tag, then emits the GitHub Actions matrix plus four special-legaffected flags. moon owns discovery; the generator owns only grouping, and fails
loud — naming the offending project — on any untagged or double-tagged project or
coverage gap, so there is no hand-maintained YAML project enumeration to drift.
The pure translation core is exhaustively unit-tested; the workflow step is a
thin impure shell around it.
The
moonmatrix job fans out one leg per concern group (go / bun / nix / forks)discovered at run time,
fail-fast: false, nocontinue-on-error. An unaffectedgroup runs as a seconds-long green placeholder so the check names stay stable and
the matrix is never empty. The four special legs (pgtest, microVM, forge oracle,
gtk3 e2e) each gain
needs: setupand a job-level gate on their paired flag; theCIrollup requires plain success fromsetupandmoonand accepts a specialleg's skip only when its paired flag is
false(a failed setup leaves the flagempty, so the skip is not excused and the rollup reds — fail-safe, never blanket
skipped-is-green).
Tag scheme uses a DOT delimiter (
ci-group.bun), not the colon the record firstdrafted: moon 2.5.3 tag ids forbid a colon.
renovate-preflightgains aciaggregate task, closing a latent silent-skip where the moon sweep passed it over.
ci-matrixis registered in.moon/workspace.ymlso the generator's own projectis discoverable and its
ci-group.buntag is covered by the very assertion itenforces.
Refs RIG-2700
Co-authored-by: Matt Wilkinson matt@rigel.build