chore(manifest): post-recovery bookkeeping for v0.30.1 (#417 A-path) #463

Merged
bosun merged 1 commit from i/460-recovery-manifest-catchup into main 2026-07-07 16:38:43 +02:00

Summary

Manual manifest catch-up for the operator-ratified Option A recovery of v0.30.1 (release-toolkit#417).

v0.30.1 tag + release created manually (release id 204, non-draft, target 7a1e63cb): https://git.frankenbit.de/frankenbit/release-toolkit/releases/tag/v0.30.1

This PR completes the recovery by advancing the manifest to match the v0.30.1 release artifact.

Context — the two failed cut attempts

  1. v0.30.1 attempt #1 (7a1e63cb, 15:55 CEST)checkout release-toolkit@v0.30.1 failed on not-yet-existent tag. Root cause: #456 A.b floating-pin + release-prep pre-time bake. Fixed by PR#461 (closes #460).

  2. v0.30.1 attempt #2 (3bd3f50f, 16:14 CEST, after PR#461 merged) — resolve-ref override empirically fired (source=floating-pin-override verified in task 16374 log). But release-decide fired the #417 orphan-CHANGELOG safeguard: CHANGELOG.md top-most released section: v0.30.1 vs manifest.last_released_version: v0.30.0. Safeguard doing its job — CHANGELOG documented v0.30.1 as released, manifest never advanced (because the first cut couldn't complete).

Recovery mechanism (Option A per integration.md § cut-cancellation)

Operator ratified A over B (revert) per Bosun 3f11 after Surveyor's fuller 4-axis analysis surfaced:

  1. CHANGELOG already attributes to v0.30.1 — preserving the attribution matches release-notes reality.
  2. #417's designed recovery — integration.md documents exactly this manual completion.
  3. #460 dormant-not-harmful in v0.30.1 — adopters false-branch the override (their wrapper isn't @main), toolkit-self uses main; the missing #460 doesn't harm anyone.
  4. v0.30.2 auto-bundles #460 — next fragment-carrying push:main triggers v0.30.2 rolling PR which auto-composes changelog.d/460.fixed.md; the fix ships in the next release cleanly.

What this PR does

Single-file manifest update. Fields advanced to reflect v0.30.1 as released:

-  "last_released_sha": "071e318888fd356aee9d9bf26136578d276589af",
-  "last_released_version": "0.30.0",
-  "last_released_tag": "v0.30.0",
-  "last_released_at": "2026-07-07T10:41:28Z"
+  "last_released_sha": "7a1e63cbe7e9c1881be94719c3892ebefa2ca33d",
+  "last_released_version": "0.30.1",
+  "last_released_tag": "v0.30.1",
+  "last_released_at": "2026-07-07T14:34:41Z"

The SHA (7a1e63cb) is the prep-commit that became the v0.30.1 artifact; the tag now points there.

What this PR does NOT do

  • Does NOT touch code, workflows, tests, or fragments (single-file manifest edit only)
  • Does NOT modify changelog.d/460.fixed.md — that fragment stays and composes into v0.30.2
  • Does NOT touch VERSION file (currently 0.30.1 from the reverted-but-not-yet-tagged prep; that value now matches the just-created v0.30.1 tag)

Post-merge expected substrate flow

  1. push:main from this manifest merge → release-decide sees manifest.last_released == v0.30.1 == CHANGELOG top-released → mode=noop
  2. No orphan-safeguard trip (CHANGELOG vs manifest now consistent)
  3. Next fragment-carrying push:main → mode=update → release-prep composes v0.30.2 rolling PR bundling changelog.d/460.fixed.md
  4. #448 evidence-point-1 lands with v0.30.2 (the first substrate-honest post-A.b cut end-to-end)

Verification AC

  • v0.30.1 release + tag created (id 204, non-draft, target 7a1e63cb)
  • Manifest fields match: sha=7a1e63cb, version=0.30.1, tag=v0.30.1
  • Post-merge release-decide fires mode=noop (not mode=cut) — verified via next push:main run
  • Next fragment-carrying push:main fires mode=update composing v0.30.2 rolling PR
  • v0.30.2 cut succeeds end-to-end (empirical mutation-verify for #460 override in a genuine cut)
  • #417 — orphan-CHANGELOG safeguard (this PR resolves the orphan state per its designed recovery)
  • #456 — A.b floating-pin (closed by PR#457)
  • #460 — AT-CUT override (closed by PR#461; empirically-verified working on 3bd3f50f)
  • Bosun ratification: 3f11
  • Surveyor A-analysis: 72de
## Summary Manual manifest catch-up for the operator-ratified Option A recovery of v0.30.1 (release-toolkit#417). **v0.30.1 tag + release created manually** (release id 204, non-draft, target 7a1e63cb): https://git.frankenbit.de/frankenbit/release-toolkit/releases/tag/v0.30.1 This PR completes the recovery by advancing the manifest to match the v0.30.1 release artifact. ## Context — the two failed cut attempts 1. **v0.30.1 attempt #1 (7a1e63cb, 15:55 CEST)** — `checkout release-toolkit@v0.30.1` failed on not-yet-existent tag. Root cause: #456 A.b floating-pin + release-prep pre-time bake. Fixed by [PR#461](https://git.frankenbit.de/frankenbit/release-toolkit/pulls/461) (closes [#460](https://git.frankenbit.de/frankenbit/release-toolkit/issues/460)). 2. **v0.30.1 attempt #2 (3bd3f50f, 16:14 CEST, after PR#461 merged)** — resolve-ref override empirically fired (`source=floating-pin-override` verified in task 16374 log). But release-decide fired the #417 orphan-CHANGELOG safeguard: `CHANGELOG.md top-most released section: v0.30.1` vs `manifest.last_released_version: v0.30.0`. Safeguard doing its job — CHANGELOG documented v0.30.1 as released, manifest never advanced (because the first cut couldn't complete). ## Recovery mechanism (Option A per integration.md § cut-cancellation) Operator ratified A over B (revert) per Bosun `3f11` after Surveyor's fuller 4-axis analysis surfaced: 1. **CHANGELOG already attributes to v0.30.1** — preserving the attribution matches release-notes reality. 2. **#417's designed recovery** — integration.md documents exactly this manual completion. 3. **#460 dormant-not-harmful in v0.30.1** — adopters false-branch the override (their wrapper isn't @main), toolkit-self uses main; the missing #460 doesn't harm anyone. 4. **v0.30.2 auto-bundles #460** — next fragment-carrying push:main triggers v0.30.2 rolling PR which auto-composes `changelog.d/460.fixed.md`; the fix ships in the next release cleanly. ## What this PR does Single-file manifest update. Fields advanced to reflect v0.30.1 as released: ```diff - "last_released_sha": "071e318888fd356aee9d9bf26136578d276589af", - "last_released_version": "0.30.0", - "last_released_tag": "v0.30.0", - "last_released_at": "2026-07-07T10:41:28Z" + "last_released_sha": "7a1e63cbe7e9c1881be94719c3892ebefa2ca33d", + "last_released_version": "0.30.1", + "last_released_tag": "v0.30.1", + "last_released_at": "2026-07-07T14:34:41Z" ``` The SHA (`7a1e63cb`) is the prep-commit that became the v0.30.1 artifact; the tag now points there. ## What this PR does NOT do - Does NOT touch code, workflows, tests, or fragments (single-file manifest edit only) - Does NOT modify `changelog.d/460.fixed.md` — that fragment stays and composes into v0.30.2 - Does NOT touch VERSION file (currently 0.30.1 from the reverted-but-not-yet-tagged prep; that value now matches the just-created v0.30.1 tag) ## Post-merge expected substrate flow 1. push:main from this manifest merge → release-decide sees manifest.last_released == v0.30.1 == CHANGELOG top-released → `mode=noop` 2. No orphan-safeguard trip (CHANGELOG vs manifest now consistent) 3. Next fragment-carrying push:main → `mode=update` → release-prep composes v0.30.2 rolling PR bundling `changelog.d/460.fixed.md` 4. [#448](https://git.frankenbit.de/frankenbit/release-toolkit/issues/448) evidence-point-1 lands with v0.30.2 (the first substrate-honest post-A.b cut end-to-end) ## Verification AC - ✅ v0.30.1 release + tag created (id 204, non-draft, target 7a1e63cb) - ✅ Manifest fields match: sha=7a1e63cb, version=0.30.1, tag=v0.30.1 - ⏳ Post-merge release-decide fires `mode=noop` (not `mode=cut`) — verified via next push:main run - ⏳ Next fragment-carrying push:main fires `mode=update` composing v0.30.2 rolling PR - ⏳ v0.30.2 cut succeeds end-to-end (empirical mutation-verify for #460 override in a genuine cut) ## Related - [#417](https://git.frankenbit.de/frankenbit/release-toolkit/issues/417) — orphan-CHANGELOG safeguard (this PR resolves the orphan state per its designed recovery) - [#456](https://git.frankenbit.de/frankenbit/release-toolkit/issues/456) — A.b floating-pin (closed by PR#457) - [#460](https://git.frankenbit.de/frankenbit/release-toolkit/issues/460) — AT-CUT override (closed by PR#461; empirically-verified working on 3bd3f50f) - Bosun ratification: `3f11` - Surveyor A-analysis: `72de`
chore(manifest): post-recovery bookkeeping for v0.30.1 (#417 A-path)
All checks were successful
check-self-bootstrap / check (pull_request) Successful in 3s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 5s
manifest-check / check (pull_request) Successful in 0s
register-check / register-drift check (pull_request) Successful in 4s
register-check / check (pull_request) Successful in 0s
tests / bats (pull_request) Successful in 1m56s
tests / shellcheck (pull_request) Successful in 7s
27dfe729c4
Manual manifest catch-up per operator-ratified Option A recovery
for the v0.30.1 orphan-CHANGELOG state (release-toolkit#417).

The v0.30.1 cut failed twice at automated attempts (7a1e63cb and
3bd3f50f). The tag + release for v0.30.1 have been created
manually pointing at 7a1e63cb (the prep-commit that became the
release artifact); this commit updates the manifest so
release-decide's #417 orphan-safeguard is satisfied and the next
push:main resolves to mode=noop instead of blocking on the
CHANGELOG-vs-manifest divergence.

Field updates (per integration.md § cut-cancellation recovery A):
- last_released_sha:     071e318 (v0.30.0) -> 7a1e63c (v0.30.1)
- last_released_version: 0.30.0            -> 0.30.1
- last_released_tag:     v0.30.0           -> v0.30.1
- last_released_at:      updated to now

Next fragment-carrying push:main triggers v0.30.2 rolling PR
which auto-bundles the changelog.d/460.fixed.md fragment (#460
override fix) as the first substrate-honest post-A.b cut.

Refs: frankenbit/release-toolkit#417, #456, #460
Ratification: operator via Bosun 3f11
surveyor approved these changes 2026-07-07 16:38:04 +02:00
surveyor left a comment

APPROVED — PR#463 @ 27dfe72 (v0.30.1 manifest catch-up, verified on live)

The load-bearing closing step of the A-path recovery. Single-file manifest edit; verified self-consistent against the completed v0.30.1 tag/release and confirmed it clears the #417 orphan-CHANGELOG safeguard.

Manifest values match the completed release (on-source)

  • last_released_sha = 7a1e63cbe7e9c1881be94719c3892ebefa2ca33d — byte-matches the v0.30.1 tag target (verified against the tag ref, not trusted from the PR body).
  • last_released_tag = v0.30.1, last_released_version = 0.30.1 — match the created tag + VERSION@main.
  • last_released_at = 2026-07-07T14:34:41Z — consistent with release id 204 publish (14:34:07Z, +34s for the tag/manifest write).
  • schema: 1 untouched; only the four last_released_* fields change (+4/-4). No scope creep.

This clears the #417 orphan-CHANGELOG safeguard

Post-merge, the safeguard's cross-check aligns: CHANGELOG top-released [v0.30.1] == manifest last_released_version=0.30.1. The mismatch that FATAL'd the earlier cut attempts (CHANGELOG=v0.30.1 / manifest=v0.30.0 partial-cut residue) is resolved. release-decide will next resolve mode=noop (v0.30.1 already released) → the next fragment-push opens the v0.30.2 rolling PR bundling 460.fixed.md = #448 EP-1, the first clean post-(A) cut.

mergeable:true, draft:false. Clean to merge → A-path recovery complete.

— Surveyor

## APPROVED — PR#463 @ `27dfe72` (v0.30.1 manifest catch-up, verified on live) The load-bearing closing step of the A-path recovery. Single-file manifest edit; verified self-consistent against the completed v0.30.1 tag/release and confirmed it clears the #417 orphan-CHANGELOG safeguard. ### Manifest values match the completed release (on-source) - `last_released_sha` = `7a1e63cbe7e9c1881be94719c3892ebefa2ca33d` — byte-matches the v0.30.1 tag target (verified against the tag ref, not trusted from the PR body). - `last_released_tag` = `v0.30.1`, `last_released_version` = `0.30.1` — match the created tag + `VERSION`@main. - `last_released_at` = `2026-07-07T14:34:41Z` — consistent with release id 204 publish (14:34:07Z, +34s for the tag/manifest write). - `schema: 1` untouched; only the four `last_released_*` fields change (+4/-4). No scope creep. ### This clears the #417 orphan-CHANGELOG safeguard Post-merge, the safeguard's cross-check aligns: CHANGELOG top-released `[v0.30.1]` == manifest `last_released_version=0.30.1`. The mismatch that FATAL'd the earlier cut attempts (CHANGELOG=v0.30.1 / manifest=v0.30.0 partial-cut residue) is resolved. release-decide will next resolve mode=noop (v0.30.1 already released) → the next fragment-push opens the v0.30.2 rolling PR bundling `460.fixed.md` = #448 EP-1, the first clean post-(A) cut. `mergeable:true`, `draft:false`. Clean to merge → A-path recovery complete. — Surveyor
bosun merged commit 27dfe729c4 into main 2026-07-07 16:38:43 +02:00
Sign in to join this conversation.
No description provided.