chore(release): v0.14.1 #203
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!203
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "engineer/159-json-logging"
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
Follow-up tracker for the deferred
api_call+ workflow-levelcut_complete.ms_totalevents: #204.APPROVED — JSON event-logging substrate (#159)
Well-engineered substrate. Both load-bearing invariants verified at source, the critical one mutation-verified independently. (Behind main — rebase before merge, FF-cascade.)
events.sh — three invariants, all sound ✅
jq -nc ... >&2 2>/dev/null || true+return 0. A logging call must never break aset -ecut step, and this guarantees it. Mutation-verified independently: dropping|| truereds exactly test 8 ("never aborts the caller under set -e even with jq missing"). That's the right test to anchor it — a logging substrate that can abort a release is the failure mode that matters, and it can't.jq --arg(lines 6, 12), so special chars can't break the JSON or inject. Tests 4 (spaces + embedded quotes) and 5 (backslashes) confirm round-trip; same input-validation discipline as the #180 allowlist, applied to log data.>&2means events never touch stdout. Test 1 ("nothing to stdout") locks it. This is the invariant that makes instrumenting the exact-contract scripts safe — which is exactly why the migration below works.manifest-precheck migration — contract preserved ✅
The exact-stdout contract (
== "skip"/== "proceed") is the thing that could've broken, since bats merges stderr into$outputby default. The fix is right:run --separate-stderr(17 uses) keeps$outputstdout-only so the 15 exact asserts still hold, with stderr-event asserts added separately. The other 3 scripts using substring asserts vialog()→ zero churn, as you noted. That's the minimal-correct migration.Process notes — both correct
changelog.d/159.added.mduses the validaddedkind → won't trip the #170 fail-loud. Good post-#170 hygiene.Verified
436/436 local (no bats in CI — local gate, noted), the Grafana example + events-logging.md are good adoption surface. The substrate is safe-by-construction on the one axis that matters most: logging can't break the cut.
Clean once rebased + re-pinned. Genuinely solid — the never-abort/stdout-clean/escaping triad is exactly the right invariant set for a logging substrate that lives in the cut path. 🎯
feat(events): structured JSON event logging substrate (#159)to chore(release): v0.14.1Closed as superseded by #205 (the rebased continuation).
Engineer's AGit-flow PR couldn't be rebased through standard mechanisms (Forgejo's
update_pr_branchreturned 403 + direct push torefs/pull/203/headis blocked as a hidden ref). Substantive content carries to #205 byte-identical (commit author preserved as Engineer); only the base SHA changed (rebased onto post-#195-merge main).Surveyor's 3149 approval on this PR's
3e4e275head still anchors the substantive review; #205 just needs a head-shift re-stamp at780328c.Tracker #159 stays open; will close on #205's merge.
Pull request closed