diff --git a/README.md b/README.md index 718eb69..751dd73 100644 --- a/README.md +++ b/README.md @@ -109,7 +109,7 @@ consumer's release, when it is stale.) **The merge is the ship decision; the tag is transcription.** After the merge, [release.yml](.github/workflows/release.yml#L136-L301) asserts its -way to certainty, tags the merge commit, publishes the GitHub release with +way to certainty, tags the merge commit, publishes the forge release with the version's own changelog section as the body — the curated prose, never the generated PR list ([lib/changelog.sh](lib/changelog.sh) is the one canonical extractor, and [bin/changelog-section](bin/changelog-section) is @@ -127,7 +127,7 @@ steps run past the tag, and what a failure at each leaves behind is what sorts them. Two fail before the release exists: the consumer's [artifact hook](docs/CONSUMERS.md#the-artifact-hook) sits between the tag and the publish, so its non-zero exit aborts, and the publish itself -([`gh release create --verify-tag`](.github/workflows/release.yml#L246-L258)) +([`forge_release_create`](.github/workflows/release.yml#L255-L268)) can fail on the API call or the assets. Either leaves the same state — a tag standing and no release — which the [nothing-exists assert](#the-merge-door-refused-releaseyml) names and the tag @@ -491,7 +491,7 @@ the thing twice. If the tag exists but the release does not (a manual tag won the race, or [a failed artifact hook](docs/CONSUMERS.md#the-artifact-hook), or the publish step itself failing after the tag), recover by the tag door: delete and -re-push the tag, or `gh release create` by hand from a fixed tree. +re-push the tag, or run `forge_release_create` by hand from a fixed tree. > direct push refused (branch protection?) — opening the bump PR instead diff --git a/changelog.d/271.md b/changelog.d/271.md new file mode 100644 index 0000000..72393d6 --- /dev/null +++ b/changelog.d/271.md @@ -0,0 +1,3 @@ +### Fixed + +- Forgejo release publishing now stages drafts until assets upload, rolls back failures, and recovers stranded same-tag drafts before retrying (#271).