From 62a7fbf695405d8804220c1cf1b280ee8d612082 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Wed, 19 Aug 2026 15:02:32 -0700 Subject: fix(agent-text): relay through a host that holds the account The relay target was hardcoded to velox, and velox's reinstall wiped its signal-cli registration. A send from velox then relayed to itself, and any machine without a local account relayed into the same dead end. Only ratio still worked, because it holds the account as a linked device and sends directly. The old failure text blamed velox for being down. It was up, just unregistered. The target is now an ordered list, overridable per invocation, and the loop skips any candidate matching this machine's name. The skip is the actual fix. Reaching the relay branch means the account isn't local, so relaying to ourselves can't work whatever the list order. Both sides of that comparison are domain-stripped, or an FQDN nodename would silently disable the guard. A relay host that is reachable but unregistered exits 1, not 0, so the loop advances instead of reporting a delivery that never happened. I checked that rather than assume it. Silent non-delivery is the worst failure this tool has, and a test pins it. The failure message now names which branch failed, so a local send failure no longer sends anyone chasing the tailnet. protocols.org and the pager runbook both asserted the topology the reinstall destroyed. They now say how to derive which machine holds the account instead of naming one. The snapshot form is what rotted. The runbook's linking recipe is marked impossible for now, since the primary's keys are gone and a linked device can't authorize another. --- scripts/signal-receive.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'scripts/signal-receive.sh') diff --git a/scripts/signal-receive.sh b/scripts/signal-receive.sh index 8c3ef01..ffe292c 100755 --- a/scripts/signal-receive.sh +++ b/scripts/signal-receive.sh @@ -1,8 +1,10 @@ #!/usr/bin/env bash # signal-receive.sh — drain the Signal pager account's inbound queue. # -# The pager identity (+15045173983) lives on velox (primary) and any linked -# device (ratio). The Signal protocol expects a registered account to receive +# The pager identity (+15045173983) lives on whichever machines hold it in their +# local signal-cli — check with `signal-cli listAccounts` rather than assuming; +# velox's 2026-08-13 reinstall wiped its registration and the old comment here +# named it as primary. The Signal protocol expects a registered account to receive # regularly; when it goes quiet, signal-cli prints a staleness warning # ("Messages have been last received N days ago") and the account drifts toward # an unhealthy state. This script pulls anything queued and exits, keeping the -- cgit v1.2.3