fix(cargo-gamma): stabilize builds and output handling - #163
fix(cargo-gamma): stabilize builds and output handling#163Martin Taillefer (geeknoid) wants to merge 1 commit into
Conversation
There was a problem hiding this comment.
🔵 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 Report❌ Patch coverage is ❌ 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
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:
|
e885edc to
ff32310
Compare
There was a problem hiding this comment.
🟡 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
ff32310 to
7ae5921
Compare
There was a problem hiding this comment.
🟡 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
7ae5921 to
a363479
Compare
There was a problem hiding this comment.
🔵 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
a363479 to
1c74f77
Compare
There was a problem hiding this comment.
🟡 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 byscripts/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
1c74f77 to
ac0d014
Compare
ac0d014 to
9e0e27e
Compare
There was a problem hiding this comment.
🔵 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.ps1in 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
9e0e27e to
645845d
Compare
|
The recurring recommendation to remove the |
There was a problem hiding this comment.
🔵 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.ps1as 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 runsscripts/release-crate.ps1so 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
645845d to
21b9e7b
Compare
There was a problem hiding this comment.
🔵 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.ps1to 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
21b9e7b to
4eae0e5
Compare
4eae0e5 to
895069f
Compare
There was a problem hiding this comment.
🔵 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
There was a problem hiding this comment.
🟡 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
895069f to
9fe6f0a
Compare
There was a problem hiding this comment.
🔵 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.ps1from 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
9fe6f0a to
3e9c412
Compare
There was a problem hiding this comment.
🔵 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 frombaseline-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.ps1in 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
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.jsonrecords 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.jsonand the ordinarygamma-diagnostics.jsonbefore early failure cleanup. The console now shows conciseDiagnostics: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.1as 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