Repository navigation
ci: migrate the commodity jobs to the shared fleet workflow - #32
Merged
Merged
Conversation
Five of eleven ci.yml jobs move to the shared workflow (test, coverage, secrets,
deny, vet) and it publishes `ci / All checks`. The six that CANNOT move go to
`extras.yml`, with the reason each cannot stated in the file. `deb-verify`,
`macos-verify`, `windows-verify`, `fuzz`, `docs`, `release-plz` and `release` are
untouched.
COVERAGE KEEPS ITS FULL STRENGTH: strict on lines AND functions, matching the
bespoke gate rather than degrading to a floor. That was not possible until
today. Pointing the shared gate at this repo's real coverage produced 156 line
and 693 function failures where the bespoke gate passed, and every one was the
shared gate being wrong -- it demanded a marker on every line of a multi-line
dead arm, and counted a crate compiled twice as an uncovered function. Both are
fixed upstream, and this repo is what found them.
One genuine gap surfaced in the process: the decode-failure arm in
`holiday::load_or_empty` is provably dead (the embedded blobs are validated in
CI) and had no marker. It has one now, with the invariant stated.
WHAT extras.yml KEEPS, and why none of it fits the shared workflow:
MSRV 1.75 (timeglyph-core) the shared msrv job builds IN-TREE, and this
repo's Cargo.lock is v4, which cargo 1.75 cannot
parse. Verifying the floor means copying the crate
out -- and asserting the resolved lock names
exactly one package, which is what makes "zero
dependencies" a checked claim.
Lens build `lens/` is EXCLUDED from the workspace, so no
`--workspace` invocation reaches it.
lean-build asserts clap/csv/tracing-subscriber are ABSENT
from the `--no-default-features` tree. The shared
workflow builds; it does not assert absence.
wasm-build, python-wheel wasm32 and maturin, neither expressible.
freshness `cargo update --locked` on both lockfiles.
These are not gated by `ci / All checks` -- a job outside the reusable workflow
publishes its own context. `MSRV 1.75 (timeglyph-core)` is therefore required by
branch protection ALONGSIDE the aggregate gate: it verifies a published floor
downstreams pin against, and a promise nothing enforces is not a promise.
Also fixed, both surfaced by gates this repo had never run:
rustdoc 15 broken intra-doc links, none of which had failed a build because
nothing ran rustdoc with `-D warnings`. Each fixed by what the item
actually IS: public items in sibling modules got paths;
`ColorMode::Mono` is a variant and needed its enum; `MAX_CARVE_BYTES`,
`PackedCodec`, `datetime_candidates` and `hex_candidates` are PRIVATE
and cannot be linked from public docs at all, so they are code spans.
packaging `timeglyph-core` is PUBLISHED and shipped without a README or a
LICENSE -- the crates.io page was blank and the licence named in
the manifest had no text beside it. Both now ship. That is the
third repo today with this defect, all found by the same check.
Pre-flighted locally on a clean target, reading each command's own exit code:
fmt, clippy -D warnings, tests, rustdoc, deny, vet, unsafe-audit, and the strict
coverage gate on lines, functions and both.
`ci / Format` and `ci / Clippy` failed with
error: 'cargo-fmt' is not installed for the toolchain '1.96.0'
which reads as a broken workflow and is a missing declaration here.
`rust-toolchain.toml` OVERRIDES a workflow asking for the `stable` channel -- a
channel ref loses to the toml -- so cargo ran the pinned 1.96.0 while the
workflow had installed rustfmt and clippy for `stable`.
The repo's own jobs never hit this because they pinned `dtolnay/rust-toolchain@1.96.0`
explicitly and named the components per job. Every other migrated repo declares
`components` in the toml; this one did not. Now it does, which is the fleet
standard and fixes it at the source rather than in the caller workflow.
Also refreshes `lens/Cargo.lock` (either 1.17 -> 1.18), which had drifted since
this morning. `freshness` checks both lockfiles now, so it reported it.
Not fixed, because it is neither new nor mine: `lens/tests/fonts.rs` fails on
this machine, and equally on origin/main. It asserts every UI symbol has a glyph
in some loaded fallback font, which depends on the host's installed fonts; the
`Lens build` job passes on all three CI runners.
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.
Five of eleven
ci.ymljobs move to the shared workflow (test, coverage, secrets, deny, vet), publishingci / All checks. The six that cannot move go toextras.yml, with the reason each cannot stated in the file. The verify/release workflows are untouched.Coverage keeps its full strength
Strict on lines AND functions — matching the bespoke gate rather than degrading to a floor.
That was not possible until today. Pointing the shared gate at this repo's real coverage produced 156 line and 693 function failures where the bespoke gate passed, and every one was the shared gate being wrong: it demanded a marker on every line of a multi-line dead arm, and counted a crate compiled twice as an uncovered function. Both fixed upstream in fleet-ci#16 — this repo is what found them.
One genuine gap did surface: the decode-failure arm in
holiday::load_or_emptyis provably dead (the embedded blobs are CI-validated) and had no marker. It has one now, with the invariant stated.What extras.yml keeps, and why none of it fits
MSRV 1.75 (timeglyph-core)Cargo.lockis v4, which cargo 1.75 cannot parse. Verifying the floor means copying the crate out — and asserting the resolved lock names exactly one package, which is what makes "zero dependencies" a checked claimLens buildlens/is excluded from the workspace, so no--workspaceinvocation reaches itlean-build--no-default-featurestree; the shared workflow builds, it does not assert absencewasm-build,python-wheelfreshnesscargo update --lockedon both lockfilesThese are not gated by
ci / All checks— a job outside the reusable workflow publishes its own context.MSRV 1.75 (timeglyph-core)is therefore required by branch protection alongside the aggregate gate: it verifies a published floor downstreams pin against, and a promise nothing enforces is not a promise.Also fixed, both from gates never run here
rustdoc — 15 broken intra-doc links, invisible because nothing ran rustdoc with
-D warnings. Each fixed by what the item is: public items in sibling modules got paths;ColorMode::Monois a variant and needed its enum;MAX_CARVE_BYTES,PackedCodec,datetime_candidatesandhex_candidatesare private and cannot be linked from public docs at all, so they are code spans.packaging —
timeglyph-coreis published and shipped without a README or LICENSE: a blank crates.io page and a licence named in the manifest with no text beside it. Both now ship. That is the third repo today with this defect, all found by the same check.Pre-flight
On a clean target, reading each command's own exit code: fmt · clippy
-D warnings· tests · rustdoc · deny · vet · unsafe-audit · strict coverage on lines, functions and both.