Skip to content

Fix the crossbeam-epoch advisory and record the accepted lru one - #9

Merged
UnbreakableMJ merged 2 commits into
mainfrom
chore/release-audit-hygiene
Aug 6, 2026
Merged

Fix the crossbeam-epoch advisory and record the accepted lru one#9
UnbreakableMJ merged 2 commits into
mainfrom
chore/release-audit-hygiene

Conversation

@UnbreakableMJ

Copy link
Copy Markdown
Contributor

cargo audit reported two findings. They warrant opposite treatment, and conflating them would have shipped a fixable vulnerability in the first release.

Fixed: crossbeam-epoch (RUSTSEC-2026-0204)

Reached through jwalk. Dereferences an invalid pointer in the fmt::Pointer impl for Atomic and Shared. A fix exists within semver, so the lockfile moves 0.9.18 → 0.9.20. No source change, no API change.

Accepted: lru (RUSTSEC-2026-0002)

Reached through ratatui. Recorded in .cargo/audit.toml with the reasoning, rather than silenced:

  • It is an unsoundness, not a vulnerability. IterMut::next/next_back briefly take an exclusive reference to the key, violating Stacked Borrows. Severity INFO, no attacker-facing vector.
  • Vacuum cannot reach it. ratatui uses lru for exactly one thing — memoising layout splits (LruCache<(Rect, Layout), (Segments, Spacers)>) — and never calls iter_mut on that cache. Verified against the ratatui 0.29.0 sources, not assumed.
  • It cannot be fixed in place. ratatui 0.29 requires lru = "0.12"; the fix landed in 0.16.3. The only route is the ratatui 0.30 restructure (crate split into ratatui-core/-widgets/-crossterm), a breaking port of vacuum-tui and vacuum-theme. Rushing that trades a provably unreachable unsoundness for real instability, which Priority 1 does not permit.

The entry states the condition that retires it: ratatui 0.30 makes layout-cache an optional feature, so that migration can drop lru from the tree outright rather than merely bumping it.

Result

cargo audit goes from 1 vulnerability to 0, leaving three unmaintained-crate warnings (number_prefix, paste, anyhow). Gate unchanged: fmt, clippy -D warnings, 82 tests, reuse lint.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FCJbPm4FWS99y9utbUe13z

`cargo audit` reported two findings. They warrant opposite treatment, and
conflating them would have shipped a fixable vulnerability in the first
release.

crossbeam-epoch 0.9.18, reached through jwalk, dereferences an invalid pointer
in the `fmt::Pointer` impl for `Atomic` and `Shared` (RUSTSEC-2026-0204). A fix
exists within semver, so the lockfile moves to 0.9.20. No source change, no
API change.

lru 0.12.5, reached through ratatui, is accepted rather than fixed, and
.cargo/audit.toml records why. It is an unsoundness rather than a
vulnerability: `IterMut::next` and `next_back` briefly take an exclusive
reference to the key, violating Stacked Borrows. Vacuum cannot reach it.
ratatui uses lru for one purpose, memoising layout splits, and never calls
`iter_mut` on that cache; this was checked against the ratatui 0.29.0 sources
rather than assumed. Nor can it be fixed in place: ratatui 0.29 requires
lru 0.12, the fix landed in 0.16.3, and the only route is the ratatui 0.30
restructure, which is a breaking port of vacuum-tui and vacuum-theme.
Rushing that would trade a provably unreachable unsoundness for real
instability.

The ignore entry states the condition that retires it: ratatui 0.30 makes the
layout cache an optional feature, so that migration can drop lru from the tree
rather than merely bumping it. Entries in that file are accepted findings
carrying their reasoning, not silenced ones; anything unlisted remains a
failure to fix.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FCJbPm4FWS99y9utbUe13z
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

The accepted-findings list is only useful if something re-reads it. A weekly
run, plus a run whenever the dependency set or that list changes, reports new
advisories without blocking unrelated work.

Deliberately not a pull-request gate: advisories are published against
dependencies at arbitrary times, so gating every change on them reddens a pull
request for a reason that has nothing to do with it, which trains people to
ignore the result.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FCJbPm4FWS99y9utbUe13z
@UnbreakableMJ
UnbreakableMJ merged commit dc9cb41 into main Aug 6, 2026
@UnbreakableMJ
UnbreakableMJ deleted the chore/release-audit-hygiene branch August 6, 2026 21:47
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