chore(release): v0.66.0 #1549

Merged
alex merged 1 commit from release-prep/rolling into main 2026-10-05 20:06:23 +02:00
Member

Cut-time changelog gates - clean

  • PASS - register-check: no register drift in [v0.66.0]
  • PASS - check 1 (header): version=0.66.0 date=2026-10-05
  • PASS - check 2 (sections): all standard sections present (Added Changed Fixed Removed Deprecated Upgrade)
  • PASS - check 3 (forward-refs): no version pins above 0.66.0
  • PASS - check 4 (length): body is 209 chars (soft ceiling 5000)
  • PASS - check 5 (style): all sections consistent (all-bullet or all-prose)
  • PASS - check 6 (duplicates): no duplicate version sections in whole CHANGELOG.md; no duplicate ### Section headers in newest section
  • PASS - check 7 (sentence length): all sentences ≤ 25 words. Lists, tables and blockquotes are measured too (#632).
  • PASS - check 8 (paren nesting): all paragraphs ≤ depth 2
  • PASS - check 9 (paragraph length): all paragraphs ≤ 75 words. Lists, tables and blockquotes are measured too (#632).

Advisory mirror of rt compose-verify, the cut-time preflight, run on the CHANGELOG this prep wrote. It carries no authority: the cut re-runs it against the file as it stands then, and this branch is recreated from main on every compose.

Added

  • pr gates: reusable-pr-gates.yml runs every PR gate from one pr.yml and one pin (#1541)

Changed

None.

Fixed

None.

Removed

None.

Deprecated

None.

Upgrade

None.

<!-- rt:density-verdict --> ### Cut-time changelog gates - clean - **PASS** - register-check: no register drift in [v0.66.0] - **PASS** - check 1 (header): version=0.66.0 date=2026-10-05 - **PASS** - check 2 (sections): all standard sections present (Added Changed Fixed Removed Deprecated Upgrade) - **PASS** - check 3 (forward-refs): no version pins above 0.66.0 - **PASS** - check 4 (length): body is 209 chars (soft ceiling 5000) - **PASS** - check 5 (style): all sections consistent (all-bullet or all-prose) - **PASS** - check 6 (duplicates): no duplicate version sections in whole CHANGELOG.md; no duplicate ### Section headers in newest section - **PASS** - check 7 (sentence length): all sentences ≤ 25 words. Lists, tables and blockquotes are measured too (#632). - **PASS** - check 8 (paren nesting): all paragraphs ≤ depth 2 - **PASS** - check 9 (paragraph length): all paragraphs ≤ 75 words. Lists, tables and blockquotes are measured too (#632). _Advisory mirror of `rt compose-verify`, the cut-time preflight, run on the CHANGELOG this prep wrote._ _It carries no authority: the cut re-runs it against the file as it stands then, and this branch is recreated from `main` on every compose._ <!-- /rt:density-verdict --> ### Added - **pr gates**: `reusable-pr-gates.yml` runs every PR gate from one `pr.yml` and one pin (#1541) ### Changed None. ### Fixed None. ### Removed None. ### Deprecated None. ### Upgrade None.
chore(release): prepare v0.66.0
Some checks failed
pr / changelog_body (pull_request) Has been skipped
pr / register (pull_request) Has been skipped
pr / ac_closure (pull_request) Has been skipped
pr / workflow_parse (pull_request) Has been skipped
pr / split result (pull_request) Has been skipped
pr / gates (pull_request) Successful in 0s
check-self-bootstrap / check (push) Successful in 5s
gitea-twin-check / check (push) Successful in 5s
go-ci / lint + build + test (push) Successful in 33s
go-ci / record reviewed vs landed commit (push) Successful in 3s
prepared-uncut-check / toolkit-self prepared-uncut controls (push) Successful in 5s
prepared-uncut-check / prepared-but-uncut release (push) Successful in 7s
prepared-uncut-check / check (push) Successful in 0s
release / decide + act (push) Successful in 8s
release / release (push) Successful in 0s
tests / bats (push) Successful in 41s
tests / checks (push) Successful in 8s
go-ci / page landing-tree failure (push) Has been skipped
release / fire-cut (push) Successful in 1s
release-toolkit/manifest-postcondition manifest-postcondition verdict=landed
build-ref-check / check (push) Successful in 5s
goreleaser / build + publish rt asset (push) Successful in 12s
mirror-drift-check / drift release(s) carry assets here and not on the mirror
mirror-drift-check / could-not-grade release(s) carry assets here and not on the mirror
mirror-drift-check / newest-release NOT GRADED: v0.66.0 just published and was excluded from this run; the daily scheduled run grades it
mirror drift check / check (release) Failing after 7s
goreleaser / the release actually holds its assets (push) Successful in 3s
goreleaser / publish the rt image + bake its digest (push) Successful in 25s
goreleaser / adopters can pull the published image (push) Successful in 5s
goreleaser / adopters can fetch the published asset (push) Successful in 5s
57c71b619b
Generated by release-toolkit rt prep.

Tracker: frankenbit/release-toolkit#1
claude left a comment

Verdict: APPROVE at 57c71b619b

Summary: the cut is clean and additive. v0.66.0 adds reusable-pr-gates.yml and removes nothing. The bake rewrites all 20 markers, the new reusable on both providers included, and the CHANGELOG carries exactly the one fragment. The release-prep/ exemption from #1540 ran live for the first time and logged EXEMPT. Verified at source (AGENTS.md section 6).

Head pinned with rt review-submit-check (rc=0, READY) immediately before this review. Base 855b34e is still live main's tip. One commit, 57c71b6 chore(release): prepare v0.66.0, by release-bot.

1. CHANGELOG and VERSION

  • VERSION: 0.65.0 becomes 0.66.0.
  • ## [v0.66.0] - 2026-10-05: Added holds exactly one bullet, the header line of changelog.d/1541-reusable-pr-gates.added.md. Changed, Fixed, Removed, Deprecated and Upgrade each read None.
  • The fragment is deleted in this PR. It was the only fragment on the base: main's changelog.d/ held .keep, .template.md and that file. So no base fragment survives the cut (the #1305 shape), and the load-bearing .keep stays (AGENTS.md section 12).
  • The fragment's body paragraph is not in CHANGELOG.md. That matches existing behaviour: v0.65.0 (c68b696) also rendered only each fragment's header line, from fragments that carried bodies. It is not a defect of this cut.
  • No removal: nothing else is deleted, and no workflow file changes beyond its marker.

2. The bake: all 20 markers, the marker line the only change

git diff 855b34e...57c71b6 over .forgejo/workflows and .gitea/workflows gives exactly 20 removed and 20 added lines, all identical:

-          BUILD_BAKED_TOOLKIT_REF: 'main'  # release-toolkit-build-ref (auto-updated by rt prep / rt repin)
+          BUILD_BAKED_TOOLKIT_REF: 'v0.66.0'  # release-toolkit-build-ref (auto-updated by rt prep / rt repin)

That covers 10 reusables on each provider: ac-closure, changelog-body, changelog-fragment, manifest, pr-gates, prepared-uncut, recover-pending-cut, register, release and workflow-parse. A grep over every workflow file at head finds no release-toolkit-build-ref marker with any value other than 'v0.66.0'. So reusable-pr-gates.yml@v0.66.0 carries its own version. A tag-pinned adopter's D6 resolve takes the "tag pin, baked tag" arm, not the #1222 fallback or the new refusal. rt post-cut resets main to 'main' afterwards.

3. The release-prep/ exemption (#1540), first live run

toolkit-self-gates (run 19848, job 0, commit 57c71b619b), g10:

check-self-bootstrap: EXEMPT on the release-prep rolling PR (release-prep/rolling, #304).
check-self-bootstrap: the merge fires push:main, where check-self-bootstrap.yml runs the full check.

Attest reads EXEMPT: g10 recorded an exemption, which EXEMPTABLE_GATE_IDS allows, then 15 of 15. The other moved gates ran normally:

  • g11: twins match;
  • g12: #1157 still refused;
  • g13: prep-order-check: PASS;
  • g14: digest PASS.

4. CI, read in job logs (Axis C)

All 32 statuses are success.

  • pr / plan, and run every gate when combined (run 19844, job 1): it resolved the toolkit ref to main (source=toolkit-self local invocation, ADR-0013 D6), and the replay passed against 855b34e. The gates logged:
    • manifest: all checks passed;
    • fragments: cut consumed: changelog.d/1541-reusable-pr-gates.added.md (CHANGELOG.md modified), coverage and density PASS;
    • changelog_body: version=0.66.0 date=2026-10-05, all sections present;
    • register: file scan only, 0 hits (#1548);
    • ac_closure: nothing to check;
    • workflow_parse: PARSED=38 TOTAL=38.
      Then the tree was unchanged, and attest says every expected gate ran. pr / gates is success.
  • The pr / <gate> and pr / split result rows read "Has been skipped": those are the split-layout jobs under combined, as expected.
  • tests / bats (run 19847, job 0): 1..246, no not ok.
  • tests / checks (job 1): attest 14 of 14.
  • The old wrappers are all still green, as they stay until #1542: manifest-check, fragment-check (coverage, density), changelog-body-check, register-check, ac-closure-check and workflow-parse-check.

Next: Alex merges with the admin bypass. After the cut, check the v0.66.0 tag, its goreleaser assets and the minisign signature before tmux-tell's FETCH arm depends on them.

Verdict: APPROVE at 57c71b619ba89e2ca66d780c7df80076847fb5db Summary: the cut is clean and additive. v0.66.0 adds `reusable-pr-gates.yml` and removes nothing. The bake rewrites all 20 markers, the new reusable on both providers included, and the CHANGELOG carries exactly the one fragment. The `release-prep/` exemption from #1540 ran live for the first time and logged EXEMPT. Verified at source (AGENTS.md section 6). Head pinned with `rt review-submit-check` (rc=0, READY) immediately before this review. Base `855b34e` is still live main's tip. One commit, `57c71b6 chore(release): prepare v0.66.0`, by release-bot. ## 1. CHANGELOG and VERSION - **`VERSION`:** `0.65.0` becomes `0.66.0`. - **`## [v0.66.0] - 2026-10-05`:** Added holds exactly one bullet, the header line of `changelog.d/1541-reusable-pr-gates.added.md`. Changed, Fixed, Removed, Deprecated and Upgrade each read `None.` - **The fragment is deleted in this PR.** It was the only fragment on the base: main's `changelog.d/` held `.keep`, `.template.md` and that file. So no base fragment survives the cut (the #1305 shape), and the load-bearing `.keep` stays (AGENTS.md section 12). - **The fragment's body paragraph is not in CHANGELOG.md.** That matches existing behaviour: v0.65.0 (`c68b696`) also rendered only each fragment's header line, from fragments that carried bodies. It is not a defect of this cut. - **No removal:** nothing else is deleted, and no workflow file changes beyond its marker. ## 2. The bake: all 20 markers, the marker line the only change `git diff 855b34e...57c71b6` over `.forgejo/workflows` and `.gitea/workflows` gives exactly 20 removed and 20 added lines, all identical: ``` - BUILD_BAKED_TOOLKIT_REF: 'main' # release-toolkit-build-ref (auto-updated by rt prep / rt repin) + BUILD_BAKED_TOOLKIT_REF: 'v0.66.0' # release-toolkit-build-ref (auto-updated by rt prep / rt repin) ``` That covers 10 reusables on each provider: ac-closure, changelog-body, changelog-fragment, manifest, **pr-gates**, prepared-uncut, recover-pending-cut, register, release and workflow-parse. A grep over every workflow file at head finds no `release-toolkit-build-ref` marker with any value other than `'v0.66.0'`. So `reusable-pr-gates.yml@v0.66.0` carries its own version. A tag-pinned adopter's D6 resolve takes the "tag pin, baked tag" arm, not the #1222 fallback or the new refusal. `rt post-cut` resets main to `'main'` afterwards. ## 3. The `release-prep/` exemption (#1540), first live run `toolkit-self-gates` (run 19848, job 0, commit 57c71b619b), g10: ``` check-self-bootstrap: EXEMPT on the release-prep rolling PR (release-prep/rolling, #304). check-self-bootstrap: the merge fires push:main, where check-self-bootstrap.yml runs the full check. ``` Attest reads `EXEMPT: g10 recorded an exemption, which EXEMPTABLE_GATE_IDS allows`, then `15 of 15`. The other moved gates ran normally: - g11: twins match; - g12: `#1157 still refused`; - g13: `prep-order-check: PASS`; - g14: digest PASS. ## 4. CI, read in job logs (Axis C) All 32 statuses are success. - **`pr / plan, and run every gate when combined`** (run 19844, job 1): it resolved the toolkit ref to `main` (source=toolkit-self local invocation, ADR-0013 D6), and the replay passed against `855b34e`. The gates logged: - manifest: `all checks passed`; - fragments: `cut consumed: changelog.d/1541-reusable-pr-gates.added.md (CHANGELOG.md modified)`, coverage and density PASS; - changelog_body: `version=0.66.0 date=2026-10-05`, all sections present; - register: file scan only, 0 hits (#1548); - ac_closure: nothing to check; - workflow_parse: `PARSED=38 TOTAL=38`. Then the tree was unchanged, and attest says every expected gate ran. `pr / gates` is success. - **The `pr / <gate>` and `pr / split result` rows** read "Has been skipped": those are the split-layout jobs under `combined`, as expected. - **`tests / bats`** (run 19847, job 0): `1..246`, no `not ok`. - **`tests / checks`** (job 1): attest `14 of 14`. - **The old wrappers are all still green**, as they stay until #1542: manifest-check, fragment-check (coverage, density), changelog-body-check, register-check, ac-closure-check and workflow-parse-check. **Next:** Alex merges with the admin bypass. After the cut, check the `v0.66.0` tag, its goreleaser assets and the minisign signature before tmux-tell's FETCH arm depends on them.
alex approved these changes 2026-10-05 20:06:08 +02:00
alex merged commit 57c71b619b into main 2026-10-05 20:06:23 +02:00
alex deleted branch release-prep/rolling 2026-10-05 20:06:23 +02:00

Landing identity record

  • PR: #1549
  • landed commit (server merge_commit_sha): 57c71b619ba89e2ca66d780c7df80076847fb5db
  • effective official approval(s):
    • @alex, review #7239, stamped commit: 57c71b619ba89e2ca66d780c7df80076847fb5db
  • replay comparison: no identity change (stamped SHA equals landed SHA)

This is a post-merge identity record. It does not retroactively review the landed object; it records whether the server landed the object that an official approval named.

<!-- release-toolkit:landing-review-record-v1 landed=57c71b619ba89e2ca66d780c7df80076847fb5db --> ## Landing identity record - PR: #1549 - landed commit (server merge_commit_sha): `57c71b619ba89e2ca66d780c7df80076847fb5db` - effective official approval(s): - @alex, review #7239, stamped commit: `57c71b619ba89e2ca66d780c7df80076847fb5db` - replay comparison: no identity change (stamped SHA equals landed SHA) This is a post-merge identity record. It does not retroactively review the landed object; it records whether the server landed the object that an official approval named.
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
4 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
frankenbit/release-toolkit!1549
No description provided.