Skip to content

ci: repin fleet-ci to the stable check-context revision - #7

Merged
h4x0r merged 1 commit into
mainfrom
chore/repin-fleet-ci
Aug 13, 2026
Merged

ci: repin fleet-ci to the stable check-context revision#7
h4x0r merged 1 commit into
mainfrom
chore/repin-fleet-ci

Conversation

@h4x0r

@h4x0r h4x0r commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Repins the shared workflow to 9234e1fa9f85b14a8d6fddc7a8f7378f7e30b183, which
makes this repo publish a stable, requirable check context.

Two defects in fleet-ci blocked required status checks fleet-wide:

  1. The coverage job's name: was an expression. GitHub does not evaluate a
    job's name: when the job is skipped — it publishes the raw expression
    text as the check name, newlines and all. Repos that skip coverage were
    therefore publishing a check named after the ternary that computed it, which
    no branch-protection rule can name. The job is now statically Coverage.

  2. There was no single invariant context to require. The remaining checks
    are matrix jobs (MSRV (<crate>, <ver>), Test (<os>)), whose published
    names vary per repo and per matrix entry. A new aggregate job, All checks, needs: every other job with if: always() and fails unless each
    one succeeded or was deliberately skipped — so ci / All checks is one
    context every consumer publishes identically.

The gate refuses an empty result set and refuses an all-skipped run: an empty
check list means not run, never passed.

No behaviour change to this repo's own CI configuration — only the pinned
revision moves. Nothing is required yet; branch protection is left untouched
until every consumer carries this pin, because requiring a context before it
exists everywhere would block merges.

Verified end-to-end on sqlite-forensic before this sweep: the pre-change
commit published the expression-named check run, the post-change commit
publishes ci / Coverage (skipped) plus ci / All checks (success), with the
gate's own log listing twelve results matching its twelve needs:.

…sion

Picks up SecurityRonin/fleet-ci#9. Repin only -- no gate behaviour changes.

Two fixes, both of which only matter when a check context is REQUIRED:

  - A skipped job publishes its `name:` EXPRESSION, not the evaluated value.
    The coverage job's name was a multi-line ternary, so any repo turning the
    coverage gate off published a check named with the raw expression source,
    newlines included. That name is now the constant `Coverage`.

  - Matrix jobs cannot serve as required contexts, because GitHub appends the
    matrix values -- `MSRV (<crate>, <floor>)`, `Test (<os>)` -- so the context
    name moves whenever a crate is added or a floor is raised, and a required
    context that stops reporting makes every PR unmergeable with no
    explanation. The workflow now publishes an aggregate `All checks` job that
    needs all twelve others and whose name never varies.

`ci / All checks` becomes requirable once every repo carries this pin.
@h4x0r
h4x0r merged commit 17a7409 into main Aug 13, 2026
18 checks passed
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