Skip to content

fix(publish): leave a package at 0.0.0 out of the release plan - #204

Merged
any-victor merged 4 commits into
mainfrom
fix/skip-unreleased
Oct 22, 2026
Merged

any-victor merged 4 commits into
mainfrom
fix/skip-unreleased

Conversation

@any-victor

Copy link
Copy Markdown
Contributor

Why

A new package starts at 0.0.0 and releases 0.0.1 first, but publish --plan planned the placeholder: no registry lists 0.0.0.
A crate that adopted the reusable release workflow at 0.0.0 failed every push to its default branch.
The plan named the commit where 0.0.0 first appeared, which predates the ver task, so the publish and docs.rs jobs failed with no task ver found and the Version PR job never ran.

What

  1. pending skips a package at 0.0.0, with or without a pre-release or build suffix, before any registry or GitHub lookup.
  2. publish asks no changelog section of such a package.
  3. bump::unreleased is the one test bump::apply and both call sites share.
  4. The instructions, the operator skill, and the README state the rule.

Queue row VER-077; OpenSpec change skip-unreleased-package.

Proof

  • a_package_at_0_0_0_plans_nothing: publish --plan with the GitHub API address closed reports nothing to release and writes pending=false.
  • publish_asks_no_changelog_of_a_package_at_0_0_0: publish passes the changelog check and stops at the token check.

A crate that adopted the release workflow at 0.0.0 had its placeholder
planned as a release. No registry lists 0.0.0, so publish --plan named
the commit where 0.0.0 first appeared, and every push to the default
branch failed before the Version PR job.

pending now skips a 0.0.0 package before any lookup, and publish asks
no changelog section of it. bump::apply and pending share one test for
an unreleased version.
@kodus-hostinger

kodus-hostinger Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Review

Incremental · 0 open

@kody review after new commits. @kody full re-reads the whole PR.

Summary

This pass updates only the task checklist for the skip-unreleased-package OpenSpec change. It records progress and adds one new task. No code changes are in this pass.

Tasks marked complete

Each of these tasks is now checked off and cites the passing CI result from verify run 39726352572:

  • 1.1: pending leaves out a package at 0.0.0 before any lookup (a_package_at_0_0_0_plans_nothing).
  • 1.2: publish asks for no changelog section from a package at 0.0.0 (publish_asks_no_changelog_of_a_package_at_0_0_0).
  • 1.3: A package at 0.0.0 gets no tag and no dry-run row (dry_run_leaves_out_a_package_at_0_0_0).
  • 1.5 (formerly 1.4): bump::apply and pending share the unreleased check. Evidence is the full suite passing, including tests/bump.rs.
  • 2.1: The instructions template, the operator skill template, and the README state the rule. Evidence is the three operator_docs tests passing.

New task added

  • 1.4 (open): A dry run of a repository whose only package is at 0.0.0 should report nothing to release. It is proven by dry_run_of_a_package_at_0_0_0_has_nothing_to_release. This covers the edge case where every package is unreleased.

Still open

  • 1.4: the new dry-run task above.
  • 2.2: ship the change with a patch changeset.
  • 2.3: close VER-077 when the pull request merges.

Files

File Status + −
openspec/changes/skip-unreleased-package/tasks.md modified +13 −5

Open

No open findings.

History

When Pass Open
22 Oct 05:21 UTC Incremental 0
22 Oct 05:20 UTC Incremental 0
22 Oct 05:10 UTC Incremental 1
22 Oct 05:00 UTC Incremental 1

Inspect this review

Comment thread src/pending.rs
With the shared v{version} template, a new package at 0.0.0 beside a
released one made plan refuse differing versions. plan now renders
tags over released packages only, and a dry run leaves the new package
out, as publish does.
Comment thread src/publish.rs
A dry run whose packages are all at 0.0.0 now reports the same
outcome as publish, instead of an empty plan.
@any-victor
any-victor merged commit c7244a4 into main Oct 22, 2026
4 checks passed
@any-victor
any-victor deleted the fix/skip-unreleased branch October 22, 2026 05:49
vsh-changeset-version Bot added a commit that referenced this pull request Oct 22, 2026
## verctl 0.5.4

- `verctl publish --plan` and `verctl publish` leave out a package at `0.0.0`, before any registry or GitHub lookup, `publish` asks no changelog section of it, and it gets no tag, so a new package beside a released one no longer breaks a shared `v{version}` tag. A crate that adopted the release workflow at `0.0.0` had its placeholder planned as a release, so every push to its default branch ran the publish job on the commit where `0.0.0` first appeared, and the Version PR job never ran ([#204](#204)).
any-victor added a commit that referenced this pull request Oct 22, 2026
verctl 0.5.4 shipped #204, so this archives its OpenSpec change. The
release-plan requirement moves to `openspec/specs/release-plan/spec.md`,
the tasks carry their CI evidence, and VER-077 moves to the archive with
its evidence.

It also archives VER-069. #174 completed it on 2026-10-18, so `mise run
q check` failed on main until now. The one open proof, task 2.4 of
`cargo-workspace-publish`, moves to the new row VER-078: a code review
of `registry_lists` and `released_crates`, then the first workspace
release reporting each member. That change stays unarchived until 2.4
closes.
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.

1 participant