hq-watchdog: page instead of steering a resident thread #23

Merged
founder merged 1 commit from hq-watchdog-no-steer into main 2026-08-01 08:48:20 +00:00
Owner

The watchdog POSTed every okdegraded transition to the dispatcher's SMS webhook, which enqueued an assistant steer. The state gate suppresses repeats but not flapping, so an oscillating host produces a steer per flip — 213 were queued on 2026-08-01, ~35/day, each a full agent turn spent reading key.store HQ ... ok.

Wrong channel for a status line that needs no decision. Now pages first (notifies without occupying the identity thread), with the direct communications path as last resort.

send_dispatch and its two env vars are removed. agentDispatcherSMSWebhookSecret stays — the dispatcher still serves real inbound SMS on that webhook.

🤖 Generated with Claude Code

The watchdog POSTed every `ok`↔`degraded` transition to the dispatcher's **SMS webhook**, which enqueued an **assistant steer**. The state gate suppresses repeats but not flapping, so an oscillating host produces a steer per flip — **213 were queued** on 2026-08-01, ~35/day, each a full agent turn spent reading `key.store HQ ... ok`. Wrong channel for a status line that needs no decision. Now pages first (notifies without occupying the identity thread), with the direct communications path as last resort. `send_dispatch` and its two env vars are removed. `agentDispatcherSMSWebhookSecret` stays — the dispatcher still serves **real** inbound SMS on that webhook. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
hq-watchdog: page instead of steering a resident thread
Some checks failed
Release: If Needed / Check (Release Needed) (push) Successful in 5s
Deploy: Web / Deploy (Web) (push) Failing after 9s
Deploy: API / Deploy (API) (push) Successful in 2m52s
c90435526d
The watchdog POSTed every ok<->degraded transition to the dispatcher's SMS
webhook, which enqueued an assistant steer. The state gate only suppresses
repeats, not flapping, so a host that oscillates produces a steer per flip:
213 were sitting in the queue on 2026-08-01, roughly 35 a day, each one a full
agent turn spent reading "key.store HQ ... ok".

That is the wrong channel for a status line that requires no decision. Send
paging first -- it notifies without occupying the identity thread -- and keep
the direct communications path as the last resort. Drop send_dispatch and its
two environment variables; agentDispatcherSMSWebhookSecret stays because the
dispatcher still serves real inbound SMS on that webhook.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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
key-store/key.store!23
No description provided.