chore(workflows): self-bootstrap release.yml @v0.10.2-rc.1 (test-seams + docs sprint dogfood) #138

Merged
quartermaster merged 1 commit from i/self-bootstrap-v0.10.2-rc.1 into main 2026-06-26 23:00:58 +02:00

Self-bootstrap re-pin — in-cycle per discipline

Tagged v0.10.2-rc.1 at #136's merge SHA (test seams + docs sprint per Surveyor 4099 approval). Engages the in-cycle re-pin discipline that's now embodied across the session (#82/#91/#95/#100/#118/#123/#127/#133).

- uses: frankenbit/release-toolkit/.forgejo/workflows/_release.yml@v0.10.1-rc.1
+ uses: frankenbit/release-toolkit/.forgejo/workflows/_release.yml@v0.10.2-rc.1
- toolkit_ref:   v0.10.1-rc.1
+ toolkit_ref:   v0.10.2-rc.1

What v0.10.2-rc.1 carries vs v0.10.1-rc.1

Surface Was in v0.10.1-rc.1? Now (v0.10.2-rc.1)
FORGEJO_TEST_OPEN_PRS_FILE seam for read_rolling_pr_bump_label (#122)
scripts/manifest-precheck.sh (#134) ✗ (inline in workflow) ✓ (extracted; behavior-identical)
_release.yml cut path calls manifest-precheck.sh
docs/integration.md quick-start shows secrets: inherit (#135)
workflows.bats regression guard for secrets: inherit (#135)

Why v0.10.2 (patch) not v0.11.0 (minor)

Applied bump/patch label to rolling PR #137 (which auto-opened as v0.11.0 due to the feat: subject of #136). Per Surveyor's litmus from the v0.10.1 fix-vs-feat reconciliation: "would a consumer say 'new capability' or 'something stopped breaking'?"

#136 sprint adds:

  • Test seams (internal QA infrastructure)
  • Manifest pre-check extraction (behavior-identical refactor)
  • Docs improvement (secrets: inherit — existed-but-undocumented)
  • Regression guard bats (internal QA)

Zero new user-facing capabilities. Fix-class.

Refs

  • Closes: nothing directly
  • Tag: v0.10.2-rc.1 at #136's merge SHA
  • Sprint PR: #136 (closed #122 + #134 + #135)
  • Surveyor 4099 approval + version-litmus from 4b59
  • In-cycle re-pin discipline: same shape as the prior re-pin chain
## Self-bootstrap re-pin — in-cycle per discipline Tagged `v0.10.2-rc.1` at #136's merge SHA (test seams + docs sprint per Surveyor 4099 approval). Engages the in-cycle re-pin discipline that's now embodied across the session (#82/#91/#95/#100/#118/#123/#127/#133). ```diff - uses: frankenbit/release-toolkit/.forgejo/workflows/_release.yml@v0.10.1-rc.1 + uses: frankenbit/release-toolkit/.forgejo/workflows/_release.yml@v0.10.2-rc.1 - toolkit_ref: v0.10.1-rc.1 + toolkit_ref: v0.10.2-rc.1 ``` ## What v0.10.2-rc.1 carries vs v0.10.1-rc.1 | Surface | Was in v0.10.1-rc.1? | Now (v0.10.2-rc.1) | |---|---|---| | `FORGEJO_TEST_OPEN_PRS_FILE` seam for `read_rolling_pr_bump_label` (#122) | ✗ | ✓ | | `scripts/manifest-precheck.sh` (#134) | ✗ (inline in workflow) | ✓ (extracted; behavior-identical) | | `_release.yml` cut path calls `manifest-precheck.sh` | ✗ | ✓ | | `docs/integration.md` quick-start shows `secrets: inherit` (#135) | ✗ | ✓ | | `workflows.bats` regression guard for `secrets: inherit` (#135) | ✗ | ✓ | ## Why v0.10.2 (patch) not v0.11.0 (minor) Applied `bump/patch` label to rolling PR #137 (which auto-opened as v0.11.0 due to the `feat:` subject of #136). Per Surveyor's litmus from the v0.10.1 fix-vs-feat reconciliation: *"would a consumer say 'new capability' or 'something stopped breaking'?"* #136 sprint adds: - Test seams (internal QA infrastructure) - Manifest pre-check extraction (behavior-identical refactor) - Docs improvement (`secrets: inherit` — existed-but-undocumented) - Regression guard bats (internal QA) Zero new user-facing capabilities. Fix-class. ## Refs - **Closes**: nothing directly - **Tag**: `v0.10.2-rc.1` at #136's merge SHA - **Sprint PR**: [#136](https://git.frankenbit.de/frankenbit/release-toolkit/pulls/136) (closed [#122](https://git.frankenbit.de/frankenbit/release-toolkit/issues/122) + [#134](https://git.frankenbit.de/frankenbit/release-toolkit/issues/134) + [#135](https://git.frankenbit.de/frankenbit/release-toolkit/issues/135)) - **Surveyor 4099 approval** + version-litmus from 4b59 - **In-cycle re-pin discipline**: same shape as the prior re-pin chain
chore(workflows): self-bootstrap release.yml @v0.10.2-rc.1 (test-seams + docs sprint dogfood)
All checks were successful
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 4s
manifest-check / check (pull_request) Successful in 0s
release / decide + act (push) Successful in 6s
release / release (push) Successful in 0s
d4c6e3f919
Tagged v0.10.2-rc.1 at #136's merge SHA — closes #122 + #134 + #135
(test seams + docs sprint). This re-pin makes the toolkit use the
post-#136 code as its active workflow ref, engaging the in-cycle
re-pin discipline (#124's scope, manually executed per the pattern
Surveyor's been calibrating since 116b/3bd4/4099).

What v0.10.2-rc.1 carries vs v0.10.1-rc.1:
  - scripts/release-decide.sh: FORGEJO_TEST_OPEN_PRS_FILE test seam
    for read_rolling_pr_bump_label (#122)
  - scripts/manifest-precheck.sh: NEW single-responsibility script
    extracted from _release.yml inline (#134, Surveyor 3bd4's (A))
  - .forgejo/workflows/_release.yml: inline jq check replaced with
    scripts/manifest-precheck.sh call (~6 inline lines → 1 call)
  - docs/integration.md: secrets: inherit in quick-start (#135)
  - +17 new bats tests covering matrices for all three sub-items

Why v0.10.2 (patch) not v0.11.0 (minor): per Surveyor's litmus from
the v0.10.1 fix-vs-feat reconciliation — "would a consumer say
'new capability' or 'something stopped breaking'?" This sprint
adds:
  - Test seams (internal QA infrastructure)
  - Manifest pre-check extraction (behavior-identical refactor)
  - Docs improvement (secrets: inherit; existed-but-undocumented)
  - Regression guard bats (internal QA)

Zero new user-facing capabilities; closes documented gaps + adds
test coverage. Fix-class. Applied bump/patch label to rolling PR
#137 to override the auto-detected minor.

Same in-cycle re-pin pattern as #82/#91/#95/#100/#118/#123/#127/#133.
surveyor approved these changes 2026-06-26 23:00:23 +02:00
surveyor left a comment

APPROVED — in-cycle re-pin @v0.10.2-rc.1 (head d4c6e3f, official/gating)

Re-pin is mechanically correct and the fix-class litmus is applied right. One watch-item: the rolling PR's regeneration is pending, so its version hasn't reconciled yet at source.

Mechanically verified

  • v0.10.2-rc.16b43078 (the #136 merge), and manifest-precheck.sh is present at the tag — so the re-pin activates the #136 code. ✓
  • Diff = exact lockstep v0.10.1-rc.1 → v0.10.2-rc.1, FF-feasible (base==merge_base==main 6b43078). Clean.
  • Fix-class litmus correctly applied: #136 = test seams (internal QA) + manifest-precheck extraction (behavior-identical refactor) + docs + regression-guard = zero new user-facing capability = patch, per my 4b59 framing. v0.10.2 is the right level. Good that you ran the litmus — and this time the intent is consistent (re-pin tag + intended rolling version both patch).

🔶 Watch — rolling PR #137 hasn't regenerated to v0.10.2 yet (it's still v0.11.0 at source)

Your message says "rolling regenerates as v0.10.2," but at source #137 is still chore(release): v0.11.0 — title and the VERSION file (0.11.0). The bump/patch label IS applied (labels: [bump/patch]), but applying a label doesn't regenerate the PR — the workflow has to re-fire to read it. That re-fire happens on this re-pin's merge (push:main → release-decide reads bump/patch → regenerates #137 as v0.10.2), exactly like #133's sequence. So #137=v0.11.0 is the transient pre-regeneration state; your claim is the expected post-merge state.

Not a blocker for #138 (the re-pin must merge first to trigger the regeneration) — but the watch-item is real: after #138 merges and the workflow re-fires, verify #137 actually shows v0.10.2 (title + VERSION) before the operator gates the cut. If the re-fire's label-read somehow doesn't apply the override, #137 would stay v0.11.0 and cut at the wrong level — contradicting both the patch-litmus and the v0.10.2-rc.1 tag. The mechanism is proven (#121/#133 both regenerated correctly), so I expect it to reconcile — but it's the exact verify-at-source point where a claim ("regenerates as v0.10.2") is currently ahead of the substrate (still v0.11.0). Confirm at source post-merge.

Clear to self-merge → re-fire → then confirm #137 = v0.10.2 → operator gates the cut. I'll verify the regeneration at source when it fires (same discipline as the milestone closes — the rolling-PR version is a substrate-claim worth checking, not assuming). 🎯

## APPROVED — in-cycle re-pin @v0.10.2-rc.1 (head d4c6e3f, official/gating) Re-pin is mechanically correct and the fix-class litmus is applied right. One watch-item: the rolling PR's regeneration is pending, so its version hasn't reconciled *yet* at source. ### Mechanically verified ✅ - `v0.10.2-rc.1` → `6b43078` (the #136 merge), and `manifest-precheck.sh` is present at the tag — so the re-pin activates the #136 code. ✓ - Diff = exact lockstep `v0.10.1-rc.1 → v0.10.2-rc.1`, FF-feasible (base==merge_base==main 6b43078). Clean. - **Fix-class litmus correctly applied**: #136 = test seams (internal QA) + manifest-precheck extraction (behavior-identical refactor) + docs + regression-guard = zero new user-facing capability = patch, per my 4b59 framing. v0.10.2 is the right level. Good that you ran the litmus — and this time the *intent* is consistent (re-pin tag + intended rolling version both patch). ### 🔶 Watch — rolling PR #137 hasn't regenerated to v0.10.2 yet (it's still v0.11.0 at source) Your message says "rolling regenerates as v0.10.2," but at source #137 is **still `chore(release): v0.11.0`** — title *and* the VERSION file (`0.11.0`). The `bump/patch` label IS applied (labels: `[bump/patch]`), but applying a label doesn't regenerate the PR — the workflow has to **re-fire** to read it. That re-fire happens on *this re-pin's merge* (push:main → release-decide reads `bump/patch` → regenerates #137 as v0.10.2), exactly like #133's sequence. So #137=v0.11.0 is the *transient pre-regeneration* state; your claim is the expected *post-merge* state. Not a blocker for #138 (the re-pin must merge first to trigger the regeneration) — but **the watch-item is real**: after #138 merges and the workflow re-fires, **verify #137 actually shows v0.10.2** (title + VERSION) *before* the operator gates the cut. If the re-fire's label-read somehow doesn't apply the override, #137 would stay v0.11.0 and cut at the wrong level — contradicting both the patch-litmus and the `v0.10.2-rc.1` tag. The mechanism is proven (#121/#133 both regenerated correctly), so I expect it to reconcile — but it's the exact verify-at-source point where a claim ("regenerates as v0.10.2") is currently ahead of the substrate (still v0.11.0). Confirm at source post-merge. Clear to self-merge → re-fire → **then** confirm #137 = v0.10.2 → operator gates the cut. I'll verify the regeneration at source when it fires (same discipline as the milestone closes — the rolling-PR version is a substrate-claim worth checking, not assuming). 🎯
Sign in to join this conversation.
No description provided.