Skip to content

fix(cargo-gamma): stabilize builds and output handling - #163

Open
Martin Taillefer (geeknoid) wants to merge 1 commit into
mainfrom
gamma
Open

fix(cargo-gamma): stabilize builds and output handling#163
Martin Taillefer (geeknoid) wants to merge 1 commit into
mainfrom
gamma

Conversation

@geeknoid

@geeknoid Martin Taillefer (geeknoid) commented Sep 4, 2026

Copy link
Copy Markdown
Member
  • Stabilize staged workspace builds. Keep a constant whole-workspace Cargo root set when the resolved selection covers every member, while physically withdrawing deferred-stage mutants and limiting blame to the current stage. This preserves dependency feature unification, prevents repeated dependency variants, and keeps unrelated mutants out of each stage.

  • Make build-output capture robust. Raise each Cargo stream limit from 4 MiB to 256 MiB and each logical-line limit from 64 KiB to 1 MiB, while growing buffers on demand instead of reserving the ceiling up front.

  • Normalize Cargo progress rendering. Consume Cargo's leading ANSI erase-to-end-of-line sequence so redirected or non-ANSI displays do not print a literal \e[K.

  • Remove the containment startup warning. Hosts without delegated cgroups still use the existing best-effort process-group fallback, but cargo-gamma no longer emits the noisy warning.

  • Make baseline failures self-diagnosing. baseline-failure.json records the package, target, runner, executable, working directory, failure classification, termination, elapsed and budget times, memory figures, controlled environment changes, and bounded control-encoded stdout/stderr tails. Successful observations retain no captured output.

  • Persist both baseline-failure.json and the ordinary gamma-diagnostics.json before early failure cleanup. The console now shows concise Diagnostics: paths to those files instead of replaying captured test output; artifact-write failures remain secondary to the original baseline error.

  • Keep the mutation hot path unchanged. Full failure-output draining and tail retention apply only to baseline measurement, not mutant execution or confirmation runs.

  • Bump the cargo-gamma crate family to 0.2.1 as a coordinated patch release, including workspace requirements and the lockfile, so the injected runtime crate stays version-aligned.

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

Copilot AI lite review requested due to automatic review settings September 4, 2026 17:27

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔵 Needs a closer look

It changes core staged-build convergence/scoping behavior and build invocation strategy in ways that are difficult to fully validate without human end-to-end review.

Pull request overview

This PR improves cargo-gamma’s staged build execution and user-facing build output handling to reduce redundant compilation work, make output capture more resilient for large builds, and ensure progress rendering is clean on non-ANSI/redirected displays.

Changes:

  • Stabilizes staged build feature unification by keeping a whole-workspace Cargo root set when the resolved selection covers all workspace members, while constraining mutation blame/rollback to the current stage.
  • Makes build output capture more robust by raising per-stream and per-line limits and switching to demand-driven buffer growth.
  • Normalizes Cargo progress redraw rendering by consuming Cargo’s leading erase-to-end-of-line control sequence rather than emitting it as visible text.
File summaries
File Description
crates/cargo-gamma-lib/src/report/progress.rs Strips Cargo’s leading ESC[K redraw prefix before encoding progress output; adds a regression test.
crates/cargo-gamma-lib/src/exec/measure.rs Adds logic to detect when staged checks should retain whole-workspace roots based on Cargo’s resolved selection; removes containment startup warning emission.
crates/cargo-gamma-lib/src/exec/build/tests.rs Updates probe behavior expectations and adds tests ensuring blame/deferral are scoped to the stage being judged.
crates/cargo-gamma-lib/src/exec/build/invoke.rs Raises output limits and avoids reserving maximum buffer sizes up front by using dynamic growth.
crates/cargo-gamma-lib/src/exec/build.rs Introduces scoped convergence (separating Cargo roots vs. mutation attribution scope), stage-scoped blame filtering, and workspace-staged checking behavior.
crates/cargo-gamma-lib/docs/DESIGN.md Updates the design contract to reflect progress handling, output limits, and staged whole-workspace root behavior.
Review details
  • Files reviewed: 6/6 changed files
  • Comments generated: 0
  • Review effort level: Lite

💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@codecov-commenter

Codecov Comments Bot (codecov-commenter) commented Sep 4, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 91.61074% with 50 lines in your changes missing coverage. Please review.
✅ Project coverage is 97.5%. Comparing base (7a5daf3) to head (3e9c412).

Files with missing lines Patch % Lines
crates/cargo-gamma-lib/src/commands/run.rs 78.7% 17 Missing ⚠️
crates/cargo-gamma-lib/src/exec/baseline.rs 90.7% 16 Missing ⚠️
crates/cargo-gamma-lib/src/exec/verdict.rs 91.9% 14 Missing ⚠️
crates/cargo-gamma-lib/src/exec/build.rs 97.5% 3 Missing ⚠️

❌ Your project status has failed because the head coverage (97.5%) is below the target coverage (100.0%). You can increase the head coverage or adjust the target coverage.

Additional details and impacted files
@@           Coverage Diff           @@
##            main    #163     +/-   ##
=======================================
- Coverage   97.5%   97.5%   -0.1%     
=======================================
  Files        300     300             
  Lines      67799   68273    +474     
=======================================
+ Hits       66158   66613    +455     
- Misses      1641    1660     +19     
Flag Coverage Δ
linux 97.5% <91.4%> (-0.1%) ⬇️
linux-arm 97.5% <91.4%> (-0.1%) ⬇️
scheduled ?
windows 97.7% <91.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.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Changes recommended

It mixes crate/version bumps into a fix PR and also introduces an output-buffer growth approach whose allocation behavior may exceed the stated limits unless clarified or further constrained.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details
  • Files reviewed: 15/16 changed files
  • Comments generated: 3
  • Review effort level: Lite

Comment thread crates/cargo-gamma-lib/src/exec/build.rs
Comment thread crates/cargo-gamma-lib/src/exec/build/invoke.rs
Comment thread Cargo.toml

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Changes recommended

It includes a staged-build scoping issue that can let out-of-scope mutants affect whole-workspace stage builds, and it bundles crate version bumps that the repo’s release process expects to land in dedicated release PRs.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Suppressed comments (2)

Cargo.toml:41

  • These workspace dependency entries were bumped to 0.2.1. The repo’s release docs describe version bumps as part of a release PR driven by scripts/release-crate.ps1 (README.md:68-86); consider keeping these changes out of this fix PR and doing them in the release PR that publishes cargo-gamma.
cargo-gamma-attrs-impl = { path = "crates/cargo-gamma-attrs-impl", default-features = false, version = "0.2.1" }
cargo-gamma-engine = { path = "crates/cargo-gamma-engine", default-features = false, version = "0.2.1" }
cargo-gamma-lib = { path = "crates/cargo-gamma-lib", default-features = false, version = "0.2.1" }
cargo-gamma-process = { path = "crates/cargo-gamma-process", default-features = false, version = "0.2.1" }
cargo-gamma-rt = { path = "crates/cargo-gamma-rt", default-features = false, version = "0.2.1" }

Cargo.toml:42

  • This workspace dependency entry was bumped to 0.2.1. The repo’s release docs describe version bumps as part of a release PR driven by scripts/release-crate.ps1 (README.md:68-86); consider keeping these changes out of this fix PR and doing them in the release PR that publishes cargo-gamma.
cargo-gamma-unsafe = { path = "crates/cargo-gamma-unsafe", default-features = false, version = "0.2.1" }
  • Files reviewed: 15/16 changed files
  • Comments generated: 9
  • Review effort level: Lite

Comment thread crates/cargo-gamma-lib/src/exec/build.rs
Comment thread crates/cargo-gamma-attrs-impl/Cargo.toml
Comment thread crates/cargo-gamma-attrs/Cargo.toml
Comment thread crates/cargo-gamma-engine/Cargo.toml
Comment thread crates/cargo-gamma-lib/Cargo.toml
Comment thread crates/cargo-gamma-process/Cargo.toml
Comment thread crates/cargo-gamma-rt/Cargo.toml
Comment thread crates/cargo-gamma-unsafe/Cargo.toml
Comment thread crates/cargo-gamma/Cargo.toml
Copilot AI review requested due to automatic review settings September 4, 2026 20:42

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔵 Needs a closer look

It includes crate/workspace version bumps that (per the repo’s documented publishing flow) should be done in a dedicated release PR rather than bundled into a fix PR.

Review details

Suppressed comments (10)

crates/cargo-gamma/Cargo.toml:7

  • This PR bumps the crate version, but the repo’s documented publishing flow expects version bumps to be done in a dedicated release PR after the desired changes are already on main (see README.md “Publishing Crates”, which drives version changes via scripts/release-crate.ps1). Please revert the version bump here and do the bump as part of the release PR instead (which will also update Cargo.lock).
version = "0.2.1"

crates/cargo-gamma-unsafe/Cargo.toml:7

  • This PR bumps the crate version, but the repo’s documented publishing flow expects version bumps to be done in a dedicated release PR after the desired changes are already on main (see README.md “Publishing Crates”, which drives version changes via scripts/release-crate.ps1). Please revert the version bump here and do the bump as part of the release PR instead (which will also update Cargo.lock).
version = "0.2.1"

crates/cargo-gamma-process/Cargo.toml:7

  • This PR bumps the crate version, but the repo’s documented publishing flow expects version bumps to be done in a dedicated release PR after the desired changes are already on main (see README.md “Publishing Crates”, which drives version changes via scripts/release-crate.ps1). Please revert the version bump here and do the bump as part of the release PR instead (which will also update Cargo.lock).
version = "0.2.1"

crates/cargo-gamma-lib/Cargo.toml:7

  • This PR bumps the crate version, but the repo’s documented publishing flow expects version bumps to be done in a dedicated release PR after the desired changes are already on main (see README.md “Publishing Crates”, which drives version changes via scripts/release-crate.ps1). Please revert the version bump here and do the bump as part of the release PR instead (which will also update Cargo.lock).
version = "0.2.1"

crates/cargo-gamma-engine/Cargo.toml:7

  • This PR bumps the crate version, but the repo’s documented publishing flow expects version bumps to be done in a dedicated release PR after the desired changes are already on main (see README.md “Publishing Crates”, which drives version changes via scripts/release-crate.ps1). Please revert the version bump here and do the bump as part of the release PR instead (which will also update Cargo.lock).
version = "0.2.1"

crates/cargo-gamma-attrs/Cargo.toml:7

  • This PR bumps the crate version, but the repo’s documented publishing flow expects version bumps to be done in a dedicated release PR after the desired changes are already on main (see README.md “Publishing Crates”, which drives version changes via scripts/release-crate.ps1). Please revert the version bump here and do the bump as part of the release PR instead (which will also update Cargo.lock).
version = "0.2.1"

crates/cargo-gamma-attrs-impl/Cargo.toml:7

  • This PR bumps the crate version, but the repo’s documented publishing flow expects version bumps to be done in a dedicated release PR after the desired changes are already on main (see README.md “Publishing Crates”, which drives version changes via scripts/release-crate.ps1). Please revert the version bump here and do the bump as part of the release PR instead (which will also update Cargo.lock).
version = "0.2.1"

Cargo.toml:41

  • These workspace dependency version bumps should be done as part of the dedicated release PR/workflow (README.md “Publishing Crates” via scripts/release-crate.ps1), not bundled into a feature/fix PR. Please revert these version numbers here; the release PR can update the workspace manifest and Cargo.lock together.
cargo-gamma-attrs-impl = { path = "crates/cargo-gamma-attrs-impl", default-features = false, version = "0.2.1" }
cargo-gamma-engine = { path = "crates/cargo-gamma-engine", default-features = false, version = "0.2.1" }
cargo-gamma-lib = { path = "crates/cargo-gamma-lib", default-features = false, version = "0.2.1" }
cargo-gamma-process = { path = "crates/cargo-gamma-process", default-features = false, version = "0.2.1" }
cargo-gamma-rt = { path = "crates/cargo-gamma-rt", default-features = false, version = "0.2.1" }

Cargo.toml:42

  • These workspace dependency version bumps should be done as part of the dedicated release PR/workflow (README.md “Publishing Crates” via scripts/release-crate.ps1), not bundled into a feature/fix PR. Please revert this version number here; the release PR can update the workspace manifest and Cargo.lock together.
cargo-gamma-unsafe = { path = "crates/cargo-gamma-unsafe", default-features = false, version = "0.2.1" }

crates/cargo-gamma-rt/Cargo.toml:7

  • This PR bumps the crate version, but the repo’s documented publishing flow expects version bumps to be done in a dedicated release PR after the desired changes are already on main (see README.md “Publishing Crates”, which drives version changes via scripts/release-crate.ps1). Please revert the version bump here and do the bump as part of the release PR instead (which will also update Cargo.lock).
version = "0.2.1"
  • Files reviewed: 15/16 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Changes recommended

It includes release-version bumps that should be split into the documented release flow, and it persists baseline output tails in JSON without control-encoding.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Suppressed comments (1)

Cargo.toml:42

  • This PR bumps multiple cargo-gamma* crate versions (and workspace dependency versions) to 0.2.1. Per the repo’s documented release flow, version bumps are supposed to be done via a dedicated release PR generated by scripts/release-crate.ps1 (README.md:68-85); mixing them into a behavior/bugfix PR makes it harder to separate release automation concerns from functional changes.
cargo-gamma-attrs-impl = { path = "crates/cargo-gamma-attrs-impl", default-features = false, version = "0.2.1" }
cargo-gamma-engine = { path = "crates/cargo-gamma-engine", default-features = false, version = "0.2.1" }
cargo-gamma-lib = { path = "crates/cargo-gamma-lib", default-features = false, version = "0.2.1" }
cargo-gamma-process = { path = "crates/cargo-gamma-process", default-features = false, version = "0.2.1" }
cargo-gamma-rt = { path = "crates/cargo-gamma-rt", default-features = false, version = "0.2.1" }
cargo-gamma-unsafe = { path = "crates/cargo-gamma-unsafe", default-features = false, version = "0.2.1" }
  • Files reviewed: 19/20 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread crates/cargo-gamma-lib/src/exec/baseline.rs Outdated

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔵 Needs a closer look

It includes crate/workspace version bumps and lockfile updates that should be handled via the documented release process rather than bundled into a fix PR.

Review details

Suppressed comments (9)

crates/cargo-gamma-unsafe/Cargo.toml:7

  • This PR bumps the crate version. Per the documented release process, version bumps should be performed in a dedicated release PR via ./scripts/release-crate.ps1 (README.md:70-85); please revert this version change in this fix PR.
version = "0.2.1"

crates/cargo-gamma/Cargo.toml:7

  • This PR bumps the crate version. The repo release workflow expects version bumps to be done in a dedicated release PR via ./scripts/release-crate.ps1 (README.md:70-85), not bundled into a fix PR—please revert the version change here (and keep any release bump separate).
version = "0.2.1"

crates/cargo-gamma-rt/Cargo.toml:7

  • This PR bumps the crate version. The repository’s release workflow calls for version bumps to happen in a release PR driven by ./scripts/release-crate.ps1 (README.md:70-85); please revert this version change here.
version = "0.2.1"

crates/cargo-gamma-process/Cargo.toml:7

  • This PR bumps the crate version. Version bumps are expected to be done in a dedicated release PR (README.md:70-85); please revert this version change in this fix PR.
version = "0.2.1"

crates/cargo-gamma-lib/Cargo.toml:7

  • This PR bumps the crate version. The documented release process uses ./scripts/release-crate.ps1 in a dedicated release PR to bump versions (README.md:70-85); please revert this version change here.
version = "0.2.1"

crates/cargo-gamma-engine/Cargo.toml:7

  • This PR bumps the crate version. Per README.md’s release workflow (README.md:70-85), version bumps should be in a dedicated release PR via ./scripts/release-crate.ps1; please revert this version change in this PR.
version = "0.2.1"

crates/cargo-gamma-attrs/Cargo.toml:7

  • This PR bumps the crate version. The repository release process expects version bumps to be handled in a dedicated release PR via ./scripts/release-crate.ps1 (README.md:70-85); please revert this version change here.
version = "0.2.1"

crates/cargo-gamma-attrs-impl/Cargo.toml:7

  • This PR bumps the crate version. Per the documented release workflow (README.md:70-85), please revert this version bump from the fix PR and do any release bump separately via ./scripts/release-crate.ps1.
version = "0.2.1"

Cargo.toml:37

  • These workspace dependency entries are bumped to 0.2.1, but the repo’s documented release process expects version bumps to be done in a dedicated release PR via ./scripts/release-crate.ps1 (README.md:70-85). Please revert these workspace version bumps in this fix PR (and regenerate Cargo.lock accordingly).
cargo-gamma-attrs-impl = { path = "crates/cargo-gamma-attrs-impl", default-features = false, version = "0.2.1" }
  • Files reviewed: 19/20 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI review requested due to automatic review settings September 4, 2026 21:51
@geeknoid

Copy link
Copy Markdown
Member Author

The recurring recommendation to remove the 0.2.1 version changes is intentionally declined. This PR is the release vehicle for the cargo-gamma patch release, and the cargo-gamma family versions, workspace dependency requirements, and lockfile must move together because cargo-gamma injects the matching cargo-gamma-rt crate into instrumented builds. Splitting that bump from these fixes would either leave the fixes unreleased or create a family-version mismatch. No version-bump change is planned.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔵 Needs a closer look

It includes coordinated crate version bumps and lockfile churn without the corresponding release-script/changelog workflow, and should either drop those bumps from this fix PR or be converted into a proper release change.

Review details

Suppressed comments (1)

Cargo.toml:42

  • This PR bumps cargo-gamma crate versions (and updates workspace dependency versions / Cargo.lock) as part of a functional fix. Repo docs describe version + changelog updates being driven by scripts/release-crate.ps1 as part of the publishing flow (README.md “Publishing Crates”, plus CHANGELOG generation notes), and the gamma crate CHANGELOG.md files are present but not updated here. Consider either (a) reverting the version/Cargo.lock churn from this fix PR, or (b) turning this into (or following up with) a dedicated release PR that runs scripts/release-crate.ps1 so versions + CHANGELOGs are updated together.
cargo-gamma-attrs-impl = { path = "crates/cargo-gamma-attrs-impl", default-features = false, version = "0.2.1" }
cargo-gamma-engine = { path = "crates/cargo-gamma-engine", default-features = false, version = "0.2.1" }
cargo-gamma-lib = { path = "crates/cargo-gamma-lib", default-features = false, version = "0.2.1" }
cargo-gamma-process = { path = "crates/cargo-gamma-process", default-features = false, version = "0.2.1" }
cargo-gamma-rt = { path = "crates/cargo-gamma-rt", default-features = false, version = "0.2.1" }
cargo-gamma-unsafe = { path = "crates/cargo-gamma-unsafe", default-features = false, version = "0.2.1" }
  • Files reviewed: 19/20 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔵 Needs a closer look

It includes coordinated version/Cargo.lock bumps that aren’t explained by the PR’s stated “fix” scope and should be reverted or explicitly justified/split.

Review details

Suppressed comments (1)

Cargo.toml:41

  • These workspace dependency version bumps (0.2.0 → 0.2.1) are not mentioned in the PR title/description, which otherwise reads like a behavior-only fix. If this PR is not intended to be a release/versioning change, consider reverting the version/Cargo.lock bumps; if it is intended, it likely deserves an explicit callout (or a dedicated release PR) since the repo’s documented release flow uses scripts/release-crate.ps1 to bump versions.
cargo-gamma-attrs-impl = { path = "crates/cargo-gamma-attrs-impl", default-features = false, version = "0.2.1" }
cargo-gamma-engine = { path = "crates/cargo-gamma-engine", default-features = false, version = "0.2.1" }
cargo-gamma-lib = { path = "crates/cargo-gamma-lib", default-features = false, version = "0.2.1" }
cargo-gamma-process = { path = "crates/cargo-gamma-process", default-features = false, version = "0.2.1" }
cargo-gamma-rt = { path = "crates/cargo-gamma-rt", default-features = false, version = "0.2.1" }
  • Files reviewed: 20/21 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔵 Needs a closer look

It includes crate/version and lockfile bumps that should be handled via the repository’s release workflow rather than bundled into a fix PR.

Review details

Suppressed comments (9)

crates/cargo-gamma/Cargo.toml:8

  • This PR bumps the crate version. Per the repo’s documented release workflow, version bumps should be done by the release process (see README’s “Publishing Crates” section) rather than bundled into a fix PR; please revert the version change here and do the bump in the dedicated release PR.
[package]
name = "cargo-gamma"
description = "Fast mutation testing for Rust"
version = "0.2.1"
readme = "README.md"

crates/cargo-gamma-unsafe/Cargo.toml:8

  • This PR bumps the crate version. Per the repo’s documented release workflow (README “Publishing Crates”), version bumps should be handled via the release process rather than in a fix PR; please revert this version change and apply it as part of the release PR instead.
[package]
name = "cargo-gamma-unsafe"
description = "The platform calls cargo-gamma cannot make safely, behind a safe interface"
version = "0.2.1"
readme = "README.md"

crates/cargo-gamma-rt/Cargo.toml:8

  • This PR bumps the crate version. The repo’s “Publishing Crates” workflow in README indicates version bumps belong in release PRs driven by the release script; please revert this change here and do the bump as part of the release process.
[package]
name = "cargo-gamma-rt"
description = "Runtime support library injected into crates under mutation test by cargo-gamma"
version = "0.2.1"
readme = "README.md"

crates/cargo-gamma-process/Cargo.toml:8

  • This PR bumps the crate version. Per the repo’s documented publishing workflow (README “Publishing Crates”), version bumps should be handled in a release PR; please revert this change in this fix PR.
[package]
name = "cargo-gamma-process"
description = "Internal bounded process-tree lifecycle for cargo-gamma"
version = "0.2.1"
readme = "README.md"

crates/cargo-gamma-lib/Cargo.toml:8

  • This PR bumps the crate version. The repository’s publishing guidance (README “Publishing Crates”) suggests version bumps are done as part of a release PR; please revert the bump from this fix PR and do it through the release process.
[package]
name = "cargo-gamma-lib"
description = "Internal library for cargo-gamma"
version = "0.2.1"
readme = "README.md"

crates/cargo-gamma-engine/Cargo.toml:8

  • This PR bumps the crate version. Per the repo’s documented release workflow in README (“Publishing Crates”), please keep version bumps for a dedicated release PR and revert this change from the fix PR.
[package]
name = "cargo-gamma-engine"
description = "Internal Rust source mutation engine for cargo-gamma"
version = "0.2.1"
readme = "README.md"

crates/cargo-gamma-attrs/Cargo.toml:8

  • This PR bumps the crate version. The repo’s “Publishing Crates” instructions imply version bumps should be done via the release process (release script + PR); please revert this change here and do the bump in the release PR instead.
[package]
name = "cargo-gamma-attrs"
description = "Inert attribute macros for suppressing cargo-gamma mutations"
version = "0.2.1"
readme = "README.md"

crates/cargo-gamma-attrs-impl/Cargo.toml:8

  • This PR bumps the crate version. Per the repo’s documented publishing workflow (README “Publishing Crates”), version bumps should be applied in the release PR rather than bundled into a fix PR; please revert this bump.
[package]
name = "cargo-gamma-attrs-impl"
description = "Implementation of the inert attribute macros exposed by cargo-gamma-attrs"
version = "0.2.1"
readme = "README.md"

Cargo.toml:41

  • The workspace-level dependency versions for the cargo-gamma crates are bumped here. Based on the repo’s documented “Publishing Crates” process (release script + release PR), these version bumps should be kept to the release PR and not included in this fix PR; please revert these version updates (and the matching per-crate version fields / Cargo.lock edits).
cargo-gamma-attrs-impl = { path = "crates/cargo-gamma-attrs-impl", default-features = false, version = "0.2.1" }
cargo-gamma-engine = { path = "crates/cargo-gamma-engine", default-features = false, version = "0.2.1" }
cargo-gamma-lib = { path = "crates/cargo-gamma-lib", default-features = false, version = "0.2.1" }
cargo-gamma-process = { path = "crates/cargo-gamma-process", default-features = false, version = "0.2.1" }
cargo-gamma-rt = { path = "crates/cargo-gamma-rt", default-features = false, version = "0.2.1" }
  • Files reviewed: 20/21 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI review requested due to automatic review settings September 4, 2026 22:29

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Changes recommended

workspace_stages currently enables workspace-stage root widening whenever checking is None, which can widen staged roots even when Cargo’s resolved selection is a package subset (contradicting the intended selection-based gating).

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details
  • Files reviewed: 20/21 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread crates/cargo-gamma-lib/src/exec/measure.rs Outdated

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔵 Needs a closer look

It mixes coordinated crate/version + lockfile bumps into a feature/fix PR, which conflicts with the repository’s documented release workflow and should be split into a dedicated release PR.

Review details

Suppressed comments (9)

crates/cargo-gamma/Cargo.toml:7

  • The repo’s documented release process expects version bumps to happen in a dedicated release PR (after functional changes land) via ./scripts/release-crate.ps1, rather than being combined into a feature/fix PR. Consider reverting this version bump here and doing the coordinated 0.2.1 release (including lockfile updates) as a separate PR.
version = "0.2.1"

crates/cargo-gamma-unsafe/Cargo.toml:7

  • The repo’s documented release process expects version bumps to happen in a dedicated release PR (after functional changes land) via ./scripts/release-crate.ps1, rather than being combined into a feature/fix PR. Consider reverting this version bump here and doing the coordinated 0.2.1 release (including lockfile updates) as a separate PR.
version = "0.2.1"

crates/cargo-gamma-rt/Cargo.toml:7

  • The repo’s documented release process expects version bumps to happen in a dedicated release PR (after functional changes land) via ./scripts/release-crate.ps1, rather than being combined into a feature/fix PR. Consider reverting this version bump here and doing the coordinated 0.2.1 release (including lockfile updates) as a separate PR.
version = "0.2.1"

crates/cargo-gamma-process/Cargo.toml:7

  • The repo’s documented release process expects version bumps to happen in a dedicated release PR (after functional changes land) via ./scripts/release-crate.ps1, rather than being combined into a feature/fix PR. Consider reverting this version bump here and doing the coordinated 0.2.1 release (including lockfile updates) as a separate PR.
version = "0.2.1"

crates/cargo-gamma-lib/Cargo.toml:7

  • The repo’s documented release process expects version bumps to happen in a dedicated release PR (after functional changes land) via ./scripts/release-crate.ps1, rather than being combined into a feature/fix PR. Consider reverting this version bump here and doing the coordinated 0.2.1 release (including lockfile updates) as a separate PR.
version = "0.2.1"

crates/cargo-gamma-engine/Cargo.toml:7

  • The repo’s documented release process expects version bumps to happen in a dedicated release PR (after functional changes land) via ./scripts/release-crate.ps1, rather than being combined into a feature/fix PR. Consider reverting this version bump here and doing the coordinated 0.2.1 release (including lockfile updates) as a separate PR.
version = "0.2.1"

crates/cargo-gamma-attrs/Cargo.toml:7

  • The repo’s documented release process expects version bumps to happen in a dedicated release PR (after functional changes land) via ./scripts/release-crate.ps1, rather than being combined into a feature/fix PR. Consider reverting this version bump here and doing the coordinated 0.2.1 release (including lockfile updates) as a separate PR.
version = "0.2.1"

crates/cargo-gamma-attrs-impl/Cargo.toml:7

  • The repo’s documented release process expects version bumps to happen in a dedicated release PR (after functional changes land) via ./scripts/release-crate.ps1, rather than being combined into a feature/fix PR. Consider reverting this version bump here and doing the coordinated 0.2.1 release (including lockfile updates) as a separate PR.
version = "0.2.1"

Cargo.toml:41

  • These workspace dependency version bumps are part of the coordinated 0.2.1 release. Per the repo’s release documentation, consider keeping functional changes and release version bumps in separate PRs (run ./scripts/release-crate.ps1 from a branch off main once the functional changes have landed), so feature/fix PRs don’t also carry release mechanics.
cargo-gamma-attrs-impl = { path = "crates/cargo-gamma-attrs-impl", default-features = false, version = "0.2.1" }
cargo-gamma-engine = { path = "crates/cargo-gamma-engine", default-features = false, version = "0.2.1" }
cargo-gamma-lib = { path = "crates/cargo-gamma-lib", default-features = false, version = "0.2.1" }
cargo-gamma-process = { path = "crates/cargo-gamma-process", default-features = false, version = "0.2.1" }
cargo-gamma-rt = { path = "crates/cargo-gamma-rt", default-features = false, version = "0.2.1" }
  • Files reviewed: 20/21 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

- Keep whole-workspace Cargo roots stable across staged convergence while physically withdrawing deferred-stage mutants. This preserves dependency feature unification and prevents unrelated mutants from affecting each stage.

- Bound Cargo output safely without reserving the full ceiling, and normalize leading ANSI erase sequences so redirected progress remains readable.

- Remove the noisy cgroup-containment warning while retaining best-effort process-group cleanup on hosts without delegated cgroups.

- Make baseline failures self-diagnosing. Record termination, timing, memory, package, target, runner, working directory, and bounded control-encoded stdout/stderr tails in baseline-failure.json.

- Write baseline-failure.json and gamma-diagnostics.json before early cleanup, and point the console diagnostic at both files instead of replaying captured test output. Artifact failures remain secondary and inherited environment values stay private.

- Restrict failure-output retention and complete harness draining to baseline measurement, leaving successful observations and mutation/confirmation hot paths unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 6ca9796b-96b2-41c1-b138-4ecbb21aac02

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔵 Needs a closer look

The design doc’s baseline tail line-limit description is inconsistent with the implemented limit, and the PR also mixes release version bumps with functional changes despite the repo’s documented release flow.

Review details

Suppressed comments (2)

crates/cargo-gamma-lib/docs/DESIGN.md:73

  • The design doc says the baseline retains a "64 KiB, 200-line" stdout/stderr tail, but the implementation uses OUTPUT_TAIL_LINES: 2_000 (crates/cargo-gamma-lib/src/exec/verdict.rs:1644). Please align the documented line limit with the actual behavior so readers know what to expect from baseline-failure.json.
    Cargo.toml:41
  • This PR mixes functional changes with a coordinated version bump (and corresponding lockfile/workspace dependency updates). The repo’s documented release flow bumps versions via scripts/release-crate.ps1 in a release PR after the changes to be released have already landed (README.md:74-85). If the intent is a release PR, consider splitting: land the behavior fixes first, then do a follow-up release PR that only contains the scripted version/changelog/lockfile updates.
cargo-gamma-attrs-impl = { path = "crates/cargo-gamma-attrs-impl", default-features = false, version = "0.2.1" }
cargo-gamma-engine = { path = "crates/cargo-gamma-engine", default-features = false, version = "0.2.1" }
cargo-gamma-lib = { path = "crates/cargo-gamma-lib", default-features = false, version = "0.2.1" }
cargo-gamma-process = { path = "crates/cargo-gamma-process", default-features = false, version = "0.2.1" }
cargo-gamma-rt = { path = "crates/cargo-gamma-rt", default-features = false, version = "0.2.1" }
  • Files reviewed: 20/21 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

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.

4 participants