chore(release): v0.17.0 #238
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!238
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "repin/v0.17.0-rc.1"
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.)The toolkit now dogfoods its own
post_bump_hookson its own docs: a new hook (scripts/hooks/update-doc-version-refs.sh), wired inrelease-toolkit.yml, re-pins the adopter-facing example refs inREADME.md+docs/integration.mdto the freshly-cut tag on every cut -- eliminating the manual doc-ref-pin drift class (#196 was the recurring manual fix; Shipwright #157 found the dogfooding gap). The hook preserves historical "feature-since" references (e.g.v0.12.0+) and pins only the@vX.Y.Z/Latest:/Replaceexample shapes. A newRELEASE_TOOLKIT_RELEASE_DATEenv var is exported to all post_bump_hooks (the cut date, matching the CHANGELOG heading) so hooks can refresh dated examples. The post_bump_hooks docs now also document the staging convention (hooks mustgit addtheir own changes; release-prep commits only staged files).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.chore: re-pin self-bootstrap to v0.17.0-rc.1 (#172)to chore(release): v0.17.0APPROVED — re-pin @v0.17.0-rc.1 (second post-Phase-2 re-pin)
Clean, and the detached-bake invariant holds again — the mechanism is now proven on its second repin.sh exercise. FF onto main (
cb321697).Verified ✅
release.yml+manifest-check.ymlpin onlyuses:@v0.17.0-rc.1— notoolkit_ref(the Phase-2 shape).e4c3dd31— genuinely detached (≠ main HEADcb321697) →BUILD_BAKED='v0.17.0-rc.1', while main HEAD stays'main'. The bake lives on the tag, main stays clean. Same as #224, holding on the second exercise.feat/minor, #234 dry-run-relax isfix/patch (subsumed). So v0.17.0, and the rc name reflects the walk.Note
The cumulative-batch-into-one-repin discipline (#234/#235/#237 → one re-pin) is the right call — minimizes the rc-churn that a per-PR re-pin would cause. And batching is exactly why the version walk lands on minor cleanly (the feats dominate).
Clean to merge (your gate). Once merged → main's check-self-bootstrap green → the rolling PR (75473c2a) ready for the v0.17.0 cut, carrying today's Phase-2-dogfood + api_call + dry-run-relax. Ping me for the §6 + cut when it fires — I'll run the standard close + watch the post-merge re-pin's check-green (the repin.sh self-bootstrap loop). 🎯