Repository navigation
#39 Liveness check-in for processor run (co-processor-live) - #42
Merged
Merged
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A hung Status never delays a command; a wedged loop goes silent while the event loop stays up; empty reads, backoffs and each reclaimed message are progress. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… timeout Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The starting record names it: on <id>, off, or off for a missing key. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…fallback Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Member
Author
|
The table moved to CannObserv/status#29: status#24 had closed on 2026-10-07, before the table was posted there. The monitor id will come from #29. |
30 tasks done
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gregoryfoster
marked this pull request as ready for review
October 9, 2026 21:01
Without it a missing status-checkin.key failed the smoke's transient unit (exit 243, probed) and switched the deploy back, where the service itself starts with liveness off. systemd-run unescapes the \n (probed). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A bug outside tick's own handlers ended the task silently: the monitor went missing with no record why, and processor run's stop re-raised it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Member
Author
|
Shipped: FF-merged to main at |
This was referenced Oct 10, 2026
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.
Refs #39. Plan:
docs/plans/2026-10-08-39-liveness.md. The table is on CannObserv/status#29 (#24 had closed). The monitorco-processor-live=01M4H5FH3PTPGEB24XYQJ4NG7Awas created disabled, and its id is indeploy/processor.service.What:
processor runchecks inokto Status'sco-processor-liveevery 300 s, only while the consume loop has made progress within 605 s (reclaim_min_idle_ms + read_block_ms). It never sendsalert: silence past the 900 s grace is the page.processor.liveness.Heartbeat: a task besideConsumer.run.Consumer.last_progressis stamped after every step (backoff included) and every message (reclaim walks included).Consumer.backing_offgoes in the variables.StatusSettingsis shared bySettings(live_monitor_id,live_interval_s,live_checkin_timeout_s< interval) andDriftSettings. The drift unit still needs no broker settings.startingrecord gainsliveness:on <id>,off, oroff: missing the status-checkin-key credential, plus an ERROR. A missing key never stops the service.deploy/processor.serviceloadsstatus-checkin-key, with the\nfallback.missing, the records, the grace, deliberate stops, rollback past Liveness check-in for processor run (co-status monitor co-processor-live) #39), the containment host check over both keys, spec §2/§3, AGENTS.md.Done-when tests:
test_a_hung_status_never_delays_a_command: Status takes the connection and never answers, and a command is processed while the check-in hangs.test_a_wedged_loop_goes_silent_while_the_event_loop_stays_up.test_the_child_cannot_read_the_real_secretswith the Status key, on disk and as the unit's credential. It skips whereexedevcan't read it; DEPLOYMENT § Containment'skeyloop is the live evidence.Review: CR 1–5 are applied, one commit each (see the plan's "Amended in review"). The real one is CR 1: the deploy's smoke run now carries the unit's
SetCredential=fallback, so a missing Status key can't fail a deploy.After merge:
scripts/deploy.sh(after 2026-10-09T21:35Z needs no watcher#326 heads-up).okon status#29.🤖 Generated with Claude Code