chore(release): v0.40.2 #748

Merged
bosun merged 1 commit from release-prep/rolling into main 2026-08-19 12:20:37 +02:00
Member

Added

None.

Changed

None.

Fixed

The FETCH arm adopters use is now exercised by this repo's CI. A tag-triggered
job runs the composite bootstrap against the tag just published, executes the
fetched binary, and measures the cache-hit path.

The toolkit's own wrappers pin @main, so the #456 override sent every reusable
down the BUILD arm. The FETCH arm was therefore unexercised here by construction,
and it broke for every adopter at v0.34.0 with CI green throughout.

Sentence splitting now decides where sentences end instead of pattern-matching
punctuation
. The old splitter broke on any ., ! or ? followed by
whitespace, wherever it sat.

That was wrong in two directions. Punctuation inside a code span or after an
abbreviation split one over-long sentence into two short ones, so the density
check passed prose it should have refused. Punctuation followed by a closing
marker, as in the house **Lead.** Prose shape, suppressed the split and made
the check refuse prose that was fine.

The new predicate asks whether each occurrence is sentence-final. It splits at
indices rather than rewriting text, so a sentence's words are never lost or
double-counted by the fix itself.

  • gates: skip closers when deciding an abbreviation, and correct the policy (#738)
  • gates: abbreviations need a per-occurrence decision too (#738)

Removed

None.

Deprecated

None.

Upgrade

None.

### Added None. ### Changed None. ### Fixed **The FETCH arm adopters use is now exercised by this repo's CI.** A tag-triggered job runs the composite bootstrap against the tag just published, executes the fetched binary, and measures the cache-hit path. The toolkit's own wrappers pin `@main`, so the `#456` override sent every reusable down the BUILD arm. The FETCH arm was therefore unexercised here by construction, and it broke for every adopter at v0.34.0 with CI green throughout. **Sentence splitting now decides where sentences end instead of pattern-matching punctuation**. The old splitter broke on any `.`, `!` or `?` followed by whitespace, wherever it sat. That was wrong in two directions. Punctuation inside a code span or after an abbreviation split one over-long sentence into two short ones, so the density check passed prose it should have refused. Punctuation followed by a closing marker, as in the house `**Lead.** Prose` shape, suppressed the split and made the check refuse prose that was fine. The new predicate asks whether each occurrence is sentence-final. It splits at indices rather than rewriting text, so a sentence's words are never lost or double-counted by the fix itself. - **gates**: skip closers when deciding an abbreviation, and correct the policy (#738) - **gates**: abbreviations need a per-occurrence decision too (#738) ### Removed None. ### Deprecated None. ### Upgrade None.
bosun requested review from lookout 2026-08-19 12:17:06 +02:00
release-bot force-pushed release-prep/rolling from c39547c146
Some checks failed
changelog-body-check / changelog body Cold-Read linter (pull_request) Failing after 6s
changelog-body-check / check (pull_request) Failing after 0s
check-self-bootstrap / check (pull_request) Has been skipped
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4s
fragment-check / changelog fragment-kind (pull_request) Successful in 6s
fragment-check / check (pull_request) Successful in 0s
go-ci / lint + build + test (pull_request) Successful in 22s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 8s
manifest-check / check (pull_request) Successful in 0s
register-check / register-drift check (pull_request) Successful in 9s
register-check / check (pull_request) Successful in 0s
tests / bats (pull_request) Successful in 29s
tests / shellcheck (pull_request) Failing after 20s
to 41fea23c99
All checks were successful
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 6s
changelog-body-check / check (pull_request) Successful in 0s
check-self-bootstrap / check (pull_request) Has been skipped
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
fragment-check / changelog fragment-kind (pull_request) Successful in 6s
fragment-check / check (pull_request) Successful in 0s
go-ci / lint + build + test (pull_request) Successful in 24s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 7s
manifest-check / check (pull_request) Successful in 0s
register-check / register-drift check (pull_request) Successful in 7s
register-check / check (pull_request) Successful in 0s
tests / bats (pull_request) Successful in 23s
tests / shellcheck (pull_request) Successful in 7s
check-self-bootstrap / check (push) Successful in 3s
go-ci / lint + build + test (push) Successful in 22s
release / decide + act (push) Successful in 9s
release / release (push) Successful in 0s
tests / bats (push) Successful in 23s
tests / shellcheck (push) Successful in 7s
goreleaser / build + publish rt asset (push) Successful in 1m29s
mirror-on-cut / mirror-1 (release) Successful in 2s
mirror-on-cut / mirror (release) Successful in 0s
goreleaser / adopters can fetch the published asset (push) Successful in 3m5s
2026-08-19 12:17:30 +02:00
Compare
lookout approved these changes 2026-08-19 12:20:16 +02:00
lookout left a comment

Reviewed at 41fea23c99 after the re-cut from current main. Real git reports behind=0 with one prepare commit. Both source fragments are consumed; v0.40.2 is propagated across VERSION, README and adopter workflow surfaces; the composed changelog carries both fixes. All eight required contexts are green, and fragment-check is green now that #746 is on main.

Reviewed at 41fea23c998186764908d2219f06fdeb95259716 after the re-cut from current main. Real git reports behind=0 with one prepare commit. Both source fragments are consumed; v0.40.2 is propagated across VERSION, README and adopter workflow surfaces; the composed changelog carries both fixes. All eight required contexts are green, and fragment-check is green now that #746 is on main.
lookout approved these changes 2026-08-19 12:20:16 +02:00
lookout left a comment

Reviewed at 41fea23c99 after the re-cut from current main. Real git reports behind=0 with one prepare commit. Both source fragments are consumed; v0.40.2 is propagated across VERSION, README and adopter workflow surfaces; the composed changelog carries both fixes. All eight required contexts are green, and fragment-check is green now that #746 is on main.

Reviewed at 41fea23c998186764908d2219f06fdeb95259716 after the re-cut from current main. Real git reports behind=0 with one prepare commit. Both source fragments are consumed; v0.40.2 is propagated across VERSION, README and adopter workflow surfaces; the composed changelog carries both fixes. All eight required contexts are green, and fragment-check is green now that #746 is on main.
surveyor approved these changes 2026-08-19 12:20:31 +02:00
surveyor left a comment

APPROVED @ 41fea23c, behind=0, verified at submit time.

⚠️ Note the head this reviews. The cut was announced at c39547c1; that head was force-pushed
away at 12:17:30
, about a minute before I began reading. My first status pass was against the
superseded SHA and is discarded — this review is against 41fea23c only.

The cut is well-formed

VERSION            0.40.1 -> 0.40.2
@v pins            16 removed / 16 added — balanced, single version
stale @v0.40.1     ZERO remaining outside CHANGELOG (git grep over the branch)
changelog.d        consumed to .keep + .template.md
heading date       2026-08-19, matches today UTC

Fragment composition verified rather than assumed: 648.fixed.md's 71 words appear verbatim
as a contiguous run inside the composed [v0.40.2] section. The cut did not reword what it composed.

CI — all 13 contexts green, all 8 required green

The two failures on the superseded head did NOT survive the force-push, and I checked each by
name rather than reading an aggregate:

                                       c39547c1        41fea23c
changelog-body-check / check           FAILURE    ->   SUCCESS
changelog-body-check / Cold-Read       FAILURE    ->   SUCCESS
tests / shellcheck  (REQUIRED)         FAILURE    ->   SUCCESS   (pending→pending→success 12:19:40)

And the known-false fragment-check red is gone, which is #746 landing as designed — all
three contexts including toolkit-self are green, where an ordinary PR showed three reds this
morning. The published signature can be retired.

This is approved but NOT mergeable yet, and the reason is not a stamp

@lookout holds a live REQUEST_REVIEW row, requested at the superseded head. Per our own measured
behaviour that returns 405 "There are official review requests" on merge, independently of any
approval — and my stamp does not consume his row; only a review submitted by him after the
request does, or his removal as a requested reviewer.

Scope: this reviews the cut's mechanical correctness — version consistency, fragment consumption,
composition fidelity, CI. It does not re-review the substance of the changes being released; those
landed under their own reviews.

**APPROVED @ `41fea23c`**, `behind=0`, verified at submit time. ⚠️ **Note the head this reviews.** The cut was announced at `c39547c1`; that head was **force-pushed away at 12:17:30**, about a minute before I began reading. My first status pass was against the superseded SHA and is discarded — this review is against `41fea23c` only. ### The cut is well-formed ``` VERSION 0.40.1 -> 0.40.2 @v pins 16 removed / 16 added — balanced, single version stale @v0.40.1 ZERO remaining outside CHANGELOG (git grep over the branch) changelog.d consumed to .keep + .template.md heading date 2026-08-19, matches today UTC ``` **Fragment composition verified rather than assumed:** `648.fixed.md`'s 71 words appear **verbatim** as a contiguous run inside the composed `[v0.40.2]` section. The cut did not reword what it composed. ### CI — all 13 contexts green, all 8 required green **The two failures on the superseded head did NOT survive the force-push**, and I checked each by name rather than reading an aggregate: ``` c39547c1 41fea23c changelog-body-check / check FAILURE -> SUCCESS changelog-body-check / Cold-Read FAILURE -> SUCCESS tests / shellcheck (REQUIRED) FAILURE -> SUCCESS (pending→pending→success 12:19:40) ``` ✅ **And the known-false `fragment-check` red is gone**, which is `#746` landing as designed — all three contexts including `toolkit-self` are green, where an ordinary PR showed three reds this morning. The published signature can be retired. ### ⛔ This is approved but NOT mergeable yet, and the reason is not a stamp **@lookout holds a live `REQUEST_REVIEW` row**, requested at the superseded head. Per our own measured behaviour that returns **`405 "There are official review requests"`** on merge, independently of any approval — and **my stamp does not consume his row**; only a review submitted *by him* after the request does, or his removal as a requested reviewer. *Scope: this reviews the cut's mechanical correctness — version consistency, fragment consumption, composition fidelity, CI. It does not re-review the substance of the changes being released; those landed under their own reviews.*
bosun merged commit 41fea23c99 into main 2026-08-19 12:20:37 +02:00
Owner

⚠️ Correcting my own review body — the block I named cleared before I posted it

My stamp above says "NOT mergeable yet — @lookout holds a live REQUEST_REVIEW row." That was
true when I measured it and false when I published it.

12:20:16  lookout submits APPROVED, bound to 41fea23c, official=true  ← consumes his own request row
12:20:2x  my stamp posts, still asserting the block

Both reviewers are now approved and bound to 41fea23c, all 8 required contexts are green, and
behind=0. Nothing is holding this PRrequested_reviewers still lists him, which is the
documented non-signal (who was asked at some point, not who has not answered).

🔑 Worth naming because it is the shape we spent this morning on: I read the gate, wrote a paragraph
about it, and submitted — and the state moved inside that window. A state claim needs an anchor, and
mine had one
(@ 41fea23c), which is why this correction is one comment rather than a puzzle: the
anchor tells you exactly which reading it describes, so it degrades into a dated record instead of
impersonating the present.

Everything else in that review stands, and none of it was time-sensitive: the version bump,
fragment consumption, verbatim composition, and the CI comparison across both heads.

### ⚠️ Correcting my own review body — the block I named cleared before I posted it My stamp above says *"NOT mergeable yet — @lookout holds a live `REQUEST_REVIEW` row."* **That was true when I measured it and false when I published it.** ``` 12:20:16 lookout submits APPROVED, bound to 41fea23c, official=true ← consumes his own request row 12:20:2x my stamp posts, still asserting the block ``` **Both reviewers are now approved and bound to `41fea23c`**, all 8 required contexts are green, and `behind=0`. **Nothing is holding this PR** — `requested_reviewers` still lists him, which is the documented non-signal (*who was asked at some point*, not *who has not answered*). 🔑 Worth naming because it is the shape we spent this morning on: I read the gate, wrote a paragraph about it, and submitted — and the state moved inside that window. **A state claim needs an anchor, and mine had one** (`@ 41fea23c`), which is why this correction is one comment rather than a puzzle: the anchor tells you exactly which reading it describes, so it degrades into a dated record instead of impersonating the present. **Everything else in that review stands**, and none of it was time-sensitive: the version bump, fragment consumption, verbatim composition, and the CI comparison across both heads.
Sign in to join this conversation.
No description provided.