Skip to content

fix(release): the changelog listed unreleased work twice, and a setting was undocumented - #67

Merged
rexionmars merged 1 commit into
mainfrom
fix/changelog-unreleased
Aug 31, 2026
Merged

fix(release): the changelog listed unreleased work twice, and a setting was undocumented#67
rexionmars merged 1 commit into
mainfrom
fix/changelog-unreleased

Conversation

@rexionmars

Copy link
Copy Markdown
Owner

Summary

Two defects the first release-please run exposed, neither visible by reading the files.

The duplicate list

CHANGELOG.md carried a hand-written ## Unreleased — not yet cut section, written before anything generated one. release-please inserts its section below the preamble, so the first proposal produced a file with the same seventeen features under Unreleased and again under [0.5.0].

Only one of the two is kept current, and it is not the hand-written one. It is removed; the preamble now says where unreleased work lives — in the open proposal, rewritten on every push to main.

The undocumented setting

The first run failed after doing everything else correctly: 120 commits parsed, bump computed (0.5.0, correct), branch created, commit written. It stopped at:

GitHub Actions is not permitted to create or approve pull requests.

That is a repository setting, off by default, and nothing in the repository recorded that releasing depends on it. The workflow, the config and the manifest can all be right while no release happens, and the only symptom is a failed run.

docs/RELEASING.md now carries both routes to it and what the checkbox actually grants. The approving half gates nothing today — main has no branch protection and no rulesets, so there is no required review for a workflow's approval to satisfy. That is noted as the thing which changes if protection is added.

default_workflow_permissions stays read: the workflow declares the write scopes it needs in its own permissions: block, which is narrower than raising the default for every workflow in the repository.

Testing

Documentation and a changelog section only; no code paths change. npm run check:version is unaffected and clean.

The setting itself is not applied by this PR — it is a repository setting, not a file. Until it is turned on, release-please.yml will keep failing at the same step, having correctly built the proposal branch each time.

Checklist

  • Tests added/updated (not applicable)
  • No console errors/warnings
  • Documentation updated

…ng was undocumented

Both found by running the thing for the first time rather than by reading it.

THE DUPLICATE LIST. CHANGELOG.md carried a hand-written "Unreleased -- not yet
cut" section, written before there was anything generating one. release-please
inserts its section below the preamble, so the first proposal produced a file
with the same seventeen features under "Unreleased" and again under "[0.5.0]".
Only one of the two is kept current, and it is not the hand-written one. It is
removed, and the preamble now says where unreleased work is: in the open
proposal, which is rewritten on every push to main.

THE SETTING. The first run failed after doing everything else correctly -- 120
commits parsed, bump computed, branch created, commit written -- and stopped at
"GitHub Actions is not permitted to create or approve pull requests". That is a
repository setting, off by default, and nothing in the repository records that
the release depends on it. The workflow, the config and the manifest can all be
right while no release happens, and the only symptom is a failed run.

It is documented with both routes to it and with what the checkbox actually
grants. The approving half gates nothing today: main has no branch protection
and no rulesets, so there is no required review for a workflow's approval to
satisfy. Noted as the thing that changes if protection is added.

default_workflow_permissions stays read. The workflow declares the write scopes
it needs in its own permissions block, which is narrower than raising the
default for every workflow in the repository.
@rexionmars
rexionmars merged commit 96578f5 into main Aug 31, 2026
2 checks passed
rexionmars added a commit that referenced this pull request Aug 31, 2026
Each of these appeared once for the commit that made the change and once for the
merge commit of the pull request carrying it. release-please reads both, and
attributes the PR's title to the merge, so any PR holding a single conventional
commit is counted twice. All four here are that shape: #54, #56, #60 and #67.

The merge-commit line is the one dropped. Both point at the same work, and the
original commit is the more precise of the two.

This is the same symptom #67 fixed and a different cause. That one removed a
hand-written Unreleased section; this is structural, and returns on any release
where a single-commit PR was merged rather than squashed. Squash merging is what
removes it at the source.
rexionmars added a commit that referenced this pull request Aug 31, 2026
Each appeared once for the commit that made the change and once for the merge
commit of the pull request carrying it -- release-please reads both, and gives
the merge the PR's title, so a PR holding a single conventional commit is
counted twice. All four are that shape: #54, #56, #60 and #67.

The merge-commit line is dropped; both point at the same work and the original
commit is the more precise of the two.

DONE BY HAND FOR THE LAST TIME. Merge commits are now disabled on the
repository, so squash and rebase are the only ways a pull request can land and
neither creates a second conventional commit. That does not reach these four:
the merges that produced them are already in the history and stay there, so they
would return in every regeneration of this proposal. They are removed here
because this is the release that carries them.
rexionmars added a commit that referenced this pull request Aug 31, 2026
* chore(main): release 0.5.0

* chore(release): drop the four entries a merge commit listed twice

Each appeared once for the commit that made the change and once for the merge
commit of the pull request carrying it -- release-please reads both, and gives
the merge the PR's title, so a PR holding a single conventional commit is
counted twice. All four are that shape: #54, #56, #60 and #67.

The merge-commit line is dropped; both point at the same work and the original
commit is the more precise of the two.

DONE BY HAND FOR THE LAST TIME. Merge commits are now disabled on the
repository, so squash and rebase are the only ways a pull request can land and
neither creates a second conventional commit. That does not reach these four:
the merges that produced them are already in the history and stay there, so they
would return in every regeneration of this proposal. They are removed here
because this is the release that carries them.

* docs(release): what 0.5.0 changed, for the reader rather than the repository

Seven items out of a hundred, and the cut is the work. The changelog beside this
carries 42 features and 58 fixes; What's New answers a different question, asked
by someone who has just updated and wants to know what is different in front of
them. A fix is not that -- it says something was broken -- so the fixes are out
by rule rather than by judgement, and the judgement is which of the 42 a reader
would notice.

The two voices are not a transformation of each other. `**energy:** the run
reads in a column of its own` is a commit subject: a scope, a hash, and the
assumption that the reader knows the code. The entry it becomes has to say where
the thing was before and why moving it mattered, which the changelog never
recorded. That is why this is not generated.

IT IS IN THE RELEASE PROPOSAL, not on main, and that is the ordering the version
check demands. main still says 0.4.0 in version.go, and an entry for 0.5.0 there
would sit ahead of the authority and fail check:version until the proposal
merged. Here the bump and the notes land together and neither branch is ever
inconsistent.

The title names the release by what it is: work now belongs to the ground it was
made over, and the ground is drawn on a planet. Draugen is the still that names
it -- see brand.ts and the manifest in splashBackground.ts.

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: rexionmars <opensource.leonardi@gmail.com>
@rexionmars
rexionmars deleted the fix/changelog-unreleased branch August 31, 2026 12:51
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