Skip to content

chore(ci): fix deny advisories, nightly rustdoc lints, and stale forge-std pin#51

Merged
stephancill merged 2 commits into
base-anvil-forkfrom
stephancilliers/ci-maintenance
Jul 15, 2026
Merged

chore(ci): fix deny advisories, nightly rustdoc lints, and stale forge-std pin#51
stephancill merged 2 commits into
base-anvil-forkfrom
stephancilliers/ci-maintenance

Conversation

@stephancill

@stephancill stephancill commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Motivation

base-anvil-fork CI is red on several checks that are unrelated to any feature work — every open PR inherits them. This PR greens the deterministic, in-repo ones:

  • deny / cargo deny check — new 2026 RUSTSEC advisories on transitive deps.
  • docs / docs — nightly rustdoc now enforces rustdoc::redundant_explicit_links under -D warnings.
  • test / test all — a stale forge-std pin makes forge build emit a revision-mismatch warning that breaks no-warning / snapshot CLI tests.

Solution

deny:

  • crossbeam-epoch 0.9.18 → 0.9.20 (Cargo.lock) — resolves RUSTSEC-2026-0204.
  • Ignore RUSTSEC-2026-0194 / RUSTSEC-2026-0195 (quick-xml <0.41 DoS). quick-xml 0.18/0.38 are transitive and the fix (>=0.41.0) isn't reachable via cargo update given foundry's dep tree; matches the existing convention in deny.toml.

docs:

  • rustdoc::redundant_explicit_links flagged [revm](foundry_evm::revm) in crates/anvil/src/eth/backend/mod.rs and db.rs. Dropped the redundant explicit target so the label resolves via intra-doc link.

test all (forge-std revision mismatch):

  • The shared test template (crates/test-utils/src/util.rs) runs forge init — which writes a foundry.lock pinning forge-std at bf647bd6 (v1.16.2) — then force-checks-out FORGE_STD_REVISION (= testdata/forge-std-rev). Our pin was stale at 620536fa (Apr 2026), so forge build warned:
    Warning: Dependency 'lib/forge-std' revision mismatch:
      expected 'bf647bd6046f2f7da30d0c2bf435e5c76a780c1b',
      found    '620536fa5277db4e3fd46772d5cbc1ea0696fb43'
    
    breaking build::build_no_warning_without_soldeer_lock, cmd::can_clean_without_warnings, and test_cmd::repros::issue_9272.
  • Bump testdata/forge-std-rev 620536fa → bf647bd6, matching upstream foundry-rs/foundry's testdata/forge-std-rev. The checkout now matches the lock → no warning.

Verified locally:

  • cargo deny --all-features check alladvisories ok, bans ok, licenses ok, sources ok
  • cargo +nightly doc --workspace --all-features --no-deps --document-private-items (with CI RUSTDOCFLAGS) → clean
  • forge-std-rev value confirmed against upstream foundry's pin; test / test all on this PR exercises it end-to-end.

Out of scope

  • test / test external (ext_integration::gunilev, convex_shutdown_simulation) fork Ethereum mainnet over a public RPC — environmental flakes, not a base-anvil regression.

PR Checklist

  • Added Tests
  • Added Documentation
  • Breaking changes

stephancill and others added 2 commits July 15, 2026 18:02
base-anvil-fork CI is red on two deterministic checks, independent of any
feature work:

deny / cargo deny check:
- RUSTSEC-2026-0204 (crossbeam-epoch <0.9.20): bump via Cargo.lock to 0.9.20.
- RUSTSEC-2026-0194 / -0195 (quick-xml <0.41 DoS): ignore. quick-xml 0.18/0.38
  are transitive and the fix (>=0.41) isn't reachable via cargo update given
  foundry's dep tree; matches the existing ignore convention.

docs / docs (nightly rustdoc -D warnings):
- rustdoc::redundant_explicit_links now flags [revm](foundry_evm::revm) in
  crates/anvil/src/eth/backend/{mod.rs,db.rs}; drop the redundant explicit
  target so the label resolves via intra-doc.

Verified locally: 'cargo deny --all-features check all' and
'cargo +nightly doc --workspace --all-features --no-deps --document-private-items'
both pass.

Not addressed here (non-deterministic, upstream/env): test / test all
(forge CLI tests) and test / test external (mainnet-fork tests over public RPC).

Co-authored-by: OpenCode <opencode-noreply@coinbase.com>
The shared test template ('forge init' in crates/test-utils/src/util.rs)
writes a foundry.lock pinning forge-std at bf647bd6 (v1.16.2) and then
force-checks-out FORGE_STD_REVISION (= testdata/forge-std-rev). Our pin was
stale at 620536fa (Apr 2026), so 'forge build' warned about the revision
mismatch, breaking the no-warning / snapshot CLI tests
(build_no_warning_without_soldeer_lock, cmd::can_clean_without_warnings,
test_cmd::repros::issue_9272). Sync the pin to upstream foundry-rs/foundry's
testdata/forge-std-rev so the checkout matches the lock.

Co-authored-by: OpenCode <opencode-noreply@coinbase.com>
@stephancill stephancill changed the title chore(ci): fix deny advisories and nightly rustdoc lints chore(ci): fix deny advisories, nightly rustdoc lints, and stale forge-std pin Jul 15, 2026
@stephancill
stephancill merged commit 89c7e7a into base-anvil-fork Jul 15, 2026
18 of 20 checks passed
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