Skip to content

Release prep 1.1.1 — the bump, and the release guard made live in CI - #275

Merged
Polichinel merged 2 commits into
developmentfrom
release/1.1.1
Aug 15, 2026
Merged

Release prep 1.1.1 — the bump, and the release guard made live in CI#275
Polichinel merged 2 commits into
developmentfrom
release/1.1.1

Conversation

@Polichinel

@Polichinel Polichinel commented Aug 15, 2026

Copy link
Copy Markdown
Collaborator

Two changes, no package code. Step 1 of Bump → Merge → Tag → Release → Verify.

The version: 1.1.1, a patch

Measured rather than assumed. The only external imports of this package anywhere in the org are UNFAOPostProcessorManager and CRAFDPostProcessorManager, from views-models' un_fao/main.py and un_crafd/main.pyboth paths unchanged. Nothing outside this repo imports track_a_source, frames_for_target, store_port or _ContractStorePort, so #269's frames_for_target signature change breaks no consumer.

Review independently re-ran that search across every sibling repo on disk and confirmed it, adding one fact that lowers the stakes further: consumers pin this package by git tag in shell launchers, not by a semver range in a lockfile — so no resolver acts on this number at all.

No new capability; two bug fixes (#268, #269) and an internal refactor. That is a patch. There is no stated versioning policy to violate: docs/ADRs/004 explicitly defers the question.

The version has exactly one home, pyproject.toml:3 — no __version__, no CHANGELOG.

The guard was inert exactly where it mattered

tests/test_release_version.py exists because tag 1.1.0 was cut at main while pyproject.toml still said 1.0.0. But run_pytest.yml checked out with no fetch-depth, so CI fetched no tags and both of its tests skipped there — verified against a real CI log (run 31844578627, the last development push before this branch, shows tests/test_release_version.py ss).

fetch-depth: 0 fixes it. Confirmed from actions/checkout@v3's own source rather than its README: on the fetchDepth <= 0 path it fetches +refs/tags/*:refs/tags/* unconditionally, and --no-tags is only appended when the refspec lacks that. fetch-tags is irrelevant here — it only applies when depth > 0. This branch's own CI run now shows s. instead of ss.

What review caught, and it was worth catching

The guard asked the wrong question. git tag -l lists tags on every branch, so the check was "has a release been cut anywhere", not "has one been cut from this line of history without the bump". That was invisible while CI fetched no tags — and would have become a false alarm the instant it stopped being. Reproduced in a clone: with 1.1.1 tagged on the release line, an honest branch still declaring 1.1.0 fails with "the newest release tag is 1.1.1 but pyproject.toml declares 1.1.0". It has done nothing wrong; the tag is simply not on its history.

Now git tag --merged HEAD. Same clone, same branch: tags anywhere are 1.0.0 1.1.0 1.1.1, tags reachable are 1.0.0 1.1.0, and it passes — while on the tagged line it still bites both ways. ADR-014 §3 prefers a false negative to a false alarm, and I was about to switch on a guard whose first act would have been to redden unrelated work.

Two false claims of mine, both corrected:

And one in the second commit message itself: it says "Suite 458 passed". The run in that same turn printed 457, and that commit adds no test. 457 is correct — recorded here because the commit message cannot be corrected without a force-push, and because a PR about false numbers should not quietly carry one.

Verification

ruff clean; 457 passed, 1 skipped, 39 xfailed.

The release guard locally: the newest-tag check passes (1.1.0 <= 1.1.1), the tagged-commit check skips because HEAD is not tagged yet — the correct state before the tag is cut.

Refs #125.

Polichinel and others added 2 commits August 15, 2026 14:04
…ve in CI

THE VERSION. 1.1.1, a patch, measured rather than assumed. The only external imports of
this package anywhere in the org are UNFAOPostProcessorManager and
CRAFDPostProcessorManager, from views-models' un_fao/main.py and un_crafd/main.py, and
both paths are unchanged. Nothing outside this repo imports track_a_source,
frames_for_target, store_port or _ContractStorePort — so #269's frames_for_target
signature change breaks no consumer. No new capability; two bug fixes and an internal
refactor.

It is earned this time: three merged stories changed code under views_postprocessing/ for
the first time since 1.1.0. On 2026-08-13 the trees were byte-identical and no tag was
cut, which is why that release did not happen.

The version still has exactly one home, pyproject.toml:3 — no __version__, no CHANGELOG.
Re-checked rather than remembered, because C-80 and C-82 were both a version declared
twice with a guard on one copy.

THE GUARD WAS INERT WHERE IT MATTERED. tests/test_release_version.py exists because tag
1.1.0 was cut at main while pyproject.toml still said 1.0.0. But run_pytest.yml checks out
with actions/checkout@v3 and no fetch-depth, so CI fetches NO TAGS and both of its tests
skip there. It has only ever run on a laptop — a guard against mis-cutting a release that
is absent from the one place a release is verified.

Demonstrated, not asserted. A shallow --no-tags clone (CI's default shape) skips both with
"no release tags in this checkout (a shallow clone, or none cut yet)". A full clone runs
them, and setting pyproject back to 1.0.0 against the 1.1.0 tag fails with "the newest
release tag is 1.1.0 but pyproject.toml declares 1.0.0" — the original defect, caught.

fetch-depth: 0 is for the tags, not the history; the comment says so, because the next
person to see a full fetch in a small repo's CI will reasonably wonder.

Suite 457 passed / 1 skipped / 39 xfailed, ruff clean. The release guard locally: the
newest-tag check passes (1.1.0 <= 1.1.1), the tagged-commit check skips because HEAD is
not tagged yet — which is the correct state before S3.

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

Review of the release prep. Making the guard live in CI was right; it would have made
it fire on branches that had done nothing wrong.

THE GUARD ASKED THE WRONG QUESTION. `git tag -l` lists tags on every branch, so the check
was "has a release been cut anywhere", not "has one been cut from THIS line of history
without the bump". Invisible while CI fetched no tags; a false alarm the moment it
started. Reproduced in a clone: with 1.1.1 tagged on the release line, a branch still
declaring 1.1.0 — an honest feature branch, or a hotfix cut from 1.1.0 — fails with "the
newest release tag is 1.1.1 but pyproject.toml declares 1.1.0". It has done nothing
wrong; the tag simply is not on its history.

`git tag --merged HEAD` asks the right question. Same clone, same branch: tags anywhere
are 1.0.0 1.1.0 1.1.1, tags reachable are 1.0.0 1.1.0, and it passes. On the tagged line
it still bites both ways — setting pyproject back to 1.1.0 with 1.1.1 reachable fails
both guards with their own messages.

ADR-014 §3 prefers a false negative to a false alarm. I was about to activate a guard
whose first act would have been to redden unrelated work, and a guard that does that is
one someone deletes.

"C-80 AND C-82 WERE BOTH A VERSION DECLARED TWICE WITH A GUARD ON ONE COPY" IS FALSE.
C-80 is the doc-accuracy scan exempting ADRs and CICs; C-82 is governance prose carrying
numbers nothing checks — the same class as this, a number with no guard, but about the
register and CIC front matter, not a version declared twice. The claim originated in this
test's own docstring on 2026-08-13 and I repeated it into a release PR without reading
either entry. Corrected at the source, with a note saying so, since the docstring is
where the next person will read it.

"THREE MERGED STORIES CHANGED CODE UNDER views_postprocessing/" IS FALSE. Two did —
#268 (ff0278b) and #269 (70f25f0). #265 (0d38a71) touched tests and the register only.
Three stories merged; two changed package code. The version conclusion is unaffected: a
patch was earned by those two.

Suite 458 passed / 1 skipped / 39 xfailed, ruff clean.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Polichinel
Polichinel merged commit b6a0c5f into development Aug 15, 2026
4 checks passed
@Polichinel
Polichinel deleted the release/1.1.1 branch August 15, 2026 12:16
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