xtask: add release-evidence --patch mode for patch releases#581
Conversation
Why patch mode
==============
v0.7.0 ran the full minor-release evidence lane, including expensive
gates like `cargo xtask mutants-nightly --scope public`, the broad
perf suite, and new product profile proofs. That investment is right
for a minor release that changes the user-facing platform.
v0.7.1 is different: it hardens release tooling and the user install
path without changing public behavior. It only needs confidence that
release-system gates and the user path still work. Running the full
minor lane on every patch wastes CI time and dulls the signal of the
minor lane itself.
What the patch lane runs
========================
`cargo xtask release-evidence --version <V> --patch [--summary]`
selects `release_evidence_steps_patch()` which runs 10 focused steps:
1. `public-surface` — re-confirm exported API
2. `check-file-policy` — non-Rust file allowlist
3. `publish-preflight` — metadata + cargo package --no-verify
4. `publish-check` — ordered publish dry-runs (includes
topology guard from #572 and
publish=false dep guard from #578)
5. `scanner-safe-reference --check` (#577) — scanner reference paths
6. `cratesio-smoke --path . --skip-install-cli` (#580) — user path
7. `docs-sync --check` — docs are in sync with code
8. `no-blob` — no secret-shaped blobs in test paths
9. `examples-smoke` — examples still compile / run
10. `impacted-evidence --base origin/main` — change-impact routing
What it deliberately omits
==========================
- `mutants-nightly --scope public` — full nightly mutation runs
against `main` on schedule; targeted mutation already runs through
`cargo xtask pr` when `impacted-evidence` flags the change.
- broad perf suite (`perf --compare`) — patch releases should not
shift baselines; if they do, escalate to the minor lane.
- new product profile proofs (scanner-safe bundle, OIDC contract
pack) — patch releases are not the venue to re-prove new profiles.
Receipt shape
=============
`ReleaseEvidenceReceipt` gains a `lane_mode` field (`"minor"` or
`"patch"`). The existing `lane: "release-evidence"` string is
preserved for backward compatibility with anything consuming the
shape; only the new field distinguishes the two lanes. The
release-evidence markdown gains a `Mode:` line; the summary opens
with a "Patch-mode evidence lane" callout when patch is set and
swaps the v0.7.0-specific gate table for the patch step list.
Tests
=====
- `release_evidence_patch_step_list_excludes_mutants_nightly`
- `release_evidence_minor_step_list_includes_mutants_nightly`
- `release_evidence_patch_step_list_includes_scanner_safe_reference`
- `release_evidence_patch_step_list_includes_cratesio_smoke`
- `release_evidence_patch_receipt_records_patch_mode`
- `release_evidence_patch_summary_announces_patch_lane`
Minor-lane callers (`release-evidence --version X [--summary]` with
no `--patch`) are unchanged in behavior and continue to run the
full 15-step lane.
|
Warning You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again! |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Warning Rate limit exceeded
You’ve run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (1)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Why
v0.7.0 ran the full minor-release evidence lane, including expensive
gates like
cargo xtask mutants-nightly --scope public, the broadperf suite, and new product profile proofs. That investment is right
for a minor release that changes the user-facing platform.
v0.7.1 is a different shape: it hardens release tooling and the user
install path without changing public behavior. It needs confidence
that release-system gates and the user path still work, not the full
mutation/perf/profile pack. Running the minor lane on every patch
wastes CI time and dulls the signal of the minor lane itself.
This PR adds a lighter evidence lane appropriate for patch releases.
What
--patchflag tocargo xtask release-evidence.release_evidence_steps_minor()(the existing full 15-step list,unchanged in behavior).
release_evidence_steps_patch()(new 10-step list).ReleaseEvidenceReceiptgains alane_modefield ("minor"or"patch"). The existinglane: "release-evidence"string ispreserved for backward compatibility.
Mode:line. The summarypage opens with a "Patch-mode evidence lane" callout when
--patchis set and swaps the v0.7.0 gate table for the patchstep list.
bar (mutants-nightly still wired), the
lane_modefield, and thepatch summary copy.
Patch lane steps
public-surfacecheck-file-policypublish-preflightpublish-check(already composes topology guard xtask: add topological-order guard to publish-check (post-#565 hardening) #572 andpublish=false dep guard xtask: reject versioned workspace deps on publish=false crates #578)
scanner-safe-reference --check(xtask: add scanner-safe-reference --check command #577)cratesio-smoke --path . --skip-install-cli(xtask: add cratesio install smoke #580; `--skip-install-cli`keeps patch evidence fast in CI)
docs-sync --checkno-blobexamples-smokeimpacted-evidence --base origin/mainDeliberately omitted from patch mode:
mutants-nightly --scope public(full nightly mutation; targetedmutation still runs through
cargo xtask prwhenimpacted-evidenceflags the change).v0.7.1 plan
This is PR 5 of the v0.7.1 hardening series. It composes the
release-system improvements from PRs 1-4:
scanner-safe-reference --checkcommandcratesio-smokeinstall smoke--patchlets the v0.7.1 release evidence run those four gatesplus the standard scanner/no-blob/docs sanity checks without paying
for the full minor lane.
Test plan
cargo build -p xtaskcargo test -p xtask release_evidence(9 passed)cargo xtask release-evidence --version 0.7.1 --patch --dry-run --summary(10 commands planned; summary opens with patch callout)cargo xtask release-evidence --version 0.7.1 --dry-run --summary(minor lane: 15 commands planned, unchanged)cargo fmt --check -p xtaskcargo clippy -p xtask --all-targets -- -D warnings