Skip to content

release: surface a forgotten version bump on the Releases page#93

Merged
taras merged 1 commit into
mainfrom
fix/release-version-visibility
Jul 19, 2026
Merged

release: surface a forgotten version bump on the Releases page#93
taras merged 1 commit into
mainfrom
fix/release-version-visibility

Conversation

@taras

@taras taras commented Jul 19, 2026

Copy link
Copy Markdown
Owner

Motivation

Publishing v0.3.1 from the Releases UI without bumping the manifests failed
invisibly: release.yml's guard refused the tag in a workflow log, while the
Releases page showed a healthy published release. From the release surface it
is not obvious that the versions were forgotten.

Approach

Make the release surface tell the truth, before and after the mistake:

  • draft-release.yml syncs the rolling draft with the manifests after
    every merge. Manifest version already released → the draft's notes carry a
    warning banner ("bump every manifest before publishing this draft").
    Manifest version bumped → the banner clears and the draft's tag/title
    default to the guard-passing v<version>, so the Publish button offers the
    right tag. The banner is marker-delimited and stripped before re-adding, so
    repeated runs stay idempotent.
  • release.yml moves the tag guard from the 5-target compile matrix into
    a single preflight job. On mismatch it edits the just-published release —
    caution note prepended to the notes, title marked failed, prerelease flag —
    then refuses to build. The spec §3 documents both behaviors.

Verified: workflow YAML parses, all embedded scripts pass bash -n, the
banner strip/prepend is idempotent on a sample body, and the job graph is
preflight → build → release.

Scope confirmation

  • All changed files relate to the stated purpose
  • No drive-by refactors or "while I'm here" cleanups
  • No formatting changes mixed with functional changes

New abstractions (if any)

None.

New dependencies (if any)

None (gh and jq ship on runners).

New tests (if any)

None automated — end-to-end confirmation comes from the next release cycle:
the draft banner appears while manifests are unbumped, and clears after the
bump lands.

Publishing v0.3.1 without bumping the manifests failed invisibly — the guard
fired in a workflow log while the Releases page showed a healthy release.

draft-release.yml now syncs the draft with the manifests after every merge:
an already-released manifest version puts a warning banner in the draft's
notes, and a bumped version clears it and sets the draft's tag/title to the
guard-passing v<version>. release.yml moves the tag guard into a preflight
job (once, not per matrix target) that on failure edits the just-published
release: caution note, failed title, prerelease marker.
@github-actions

Copy link
Copy Markdown

PR #93: release: surface a forgotten version bump on the Releases page

3 files, +88 / -18

Scope

✅ PR scope looks good.

Structural

✅ No structural bloat detected.

Slop

✅ Slop indicators look low.

Static Analysis

✅ Oxlint found no issues.

Correctness

No extraneous code patterns detected.

@taras
taras merged commit cac6faf into main Jul 19, 2026
7 checks passed
@taras
taras deleted the fix/release-version-visibility branch July 19, 2026 00:43
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