docs(examples): release-branch teaches what its adopter settled on #25
No reviewers
Labels
No labels
accessibility
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
actions/changelog!25
Loading…
Reference in a new issue
No description provided.
Delete branch "mikluko/octant/example-ground-truth"
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?
The
release-branchexample taught a strategy the repository it was derived from had already abandoned. This makes it teach what that repository actually settled on.The evidence
up2-monitoringadopted this example, and its collapsed release workflow landed2026-09-05T16:34Z— 18 hours before the map describing the example was charted. What it runs:1.3.0-rc.2— the candidate1.3.0— the release it heads forrelease/*release/*+1prerelease-entryworkflow_callsuite inneeds:One rule instead of two
The changelog names the release it is heading for, and never an attempt at one. The document states the destination; the machine numbers the attempts.
That single change collapses several things the example was arguing:
prerelease-entrystops being per-invocation. A candidate is a tag, never a heading, so it iserroron all four.undated-entryfires only on the newest versioned entry, which is exactly "a release is in flight" — one reason, not two, andci.yamlcan relax it for every pull request without weakening anything.Publishing is a pull request
A release branch has no push trigger. A push arrives with nothing in front of it; a pull request does not. That is what gives the suite somewhere to stand:
Both cutting workflows carry
paths: [CHANGELOG.md]— the same thesis applied to the trigger, so a change proposing no release starts no run. On a pull request that filter is a three-dot diff over the whole request (verified in the docs), so once a revision names the release every later revision still matches and the ordinal advances.Naming
Files are named for what each run yields, not for what triggers it:
That follows published practice rather than invention. Across 14 projects surveyed — release-please, changesets, semantic-release, goreleaser, helm, flux2, prometheus, argo-cd, otel-collector, vite, svelte, bubbletea, cli/cli, grafana — not one names a workflow for its trigger,
ci+releaseis the near-universal spine,publishsplits off for tag-triggered artifact builds, and multi-step releases userelease-*prefixes (grafana'screate-release-tag.yml, otel'sprepare-release.yml).The old names were
pull-request.yaml,main.yamlandrelease-branch.yaml: two triggers and one that named its logic wrongly, since it cut candidates rather than a release.Also in here
Three
[Unreleased]CHANGELOG bullets described the intermediate state and are replaced rather than kept — they never shipped, and leaving them would ship 1.2.0 with release notes contradicting themselves.The duplicated
### Fixedsection under[Unreleased], left by two parallel branches each adding one, is collapsed into a single section in Keep a Changelog order. Nothing catches that today:unknown-sectionchecks a heading's vocabulary, not repetition or order.Verified
Suite green at
-count=1,vetandgofmtclean, all five workflows parse, the document readsvalid=true, and the example test now covers four invocations instead of three —TestReleaseBranchInvocationsDifferInOneInputis new and pins the claim above.