operator-side republish heartbeat for cassette operations #47

Open
opened 2026-09-23 22:16:29 +00:00 by padreug · 0 comments
Owner

An operation is published only when an operator records one. If the relay or nostrclient is unreachable at that moment the op is still recorded, deliberately, since the notes physically moved, and the endpoint returns 503 saying it will ride out with the next publish. But nothing publishes on its own, so "the next publish" means the next time a human touches the dashboard.

The machine already heartbeats its state every 5 minutes. The operator should do the same for the ops window, so the channel self-heals in both directions rather than one.

Small: a periodic task walking active machines that have unacked ops in their window and republishing. Skip machines with nothing pending.

Context: docs/adr/004-cassette-state-synchronization.md in aiolabs/bitspire, under "Status of implementation", where this is recorded as the one gap left open on purpose. Shipped in #46.

An operation is published only when an operator records one. If the relay or nostrclient is unreachable at that moment the op is still recorded, deliberately, since the notes physically moved, and the endpoint returns 503 saying it will ride out with the next publish. But nothing publishes on its own, so "the next publish" means the next time a human touches the dashboard. The machine already heartbeats its state every 5 minutes. The operator should do the same for the ops window, so the channel self-heals in both directions rather than one. Small: a periodic task walking active machines that have unacked ops in their window and republishing. Skip machines with nothing pending. Context: `docs/adr/004-cassette-state-synchronization.md` in aiolabs/bitspire, under "Status of implementation", where this is recorded as the one gap left open on purpose. Shipped in #46.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
aiolabs/spirekeeper#47
No description provided.