Repository navigation
chore(release): v0.12.4 - #207
Merged
Merged
Conversation
Carries 0.12.3's entries as well. v0.12.3 was never tagged, so nothing has shipped since v0.12.2 -- which is what the daemons on alkaturbo are running -- and this is the first release that would reach a running daemon with any of it. What is in it beyond 0.12.3: - #204 the dev lane posted "a PR will be opened for review" before the worker started and never returned to the issue when the worker exited non-zero, so that sentence stood on a beta tester's own ticket for eighteen hours; 163 consecutive failed dispatches over two days told nobody while both units stayed active (running); and the exit code and the worker's output were both discarded, so the only durable evidence of why they failed was that each took about two seconds. Schema and config additions are additive and defaulted -- sessions gains output_tail, there is a new dispatch_health table, and an alerts block takes its defaults -- so no operator edit is needed. Bump and changelog only. The tag and the release are not cut here: publish.yml fires on release:published and ships to PyPI by itself, so that step is outward-facing and is Oscar's.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bump and changelog only. The tag and the release are not cut here —
publish.ymlfires onrelease: publishedand ships to PyPI by itself, so thatstep is outward-facing and is Oscar's.
mainalready carriedversion = "0.12.3"from #203 and v0.12.3 was nevertagged, so nothing has shipped since v0.12.2 — which is what the daemons on
alkaturbo are running. This is the first release that would reach a running
daemon with any of it, so the changelog entry carries 0.12.3's content as well.
What is in it beyond 0.12.3
#206, closes #204. Three defects on the dispatch failure path, with one
symptom in common: the only evidence was an absent message, and an absent
message is indistinguishable from an uneventful day.
started and never returned to the issue when the worker exited non-zero, so
that sentence stood on the beta tester's own ticket for eighteen hours.
systemd units stayed
active (running).sessions.claude_exit_codewas never written on the failure path and noworker output was retained, so the only durable evidence of why 163
dispatches failed was that each took about two seconds.
A fourth was found while wiring the second:
failure_textwas imported insideif is_task:and called in the shared failure branch, so the❌ Failed on #Nmessage could never be sent for a dev issue — the lane the beta tester's
ticket was dispatched on.
Schema and config
Additive and defaulted, so no operator edit is needed:
sessions.output_tail— a scrubbed, capped tail of the worker's final output.dispatch_healthtable.alertsblock (alerts.enabled,alerts.consecutive_dispatch_failures,default 3).
The migration was run against a copy of the live database — the real schema
with 3,730
sessionsrows: the columns are added, no rows are lost, reopeningis a no-op, and a second connection can still write afterwards, which is the
check that matters because the poller and the bridge both open
state.db. Thelive config loads unchanged, 86 repos, with
alertstaking its defaults.Measured
uv run --extra dev pytest tests/— 1316 passed, 0 skipped, on3578268,run from this worktree on alkaturbo against a clean tree. #206 carries the
review trail: five rounds (three warm, one cold reviewer, one verify), a
44-mutation sweep all red twice, and the known limits.
Deploy, after the release
--no-cacheis not optional —--forcealone installs stale cached code andreports success. Both daemons share
state.db, so restart both.