Skip to content

Write down two things releasing the fleet taught today - #696

Merged
dyve merged 1 commit into
mainfrom
docs-preflight-and-propagation-notes
Oct 11, 2026
Merged

dyve merged 1 commit into
mainfrom
docs-preflight-and-propagation-notes

Conversation

@dyve

@dyve dyve commented Oct 11, 2026

Copy link
Copy Markdown
Member

Both raised by the django-bootstrap4 session after cutting 26.3 with these tools, so both are observed rather than imagined.

release-check reads alarming straight after a cut. In the window between merging the release PR and pushing the tag, it prints (none) for the Unreleased entries next to every commit since the previous tag. Stamping the section removed the heading the recipe looks for, and the tag it compares against is still the old one. Correct, but it looks like the changelog has been lost. MAINTAINING.md step 1 now says what it means. I had not seen it here because marina's tag sits on HEAD, so both lists come back empty and the pair looks consistent.

The fresh-Unreleased rule only works if it is remembered, and its failure is quiet. django-bootstrap4 rebased its release branch onto a propagation PR, and git filed that PR's two changelog entries at the foot of the dated section with no conflict raised. They belonged in that release, so the result was correct by luck rather than by anyone deciding. PACKAGING.md now records that, because a rule whose violation lands on the right answer is one people quietly stop applying.

MAINTAINING.md is synced with per-package substitution and this text needs none, so its half propagates to all four siblings. PACKAGING.md exists only here.

Documentation only. Verified with just lint and just build.

🤖 Generated with Claude Code

Both raised by the django-bootstrap4 session after cutting 26.3 with these
tools, so both are observed rather than imagined.

release-check prints "(none)" for the Unreleased entries in the window between
merging the release PR and pushing the tag, next to every commit since the
previous tag. Stamping the section removes the heading the recipe looks for,
and the tag it compares against is still the old one. Correct, and it reads as
if the changelog has been lost. MAINTAINING.md now says what it means. This
never showed up here because marina's tag sits on HEAD, so both lists are empty
and the pair looks consistent.

The fresh-Unreleased rule from #693 only helps if whoever propagates remembers
it, and the failure is quiet. bootstrap4 rebased its release branch onto a
propagation PR and git filed that PR's two changelog entries at the foot of the
dated section with no conflict. They belonged in that release, so the result
was right by luck rather than by anyone deciding. PACKAGING.md now says so,
because a rule whose violation produces a correct answer is one people stop
applying.

MAINTAINING.md is synced, so its half goes to the four siblings. PACKAGING.md
exists only here.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
dyve added a commit to zostera/django-bootstrap3 that referenced this pull request Oct 11, 2026
Propagation of zostera/django-marina#696.

In the window between merging the release PR and pushing the tag, just
release-check prints "(none)" for the Unreleased entries next to every commit
since the previous tag. Stamping the section removes the heading the recipe
looks for, and the tag it compares against is still the old one. Correct, and
it reads as if the changelog has been lost.

Raised by the django-bootstrap4 session, which hit it while cutting 26.3. It
does not show up in django-marina, where the tag sits on HEAD so both lists
come back empty and the pair looks consistent.

Documentation only.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
dyve added a commit to zostera/django-bootstrap5 that referenced this pull request Oct 11, 2026
Propagation of zostera/django-marina#696.

In the window between merging the release PR and pushing the tag, just
release-check prints "(none)" for the Unreleased entries next to every commit
since the previous tag. Stamping the section removes the heading the recipe
looks for, and the tag it compares against is still the old one. Correct, and
it reads as if the changelog has been lost.

Raised by the django-bootstrap4 session, which hit it while cutting 26.3. It
does not show up in django-marina, where the tag sits on HEAD so both lists
come back empty and the pair looks consistent.

Documentation only.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@dyve
dyve merged commit e80133f into main Oct 11, 2026
22 checks passed
@dyve
dyve deleted the docs-preflight-and-propagation-notes branch October 11, 2026 09:16
dyve added a commit to zostera/django-bootstrap4 that referenced this pull request Oct 11, 2026
Propagation of zostera/django-marina#696.

In the window between merging the release PR and pushing the tag, just
release-check prints "(none)" for the Unreleased entries next to every commit
since the previous tag. Stamping the section removes the heading the recipe
looks for, and the tag it compares against is still the old one. Correct, and
it reads as if the changelog has been lost.

Raised by the django-bootstrap4 session, which hit it while cutting 26.3. It
does not show up in django-marina, where the tag sits on HEAD so both lists
come back empty and the pair looks consistent.

Documentation only.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
dyve added a commit to zostera/django-icons that referenced this pull request Oct 11, 2026
The MAINTAINING.md note was pushed to the sync-release-preflight branch after
#666 had already squash-merged, so it never reached main. My mistake: I pushed
to a branch whose pull request was closed, and the green checks I then polled
were that merged pull request's, which read as confirmation. They were not.

Propagation of zostera/django-marina#696: release-check reporting no Unreleased
entries straight after a cut means nothing is pending, not that the changelog
was lost. The paragraph is byte-identical to django-marina's.

django-bootstrap3 lost the same note the same way, plus a changelog wording
fix, and has its own restore. django-bootstrap5 is unaffected, its sync pull
request is still open and carries the commit.

This repository's published 26.3 notes call Python 3.15 a release candidate,
which it no longer is. That stays: a dated section records what was said at the
time.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
dyve added a commit to zostera/django-bootstrap5 that referenced this pull request Oct 11, 2026
* Sync the release preflight from django-marina

Propagation of zostera/django-marina#694, where the reasoning lives.

just release-check listed only commits touching src/, then closed with "Every
commit above must be covered by an entry", which reads as a complete list and
is not one. Anything tooling-only was invisible to it. It now prints a second
group for commits touching nothing in src/, under a heading that says to read
them rather than a rule, because no rule fits: a Dependabot bump of a dev
dependency is nothing to a user, while a lint rule or a contributor policy
belongs in the notes.

just build now fails when uv.lock does not name the version in pyproject.toml,
and just relock regenerates the lock without upgrading anything. uv sync
--frozen does not check the project's own version, so a stale lock previously
passed twine, check-manifest, pyroma and both smoke tests unnoticed. That is
not theoretical: it is how a version bump shipped here with the previous
version still in the lock.

MAINTAINING.md release steps 1 and 2 updated to match. The justfile is
byte-identical to django-marina again.

Verified: just lint, just build and just test-cov at 100%. just relock was a
no-op, so this lock was already current.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* Say what release-check reports straight after a cut

Propagation of zostera/django-marina#696.

In the window between merging the release PR and pushing the tag, just
release-check prints "(none)" for the Unreleased entries next to every commit
since the previous tag. Stamping the section removes the heading the recipe
looks for, and the tag it compares against is still the old one. Correct, and
it reads as if the changelog has been lost.

Raised by the django-bootstrap4 session, which hit it while cutting 26.3. It
does not show up in django-marina, where the tag sits on HEAD so both lists
come back empty and the pair looks consistent.

Documentation only.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
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