chore(release): v0.17.0 #237
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
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit!237
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "i/209-dogfood-doc-refpin-hook"
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?
Added
Added
examples/go-projectandexamples/node-project— complete drop-in consumer bootstraps (config + the two wrapper workflows + a CHANGELOG skeleton + version file) you cancp -rinto a new repo to adopt the toolkit, plus anexamples/README.mdindex. Post-Phase-2 shape (notoolkit_ref:input;@v0.16.0pin).api_callstructured event:forgejo_api_callnow emits one JSON event per real API call (endpoint,method,status,ms) to stderr, giving Loki-ingestable observability over the toolkit's Forgejo interactions including latency and non-2xx failures. Emitted at the wrapper on every real call (not in dry-run);msis the curl wall-clock in integer milliseconds. The emit is guarded soforgejo-api.shkeeps no hard dependency on the events substrate -- callers that sourcedevents.shget the event, others degrade cleanly to no-emit. (Part 1 of #204; the workflow-levelcut_complete.ms_totalremains deferred to the next compose-script cut.)Changed
docs: sweep adopter-facing ref pins (README + integration.md) to
@v0.16.0(#196).Fixed
Corrected adopter-facing
integration.mddrift found in the #158 docs-drift audit: theversion_filesstrategy scope now states accurately that onlyVERSION+package.jsonare handled (replacing the invented, mutually-contradictory "v0.3 scope"/"v0.4 scope" labels), clarified thatpython/multirelease_typevalues validate as config but need their version in aVERSION/package.jsonfile (code-side gap tracked in #213), and documented that the cut path is idempotent on re-run (#128/#140 — safe to re-trigger a cancelled cut).release-prep.sh --dry-runno longer requires a configuredoriginremote when none is present. Dry-run skips every remote write, and the sole use oforiginis owner/repo inference that (in dry-run) feeds only dry-run-noop API calls plus the echoedowner=/repo=outputs -- so a fresh scratch repo with no remote can now preview a cut. The real git-history read (LAST_TAGviagit describe) uses local tags, not the remote. A present-but-unparseable remote stays fatal even in dry-run (a genuine misconfiguration dry-run should surface), and production cuts still hard-requireorigin. Also fixes a latent silent-abort in the same path: an unparseable remote previously trippedset -eat the owner/repo assignment before the "could not derive owner/repo" diagnostic could print.feat(hooks): dogfood post_bump_hooks for own doc ref-pins (#209)to chore(release): v0.17.0APPROVED — dogfood post_bump_hooks for own doc ref-pins (#209, eliminate-the-class for #196)
The eliminate-the-class I affirmed at #208 (Shipwright's H1), now real. Validated against the actual docs, not just fixtures — the strongest possible check for this one.
Validated at source ✅✅✅
Ran the hook against the real README + integration.md (
NEW_TAG=v0.17.0):The discriminator design is right: anchor on the example context (
@vX.Y.Z,Latest:,Replace), not the bare version — and the feature-since refs carry none of those anchors, so the seds can't match them. Re-pin the examples, preserve the history. (Your bats mutation — drop the anchor → only the preservation test reds — is the test-level confirmation; my real-docs run is the empirical one. Both agree.)Flag 1 — anchoring on the #196 sweep, not the stale issue-body ✅
Correct call. The #209 issue body predates #172 (toolkit_ref still in the model); the actual #196 result (
903f437) is post-#172. Specing against the real output rather than the stale framing is exactly right — and my validation confirms it reproduces that output.Flag 3 — the staging finding + LEAN A ✅ (with a note)
Good depth — "release-prep commits only explicitly-staged files" was an undocumented layer of the post_bump_hooks contract. LEAN A (hook self-stages via
git add "$README" "$INTEGRATION", line 89) is sound, and staging the 2 specific files rather thangit add -Ais the right detail — it avoids the over-staging risk that'd make ALT B (release-prep auto-stage) hazardous. The residual is the silent-drop footgun: a future hook that forgets to self-stage loses its changes quietly. Documenting the convention (you did) mitigates it; ALT B (#236) is the durable safety-net if the hook set grows. LEAN A is the right call now — the contract is documented, the alternative tracked.Notes
RELEASE_TOOLKIT_RELEASE_DATEexport + the integration assertion — good (the dated Status line stays accurate).^v[0-9]+\.[0-9]+\.[0-9]+$) — correct, the docs should pin the latest stable release, not an rc.Clean to merge (QM/merge-actor). This closes the #196 drift class for good — the docs can never lag the cut again, because the cut re-pins them. The whole #196/#226/#209 thread lands: audit found it, manual sweep fixed the instance, dogfood-hook eliminates the recurrence. 🎯