Skip to content

fix(release): restore the version bump inside just ship Phase 2#391

Merged
githubrobbi merged 2 commits into
mainfrom
fix/ship-version-bump
Jun 11, 2026
Merged

fix(release): restore the version bump inside just ship Phase 2#391
githubrobbi merged 2 commits into
mainfrom
fix/ship-version-bump

Conversation

@githubrobbi

Copy link
Copy Markdown
Collaborator

Restore the version bump inside just ship Phase 2

Bug: R5 deleted the Phase-2 version-increment step but left the rest of the ship machinery intact (commit → open release/vX.Y.Z PR with auto-merge). With no version change to commit, just ship / ship-fresh fails at git-commit with "nothing to commit, working tree clean."

Fix — put the bump back where it always lived (not the parallel release-pr/just go flow I wrongly added first):

  • version.rsbump_workspace_version(level) shells out to cargo set-version (handles workspace inheritance + internal dep requirements + lockfile). No re-implementation of the ~1430 LOC R5 deleted.
  • ship.rs Phase 2 — the bump (default patch) runs after Phase 1 validation passes, so code is verified clean before the version moves. Gated by the existing resumable version_incremented flag (no double-bump on a mid-ship re-run). Also resets a Completed workflow state on non-fresh load, so a second just ship starts a fresh release cycle instead of resuming a terminal state (which would skip validation and the bump).
  • git_ops.rs — the release-PR body now points at just release-tag (the deleted auto-tag-release.yml reference was stale).
  • just/build.just — drop the redundant release-pr recipe; keep release-tag (post-merge tag → binaries).

The flow

just ship          # validate → bump → commit → auto-merging release/vX.Y.Z PR
# (PR auto-merges when its CI is green)
just release-tag   # tag main → release.yml builds the 15-platform binaries

uffs-ci-pipeline: clippy clean, 7 tests pass.

🤖 Generated with Claude Code

githubrobbi and others added 2 commits June 10, 2026 19:57
R5 removed the Phase-2 version-increment step but left the rest of the ship
machinery (commit -> open release/vX.Y.Z PR with auto-merge) intact -- so
just ship/ship-fresh now fails at git-commit with "nothing to commit" (no
version change to commit). This restores the bump in the place it always
lived, instead of the parallel release-pr/just-go flow I wrongly added.

- version.rs: bump_workspace_version(level) shells out to cargo set-version
  (handles workspace inheritance + internal dep reqs + lockfile) -- no
  re-implementation of the ~1430 LOC R5 deleted.
- ship.rs Phase 2: bump (patch) runs AFTER Phase 1 validation passes, gated
  by the existing resumable version_incremented flag so a mid-ship re-run
  never double-bumps. Also reset a COMPLETED workflow state on (non-fresh)
  load so a second just ship starts a fresh release cycle instead of
  resuming a terminal state (which would skip validation AND the bump).
- git_ops.rs: release-PR body now points at just release-tag (auto-tag-
  release.yml was deleted in R5).
- just/build.just: drop the redundant release-pr recipe (ship does the
  bump+PR); keep release-tag as the post-merge tag->binaries step.

Flow: just ship -> validate -> bump -> commit -> auto-merging release PR;
after merge, just release-tag -> release.yml builds the binaries. Default
bump is patch (the Ship command takes no level arg).

uffs-ci-pipeline: clippy clean, 7 tests pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The resumable ship state skipped a validation step on any re-run where it was
already marked complete — even if you edited code between runs (a passed step
stays "completed"). This adds input-fingerprint invalidation so the resume
speedup is kept ONLY for a byte-identical tree.

- WorkflowState gains validated_fingerprint (serde-default, back-compatible):
  the working-tree fingerprint Phase 1 last validated.
- working_tree_fingerprint() = DefaultHasher over HEAD + `git diff HEAD`
  (deterministic fixed-key SipHash). A new commit or any tracked-file edit
  changes it; a brand-new untracked file is the one gap, caught by PR CI.
- run_enhanced_phase1: if the fingerprint changed since last validation,
  invalidate 03-format-code / 04-coverage-tests / 05-parallel-validation /
  06-format-check so they re-run on the new code; store the post-fmt
  fingerprint after Phase 1 passes. An unchanged tree (e.g. resuming after a
  Phase-2 push failure) still skips them — a format error does NOT re-trigger
  cargo clean.

ship-fresh (--fresh) resets validated_fingerprint to empty → always
re-validates; ship honors the fingerprint and skips only when truly unchanged.

Determinism test added. uffs-ci-pipeline: clippy clean, 8 tests pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@githubrobbi githubrobbi enabled auto-merge (squash) June 11, 2026 03:18
@githubrobbi githubrobbi merged commit 960b8a5 into main Jun 11, 2026
27 checks passed
@githubrobbi githubrobbi deleted the fix/ship-version-bump branch June 11, 2026 03:32
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