fix(deps): clear the remaining 35 advisories, and unblind the scanner that missed them (#108) - #111
Merged
Conversation
Clears 35 advisories live on main, and discharges #89, #91 and #109 — the last two by deletion rather than by bump, for the reason below. rand 0.8.5 -> 0.8.6 2 advisories -> CLEAN wasmtime 18.0.4 REMOVED 28 advisories wasmtime-wasi 18.0.4 REMOVED 5 advisories `crates/xtask` is the ONLY workspace member declaring wasmtime, and it never calls the library: the sole references are `Command::new("wasmtime")` — shelling out to a binary — plus one string in a README template. The other `use wasmtime::` sites live in `crates/apps` (not a workspace member) and in `crates/hooksmith-app` (a member that declares no wasmtime dependency), so neither compiles. Dropping the two `.workspace = true` lines removes 90 packages from the lockfile and every one of those 33 advisories. Bumping instead was considered and is worse on every axis, because the version chase does not terminate anywhere useful: 18.0.4 (current) 28 advisories 24.0.7 (what #109 proposes) 7 advisories — still not clean 47.0.3 (first clean release) requires Rust 1.94; rust-toolchain.toml pins 1.88.0 So merging #109/#91 as proposed would have left 9 advisories behind, and reaching a clean version would have forced a toolchain bump — all to satisfy a dependency nothing imports. `cargo check --workspace --locked --all-targets` passes. The 7 xtask warnings are pre-existing visibility lints in wasm_event_bus, untouched. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019kJtPPYMW39vbkTFvEpexe
The deps lane has never scanned this repo's Rust dependencies. It reported green because it found no lockfiles at all — the 2026-08-04 run on main logged `0 Extract calls` and "No package sources found" with Cargo.lock at the repo root. `.gitignore` listed `Cargo.lock` while the file is tracked. Git exempts tracked files, so the rule was inert and nothing looked wrong; osv-scanner applies the pattern literally, skipped the only lockfile, and `--allow-no-lockfiles` turned "scanned nothing" into a pass. Not a fault in the shared lane: front-desk-scheduler runs the byte-identical workflow and reports 3 Extract calls. Removed from both generator sites so the next `gen-config` does not put it back — the full template and the `ignorable_patterns` table — with a comment at the second site recording why, since the entry looks like a sensible default carried over from the library case where Cargo.lock is not committed. The preceding commit clears the 35 advisories this was hiding, so the first honest scan should come up green rather than red. Two things left alone deliberately. The `@checksum: e902a214` header does not match this file's contents for any header offset and did not before this change; `gen-config --validate` exits 1 with "No such file or directory", and no workflow validates it. Rather than fabricate an attestation I cannot reproduce, the stale value stays and is reported. And `strict_file_validator.rs` also lists Cargo.lock, but that is xtask's own file-audit skip list, matches `*.lock` regardless, and has nothing to do with osv-scanner. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019kJtPPYMW39vbkTFvEpexe
The first honest osv run (446 packages, 1 Extract call, where every previous run on this repo scanned 0) reported 18 vulnerabilities across 16 packages — so the prediction in the previous commit, that clearing 35 would leave the lane green, was wrong. These are the ones reachable by `cargo update` alone: anyhow 1.0.98 -> 1.0.104 RUSTSEC-2026-0190 bytes 1.10.1 -> 1.12.1 RUSTSEC-2026-0007 / GHSA-434x-w66g-qw3r crossbeam-epoch 0.9.18 -> 0.9.20 RUSTSEC-2026-0204 event-listener 5.4.1 -> 5.4.2 RUSTSEC-2026-0221 slab 0.4.10 -> 0.4.12 RUSTSEC-2025-0047 / GHSA-qx2v-8332-m4fv time 0.3.41 -> 0.3.47 RUSTSEC-2026-0009 / GHSA-r6v5-fh4h-64xc tracing-subscriber 0.3.19 -> 0.3.20 RUSTSEC-2025-0055 / GHSA-xwfj-jgwm-7wp5 All seven verified CLEAN against OSV at the resolved versions. `time` needed an explicit --precise: a plain update stopped at 0.3.44, three short of the 0.3.47 that carries the fix. `cargo check --workspace --locked --all-targets` passes. Thirteen remain and none are reachable from here. Six are FIXABLE but not cheaply — git2 0.18.3 (4 advisories) wants 0.21, which is 209 call sites across five members, and lru 0.12.5 (2) is transitive under ratatui, whose range does not admit the fixed 0.16.3. Seven have NO fixed version at all — backoff, derivative, instant, number_prefix, paste and rustls-pemfile (both 1.0.4 and 2.2.0) are unmaintained-crate advisories, which is the case the lane documents osv-scanner.toml [[IgnoredVulns]] for. Deliberately not suppressed here: an ignore entry is a judgement about accepted risk and wants its own review, and suppressing the six fixable ones would be wrong whatever the lane says. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019kJtPPYMW39vbkTFvEpexe
bdelanghe
marked this pull request as ready for review
August 6, 2026 14:23
This was referenced Aug 6, 2026
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.
Closes #108. Discharges #89, #91 and #109.
The
osvcheck on this PR is RED, and that is the result, not a failure to fix. Before this PR the lane was green while scanning nothing. Now it scans 446 packages and reports 11 real vulnerabilities. A red honest lane is the deliverable; see §3.1. Clear the advisories the scanner was missing
randwasmtimewasmtime-wasi#91 and #109 are discharged by deletion, not by bump, because nothing imports wasmtime.
crates/xtaskis the only workspace member declaring it, and its only references areCommand::new("wasmtime")— shelling out to a binary — plus one string in a README template. The otheruse wasmtime::sites are incrates/apps(not a workspace member) andcrates/hooksmith-app(a member declaring no wasmtime dependency), so neither compiles. Dropping two.workspace = truelines removes 90 packages from the lockfile.Bumping was the obvious move and is worse on every axis, because the version chase doesn't terminate anywhere useful:
Merging #109/#91 as proposed would have left 9 advisories behind, and reaching a clean version would have forced a repo-wide toolchain bump — to satisfy a dependency nothing calls.
2. Unblind the scanner (#108)
.gitignorelistedCargo.lockwhile the file is tracked. Git exempts tracked files, so the rule was inert and nothing looked wrong — but osv-scanner applies the pattern literally, skipped the repo's only lockfile, and--allow-no-lockfilesturned "scanned nothing" into a pass. Removed from both generator sites incrates/xtask/src/main.rsso the nextgen-configdoesn't put it back.Measured, before → after:
3. What the honest scan found — and a prediction of mine that was wrong
This PR originally claimed the first real scan would come up green because §1 cleared everything. That was wrong, and the scan is what corrected it: I had only queried the five packages I already knew about, not the other 441.
The third commit clears the seven reachable by
cargo updatealone —anyhow,bytes,crossbeam-epoch,event-listener,slab,time,tracing-subscriber, all verified CLEAN at the resolved versions.timeneeded an explicit--precise: a plain update stopped at 0.3.44, three short of the 0.3.47 carrying the fix.The 11 that remain are not reachable from this PR, and they split into two kinds that deserve different treatment:
Fixable, but real work (4):
git20.18.3 → 0.21.0 — 3 advisories. 209 call sites across five members. A genuine migration.lru0.12.5 → 0.16.3 — 1 advisory. Transitive underratatui, whose range does not admit the fix, so it needs aratatuibump first.No fixed version exists (7):
backoff,derivative,instant,number_prefix,paste,rustls-pemfile(both 1.0.4 and 2.2.0). These are unmaintained-crate advisories — precisely the casedeps.ymldocumentsosv-scanner.toml [[IgnoredVulns]]for.Deliberately not suppressed here. An ignore entry is a judgement about accepted risk and wants its own review rather than riding along in a PR about a scanner bug. And suppressing the four fixable ones would be wrong whatever the lane says — that would recreate exactly the green-over-real-findings state this PR exists to end.
Verification
cargo check --workspace --locked --all-targetspasses. The 7xtaskwarnings are pre-existing visibility lints inwasm_event_bus, untouched.git check-ignore --no-index -v Cargo.locknow matches nothing; before, it returned.gitignore:7:Cargo.lock.git2andlrueach have one), I counted the aliases separately. 11 is the number to quote.Two things deliberately left alone
The
@checksum: e902a214header is stale and I did not fake a fix. It doesn't match the file's contents for any header offset, and did not before this change.gen-config --validateexits 1 withError: No such file or directory, and no workflow validates it. Rather than write an attestation I can't reproduce, the stale value stays and is reported. Worth its own issue — a generated-file checksum that nothing checks and that is already wrong is the same shape as the scanner this PR fixes.strict_file_validator.rsalso listsCargo.lock, but that's xtask's own file-audit skip list, matches*.lockregardless, and has nothing to do with osv-scanner.