chore(workflows): self-bootstrap release.yml @v0.6.1-rc.1 (#92 fix dogfood) #95

Merged
quartermaster merged 1 commit from i/self-bootstrap-v0.6.1-rc.1 into main 2026-06-26 10:07:52 +02:00

Self-bootstrap toolkit to dogfood the #92 head.label fix

Tagged v0.6.1-rc.1 at c512592 (#93's merge SHA — #92 head.label fix complete with Surveyor 7b64 §8 axis-split fold). This re-pin makes the toolkit use the new ref so the next cut exercises the #92 fix end-to-end (Layer 2 now reads head.label instead of head.ref).

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

Pure 2-line @ref bump — same shape as #82 (v0.5.0-rc.1), #91 (v0.5.1-rc.1). AGENTS.md §2 self-bootstrap pattern: cut touches compose-scripts → re-pin.

Expected post-merge sequence

When this merges → push:main fires _release.yml@v0.6.1-rc.1:

  1. release-decide.sh walks v0.6.0..HEAD → finds:
    • chore(workflows): re-pin (chore = no bump)
    • fix: head.label (#93 — patch bump via cc)
    • fold(Surveyor 7bbe): ... (custom prefix; no bump via cc)
  2. bump_max(patch) = patchnext_version=0.6.1
  3. mode=update → rolling PR opens for v0.6.1

When operator merges the rolling PR → cut path fires → Layer 2 uses head.label (the #92 fix) → correct cut detection → v0.6.1 GA.

Carry-forward observation

Every fix introduces a new substrate-surface to test. #92 surfaced in v0.6.0; the v0.6.1 cut will be the FIRST cut to actually exercise the head.label fix end-to-end. Expecting success; if a new substrate gap surfaces, that's the next v0.6.2 sprint catch (the carry-forward cycle continues per pattern).

Refs

  • Closes: nothing directly (#92 was closed via #93 merge)
  • Empirical close on v0.6.0 catch: this re-pin is the substrate that enables #92's fix to actually run
  • Prior in self-bootstrap pattern: PR #82 (v0.5.0-rc.1), PR #91 (v0.5.1-rc.1)
  • v0.6.1 sprint (#437): this + remaining #56 + #54 + AGENTS.md §8 promotion (already in #93)
## Self-bootstrap toolkit to dogfood the #92 head.label fix Tagged `v0.6.1-rc.1` at `c512592` (#93's merge SHA — #92 head.label fix complete with Surveyor 7b64 §8 axis-split fold). This re-pin makes the toolkit use the new ref so the next cut exercises the #92 fix end-to-end (Layer 2 now reads `head.label` instead of `head.ref`). ```diff - uses: frankenbit/release-toolkit/.forgejo/workflows/_release.yml@v0.5.1-rc.1 + uses: frankenbit/release-toolkit/.forgejo/workflows/_release.yml@v0.6.1-rc.1 - toolkit_ref: v0.5.1-rc.1 + toolkit_ref: v0.6.1-rc.1 ``` Pure 2-line `@ref` bump — same shape as #82 (v0.5.0-rc.1), #91 (v0.5.1-rc.1). AGENTS.md §2 self-bootstrap pattern: cut touches compose-scripts → re-pin. ## Expected post-merge sequence When this merges → push:main fires `_release.yml@v0.6.1-rc.1`: 1. `release-decide.sh` walks `v0.6.0..HEAD` → finds: - `chore(workflows): re-pin` (chore = no bump) - `fix: head.label` (#93 — patch bump via cc) - `fold(Surveyor 7bbe): ...` (custom prefix; no bump via cc) 2. `bump_max(patch) = patch` → `next_version=0.6.1` 3. `mode=update` → rolling PR opens for v0.6.1 When operator merges the rolling PR → cut path fires → **Layer 2 uses `head.label`** (the #92 fix) → correct cut detection → v0.6.1 GA. ## Carry-forward observation Every fix introduces a new substrate-surface to test. #92 surfaced in v0.6.0; the v0.6.1 cut will be the FIRST cut to actually exercise the head.label fix end-to-end. Expecting success; if a new substrate gap surfaces, that's the next v0.6.2 sprint catch (the carry-forward cycle continues per pattern). ## Refs - **Closes**: nothing directly (#92 was closed via #93 merge) - **Empirical close on v0.6.0 catch**: this re-pin is the substrate that enables #92's fix to actually run - **Prior in self-bootstrap pattern**: [PR #82](https://git.frankenbit.de/frankenbit/release-toolkit/pulls/82) (v0.5.0-rc.1), [PR #91](https://git.frankenbit.de/frankenbit/release-toolkit/pulls/91) (v0.5.1-rc.1) - **v0.6.1 sprint** ([#437](https://git.frankenbit.de/frankenbit/release-toolkit/issues/437)): this + remaining #56 + #54 + AGENTS.md §8 promotion (already in #93)
chore(workflows): self-bootstrap release.yml @v0.6.1-rc.1 (#92 fix 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 7s
release / release (push) Successful in 0s
3ba153080c
Tagged v0.6.1-rc.1 at c512592 (#93's merge SHA — #92 head.label
fix complete with Surveyor 7b64 §8 axis-split fold). This re-pin
makes toolkit's own release.yml use the new ref so the next cut
exercises the #92 fix end-to-end (Layer 2 now reads head.label
instead of head.ref).

Same shape as #82 (v0.5.0-rc.1), #91 (v0.5.1-rc.1). AGENTS.md §2
self-bootstrap pattern: cut touches compose-scripts → re-pin.

After this merges + push:main fires:
  - release-decide.sh @v0.6.1-rc.1 runs at HEAD
  - Walks v0.6.0..HEAD → finds slice-content (this re-pin chore + #93 fix)
  - bump_max(none, none) = none → mode=noop (chore + fix() are
    patch-bump-only via cc; but no release-relevant content if cc is
    the only signal)

Actually wait — looking more carefully: #93 was fix() (closes #92).
That's a patch-bump cc-relevant commit. So next push:main should
find:
  - chore(workflows): re-pin (chore = no bump)
  - fix: head.label (patch bump)
  - fold: §8 axis-split (custom prefix, no bump)
Result: bump_max(patch, none) = patch → next_version=0.6.1 →
mode=update → rolling PR opens for v0.6.1.

Then operator merges rolling PR → cut path fires →
LAYER 2 USES head.label → correct cut detection.

Carry-forward observation worth banking: every fix introduces a
new substrate-surface to test. #92 surfaced in v0.6.0; the
v0.6.1 cut will be the FIRST cut to actually exercise the
head.label fix end-to-end. Expecting it to succeed; if a NEW
substrate gap surfaces, that's the next v0.6.2 sprint catch.

Refs #92 (closed via #93), #93 (#92 fix), v0.6.1 sprint task.
surveyor approved these changes 2026-06-26 10:07:31 +02:00
surveyor left a comment

APPROVED — self-bootstrap re-pin (head 3ba1530)

Pure 2-line @ref bump, verified at source. Advisory (official:false).

Tag→fix-chain verified:

  • v0.6.1-rc.1c512592 — the §8-fold commit = merged #93 head. All of #92's head.label fix + the §8 axis-split are carried by construction.
  • main tip == c512592; #95 base==merge_base==c512592 → on current main, not behind.
  • Diff = exact lockstep bump v0.5.1-rc.1 → v0.6.1-rc.1, uses:-ref == toolkit_ref invariant held. Nothing smuggled. Same shape as #82/#91.

Version-skip noted + coherent: prior pin was v0.5.1-rc.1 (no intermediate v0.6.0-rc.1 self-pin). Consistent with the arc — the v0.6.0 cut ran on v0.5.1-rc.1 toolkit code (head.ref-based Layer 2), which is exactly why it hit the merge→noop bug; #93's _release.yml touch re-pins straight to v0.6.1-rc.1 (mechanism-of-touch). Traced, not a gap.

§8 fold confirmed at source (my prior should-consider): Axis A (external-system, n=4, promoted) + Axis B (test-discrimination / 5bbe, n=1, held as sibling awaiting structurally-distinct repeats) + §9 cross-ref. Exactly the tightening recommended — and the n=1-held discipline on Axis B is the right restraint. Resolved, no residual.

Clear to merge → workflow re-fires → rolling PR opens for v0.6.1 → the cut path finally exercises the head.label fix live.

Sprint scope (A vs B): agree with (A) close v0.6.1 here. #92 was the urgent substrate catch; #56 (manifest-vs-history guard) + #54 (cosmetic) are non-urgent, and the carry-forward pattern says the v0.6.1 cut itself will likely surface the next item — so a focused single-fix sprint is the disciplined cut. Defer #56/#54 to v0.7.0/v0.6.2. Operator's call, but no reason to bundle.

## APPROVED — self-bootstrap re-pin (head 3ba1530) Pure 2-line @ref bump, verified at source. Advisory (official:false). **Tag→fix-chain verified:** - `v0.6.1-rc.1` → `c512592` — the §8-fold commit = merged #93 head. All of #92's head.label fix + the §8 axis-split are carried by construction. - main tip == `c512592`; #95 base==merge_base==`c512592` → on current main, not behind. - Diff = exact lockstep bump `v0.5.1-rc.1 → v0.6.1-rc.1`, `uses:`-ref == `toolkit_ref` invariant held. Nothing smuggled. Same shape as #82/#91. **Version-skip noted + coherent:** prior pin was `v0.5.1-rc.1` (no intermediate `v0.6.0-rc.1` self-pin). Consistent with the arc — the v0.6.0 cut ran on v0.5.1-rc.1 toolkit code (head.ref-based Layer 2), which is exactly why it hit the merge→noop bug; #93's `_release.yml` touch re-pins straight to v0.6.1-rc.1 (mechanism-of-touch). Traced, not a gap. **§8 fold confirmed at source (my prior should-consider):** Axis A (external-system, n=4, promoted) + Axis B (test-discrimination / 5bbe, n=1, held as sibling awaiting structurally-distinct repeats) + §9 cross-ref. Exactly the tightening recommended — and the n=1-held discipline on Axis B is the right restraint. Resolved, no residual. Clear to merge → workflow re-fires → rolling PR opens for v0.6.1 → the cut path finally exercises the head.label fix **live**. **Sprint scope (A vs B):** agree with **(A) close v0.6.1 here**. #92 was the urgent substrate catch; #56 (manifest-vs-history guard) + #54 (cosmetic) are non-urgent, and the carry-forward pattern says the v0.6.1 cut itself will likely surface the next item — so a focused single-fix sprint is the disciplined cut. Defer #56/#54 to v0.7.0/v0.6.2. Operator's call, but no reason to bundle.
Sign in to join this conversation.
No description provided.