Repository navigation
perf(cargo-anvil): streamline PR checks and isolate Linux fuzzing - #336
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 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
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: f521e3e6-2e5c-4938-8404-059ca73caa1a
28b837a to
877da30
Compare
There was a problem hiding this comment.
🟢 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-fuzzinggroups 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-targetsto 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
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: f521e3e6-2e5c-4938-8404-059ca73caa1a
877da30 to
db9f6f7
Compare
|
[Copilot speaking] ss-review-proactor is reserving this pull request for review with ss-review. |
|
[Copilot speaking] |
Sander Saares (sandersaares)
left a comment
There was a problem hiding this comment.
[Copilot speaking]
Published 1 finding. No finding follows up on an existing discussion thread.
See diagnostics
| Diagnostic | Value |
|---|---|
| Cache | Hit |
| User instruction files | 32 |
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: f521e3e6-2e5c-4938-8404-059ca73caa1a
db9f6f7 to
5c99ef5
Compare
martin-kolinek
left a comment
There was a problem hiding this comment.
🤖: Approved with suggestions — the review comments are non-blocking; take them or leave them.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: f521e3e6-2e5c-4938-8404-059ca73caa1a
5c99ef5 to
23d9056
Compare
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: f521e3e6-2e5c-4938-8404-059ca73caa1a
23d9056 to
fb1c424
Compare
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
fb1c424 to
626dbfa
Compare

[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/oxidizerandmicrosoft/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-fastto scheduled testing makespr-fastitself faster.Changes
scheduled-test.--target host-tupleto 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--targetexplicitly overrides the selection.)anvil-pr-runtime-analysisintoanvil-pr-fuzzing.check-all-targetsfrompr-fasttoscheduled-test.