Repository navigation
feat(cargo-gamma): improve campaign reliability and mutation detection - #282
Martin Taillefer (geeknoid) wants to merge 1 commit into
Conversation
There was a problem hiding this comment.
🔵 Needs a closer look
Four unresolved moderate findings affect alias resolution, conditional-let instrumentation, and test-fixture policy compliance.
No open issues 🎉
What changed in this PR
Improves cargo-gamma’s mutation validity, compiler isolation, test scheduling, campaign recovery, and diagnostics, with expanded regression coverage.
Changes:
- Adds type-preserving mutation helpers and richer source/type identity handling.
- Updates execution interfaces, progress reporting, and population-completeness metadata.
- Expands regression fixtures, updates reliability documentation, and removes obsolete mutation suppressions.
Unresolved findings:
- Moderate · 1 vote —
crates/cargo-gamma-engine/src/ops/collect/collector/indexes.rs:195: Inherited aliases can resolve bare primitive targets through later shadowing, suppressing valid decrement mutants. Freeze primitive identities at declaration scope and add regression coverage. - Moderate · 1 vote —
crates/cargo-gamma-engine/src/ops/collect/collector/indexes.rs:180: Alias canonicalization omits file-module prefixes, potentially using unrelated root declarations and suppressing valid return-value mutants. Preserve file-relative identity. - Moderate · 1 vote —
crates/cargo-gamma-engine/src/ops/collect/collector/temporaries.rs:31: Temporary-consumer lifting can separateif letandwhile letbindings from their bodies. Preserve the enclosing construct or omit these sites, with regressions for both. - Moderate · 3 votes —
crates/cargo-gamma-lib/src/discover/modules.rs:230: The new test writes source-input fixtures during setup, contrary to test-review policy. Use checked-in fixtures or injected in-memory inputs while retaining the assertions.
| File | Description |
|---|---|
gamma.toml |
Excludes immutable mutation fixtures. |
crates/cargo-heather/src/comment.rs |
Removes mutation suppression. |
crates/cargo-gamma/docs/MUTATORS.md |
Clarifies floating-point range mutations. |
crates/cargo-gamma/docs/MIGRATION.md |
Documents revised test selection. |
crates/cargo-gamma/docs/IMPLEMENTATION.md |
Updates convergence and scheduling documentation. |
crates/cargo-gamma/docs/gamma.toml |
Updates configuration examples. |
crates/cargo-gamma-unsafe/docs/IMPLEMENTATION.md |
Documents cleanup ownership and test oracles. |
crates/cargo-gamma-unsafe/docs/DESIGN.md |
Clarifies interrupt lifecycle guarantees. |
crates/cargo-gamma-rt/src/mutation.rs |
Adds type-preserving mutation helpers. |
crates/cargo-gamma-rt/src/lib.rs |
Exports helpers and updates protocol documentation. |
crates/cargo-gamma-process/src/lib.rs |
Clarifies containment limitations. |
crates/cargo-gamma-process/src/faults.rs |
Adds registration-refusal fault injection. |
crates/cargo-gamma-process/README.md |
Updates containment documentation. |
crates/cargo-gamma-process/docs/IMPLEMENTATION.md |
Documents lifecycle test oracles. |
crates/cargo-gamma-process/docs/DESIGN.md |
Specifies registry-release ordering. |
crates/cargo-gamma-lib/tests/schema_conformance.rs |
Tests population-completeness serialization. |
crates/cargo-gamma-lib/tests/regressions.rs |
Supplies completeness metadata. |
crates/cargo-gamma-lib/tests/instrumented_compiles.rs |
Reuses runtime helper sources. |
crates/cargo-gamma-lib/tests/fixtures/report.golden.json |
Updates report metadata. |
crates/cargo-gamma-lib/tests/fixtures/isolation-graph/ordinary/src/main.rs |
Adds ordinary binary fixture. |
crates/cargo-gamma-lib/tests/fixtures/isolation-graph/ordinary/src/lib.rs |
Adds ordinary dependency consumer. |
crates/cargo-gamma-lib/tests/fixtures/isolation-graph/ordinary/Cargo.toml |
Defines ordinary fixture package. |
crates/cargo-gamma-lib/tests/fixtures/isolation-graph/dependency/src/lib.rs |
Adds feature-gated dependency API. |
crates/cargo-gamma-lib/tests/fixtures/isolation-graph/dependency/Cargo.toml |
Defines dependency feature. |
crates/cargo-gamma-lib/tests/fixtures/isolation-graph/Cargo.toml |
Defines isolation fixture workspace. |
crates/cargo-gamma-lib/tests/fixtures/isolation-graph/Cargo.lock |
Locks fixture dependency graph. |
crates/cargo-gamma-lib/tests/fixtures/isolation-graph/application/tests/integration.rs |
Checks dev-feature visibility. |
crates/cargo-gamma-lib/tests/fixtures/isolation-graph/application/src/lib.rs |
Consumes dev-feature API. |
crates/cargo-gamma-lib/tests/fixtures/isolation-graph/application/Cargo.toml |
Configures dev-feature unification. |
crates/cargo-gamma-lib/tests/fixtures/correctness/temporal_operators.rs |
Adds temporal operator controls. |
crates/cargo-gamma-lib/tests/fixtures/correctness/resource-dependencies.json |
Adds resolved dependency metadata. |
crates/cargo-gamma-lib/tests/fixtures/correctness/reader_api_identity.rs |
Distinguishes reader and iterator methods. |
crates/cargo-gamma-lib/tests/fixtures/correctness/package_identities/selected.rs |
Adds relocated nominal type. |
crates/cargo-gamma-lib/tests/fixtures/correctness/package_identities/lib.rs |
Defines module identity graph. |
crates/cargo-gamma-lib/tests/fixtures/correctness/package_identities/inactive.rs |
Adds inactive defaultable type. |
crates/cargo-gamma-lib/tests/fixtures/correctness/package_identities/features.rs |
Adds custom enum controls. |
crates/cargo-gamma-lib/tests/fixtures/correctness/package_identities/dependency.rs |
Adds standard Option alias. |
crates/cargo-gamma-lib/tests/fixtures/correctness/package_identities/consumers.rs |
Exercises aliases and default evidence. |
crates/cargo-gamma-lib/tests/fixtures/correctness/package_identities/catalog/mod.rs |
Defines re-export chain. |
crates/cargo-gamma-lib/tests/fixtures/correctness/package_identities/catalog/bridge.rs |
Re-exports nominal type. |
crates/cargo-gamma-lib/tests/fixtures/correctness/package_identities/catalog/artifact.rs |
Adds nondefaultable type. |
crates/cargo-gamma-lib/tests/fixtures/correctness/package_identities/alternate.rs |
Adds alternate default controls. |
crates/cargo-gamma-lib/tests/fixtures/correctness/optional-features.rs |
Exercises conditional feature branches. |
crates/cargo-gamma-lib/tests/fixtures/correctness/optional-features.json |
Supplies optional-dependency metadata. |
crates/cargo-gamma-lib/tests/fixtures/correctness/metadata_features/lib.rs |
Distinguishes custom Some constructors. |
crates/cargo-gamma-lib/tests/fixtures/correctness/iterators.rs |
Adds wrapped iterator inputs. |
crates/cargo-gamma-lib/tests/fixtures/correctness/iterators.expected.rs |
Pins iterator guard output. |
crates/cargo-gamma-lib/tests/fixtures/correctness/inference.rs |
Adds inference-sensitive inputs. |
crates/cargo-gamma-lib/tests/fixtures/correctness/inference.expected.rs |
Pins type-preserving helper output. |
crates/cargo-gamma-lib/tests/fixtures/correctness/identities.rs |
Adds identity and scope inputs. |
crates/cargo-gamma-lib/tests/fixtures/correctness/identities.expected.rs |
Pins identity-sensitive guards. |
crates/cargo-gamma-lib/tests/fixtures/correctness/generation.rs |
Adds generation regression inputs. |
crates/cargo-gamma-lib/tests/fixtures/correctness/generation.expected.rs |
Pins generated replacements. |
crates/cargo-gamma-lib/tests/fixtures/correctness/edges.rs |
Adds lifetime and scope edge cases. |
crates/cargo-gamma-lib/tests/fixtures/correctness/custom_operators.rs |
Adds overloaded operator controls. |
crates/cargo-gamma-lib/tests/fixtures/correctness/conditional_modules/selected.rs |
Adds selected module type. |
crates/cargo-gamma-lib/tests/fixtures/correctness/conditional_modules/model.rs |
Adds alternate module type. |
crates/cargo-gamma-lib/tests/fixtures/correctness/conditional_modules/lib.rs |
Exercises conditional module relocation. |
crates/cargo-gamma-lib/tests/fixtures/correctness/campaign.rs |
Adds campaign regression inputs. |
crates/cargo-gamma-lib/tests/fixtures/correctness/campaign.expected.rs |
Pins campaign guard output. |
crates/cargo-gamma-lib/tests/fixtures/correctness/ambiguous_modules/shared.rs |
Adds multiply mounted source. |
crates/cargo-gamma-lib/tests/fixtures/correctness/ambiguous_modules/lib.rs |
Defines ambiguous module mounts. |
crates/cargo-gamma-lib/tests/fixtures/completed-recovery/lib.rs |
Adds original recovery source. |
crates/cargo-gamma-lib/tests/fixtures/completed-recovery/legacy-record.json |
Adds legacy recovery record. |
crates/cargo-gamma-lib/tests/fixtures/completed-recovery/changed.toml |
Adds changed manifest generation. |
crates/cargo-gamma-lib/tests/fixtures/completed-recovery/changed.rs |
Adds changed source generation. |
crates/cargo-gamma-lib/tests/fixtures/completed-recovery/Cargo.toml |
Defines recovery fixture manifest. |
crates/cargo-gamma-lib/tests/cli.rs |
Updates removed-option and phase assertions. |
crates/cargo-gamma-lib/tests/agreement.rs |
Strengthens index-nesting agreement. |
crates/cargo-gamma-lib/src/report/progress.rs |
Tracks confirmed unviable counts. |
crates/cargo-gamma-lib/src/paths.rs |
Preserves symlink suffix semantics. |
crates/cargo-gamma-lib/src/ops/collect.rs |
Re-exports dependency evidence type. |
crates/cargo-gamma-lib/src/model/mutant.rs |
Describes wrapped iterator mutations. |
crates/cargo-gamma-lib/src/merge/read.rs |
Tests conservative legacy metadata. |
crates/cargo-gamma-lib/src/merge/merged.rs |
Clarifies incomplete populations. |
crates/cargo-gamma-lib/src/fixtures.rs |
Supplies fixture completeness metadata. |
crates/cargo-gamma-lib/src/exec/verdict/hubs.rs |
Removes synchronization mutation suppression. |
crates/cargo-gamma-lib/src/exec/test_binary.rs |
Restricts old narrowing helpers to tests. |
crates/cargo-gamma-lib/src/exec/resources.rs |
Uses dedicated listing and simpler selections. |
crates/cargo-gamma-lib/src/exec/nextest.rs |
Updates probe documentation. |
crates/cargo-gamma-lib/src/exec/mod.rs |
Updates execution modules and exports. |
crates/cargo-gamma-lib/src/exec/manifest.rs |
Updates runtime-state terminology. |
crates/cargo-gamma-lib/src/exec/loader.rs |
Clarifies resource-listing loader requirements. |
crates/cargo-gamma-lib/src/exec/killers.rs |
Exposes internal killer iteration. |
crates/cargo-gamma-lib/src/exec/harness_filters.rs |
Updates listing-purpose documentation. |
crates/cargo-gamma-lib/src/exec/events.rs |
Adds activity events and simplifies tiers. |
crates/cargo-gamma-lib/src/exec/config.rs |
Removes census optimization option. |
crates/cargo-gamma-lib/src/exec/build/mutation_outcome_tests.rs |
Updates isolation negative cases. |
crates/cargo-gamma-lib/src/exec/build/messages.rs |
Simplifies compiler diagnostic representation. |
crates/cargo-gamma-lib/src/exec/build/invoke.rs |
Removes queue mutation suppression. |
crates/cargo-gamma-lib/src/exec/build/fixtures/ownership_interaction.rs |
Adds ownership interaction input. |
crates/cargo-gamma-lib/src/exec/build/fixtures/mandatory_exit.rs |
Adds divergent control-flow input. |
crates/cargo-gamma-lib/src/exec/build/fixtures/inference_interaction.rs |
Adds inference interaction input. |
crates/cargo-gamma-lib/src/exec/build/fixtures/enclosing_type_error.json |
Adds diagnostic-span fixture. |
crates/cargo-gamma-lib/src/exec/baseline.rs |
Removes census attempt state. |
crates/cargo-gamma-lib/src/estimate.rs |
Simplifies execution cost categories. |
crates/cargo-gamma-lib/src/elements/publication.rs |
Cleans staging after comparison errors. |
crates/cargo-gamma-lib/src/elements/mod.rs |
Exposes internal not-built prefix. |
crates/cargo-gamma-lib/src/discover/survey/resource_evidence_tests.rs |
Tests declaration evidence generations. |
crates/cargo-gamma-lib/src/discover/modules.rs |
Normalizes module graph identities. |
crates/cargo-gamma-lib/src/discover/mod.rs |
Registers new discovery modules. |
crates/cargo-gamma-lib/src/discover/hints.rs |
Clarifies historical compiler identities. |
crates/cargo-gamma-lib/src/commands/merge.rs |
Updates report fixture metadata. |
crates/cargo-gamma-lib/src/commands/list.rs |
Publishes population completeness. |
crates/cargo-gamma-lib/src/commands/dashboard.rs |
Tracks resumed and deferred activity. |
crates/cargo-gamma-lib/src/commands/cli.rs |
Removes optimization flag. |
crates/cargo-gamma-lib/src/cfg/probe.rs |
Documents unbounded probe supervision. |
crates/cargo-gamma-lib/src/cfg/cfgs.rs |
Preserves uncertain feature predicates. |
crates/cargo-gamma-lib/src/cfg/build.rs |
Documents discovery process boundaries. |
crates/cargo-gamma-lib/docs/IMPLEMENTATION.md |
Updates hint ranking and scheduling contracts. |
crates/cargo-gamma-lib/Cargo.toml |
Adds correctness test registration and chrono. |
crates/cargo-gamma-engine/src/parse/nesting.rs |
Accumulates nested expression costs. |
crates/cargo-gamma-engine/src/ops/collect/tests.rs |
Expands qualified-alias regression. |
crates/cargo-gamma-engine/src/ops/collect/source_identities.rs |
Adds file-labeled declaration identities. |
crates/cargo-gamma-engine/src/ops/collect/shape.rs |
Adds wrapped iterator body shape. |
crates/cargo-gamma-engine/src/ops/collect/resource_dependency.rs |
Defines resolved dependency evidence. |
crates/cargo-gamma-engine/src/ops/collect/mod.rs |
Registers identity and evidence modules. |
crates/cargo-gamma-engine/src/ops/collect/definitions.rs |
Includes stated replacements in identities. |
crates/cargo-gamma-engine/src/ops/collect/collector/values.rs |
Instantiates aliases and refines confidence. |
crates/cargo-gamma-engine/src/ops/collect/collector/temporaries.rs |
Maps temporary borrows to consumers. |
crates/cargo-gamma-engine/src/ops/collect/collector/resource/fixtures/state.rs |
Adds state-progress analysis inputs. |
crates/cargo-gamma-engine/src/ops/collect/collector/resource/fixtures/helpers.rs |
Adds helper-effect analysis inputs. |
crates/cargo-gamma-engine/src/ops/collect/collector/resource/fixtures/guarded.rs |
Adds guarded progress controls. |
crates/cargo-gamma-engine/src/ops/collect/collector/resource/fixtures/grouping.rs |
Adds grouping progress controls. |
crates/cargo-gamma-engine/src/ops/collect/collector/resource/fixtures/effects.rs |
Adds pure and volatile effect controls. |
crates/cargo-gamma-engine/src/ops/collect/collector/resource/fixtures/campaign/survey.rs |
Adds graph traversal analysis input. |
crates/cargo-gamma-engine/src/ops/collect/collector/resource/fixtures/campaign/shard.rs |
Adds shard-loop analysis input. |
crates/cargo-gamma-engine/src/ops/collect/collector/resource/fixtures/campaign/report/text.rs |
Adds text-scanning analysis input. |
crates/cargo-gamma-engine/src/ops/collect/collector/resource/fixtures/campaign/lib.rs |
Defines fixture module graph. |
crates/cargo-gamma-engine/src/ops/collect/collector/resource/fixtures/campaign/isolation.rs |
Adds minimization analysis input. |
crates/cargo-gamma-engine/src/ops/collect/collector/resource/fixtures/campaign/glob.rs |
Adds tokenizer analysis input. |
crates/cargo-gamma-engine/src/ops/collect/collector/resource/fixtures/campaign/engine.rs |
Supplies fixture map alias. |
crates/cargo-gamma-engine/src/ops/collect/collector/resource/fixtures/campaign/discover/hints.rs |
Adds hint-grouping analysis input. |
crates/cargo-gamma-engine/src/ops/collect/collector/resource/fixtures/campaign/diff.rs |
Adds diff-loop analysis input. |
crates/cargo-gamma-engine/src/ops/collect/collector/resource/fixtures/campaign/commands/dashboard.rs |
Adds panel-padding analysis input. |
crates/cargo-gamma-engine/src/ops/collect/collector/resource/fixtures/campaign/baseline.rs |
Adds artifact-naming analysis input. |
crates/cargo-gamma-engine/src/ops/collect/collector/noop.rs |
Handles verified resource scopes and wrappers. |
crates/cargo-gamma-engine/src/ops/collect/collector/indexes.rs |
Canonicalizes aliases and refines signatures. |
crates/cargo-gamma-engine/src/model/identity.rs |
Documents stated-value identity discrimination. |
crates/cargo-gamma-attrs/docs/DESIGN.md |
Specifies cumulative nesting budget. |
crates/cargo-gamma-attrs-impl/tests/agreement.rs |
Tests cumulative budgets and diagnostics. |
crates/cargo-gamma-attrs-impl/docs/DESIGN.md |
Documents inherited parser budgets. |
crates/cargo-each/src/substitute.rs |
Removes token mutation suppressions. |
crates/cargo-aprz-lib/src/reports/excel.rs |
Removes propagation mutation suppression. |
crates/cargo-aprz-lib/src/facts/crates/tables/table_mgr.rs |
Removes default-assignment suppressions. |
crates/cargo-aprz-lib/src/facts/crates/provider.rs |
Removes capacity mutation suppressions. |
crates/cargo-aprz-lib/src/commands/progress_reporter.rs |
Removes draw-target mutation suppression. |
crates/cargo-aprz-lib/src/commands/deps.rs |
Removes default-call suppressions. |
crates/cargo-anvil/src/region.rs |
Removes obsolete mutation suppressions. |
crates/cargo-anvil/src/emit/toml_array_region.rs |
Expands array-region regression coverage. |
Cargo.lock |
Records gamma-lib’s chrono dependency. |
Review effort: Balanced
690b9d6 to
c4708ed
Compare
c4708ed to
5cf6ef9
Compare
|
Addressed the review findings in 5cf6ef9: aliases now retain declaration-scope primitive and file-module identities; temporary-borrow guards preserve complete Also repaired manifest ordering, 25 fixture license headers, and stale scheduler/session assertions. The session regressions now explicitly distinguish compiler-unbuilt islands from compiled-but-uncovered code. Local verification passed: 1,185 engine and 3,147 library unit tests, 15 schema/behavior integration tests, both failing session regressions, strict Clippy, and changed-file formatting. CI is pending on the amended single commit. |
|
🤖 Pato's Pull Request Agent: Linux ARM Fast Checks currently fail in |
|
Fixed the spellcheck failure in b2585c1: added the five intended terms to The latest review summary mentions two remaining immutable-input fixture violations, but provides no paths/lines and there are no inline review comments or threads. Please provide those locations so the remaining findings can be addressed precisely; the previously identified module-alias test no longer writes source fixtures. |
5cf6ef9 to
b2585c1
Compare
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #282 +/- ##
=======================================
- Coverage 99.5% 99.4% -0.2%
=======================================
Files 311 337 +26
Lines 50555 60209 +9654
=======================================
+ Hits 50348 59873 +9525
- Misses 207 336 +129
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:
|
b2585c1 to
da27a32
Compare
|
Repaired alias expansion and the coverage-gate failures in da27a32. Native pinned-nightly measurements pass in both feature configurations: engine 99.4193% (16,264/16,359 lines), runtime 99.3%. Added behavioral tests without lowering thresholds or excluding production code. Engine tests, library tests and integration regressions, strict Clippy, changed-file formatting, headers, and spelling pass locally; cross-platform CI is pending on the amended single commit. |
|
🤖 Pato's Pull Request Agent: [correctness · low] The regenerated hints record |
|
The hints provenance SHA The latest review summary mentions four moderate findings but supplies no paths/lines or mechanisms, and no corresponding inline threads were posted. Please provide those details so the identity-compatibility, fixture-isolation, and population findings can be addressed precisely. |
da27a32 to
dabf3a7
Compare
dabf3a7 to
10b5450
Compare
10b5450 to
5d6f9d5
Compare
|
5d6f9d5 updates only rustls-webpki (0.103.16) and webpki-root-certs (1.0.10) to address RUSTSEC-2026-0382/0383; |
5d6f9d5 to
da3ecb4
Compare
da3ecb4 to
7378c89
Compare
|
The previous-head Azure build 42928357 failed SBOM generation because |
| harness | ||
| .command(work, binary, &only.names(), fail_fast, resource_bearing) | ||
| .command(work, binary, only.names(), fail_fast, true) |
There was a problem hiding this comment.
🤖 Pato's Pull Request Agent: [perf · medium] crates/cargo-gamma-lib/src/exec/verdict.rs:781 — Avoid serializing every Nextest suite
Passing true here forces --test-threads 1 for every binary delegated to Nextest, including binaries with no resource constraints; previously this was conditional on work.required_resources(...). test_all relaunches suites across many mutants, so large suites lose internal parallelism on every campaign run and can substantially increase wall time. Can the serial flag remain conditional on resource-bearing binaries unless globally serial execution is required for correctness?
There was a problem hiding this comment.
This is intentional scheduling policy, not a resource-lock requirement: the agreed four-phase model runs at most one Nextest test process per mutant, including full-binary phases, with parallelism across mutants controlled by --jobs. The contract is documented in crates/cargo-gamma-lib/docs/DESIGN.md:228-231; the launcher regression covers resource-free/resource-bearing binaries and baseline/active-mutant launches. I am preserving that policy rather than silently restoring nested parallelism. Leaving this thread open if the throughput tradeoff should be reconsidered.
Improve compiler-guided exclusions and isolation, exact-first scheduling, kill-ranked inferred tests, campaign recovery, and execution diagnostics. Expand regression coverage to kill thousands of discovered mutants. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: af5dec1b-7970-4411-8a3c-c32d8e491236
7378c89 to
975bc9e
Compare


Improves cargo-gamma's mutation validity, compiler isolation, test scheduling, campaign recovery, and diagnostics, and expands regression coverage to kill thousands of discovered mutants.