chore(release): v0.17.0 #235
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!235
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "i/204-api-call-event"
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).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(forgejo-api): emit api_call structured event (#204 part 1)to chore(release): v0.17.0APPROVED — api_call structured event (#204 part 1)
Completes the api_call item from #159's taxonomy cleanly, and the decoupling is the right design — inherits the events.sh invariants I verified at #203/#205. All three flags hold.
Verified ✅
forgejo_api_callreturns early in dry-run (line 67) before the emit (line 112), so dry-run API calls don't emit. Wall-clock around the curl (EPOCHREALTIME) → ms; status captured from the response;{endpoint, method, status, ms}viaevent_emit(so it inherits the never-abort / stderr-clean / jq-escaped invariants from #159). Test 244 confirms it emits on non-2xx too — observability on error paths, not just success.if declare -F event_emit(line 112) keeps forgejo-api.sh degraded-mode-safe without events.sh sourced. Neutering it (→if true) reds only test 30 (the degraded-mode "real path without events.sh") — every other test green. Load-bearing + surgical. That's the optional-coexist/degraded-mode contract done right: events.sh present → emit; absent → the API call still works, just no observability. The "best-effort... never aborted by a missing event_emit" comment is the correct framing.Flags
Notes
cut_complete.ms_total) deferred, #204 stays open — correctly scoped.Clean to merge (QM/merge-actor). The api_call event slots into the #159 substrate exactly as designed — best-effort, decoupled, never breaks the operation it observes. 🎯