Skip to content

Sync the release preflight from django-marina - #1165

Merged
dyve merged 1 commit into
mainfrom
sync-release-preflight
Oct 11, 2026
Merged

dyve merged 1 commit into
mainfrom
sync-release-preflight

Conversation

@dyve

@dyve dyve commented Oct 11, 2026

Copy link
Copy Markdown
Member

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

just release-check hid most of the commits. It listed only commits touching src/, then closed with "Every commit above must be covered by an entry". That reads as a complete list and is not one, so anything tooling-only was invisible. 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 that group: a Dependabot bump of a dev dependency is genuinely nothing to a user, while a lint rule, a CI gate or a contributor policy belongs in the notes under tooling. Across marina, bootstrap4 and bootstrap5, roughly eighteen changes had gone unrecorded this way.

just build passed with a stale lockfile. uv sync --frozen does not check the project's own package version, so a bump could ship with the old version still in uv.lock while twine, check-manifest, pyroma and both smoke tests all reported green. Verified directly in marina: uv sync --frozen installed 26.9 against a lock naming 26.3 and exited 0. build now depends on a check comparing the two, which puts it in front of release-tag as well, and just relock regenerates the lock without upgrading anything (just upgrade bumps every dependency and has no business in a release commit).

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

Verified with just lint, just build and just test-cov at 100%. just relock was a no-op here, so this repository's lock was already consistent.

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>
@dyve
dyve merged commit 48ca7f7 into main Oct 11, 2026
23 checks passed
@dyve
dyve deleted the sync-release-preflight branch October 11, 2026 09:00
dyve added a commit that referenced this pull request Oct 11, 2026
Both were pushed to the sync-release-preflight branch after #1165 had already
squash-merged, so they 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 that the new commits had
landed. They had not.

The 3.15 entry no longer calls a released Python a release candidate. This one
matters before 26.3 is cut, because the entry is still in Unreleased here,
where it can be fixed. django-icons and django-bootstrap4 both published that
sentence; their dated sections stay as they are, since a release section
records what was said at the time.

MAINTAINING.md gains the note that release-check reporting no Unreleased
entries straight after a cut means nothing is pending, not that the changelog
was lost.

django-icons lost the same MAINTAINING note the same way and gets its own
restore. django-bootstrap5 is unaffected, its sync pull request is still open
and carries both commits.

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