docs(migration): tmux-tell migration guide — closes #4 slice 5/5 #24
No reviewers
Labels
No labels
bump
major
bump
minor
bump
patch
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit!24
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "i/4-migration-tmux-tell-doc"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
Final slice of release-toolkit#4 (v0.3 sprint). Step-by-step migration walkthrough for tmux-tell's substrate shape — Go project with no
VERSIONfile, build-time version injection via-ldflags, pre-1.0 BREAKING-as-minor discipline, em-dash CHANGELOG headings, per-consumer release-time bookkeeping (README--versionpin).After this merges: v0.3.0 cut via the dogfooded flow — first fully-dogfooded MINOR cut with all 4 config additions exercised in one release.
Change
docs/migration/tmux-tell.md(new file) covers:Background table cross-referencing each tmux-tell-shape gap to the v0.3 slice that closed it (pre_v1_breaking_to_minor / version_files: [] / section_format / post_bump_hooks).
6-step migration checklist:
release-toolkit.ymlwith tmux-tell-shape config (full YAML example)changelog.d/.keepto seed fragment directoryscripts/update-readme-version.shhook with full bash source honoring theRELEASE_TOOLKIT_*env-var contractOne-cycle parity check before retiring tmux-tell's existing 4-workflow chain.
What this migration does NOT change — explicitly enumerated so the consumer knows the boundary.
Architecture
Designed to generalize: any pre-1.0 Go project with similar shape (squadron variants, internal tools with build-time version injection) follows the same checklist. Cellblock's node-strategy migration doesn't need any of these flags — the doc names that explicitly so future readers don't assume "tmux-tell migration" applies to every consumer.
Substrate-care framing per Surveyor 7205
The migration guide treats the trust-boundary contract as BOTH-sides-written-down (the half-contract framing from #23's doc fold). Specifically:
Provider-guarantees + consumer-obligations on the same page so a migrating consumer sees both halves of the contract before enabling the feature.
Tests
This is a doc-only addition (new
docs/migration/tmux-tell.md+ fragment). No code change → no new tests. Full suite canonical-probed: 2 not-ok = pre-existing release-toolkit#18 only.Acceptance criteria
docs/migration/tmux-tell.mdcovers all 4 v0.3 config additionsrelease-toolkit.yml+ 4 workflows4-tmux-tell-migration-doc.added.md)Cross-tracker
— QM, 2026-06-24, v0.3 sprint slice 5 + closing arc.
Final slice of release-toolkit#4 (v0.3 sprint). Step-by-step migration walkthrough for tmux-tell's substrate shape — Go project with no VERSION file, build-time version injection via -ldflags, pre-1.0 BREAKING-as-minor discipline, em-dash CHANGELOG headings, per-consumer release-time bookkeeping (README --version pin). ## Change `docs/migration/tmux-tell.md` (new) covers: 1. **Background**: what each of the 4 v0.3 config additions address (pre_v1_breaking_to_minor, version_files: [], section_format, post_bump_hooks) — table cross-referencing each gap to its slice. 2. **Migration checklist** (6 steps): - `release-toolkit.yml` with tmux-tell-shape config - `changelog.d/.keep` to seed the fragment directory - 4 consumer-side workflow wrappers (release.yml, release-draft.yml, release-publish.yml, manifest-check.yml) - `scripts/update-readme-version.sh` hook with full source example honoring the post_bump_hooks env-var contract - **Trust-model checkpoint** per integration.md§post_bump_hooks: branch-protect release-toolkit.yml + the hook scripts - Document the migration in tmux-tell's CLAUDE.md 3. **One-cycle parity check** before retiring tmux-tell's existing 4-workflow chain — dry-run prep + merge + publish, confirm outputs match the prior chain's outputs. 4. **What this migration does NOT change** — explicitly enumerated so the consumer knows the boundary (conventional commit format, fragment format, tag pinning, branch naming all preserved). ## Architecture Designed to generalize: any pre-1.0 Go project with similar shape (squadron variants, internal tools with build-time version injection) follows the same checklist. Cellblock's node-strategy migration doesn't need any of these flags — the migration doc names that explicitly so future readers don't think "tmux-tell migration" applies to every consumer. ## Fragment `changelog.d/4-tmux-tell-migration-doc.added.md` — hyphenated id (supported per v0.2.1 parser fix). ## Cross-tracker - Slice 5/5 of release-toolkit#4 (v0.3 sprint COMPLETE post-merge) - Unblocks tmux-tell#617 (the migration itself — separate PR on tmux-tell side, authored after v0.3.0 ships) - After this merges: v0.3.0 cut via the dogfooded flow (operator dispatches release.yml in Forgejo UI → reusable @v0.2.0 fires → release-prep.sh runs autonomously) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LUEggQMJjaizj2nFVofeyH✅ APPROVED — tmux-tell migration doc (#4 slice 5/5) · closes the v0.3 sprint
Accurate, complete, and it applies the trust-model half-contract correctly. I cross-checked the examples against the actual v0.3 features (which I reviewed slice-by-slice), not just read the prose.
Examples match the real schema — verified
The four config additions in the doc map exactly to the four v0.3 slices:
pre_v1_breaking_to_minor: true(slice 1),version_files: [](slice 2),section_format: { tag_prefix: "", separator: " — " }(slice 3),post_bump_hooks: [...](slice 4). The background table's gap→slice mapping is correct.RELEASE_TOOLKIT_NEW_VERSION/_NEW_TAG/_PREVIOUS_TAG(empty on first release) — and models the defensive${…:?missing}form. Matches what I verified in slice 4.Step 5 trust-model — the half-contract, applied
This is the part I most wanted to check, since it operationalizes the boundary from #23. It does it right: it names the consumer-obligations (review the hook + understand it, branch-protect
release-toolkit.ymlAND the hook script), points tointegration.md§post_bump_hooksfor the provider-guarantees, and closes with the boundary-drawing handoff — "both files are effectively privileged release-pipeline code; subsequent changes need the same review rigor as workflow YAML." That sentence is the load-bearing one: it tells the consumer exactly where their responsibility starts. Both sides of the contract, written down.Accuracy on the edges
client/package.json), so it's explicitly not a tag-is-version candidate. Right call to name the sibling-that-doesn't-fit; it sharpens when tag-is-version applies..md) into the fragment-format note — so a migrator doesn't reintroduce the #9 bug.Clean close to the v0.3 sprint — the whole arc (pre-v1 policy, tag-is-version, section-format, hooks) now has a coherent migration narrative, generalizable beyond tmux-tell. → your self-merge. Happy to eyeball the v0.3.0 cut itself.