docs(release): open the 0.12.0 candidate with Phase 0 artifacts - #410
Conversation
release-preparation.md Phase 0 asks for a release decision, readiness ledger, and handoff skeleton on swarm before a candidate is frozen. The Unreleased changelog has accumulated two new commands and a run of first-use fixes with no such artifacts, so the scope existed only as changelog entries. The decision argues 0.12.0 from the user-visible change set and records what is deferred, what the proof boundary is, and what it does not authorize. The readiness ledger is BLOCKED with every gate pending, and names the real blockers: no frozen candidate, #245 still open, and advisory suites that must not be recorded as executed proof. The handoff is a skeleton with no executed commands. Phase 0 says the version and changelog freeze land late, so Cargo.toml is untouched. None of this authorizes a tag, publication, signing, or a package channel; that authority stays with source. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JioAJ9GsBHKqhbVerJ8tpg
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
Summary by CodeRabbit
WalkthroughAdded three documents for the proposed Changesv0.12.0 Release Documentation
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
Poem
✨ 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 |
|
Droid encountered an error —— View job Droid is reviewing code and running a security check… |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5d06a477b3
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| 3. **Epic #246 Phase 5 is open.** Draft #389, the living release-preparation | ||
| procedure, is not yet reviewed and landed. |
There was a problem hiding this comment.
Remove the already-landed #389 blocker
Failure mode: The ledger directs release preparation to wait for work that is already complete: commit 08f9331 (docs(release): bind preparation to approved candidate (#389)) is an ancestor of the reviewed commit and introduced the active docs/release/release-preparation.md, so #389 is neither draft nor unlanded. Why here: Listing it under blockers and residual work makes the Phase 0 record stale and may cause operators to wait for or repeat the canonical procedure. Fix direction: Mark #389 as landed and retain only the portions of #246 that genuinely remain. Validation: git merge-base --is-ancestor 08f9331 4264baf exits 0, and the release-preparation file history identifies #389 as its landed commit. Confidence: high.
AGENTS.md reference: AGENTS.md:L48-L53
Useful? React with 👍 / 👎.
| 6. **Install-smoke credential isolation unaudited.** #407 fixed the Rust | ||
| suites; `scripts/release-install-smoke.sh` and `.ps1` were not in scope. |
There was a problem hiding this comment.
Drop the already-satisfied credential-isolation exception
Failure mode: This records install-smoke credential isolation as unverified residual work even though, at the reviewed parent, release-install-smoke.sh line 298 unsets both GITHUB_TOKEN and GH_TOKEN, while the PowerShell script lines 289–291 removes both before the no-token first-use path; that logic predates #407. Why here: Release closeout may incorrectly preserve an exception or schedule duplicate remediation for a safeguard already implemented on both platforms. Fix direction: Record the existing script evidence, reserving a pending gate only for any additional behavioral test that is actually missing. Validation: Inspect the two scripts’ no-token sections or execute them with an ambient GH_TOKEN. Confidence: high.
Useful? React with 👍 / 👎.
Summary
release-preparation.mdPhase 0 asks for three artifacts on swarm before a candidate is frozen: a release decision, a readiness ledger, and a handoff skeleton.Unreleasedhas since accumulated two new commands and a run of first-use fixes with none of them, so the release scope existed only as changelog entries and the deferrals and proof boundary were nowhere.This adds the three Phase 0 files. It deliberately does not freeze anything.
Why 0.12.0 and not 0.11.1:
shiplog startandshiplog report validate --receiptsare new user-facing commands, which is a minor increment.Why release at all: the argument is the user-visible change set, not control-plane activity. Two fixes are evidence-correctness defects — half-open windows in the local git and Jira ingestors (#226), which had been counting boundary-date items in two adjacent periods with duplicate event ids, and
--last-6-monthsexcluding work recorded today, which made a note added throughshiplog addinvisible to the very nextshiplog update. Others are reachable on the first command a new user runs.Links
Proposal:
Spec:
ADR:
Plan item:
docs/release/release-preparation.mdPhase 0Issue: relates to #246 (Phase 5), #245
Scope
docs/release/0.12.0-release-decision.md— statusproposed. Included boundary, explicit deferrals,nonecompatibility with the three behavior changes stated anyway, proof boundary, and distribution channels.docs/release/0.12.0-readiness.md— statuspreparing, decisionBLOCKED, every gatepending. Adds a release-specific gate table for what this scope earns beyond the standard matrix.RELEASE_HANDOFF_0.12.0.md— skeleton, statuspreparing, no executed commands. The command block is explicitly marked reference-only.Blockers named rather than glossed: no frozen candidate; #245 open, so the exact staged four-platform candidate prerequisite is unmet; #246 Phase 5 open with draft #389 unlanded; the
shiplog start"not inv0.11.0" caveat in the README and setup guide must be removed whenstartactually ships; and mutation, extended fuzz, and scheduled property/BDD suites are advisory and must not be recorded as executed proof.One gate is new because of a gap this session surfaced: first-use acceptance must run with no provider credential in the environment. Until #407, the Rust suites cleared
GITHUB_TOKENbut notGH_TOKEN, so a runner holdingGH_TOKENwould have satisfied a no-token claim it never tested.scripts/release-install-smoke.shand.ps1have not been audited for the same gap, and that is recorded as residual work rather than assumed clean.Non-goals
Cargo.tomlstays at0.11.0. Phase 0 is explicit that the version and changelog freeze land late, in the final shared release-preparation PR.Unreleasedis untouched; the decision links to it rather than duplicating it.Support-tier impact
docs/status/SUPPORT_TIERS.mdPolicy impact
Three new documentation artifacts, two from
docs/release/templates/and one rootRELEASE_HANDOFF_*.mdmatching the existing convention.check-file-policypasses.Proof
cargo xtask ci-small # exit 0, includes check-file-policy and check-workflowsScope was cross-checked against the
Unreleasedsection ofCHANGELOG.md, and the deferrals againstROADMAP.mdNext Candidates.Claim boundary
These are Phase 0 planning artifacts. They prove nothing about a release: the readiness ledger is
BLOCKEDwith every gatepending, and the handoff records no executed command.Specifically, this does not assert that
0.12.0is ready, does not authorize a tag, crates.io publication, a public GitHub Release, signing, or a package-channel update, and does not verify any exact-tag artifact evidence. It does not confirm the release-specific gates it proposes are implemented in the release workflow — it records them as owed. The version increment is a stated intent, reversible until the freeze.Rollback
Delete the three files. They are additive documentation, referenced by nothing, and no code, version, workflow, or artifact depends on them.
Generated by Claude Code