Skip to content

ci: adopt the fleet reusable workflow - #3

Merged
h4x0r merged 3 commits into
mainfrom
ci/adopt-fleet-ci
Aug 8, 2026
Merged

ci: adopt the fleet reusable workflow#3
h4x0r merged 3 commits into
mainfrom
ci/adopt-fleet-ci

Conversation

@h4x0r

@h4x0r h4x0r commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Replace the hand-maintained ci.yml with a call to
SecurityRonin/fleet-ci/.github/workflows/rust-ci.yml, pinned to
619094ad54edc586f5c2733358e00326b30790bd, keeping the geiger job verbatim.

msrv-check: test -- the old MSRV job ran cargo test at 1.75, not a bare
build.

coverage-ignore-regex: "/tests/|/fuzz/" -- the old coverage job already ran
the fleet per-line gate, but its test/fuzz exclusion was written inside the
inline Python (if "/tests/" in cur or "/fuzz/" in cur: continue) rather
than as an --ignore-filename-regex flag. Same exclusion, expressed the way
this workflow takes it. Verified load-bearing on origin/main
(tests/coverage.rs, fuzz/fuzz_targets/*.rs all match) and re-running the
shared gate's rules over cargo llvm-cov --workspace --all-features with
this regex gives 0 uncovered / 2 annotated exemptions -- green, unchanged.

The crate declares no cargo features, so the --all-features default changes
nothing relative to the old cargo test --workspace.

One gate the shared workflow adds that this repo did not have: rustdoc with
-D warnings (plus the single-checkout path-dependency check).

🤖 Generated with Claude Code

h4x0r and others added 3 commits August 7, 2026 06:48
Replace the hand-maintained ci.yml with a call to
SecurityRonin/fleet-ci/.github/workflows/rust-ci.yml, pinned to
619094ad54edc586f5c2733358e00326b30790bd, keeping the geiger job verbatim.

msrv-check: test -- the old MSRV job ran `cargo test` at 1.75, not a bare
build.

coverage-ignore-regex: "/tests/|/fuzz/" -- the old coverage job already ran
the fleet per-line gate, but its test/fuzz exclusion was written inside the
inline Python (`if "/tests/" in cur or "/fuzz/" in cur: continue`) rather
than as an --ignore-filename-regex flag. Same exclusion, expressed the way
this workflow takes it. Verified load-bearing on origin/main
(tests/coverage.rs, fuzz/fuzz_targets/*.rs all match) and re-running the
shared gate's rules over `cargo llvm-cov --workspace --all-features` with
this regex gives 0 uncovered / 2 annotated exemptions -- green, unchanged.

The crate declares no cargo features, so the --all-features default changes
nothing relative to the old `cargo test --workspace`.

One gate the shared workflow adds that this repo did not have: rustdoc with
-D warnings (plus the single-checkout path-dependency check).
…clared 1.75

The new per-member MSRV matrix runs this repo's configured check
(`msrv-check: test`) at the floor forensic-hashdb declares, and it
refused:

    error: failed to parse manifest at .../getrandom-0.4.3/Cargo.toml
      feature `edition2024` is required
      ... not stabilized in this version of Cargo (1.75.0)

Diagnosis — the declared floor is TRUE and was not the problem:

  * `cargo +1.75 build -p forensic-hashdb --all-features` PASSES. The
    library's own source and its normal dependency graph are fine at
    1.75.
  * The refusal is confined to the TEST target's dev-dependency graph:
    getrandom 0.4.3 <- tempfile 3.27.0 <- [dev-dependencies]
    forensic-hashdb. getrandom 0.4.x is `edition = "2024"`, which fails
    at MANIFEST PARSE below cargo 1.85 regardless of what the code uses.
  * Dev-dependencies do not propagate to consumers, so this never
    reached anyone depending on forensic-hashdb. `rust-version = "1.75"`
    remains a truthful promise and raising it would have been a false
    raise that breaks downstreams for no reason.

Fix: pin getrandom to 0.3.4 (declares 1.63, edition 2021), which also
brings r-efi 6.0.0 -> 5.3.0. tempfile stays at 3.27.0 — its requirement
accepts getrandom 0.3, so no dev-dependency was downgraded.

Controls (cargo test -p forensic-hashdb --all-features, the exact check
the MSRV job runs):
  before pin, 1.75 -> FAIL (`edition2024` required, getrandom 0.4.3)
  after  pin, 1.75 -> PASS (26 + 5 + 0 tests, 0 failed)
  after  pin, 1.96 -> PASS (workspace, all features, same counts)

Note for whoever tunes Renovate here: `lockFileMaintenance` will walk
getrandom back to 0.4.x and re-red this job. A durable alternative is a
capped dev-dependency requirement on tempfile/getrandom, which costs
consumers nothing because dev-deps do not propagate.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Pinning a dependency down to keep this repo's declared MSRV achievable moved the
resolved set, and the vet store had no record for the versions that came out.

Each takes the strongest mechanism that applies per ADR-0018: publisher trust for
crates we publish or whose publisher an imported aggregate auditor already
vouches for, and honest [[exemptions]] only for the remainder. An exemption
asserts that nobody audited the crate — equally true before and after a version
change — so refreshing one claims nothing new.

No `cargo vet certify --accept-all`: a certify record asserts a human read the
source, so bulk-certifying fabricates the condition being claimed. audits.toml
carries zero self-certified entries after this change.

`cargo vet --locked` passes.
@h4x0r
h4x0r merged commit b95393b into main Aug 8, 2026
19 checks passed
@h4x0r
h4x0r deleted the ci/adopt-fleet-ci branch August 8, 2026 07:01
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