Skip to content

perf(cargo-anvil): streamline PR checks and isolate Linux fuzzing - #336

Merged
st-dev-gh merged 5 commits into
mainfrom
u/st-dev-gh/anvil-pr-ci
Nov 4, 2026
Merged

st-dev-gh merged 5 commits into
mainfrom
u/st-dev-gh/anvil-pr-ci

Conversation

@st-dev-gh

@st-dev-gh st-dev-gh commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

[copilot speaking]

Why

PR CI is bottlenecked by pr-runtime-analysis, which can take hours. Bolero itself can take over an hour. Extracting Bolero into its own PR group lets it run in parallel with the remaining runtime-analysis checks, reducing overall PR turnaround.

To shorten Bolero checks in PR builds and introduce repeatability, PR and local verification use a fixed count of 30,000 runs per target and seed 2027. The 30,000-run budget is an arbitrary choice informed by experiments in microsoft/oxidizer and microsoft/ox-tools, intended to make runs quicker without sacrificing too much coverage. Scheduled builds complement this with broader exploration through 90-second-per-target campaigns without an explicit seed.

Separately, moving all-target compilation from pr-fast to scheduled testing makes pr-fast itself faster.

Changes

  • Use 30,000 runs per target with seed 2027 for PR and default local Bolero verification, and 90-second-per-target campaigns without an explicit seed at the end of scheduled-test.
  • Pass --target host-tuple to cargo-bolero so fuzz targets are built for the runner's native target, regardless of which target cargo-bolero itself was built for. (Prebuilt cargo-bolero 0.13.5 binaries have no GNU Linux build, so cargo-binstall installs the musl one that tries to use musl standard libraries by default, which are not present on runners. Providing --target explicitly overrides the selection.)
  • Extract Bolero from anvil-pr-runtime-analysis into anvil-pr-fuzzing.
  • Include fuzzing in local PR recipes and GitHub required-check aggregation.
  • Move check-all-targets from pr-fast to scheduled-test.
  • Bump cargo-anvil to 0.24.0 and update generated artifacts, snapshots, and design documentation.

@codecov-commenter

Codecov Comments Bot (codecov-commenter) commented Nov 2, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 99.5%. Comparing base (9f12625) to head (626dbfa).
⚠️ Report is 3 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##            main    #336     +/-   ##
=======================================
- Coverage   99.5%   99.5%   -0.1%     
=======================================
  Files        348     349      +1     
  Lines      62541   62712    +171     
=======================================
+ Hits       62248   62417    +169     
- Misses       293     295      +2     
Flag Coverage Δ
linux 99.4% <100.0%> (-0.1%) ⬇️
linux-arm 99.4% <100.0%> (-0.1%) ⬇️
scheduled ?
windows 99.5% <100.0%> (-0.1%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

st-dev-gh pushed a commit that referenced this pull request Nov 2, 2026
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: f521e3e6-2e5c-4938-8404-059ca73caa1a
@st-dev-gh
st-dev-gh force-pushed the u/st-dev-gh/anvil-pr-ci branch from 28b837a to 877da30 Compare November 2, 2026 21:32
@st-dev-gh st-dev-gh changed the title perf(cargo-anvil): run shorter Bolero checks in a Linux-only PR group perf(cargo-anvil): streamline PR checks and isolate Linux fuzzing Nov 2, 2026
@st-dev-gh
st-dev-gh marked this pull request as ready for review November 2, 2026 22:17
Copilot AI balanced review requested due to automatic review settings November 2, 2026 22:17

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟢 Approval recommended

There are no active review issues blocking the PR-check restructuring.

No open issues 🎉

What changed in this PR

This PR reduces cargo-anvil’s PR-check critical path by separating Linux fuzzing from runtime analysis and moving package-isolated compilation to scheduled checks.

Changes:

  • Add independent pr-fuzzing groups to local recipes, GitHub Actions, and Azure DevOps, including GitHub required-check aggregation.
  • Upgrade cargo-bolero to 0.13.5, explicitly select the compiler’s host target, and reduce fuzzing runs to 45 seconds per target.
  • Move check-all-targets to scheduled testing and update tests, documentation, generated artifacts, and release metadata for cargo-anvil 0.24.0.
File Description
justfiles/​anvil/​versions.just Update the generated cargo-bolero pin.
justfiles/​anvil/​tools.just Clarify Linux-only fuzzing in comments.
justfiles/​anvil/​mod.just Import the new fuzzing group.
justfiles/​anvil/​groups/​scheduled-test.just Add all-target compilation and prerequisites.
justfiles/​anvil/​groups/​pr-slow.just Include fuzzing in the local slow tier.
justfiles/​anvil/​groups/​pr-runtime-analysis.just Remove Bolero and its prerequisites.
justfiles/​anvil/​groups/​pr-fuzzing.just Add the standalone fuzzing recipe.
justfiles/​anvil/​groups/​pr-fast.just Remove all-target compilation and prerequisites.
justfiles/​anvil/​checks/​bolero.just Select the host target and shorten fuzzing runs.
crates/​cargo-anvil/​tests/​snapshots/​snapshots__local_only.snap Refresh local-backend generated output.
crates/​cargo-anvil/​tests/​snapshots/​snapshots__github_backend.snap Refresh GitHub-backend generated output.
crates/​cargo-anvil/​tests/​snapshots/​snapshots__ado_backend.snap Refresh Azure DevOps generated output.
crates/​cargo-anvil/​tests/​schemas.rs Include fuzzing in recipe-list expectations.
crates/​cargo-anvil/​tests/​recipe_contracts.rs Update Bolero command contract assertions.
crates/​cargo-anvil/​tests/​fixtures/​recipe-public-surface.txt Add the public fuzzing recipe.
crates/​cargo-anvil/​tests/​fixtures/​recipe-private-definitions.txt Update fast-tier prerequisite expectations.
crates/​cargo-anvil/​templates/​skills/​cargo-anvil-adoption/​SKILL.md List fuzzing as an individual verification group.
crates/​cargo-anvil/​templates/​justfiles/​anvil/​versions.just Update the source cargo-bolero pin.
crates/​cargo-anvil/​templates/​justfiles/​anvil/​tools.just Clarify platform behavior in template comments.
crates/​cargo-anvil/​templates/​justfiles/​anvil/​mod.just Register the fuzzing-group import.
crates/​cargo-anvil/​templates/​justfiles/​anvil/​groups/​scheduled-test.just Schedule package-isolated compilation.
crates/​cargo-anvil/​templates/​justfiles/​anvil/​groups/​pr-slow.just Wire fuzzing into the local umbrella.
crates/​cargo-anvil/​templates/​justfiles/​anvil/​groups/​pr-runtime-analysis.just Separate fuzzing from runtime analysis.
crates/​cargo-anvil/​templates/​justfiles/​anvil/​groups/​pr-fuzzing.just Define fuzzing execution and prerequisites.
crates/​cargo-anvil/​templates/​justfiles/​anvil/​groups/​pr-fast.just Remove package-isolated compilation from fast checks.
crates/​cargo-anvil/​templates/​justfiles/​anvil/​checks/​bolero.just Define host-target selection and the 45-second budget.
crates/​cargo-anvil/​templates/​github/​pr-impl-workflow.yml Add parallel Linux fuzzing jobs and required gating.
crates/​cargo-anvil/​templates/​ado/​steps/​job.yml Document the new stage identifier in comments.
crates/​cargo-anvil/​templates/​ado/​pr-stages.yml Add an independent Linux fuzzing stage.
crates/​cargo-anvil/​src/​run.rs Expect the emitted Azure DevOps fuzzing step.
crates/​cargo-anvil/​src/​lib.rs Describe fuzzing as a separate PR group.
crates/​cargo-anvil/​src/​anvil/​artifacts/​mod.rs Classify fuzzing as an impact-consuming group.
crates/​cargo-anvil/​src/​anvil/​artifacts/​justfile.rs Register fuzzing artifacts and update recipe assertions.
crates/​cargo-anvil/​src/​anvil/​artifacts/​github.rs Test fuzzing topology, gating, and mutation-job isolation.
crates/​cargo-anvil/​src/​anvil/​artifacts/​ado.rs Register fuzzing steps and test Linux-only staging.
crates/​cargo-anvil/​README.md Refresh generated group descriptions and version links.
crates/​cargo-anvil/​docs/​design/​README.md Document group-specific platform coverage.
crates/​cargo-anvil/​docs/​design/​local.md Update local group composition.
crates/​cargo-anvil/​docs/​design/​github.md Document parallel fuzzing and required-check wiring.
crates/​cargo-anvil/​docs/​design/​checks.md Update check placement, fuzzing behavior, and scheduling rationale.
crates/​cargo-anvil/​docs/​design/​ado.md Document the Linux-only fuzzing stage.
crates/​cargo-anvil/​CHANGELOG.md Add the 0.24.0 release entry.
crates/​cargo-anvil/​Cargo.toml Bump cargo-anvil to 0.24.0.
Cargo.lock Synchronize the cargo-anvil package version.
.github/​workflows/​anvil-pr-impl.yml Apply generated fuzzing jobs and required gating.
.github/​skills/​cargo-anvil-adoption/​SKILL.md Add the generated fuzzing verification example.
.anvil.lock Update tool version and generated-artifact checksums.

Review effort: Balanced

st-dev-gh pushed a commit that referenced this pull request Nov 3, 2026
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: f521e3e6-2e5c-4938-8404-059ca73caa1a
@st-dev-gh
st-dev-gh force-pushed the u/st-dev-gh/anvil-pr-ci branch from 877da30 to db9f6f7 Compare November 3, 2026 09:09
Copilot AI balanced review requested due to automatic review settings November 3, 2026 09:09

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟢 Approval recommended

The review reports no active issues with the PR validation restructuring.

No open issues 🎉

Review effort: Balanced

@martin-kolinek martin-kolinek left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖: Approved.

@sandersaares

Copy link
Copy Markdown
Member

[Copilot speaking] ss-review-proactor is reserving this pull request for review with ss-review.

@sandersaares

Copy link
Copy Markdown
Member

[Copilot speaking]

Pull request overview (auto-generated).

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

[Copilot speaking]

Published 1 finding. No finding follows up on an existing discussion thread.

See diagnostics
Diagnostic Value
Cache Hit
User instruction files 32

st-dev-gh pushed a commit that referenced this pull request Nov 3, 2026
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: f521e3e6-2e5c-4938-8404-059ca73caa1a
@st-dev-gh
st-dev-gh force-pushed the u/st-dev-gh/anvil-pr-ci branch from db9f6f7 to 5c99ef5 Compare November 3, 2026 19:52
Copilot AI balanced review requested due to automatic review settings November 3, 2026 19:52

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Changes recommended

The implemented Bolero campaign differs from the benchmarked policy, while the design documentation misclassifies Bolero reruns and omits the new scheduled workload.

3 open issues

Review effort: Balanced

Comment thread crates/cargo-anvil/docs/design/local.md Resolved

@martin-kolinek martin-kolinek left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖: Approved with suggestions — the review comments are non-blocking; take them or leave them.

st-dev-gh pushed a commit that referenced this pull request Nov 4, 2026
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: f521e3e6-2e5c-4938-8404-059ca73caa1a
@st-dev-gh
st-dev-gh force-pushed the u/st-dev-gh/anvil-pr-ci branch from 5c99ef5 to 23d9056 Compare November 4, 2026 13:18
Copilot AI balanced review requested due to automatic review settings November 4, 2026 13:18

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟢 Approval recommended

No active review issues block the separation of PR fuzzing and the move of isolated compilation to scheduled testing.

1 open issue
2 resolved since last review

Review effort: Balanced

@martin-kolinek martin-kolinek left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖: Approved.

st-dev-gh pushed a commit that referenced this pull request Nov 4, 2026
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: f521e3e6-2e5c-4938-8404-059ca73caa1a
@st-dev-gh
st-dev-gh force-pushed the u/st-dev-gh/anvil-pr-ci branch from 23d9056 to fb1c424 Compare November 4, 2026 14:21
Copilot AI balanced review requested due to automatic review settings November 4, 2026 14:21

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟢 Approval recommended

No active review issues remain for the CI fuzzing and scheduled-check changes.

1 open issue

Review effort: Balanced

@st-dev-gh
st-dev-gh enabled auto-merge (squash) November 4, 2026 14:50

@martin-kolinek martin-kolinek left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖: Approved.

Stanislav Andras (from Dev Box) and others added 5 commits November 4, 2026 16:29
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: f521e3e6-2e5c-4938-8404-059ca73caa1a
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: f521e3e6-2e5c-4938-8404-059ca73caa1a
Default PR fuzzing to 30,000 runs with a fixed seed. Run a 90-second campaign without a seed argument last in scheduled-test, sharing target discovery and execution.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: f521e3e6-2e5c-4938-8404-059ca73caa1a
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: f521e3e6-2e5c-4938-8404-059ca73caa1a
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: f521e3e6-2e5c-4938-8404-059ca73caa1a
@st-dev-gh
st-dev-gh force-pushed the u/st-dev-gh/anvil-pr-ci branch from fb1c424 to 626dbfa Compare November 4, 2026 15:38
Copilot AI balanced review requested due to automatic review settings November 4, 2026 15:38

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟢 Approval recommended

No active review issues are recorded for the changes intended to reduce PR verification workload.

No open issues 🎉

1 resolved since last review

Review effort: Balanced

@martin-kolinek martin-kolinek left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖: Approved.

@st-dev-gh
st-dev-gh merged commit 998b7c4 into main Nov 4, 2026
38 checks passed
@st-dev-gh
st-dev-gh deleted the u/st-dev-gh/anvil-pr-ci branch November 4, 2026 18:11
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.

5 participants