Skip to content

fix(ci): repair Security Audit workflow and clear all RUSTSEC advisories - #7

Merged
aaronkwhite merged 2 commits into
mainfrom
fix/audit-workflow-toolchain
Sep 5, 2026
Merged

aaronkwhite merged 2 commits into
mainfrom
fix/audit-workflow-toolchain

Conversation

@aaronkwhite

Copy link
Copy Markdown
Owner

What broke

The weekly Security Audit workflow has failed every run since 2026-07-19 — 7 consecutive failures.

rustsec/audit-check runs cargo install cargo-audit without --locked, so it resolves the newest compatible dependencies. kstring 2.0.4 now requires rustc 1.96.0, but rust-toolchain.toml pins the job to 1.94, so cargo-audit never compiled:

rustc 1.94.1 is not supported by the following package:
  kstring@2.0.4 requires rustc 1.96.0

The audit tool was never running, so real advisories piled up unseen.

Fix, part 1 — get the workflow running

cargo-audit is a standalone tool, not part of this crate's build, so it is built with the latest stable toolchain. RUSTUP_TOOLCHAIN: stable overrides rust-toolchain.toml for that job only; the crate's pinned channel is untouched everywhere else. Also adds the checks: write permission the action documents.

Fix, part 2 — clear what the audit found

Once it ran, cargo-audit reported 3 vulnerabilities and 2 unsoundness warnings. All are transitive.

Advisory Crate Change
RUSTSEC-2026-0204 crossbeam-epoch 0.9.18 → 0.9.20
RUSTSEC-2026-0258 h2 0.4.13 → 0.4.19
RUSTSEC-2026-0185 quinn-proto 0.11.14 → 0.11.17
RUSTSEC-2026-0190 (unsound) anyhow 1.0.102 → 1.0.104
RUSTSEC-2026-0205 (unsound) scc removed

scc was reached only through the serial_test dev-dependency, and its fix landed in scc 3.8.4 — a major bump cargo update cannot make. Moving serial_test 3 → 4 drops scc from the tree entirely. This is the only Cargo.toml change; it is dev-only and does not affect the shipped binary.

Verification

  • Workflow re-run on this branch: run 33967731094 — green.
  • cargo audit locally: zero advisories, zero warnings (305 crates scanned).
  • ./scripts/preflight.sh: all checks pass on the pinned 1.94 toolchain — fmt, clippy -D warnings, 145 tests, release build.

🤖 Generated with Claude Code

https://claude.ai/code/session_01DRDwc4sxA6s6BBTLVEWYUd

aaronkwhite and others added 2 commits September 5, 2026 08:53
The Security Audit workflow has failed every scheduled run since
2026-07-19. rustsec/audit-check runs `cargo install cargo-audit`
without --locked, so it resolves the newest deps; kstring 2.0.4 now
requires rustc 1.96.0 while rust-toolchain.toml pins the job to 1.94.

cargo-audit is a standalone tool, not part of this crate's build, so
build it with the latest stable via RUSTUP_TOOLCHAIN, which overrides
rust-toolchain.toml. Also adds the checks: write permission the action
documents for creating its status check.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DRDwc4sxA6s6BBTLVEWYUd
cargo-audit could not run in CI since 2026-07-19, so five advisories
accumulated unnoticed. Three vulnerabilities, fixed by semver-compatible
lockfile updates:

  RUSTSEC-2026-0204  crossbeam-epoch 0.9.18 -> 0.9.20
  RUSTSEC-2026-0258  h2              0.4.13 -> 0.4.19
  RUSTSEC-2026-0185  quinn-proto     0.11.14 -> 0.11.17

Two unsoundness warnings:

  RUSTSEC-2026-0190  anyhow 1.0.102 -> 1.0.104
  RUSTSEC-2026-0205  scc, reached only through the serial_test
                     dev-dependency; the fix landed in scc 3.8.4, so
                     serial_test moves 3 -> 4 to pick it up

`cargo audit` reports zero advisories. Full suite passes on the pinned
1.94 toolchain: 145 tests, fmt and clippy clean.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DRDwc4sxA6s6BBTLVEWYUd
@aaronkwhite
aaronkwhite merged commit 98c5716 into main Sep 5, 2026
4 checks passed
@aaronkwhite
aaronkwhite deleted the fix/audit-workflow-toolchain branch September 5, 2026 13:20
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