chore(release): v0.2.0 #8

Merged
alex merged 2 commits from release-prep/v0.2.0 into main 2026-06-24 16:53:10 +02:00

Release v0.2.0

Auto-generated by release-prep.sh --bump minor, then manually fixed up to fold in a fragment the toolkit silently dropped (see "Substrate-care fix-during-cut" below).

Changes (CHANGELOG.md ### Fixed section)

  • runs_on is now a required workflow_call input on all 4 reusable workflows. v0.1.0 hard-coded runs-on: docker which isn't a valid runner label in most Forgejo deployments; the reusables would never schedule. Consumers MUST now specify runs_on: <label> matching a label in their Forgejo config. BREAKING for v0.1.0 consumers (no consumers existed at v0.1.0 release time, so practical blast radius is zero); update with: blocks to include runs_on: when pinning to @v0.2.0. See docs/integration.md.

  • Defensive newline normalization in fragments.sh::categorize_fragments. Hard-wrapped fragment bullets get collapsed to single-line bullets BEFORE the CHANGELOG / PR body / release body sees them. State machine preserves blank-line paragraph separators, code fences (including indented fences inside bullets), and column-0 unit boundaries. The convention in docs/conventions.md is now defensive rather than advisory.

Substrate-care fix-during-cut (commit a521998)

release-prep.sh ran cleanly but silently dropped fragment 3.fixed-2.md because fragment_kind_from_path extracts the LAST dot-segment of the basename as the kind (fixed-2, not fixed). The hyphen between fixed and 2 was my naming-convention violation — <id> allows hyphens but <kind> doesn't, and the suffix between kind and .md isn't covered by the parser.

The first cut (commit 75a5134) was missing the newline-normalization fragment's prose entirely. Commit a521998 folds the prose in manually + drops two duplicate commit-subject bullets the toolkit's own design contemplates ("review the prep PR + dedupe manually if it matters" — docs/conventions.md).

Filed as substrate issue: release-toolkit#9 — the fragment-parser bug should be fixed in v0.2.1 (loud warning on unrecognized basenames) + v0.3 (smarter kind matching that supports multi-fragment-per-id).

Acceptance criteria

  • CHANGELOG.md ### Fixed section reflects both v0.2.0 fragments (runs-on + newline normalization)
  • VERSION bumped to 0.2.0
  • release-prep/v0.2.0 branch created + pushed
  • PR opened
  • Manual fragment-fold + commit-subject-dedupe applied (a521998)
  • Fragment-parser bug filed as release-toolkit#9
  • (Operator) — merge gate

Substrate-care discipline reminder

n=2 today on the same family: verify substrate state empirically before assuming named-state matches reality:

  1. Earlier today: assumed sed-scope matched intent-scope (post-PR-#5 cleanup; operator caught)
  2. Now: assumed <id> allowed hyphens like fragment-naming docs suggested (silent fragment drop; I caught via file-count probe)

Both are sub-shapes of feedback_path_coverage_completeness_discipline applied to different surfaces (substitution-scope + naming-grammar-scope). Held bus-resident at n=2; if 3rd structurally-distinct surface earns n=3, promote-to-pin signal fires per Surveyor 7ad0's discipline.

Next sequence

  1. Operator merges THIS PR (the prep PR)
  2. PR-merge fires release-draft.yml (currently fails because no consumer-side workflow on main yet — toolkit's own release-draft.yml is in PR #6)
  3. Manual workaround: run scripts/draft-release.sh --version 0.2.0 locally to create the draft Forgejo release
  4. Operator clicks Publish in Forgejo UI → tag v0.2.0 created
  5. Operator merges PR #6 (slice 3) → toolkit's own consumer workflows on main
  6. v0.2.1+ fully dogfoods

— QM, 2026-06-24, cut + manual fragment-fold.

## Release v0.2.0 Auto-generated by `release-prep.sh --bump minor`, then manually fixed up to fold in a fragment the toolkit silently dropped (see "Substrate-care fix-during-cut" below). ## Changes (CHANGELOG.md ### Fixed section) - **`runs_on` is now a required workflow_call input** on all 4 reusable workflows. v0.1.0 hard-coded `runs-on: docker` which isn't a valid runner label in most Forgejo deployments; the reusables would never schedule. Consumers MUST now specify `runs_on: <label>` matching a label in their Forgejo config. **BREAKING for v0.1.0 consumers** (no consumers existed at v0.1.0 release time, so practical blast radius is zero); update `with:` blocks to include `runs_on:` when pinning to `@v0.2.0`. See [docs/integration.md](docs/integration.md#about-the-runs_on-parameter). - **Defensive newline normalization** in `fragments.sh::categorize_fragments`. Hard-wrapped fragment bullets get collapsed to single-line bullets BEFORE the CHANGELOG / PR body / release body sees them. State machine preserves blank-line paragraph separators, code fences (including indented fences inside bullets), and column-0 unit boundaries. The convention in `docs/conventions.md` is now defensive rather than advisory. ## Substrate-care fix-during-cut (commit a521998) `release-prep.sh` ran cleanly but silently dropped fragment `3.fixed-2.md` because `fragment_kind_from_path` extracts the LAST dot-segment of the basename as the kind (`fixed-2`, not `fixed`). The hyphen between `fixed` and `2` was my naming-convention violation — `<id>` allows hyphens but `<kind>` doesn't, and the suffix between kind and `.md` isn't covered by the parser. The first cut (commit 75a5134) was missing the newline-normalization fragment's prose entirely. Commit a521998 folds the prose in manually + drops two duplicate commit-subject bullets the toolkit's own design contemplates ("review the prep PR + dedupe manually if it matters" — `docs/conventions.md`). Filed as substrate issue: **release-toolkit#9** — the fragment-parser bug should be fixed in v0.2.1 (loud warning on unrecognized basenames) + v0.3 (smarter kind matching that supports multi-fragment-per-id). ## Acceptance criteria - [x] CHANGELOG.md ### Fixed section reflects both v0.2.0 fragments (runs-on + newline normalization) - [x] VERSION bumped to 0.2.0 - [x] release-prep/v0.2.0 branch created + pushed - [x] PR opened - [x] Manual fragment-fold + commit-subject-dedupe applied (a521998) - [x] Fragment-parser bug filed as release-toolkit#9 - [ ] (Operator) — merge gate ## Substrate-care discipline reminder n=2 today on the same family: **verify substrate state empirically before assuming named-state matches reality**: 1. Earlier today: assumed sed-scope matched intent-scope (post-PR-#5 cleanup; operator caught) 2. Now: assumed `<id>` allowed hyphens like fragment-naming docs suggested (silent fragment drop; I caught via file-count probe) Both are sub-shapes of `feedback_path_coverage_completeness_discipline` applied to different surfaces (substitution-scope + naming-grammar-scope). Held bus-resident at n=2; if 3rd structurally-distinct surface earns n=3, promote-to-pin signal fires per Surveyor 7ad0's discipline. ## Next sequence 1. Operator merges THIS PR (the prep PR) 2. PR-merge fires `release-draft.yml` (currently fails because no consumer-side workflow on main yet — toolkit's own `release-draft.yml` is in PR #6) 3. Manual workaround: run `scripts/draft-release.sh --version 0.2.0` locally to create the draft Forgejo release 4. Operator clicks Publish in Forgejo UI → tag v0.2.0 created 5. Operator merges PR #6 (slice 3) → toolkit's own consumer workflows on main 6. v0.2.1+ fully dogfoods — QM, 2026-06-24, cut + manual fragment-fold.
Generated by release-toolkit release-prep.sh.

Tracker: frankenbit/release-toolkit#1
Substrate-care miss caught manually: `fragment_kind_from_path` extracts
the LAST dot-segment of the basename as the kind. The fragment
`3.fixed-2.md` got kind=`fixed-2` (invalid; not in FRAGMENT_KINDS) and
was silently skipped during the v0.2.0 cut. The runs-on parameterization
fragment landed, but the newline-normalization fragment did NOT.

Manual fold-in of `3.fixed-2.md`'s prose into the v0.2.0 ### Fixed
section. Also drops the duplicate commit-subject bullets (the toolkit's
own design contemplates "review the prep PR + dedupe manually if it
matters" per docs/conventions.md):

- "**scripts/lib**: defensive newline normalization in categorize_fragments"
  → dropped; superseded by the long-form fragment prose
- "**workflows**: runs_on required input — drop hard-coded docker label"
  → dropped; superseded by the long-form fragment prose

The fragment-parser bug will be filed as a v0.2.x or v0.3 follow-up
issue. Workaround for now: don't use hyphens in `<id>` (use `3a.fixed.md`
not `3-2.fixed.md`, or add a separator other than dot before the suffix).

Tracker: frankenbit/release-toolkit#3 (v0.2.0 prep PR manual fixup)
alex approved these changes 2026-06-24 16:53:07 +02:00
alex merged commit a521998dba into main 2026-06-24 16:53:10 +02:00
alex deleted branch release-prep/v0.2.0 2026-06-24 16:53:10 +02:00
Sign in to join this conversation.
No description provided.