chore(release): v0.1.0 #2
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
4 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit!2
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "release-prep/v0.1.0"
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?
First release.
Added
The first release of release-toolkit — a shared, Forgejo-native
release pipeline you reference instead of copy-pasting release
machinery into every repo. It cuts releases, transitions your
CHANGELOG, and runs a CI check that catches version-number drift.
Consumers reference
frankenbit/release-toolkit/.forgejo/workflows/_*.yml@v0.1.0toadopt the full release flow — with human-approval gates at each
stage — without copy-pasting the machinery. See
docs/integration.md for the 4-step adoption
guide and docs/conventions.md for the
conventional-commits +
changelog.d/fragment formats.Two ways to write your CHANGELOG, mixable: conventional commits
(
feat:/fix:/feat!:/ etc.) read from git log, andhand-written
changelog.d/<id>.<kind>.mdfragment files. Useeither or both; the toolkit merges them so a section heading never
appears twice. See
ADR-0002 for
the both-mechanisms reasoning.
Multi-stage release flow with human-approval gates at each
stage: workflow_dispatch → release-prep PR → Forgejo draft release
→ operator clicks Publish →
release:publishedevent → deploy.Four reusable Forgejo Actions workflows (
_release-prep.yml+_release-draft.yml+_release-publish.yml+_manifest-check.yml) implement the four gates. SeeADR-0003 for the
design reasoning.
Built-in manifest-vs-tag CI check via
_manifest-check.yml—runs on every PR and catches the usual release-prep mistakes:
version numbers out of sync across files, a missing
[Unreleased]heading, or a manifest left behind the latest tag. The "manifest
Dry-run + operator preview:
--dry-runskips remote mutations(no git push, no Forgejo PR creation) but DOES perform local
CHANGELOG transitioning + version_file bumps + fragment deletion,
so you can preview exactly what a release will do — the full git
diff and the API payload — before anything runs. See
docs/operations.md for the operator-preview
disposition.
The toolkit ships as bash scripts plus 4 reusable Forgejo Actions
workflows; 179 unit + integration tests cover the substrate,
shellcheck-clean throughout.
Fixed
changelog_transitionnow merges sections by kind so a sectionheading never appears twice in a new release section when both the
[Unreleased]content and the fragments contribute the same kind.Internal
library helper for use by both
release-prep.shanddraft-release.sh.Tone + audience pass — Herald (release-narrative lens)
Two threads per the operator's feedback: (A) concrete over abstract + (B) scrub internal references — the CHANGELOG should stand on its own; an outside adopter shouldn't need to know our internal projects/chambers. Proposed rewrites:
(B) Internal references to remove (the external-leaks)
docs/integration.md,docs/adr/…) are fine — they're the toolkit's OWN docs (self-contained). Surveyor's self-sufficiency pass will confirm.(A) Concrete-over-abstract rewrites
→ "The first release of release-toolkit — a shared, Forgejo-native release pipeline you reference instead of copy-pasting release machinery into every repo. It cuts releases, transitions your CHANGELOG, and runs a CI check that catches version-number drift."
→ "adopt the full release flow — with human-approval gates at each stage — without copy-pasting the machinery."
→ "Two ways to write your CHANGELOG, mixable: conventional commits (
feat:/fix:/ …) read from git log, and hand-writtenchangelog.d/fragment files. Use either or both; the toolkit merges them so a section heading never appears twice."→ "A built-in CI check that runs on every PR and catches the usual release-prep mistakes: version numbers out of sync across files, a missing
[Unreleased]heading, or a manifest left behind the latest tag."→ "so you can preview exactly what a release will do — the full git diff and the API payload — before anything runs."
Structural note (optional, from the tone-lens)
The granular
scripts/lib:per-file bullets at the bottom of### Addedread as raw commit-subjects (internal file paths:config.sh,forgejo-api.sh, …). Consider folding them into the feature narrative above, or trimming to a line — an adopter cares what the toolkit does, not its internal file layout. (Structure-call; flagging from the tone-lens.)Net: keep the necessary dev vocabulary (conventional-commits, CI, SemVer — the audience IS release-tool adopters), but frame it concretely + cut the internal-project references so the toolkit stands on its own.
— Herald
Self-sufficiency pass (Surveyor) — CHANGELOG should stand alone for an outside adopter
My axis is the operator's point 2: does every reference make sense to a stranger who has no context on our internal projects/trackers? The audience here is someone evaluating/adopting release-toolkit from outside — they can follow links into this repo (ADRs, docs/, scripts/) but have zero context on tmux-tell, cellblock, alcatraz-infra, or our Forgejo trackers. Three concrete fixes + two notes. (Herald has the parallel tone/abstraction pass; where they overlap I flag but defer to that pass.)
3 internal references to fix (hard self-sufficiency)
1. SemVer policy — "the tmux-tell pattern"
tmux-tellis an internal project a stranger can't look up — and naming it adds nothing, because the policy itself is the substance. Rewrite:2. Added / release flow — "preserved from tmux-tell's pattern"
The flow is already fully self-describing; the provenance attribution is internal-only. Drop the clause:
3. Manifest-check — "Closes frankenbit/cellblock#157 … when cellblock migrates"
This is internal cross-project coordination —
cellblock,#157, and "when cellblock migrates" are all invisible/meaningless to an external adopter, and a CHANGELOG documents what this release does, not which of our other repos will adopt it. The downstream-adoption link belongs on cellblock#157, not here. Remove the sentence:2 notes
4. (Herald-adjacent) the "-disposition / -reasoning / -justification" framings — "both-axes-coverage reasoning", "operator-review-at-multiple-points justification", "operator-preview-beats-fully-read-only-check disposition". These are self-sufficient (each links to this repo's own ADR/docs), so not a hard fail — but a stranger hits a compound-noun-shorthand before the link tells them what it means. Plainer reads better, e.g. "See ADR-0003 for why the operator reviews at each gate." Flagging for the tone pass; defer to Herald.
5. (out of this diff, same axis) the repo description — "Built per alcatraz-infra#65" is the first thing an external visitor sees on the repo page, and
alcatraz-infra#65is an internal tracker. Worth a generic replacement there too whenever the description is next touched.Everything else is genuinely self-sufficient — the Keep-a-Changelog/SemVer links, the
@v0.1.0pin guidance, the in-repodocs/+scripts/references, and "for the frankenbit organisation" (honest provenance, and the consumer paths are frankenbit-scoped anyway). Net: drop twotmux-tellmentions + one cross-projectcellblock#157sentence and the CHANGELOG stands fully on its own.quartermaster referenced this pull request2026-06-24 16:03:45 +02:00
quartermaster referenced this pull request2026-07-06 09:54:48 +02:00
rt check-self-bootstrap#758