Skip to content

docs(release): open the 0.12.0 candidate with Phase 0 artifacts - #410

Merged
EffortlessSteven merged 1 commit into
mainfrom
claude/pr-review-merge-zehky1
Aug 8, 2026
Merged

docs(release): open the 0.12.0 candidate with Phase 0 artifacts#410
EffortlessSteven merged 1 commit into
mainfrom
claude/pr-review-merge-zehky1

Conversation

@EffortlessSteven

Copy link
Copy Markdown
Member

Summary

release-preparation.md Phase 0 asks for three artifacts on swarm before a candidate is frozen: a release decision, a readiness ledger, and a handoff skeleton. Unreleased has 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 start and shiplog report validate --receipts are 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-months excluding work recorded today, which made a note added through shiplog add invisible to the very next shiplog update. Others are reachable on the first command a new user runs.

Links

Proposal:
Spec:
ADR:
Plan item: docs/release/release-preparation.md Phase 0
Issue: relates to #246 (Phase 5), #245

Scope

  • docs/release/0.12.0-release-decision.md — status proposed. Included boundary, explicit deferrals, none compatibility with the three behavior changes stated anyway, proof boundary, and distribution channels.
  • docs/release/0.12.0-readiness.md — status preparing, decision BLOCKED, every gate pending. Adds a release-specific gate table for what this scope earns beyond the standard matrix.
  • RELEASE_HANDOFF_0.12.0.md — skeleton, status preparing, 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 in v0.11.0" caveat in the README and setup guide must be removed when start actually 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_TOKEN but not GH_TOKEN, so a runner holding GH_TOKEN would have satisfied a no-token claim it never tested. scripts/release-install-smoke.sh and .ps1 have not been audited for the same gap, and that is recorded as residual work rather than assumed clean.

Non-goals

Support-tier impact

  • none
  • updates docs/status/SUPPORT_TIERS.md

Policy impact

  • none
  • package boundary
  • CI lane
  • Clippy/lint
  • no-panic
  • non-Rust files
  • doc artifacts

Three new documentation artifacts, two from docs/release/templates/ and one root RELEASE_HANDOFF_*.md matching the existing convention. check-file-policy passes.

Proof

cargo xtask ci-small   # exit 0, includes check-file-policy and check-workflows

Scope was cross-checked against the Unreleased section of CHANGELOG.md, and the deferrals against ROADMAP.md Next Candidates.

Claim boundary

These are Phase 0 planning artifacts. They prove nothing about a release: the readiness ledger is BLOCKED with every gate pending, and the handoff records no executed command.

Specifically, this does not assert that 0.12.0 is 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

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
@coderabbitai

coderabbitai Bot commented Aug 8, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 02126484-21f7-4f88-9e6c-1ecf8ad5dd44

📥 Commits

Reviewing files that changed from the base of the PR and between 4796b2d and 5d06a47.

📒 Files selected for processing (3)
  • RELEASE_HANDOFF_0.12.0.md
  • docs/release/0.12.0-readiness.md
  • docs/release/0.12.0-release-decision.md

Summary by CodeRabbit

  • Documentation
    • Added release handoff materials for version 0.12.0.
    • Documented release readiness, included scope, validation requirements, publication steps, rollback rules, and known blockers.
    • Added a proposed release decision covering compatibility, distribution channels, deferred work, and safety requirements.
    • Recorded the release as blocked pending required evidence, checks, and approvals.

Walkthrough

Added three documents for the proposed v0.12.0 release. They define release scope, readiness gates, publication blockers, execution evidence, rollback rules, residual work, and limits on release claims. The release remains blocked and unexecuted.

Changes

v0.12.0 Release Documentation

Layer / File(s) Summary
Release scope and authorization
docs/release/0.12.0-release-decision.md
Defines included changes, deferred work, compatibility behavior, distribution scope, proof requirements, and separate authorization for publication, signing, version changes, and readiness.
Readiness gates and blocked decision
docs/release/0.12.0-readiness.md
Records candidate placeholders, evidence matrices, exact-tag and artifact gates, acceptance checks, publication requirements, blockers, exceptions, and a final BLOCKED decision.
Execution evidence and rollback handoff
RELEASE_HANDOFF_0.12.0.md
Records release identities, artifact and validation receipts, reference commands, rollback rules, residual work, and boundaries for observed release claims.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

Poem

A rabbit checks each release gate,
While placeholders patiently wait.
Four artifacts rest in line,
Their receipts remain unsigned.
No tag hops out before the proof—
Thump, thump, safe beneath the roof!

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/pr-review-merge-zehky1

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@EffortlessSteven
EffortlessSteven marked this pull request as ready for review August 8, 2026 08:53
@EffortlessSteven
EffortlessSteven merged commit 57aee0c into main Aug 8, 2026
21 of 22 checks passed
@EffortlessSteven
EffortlessSteven deleted the claude/pr-review-merge-zehky1 branch August 8, 2026 08:54
@factory-droid

factory-droid Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Droid encountered an error —— View job

Failed to checkout PR #410 branch for review

Droid is reviewing code and running a security check…

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 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".

Comment on lines +107 to +108
3. **Epic #246 Phase 5 is open.** Draft #389, the living release-preparation
procedure, is not yet reviewed and landed.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge 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 👍 / 👎.

Comment on lines +118 to +119
6. **Install-smoke credential isolation unaudited.** #407 fixed the Rust
suites; `scripts/release-install-smoke.sh` and `.ps1` were not in scope.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge 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 👍 / 👎.

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.

release: gate patch publication on four-platform published-binary first-use proof

2 participants