Skip to content

Feat/release changelog spdx - #26

Merged
sbgaia merged 20 commits into
mainfrom
feat/release-changelog-spdx
Aug 5, 2026
Merged

Feat/release changelog spdx#26
sbgaia merged 20 commits into
mainfrom
feat/release-changelog-spdx

Conversation

@sbgaia

@sbgaia sbgaia commented Aug 5, 2026

Copy link
Copy Markdown
Owner

No description provided.

sbgaia added 20 commits July 29, 2026 14:39
How frost-planner's release automation, changelog generation and SPDX
headers should look once they are ported into this template.
Checked the spec's assumptions against the real tools first and fixed a
few: reuse ignores the root LICENSE and empty files, and the changelog
and release tox envs have to stay out of env_list so a bare `tox` can
never cut a release by accident.
The shebang hook checks the file mode in the git index, so the new
scripts need `git add --chmod=+x`.
A pre-commit hook writes the SPDX header into Python files that are
missing one, and REUSE.toml covers everything else in bulk. A second
hook fails the commit if anything is left unlicensed.
LICENSE held Unlicense text while pyproject declared BSD-2-Clause.
BSD-2-Clause is the right one, so the plan no longer copies the root
file. It also now adds the REUSE.toml override that stops reuse reading
the SPDX tags quoted in the plan's own code blocks as real annotations.
LICENSE carried Unlicense text under a BSD-2-Clause name. Both it and
LICENSES/BSD-2-Clause.txt now hold the real BSD-2-Clause text.

The plan docs also get their own REUSE.toml block, so the SPDX tags
quoted inside them stop being picked up as annotations.
They went in unformatted, so pre-commit failed on an otherwise clean
tree -- and with fail_fast that killed the run before reuse got to
check anything.
Adds cliff.toml, a small wrapper script and a `tox -e changelog` env.
The commit type prefix decides which section an entry lands in.
git-cliff refuses --prepend without a commit range, which is exactly
the no-previous-tag case, so release.py would have failed on the first
release it ever ran. It uses -o for a full render instead, which also
writes the `# Changelog` header.
A bare `# Changelog` line does not match the configured header, so
--prepend adds a second one at the bottom rather than recognising it.
Noted in cliff.toml for anyone running git-cliff by hand.
One command to bump the version, refresh the lockfile and changelog,
then commit and tag. --dry-run shows what it would do, and it refuses
to run on a dirty tree or over an existing tag.
Pushing a v* tag builds the distributions, pulls that version's section
out of the changelog for the release notes, and publishes the release
with the wheel and sdist attached. PyPI publishing is there but left
commented out.
New projects get their own copyright holder written into every file
that carries one, and the release workflow is now part of what the
bootstrap script knows about.
The plan and spec docs under docs/superpowers/ are in no toctree and
quote code sphinx cannot highlight, and with -W that is a build
failure. It was breaking tox -e docs, the docs workflow and the
template smoke test.
The smoke test now checks that a generated project has no placeholders
left in any of the new files, and that its package modules carry the
new project's copyright holder rather than the template's.
Walks through the three pieces of automation in the order you meet
them: how to commit, how license headers get added for you, and how to
cut a release. Also fixes CONTRIBUTING.md, which still told people to
edit CHANGELOG.md by hand.
@sbgaia
sbgaia merged commit ceffc0b into main Aug 5, 2026
14 checks passed
@sbgaia
sbgaia deleted the feat/release-changelog-spdx branch August 5, 2026 13:11
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