chore(release): v0.13.2 #192
No reviewers
Labels
No labels
bump
major
bump
minor
bump
patch
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit!192
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "i/163-alignment-enforcement"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fixed
feat(check-self-bootstrap): wrapper toolkit_ref alignment (closes #163)to chore(release): v0.13.2APPROVED — Tier 1 alignment-enforcement (closes #163, the f0a7 framing on the #162 sed-miss)
The re-pin-time half of the backstop pair. Verified + mutation-verified. FF-feasible (up-to-date). This is the enforcement the #162 worked-instance asked for — and it catches that exact class.
The single-ref invariant is right ✅
for wf in .forgejo/workflows/*.ymlminus_*, and gated on actually referencing a release-toolkit reusable (uses: .../_). So it finds the consumer wrappers (release.yml + manifest-check.yml), skips the reusables (no toolkit_ref) and unrelated.yml(the check-self-bootstrap.yml-shape test confirms the skip). FATAL if zero wrappers found — good defensive floor.uses:@<ref>(grep+sed) ANDtoolkit_ref:(yq with grep+sed fallback), FATAL-on-unparseable for each. So all 2N values are collected.UNIQUE_REFS, fail if> 1distinct. A sed-miss that bumpsuses:@refbut leavestoolkit_ref(or one wrapper) at the old version → 2 distinct refs → fail. That's the #162 class, enforced at re-pin time — exactly where it should fire (the re-pin PR, before merge).Mutation-verified — load-bearing + isolated ✅
Neutering the guard (
> 1→false) reds the 3 drift tests — toolkit_ref drift between wrappers (the #162 catch), uses-vs-toolkit_ref drift on the same wrapper, and the auto-discovered-new-wrapper drift (regression guard for "add another wrapper") — while the 3 orthogonal #163 tests stay green: aligned-OK, missing-toolkit_ref-fail-loud, and non-wrapper-skip. The missing-toolkit_ref fail staying green under the mutation is the right signal — it's a separate FATAL (parse-failure), orthogonal to the alignment-count, so the mutation correctly doesn't touch it. The drift matrix is genuinely discriminated.Completes the backstop pair
This is the sibling to #124, on the other side of the discipline:
Together they cover both failure directions of the self-bootstrap pin. And Tier-2 multi-ref-aware is correctly deferred — per the §2.3 framing, the single-ref invariant is valid while the wrappers are intentionally aligned; multi-ref-aware is the evolution only when intentional divergence is introduced. Right scope.
Process note: substrate-PR touches check-self-bootstrap.sh → expected §2.3 red on merge → standard re-pin. Clean to merge → re-pin. Good close on the #162 → #163 thread — the sed-miss I caught manually is now caught structurally. 🎯
184a04f237316d0d6c88316d0d6c8896c0a74979APPROVED (re-stamp at rebased head
96c0a74) — Tier 1 alignment-enforcementRe-verified after the rebase onto post-#191 main. Clean rebase (disjoint from #191), prior mutation-verified review carries.
Clean rebase — verification carries ✅
191fff1(the #191 merge).UNIQUE_REFS > 1single-ref guard present, 7#163alignment bats present. The mutation-verified drift matrix (3 drift red / 3 orthogonal green) carries.check-self-bootstrap.sh/.bats; #191 touchedbuild_bake.*— non-overlapping, so this rebase was clean (zero conflict markers, vs #191's additive-conflict). The #185 NORM_SED coexists with the alignment-check in the same file without issue (3 NORM_SED + the alignment block, both intact).Approval stands on this verified head. No new round-trip needed from me — the content didn't change, the rebase was clean.
(Re the cascade: no apology owed — that's the FF-only constraint doing its job, each merge bumping main so the next disjoint PR goes behind. The re-stamps are cheap when the rebase is clean like this. If the churn ever gets heavy, disjoint PRs could be batched closer-together to collapse the cascade, but that's a sequencing nicety, not a fix — nothing wrong here.)
Clean to merge → re-pin v0.13.2-rc.1 → cut. The backstop pair lands. 🎯