Skip to content

chore(supply-chain): commit the imported audits the gate is already relying on - #117

Merged
msalvatti merged 2 commits into
mainfrom
fix/vet-imports
Aug 2, 2026
Merged

chore(supply-chain): commit the imported audits the gate is already relying on#117
msalvatti merged 2 commits into
mainfrom
fix/vet-imports

Conversation

@msalvatti

@msalvatti msalvatti commented Aug 2, 2026

Copy link
Copy Markdown
Member

Correcting my own framing: I opened this saying cargo vet fails on main. It does not — main's supply-chain check passed at 13:54 today. What fails is cargo vet --locked, and the difference is the point.

supply-chain/imports.lock is stale. Five dependencies — anyhow, serde_json, syn, thiserror, thiserror-impl — are not covered by the audits it records:

$ cargo vet --locked
Vetting Failed!
5 unvetted dependencies: anyhow:1.0.103, serde_json:1.0.151, syn:3.0.3, thiserror:2.0.19, thiserror-impl:2.0.19

CI runs cargo vet without --locked (ci.yml:221), so it fetches the import sets fresh on every run and passes — because Mozilla, Bytecode Alliance and Google published those audits between 2026-07-18 and 2026-07-22, after this lockfile was last written. The bump PRs that failed this gate on Aug 1 were failing partly on this, before those audits existed upstream.

So the gate currently answers a question about what upstream happens to have published at the moment CI runs, not about what this repository has recorded and reviewed. That is what imports.lock exists to prevent: a supply-chain decision should not change under you because someone else's file did, and it should give the same answer offline as online.

No new trust is recorded. Every entry comes from a source config.toml already imports by name, signed by a person — Mike Hommey and Jan-Erik Rediger (Mozilla), Pat Hickey (Bytecode Alliance), ChromeOS (Google) — plus dtolnay publisher records. Committing them is what cargo vet writes on any normal run.

After this, cargo vet --locked reports Vetting Succeeded (148 fully audited, 19 partially audited, 198 exempted), and each open bump is left needing only its own crate version — which is the question that gate should be asking:

PR still unvetted, with fresh imports
#103 redis 1.3.0 → 1.5.0 redis:1.5.0
#102 http 1.4.2 → 1.5.0 http:1.5.0
#91 tokio 1.52.3 → 1.53.1 tokio:1.53.1
#88 time 0.3.53 → 0.3.54 time:0.3.54, time-macros:0.2.32
#86 serde 1.0.228 → 1.0.229 serde, serde_core, serde_derive
#83 async-trait 0.1.89 → 0.1.91 async-trait:0.1.91
#75 http-body-util 0.1.3 → 0.1.4 http-body-util:0.1.4

Those seven are a separate decision — exempt, audit the diffs, or wait for the upstream sets to catch up, which is what just happened for the five above. cargo deny and cargo audit pass on all of them, so none carries a known advisory.

… on main again

`cargo vet` fails on `main` today, and has since `serde_json` and `thiserror`
were bumped: five dependencies — anyhow, serde_json, syn, thiserror,
thiserror-impl — report as unvetted. A blocking gate that is red on the default
branch stops discriminating: every PR inherits the same failure, so the check
says nothing about the change under review, and the seven open dependency bumps
look blocked by their own contents when they are not.

Nothing here records new trust. The audits already exist and are already
imported by name in `config.toml` — Mozilla, Bytecode Alliance and Google, each
signed by a person, plus dtolnay's publisher entries — and were simply published
after this lockfile was last written. Refreshing it is what `cargo vet` does on
every run; the file had drifted behind.

That leaves each bump needing only its own crate version, which is the question
it should have been asking all along.
Copilot AI review requested due to automatic review settings August 2, 2026 13:59

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review any files in this pull request.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@msalvatti msalvatti changed the title fix(supply-chain): refresh the imported audits so the vet gate passes on main again chore(supply-chain): commit the imported audits the gate is already relying on Aug 2, 2026
Without `--locked`, `cargo vet` refetches the import sets on every run. The gate
then answers a question about what upstream happened to publish that minute
rather than about what this repository recorded and reviewed — and it gives a
different answer offline than online.

That is not hypothetical here: the committed `imports.lock` is five
dependencies behind, `cargo vet --locked` fails on it, and CI passes anyway
because Mozilla, Bytecode Alliance and Google published the missing audits
between 18 and 22 July. The same bumps failed this gate on 1 August, before
those audits existed. Nothing in the repository changed in between.

With the lockfile refreshed in the commit before this one, `--locked` reports
Vetting Succeeded. Refreshing is now something a PR does deliberately, showing
the diff of whose audits are being relied on, rather than something every CI run
does silently.
Copilot AI review requested due to automatic review settings August 2, 2026 14:05

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 2 changed files in this pull request and generated no new comments.

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.

2 participants