diff options
| author | Craig Jennings <c@cjennings.net> | 2026-07-20 16:47:39 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-07-20 16:47:39 -0500 |
| commit | 61454894349e75b593ede5901a7b348ad580d3ce (patch) | |
| tree | ca88583c053049e53299612bbad632b39f466a9c /docs/design | |
| parent | 302b062680c8fbd9743d4e083154ac5fc314955a (diff) | |
| download | rulesets-61454894349e75b593ede5901a7b348ad580d3ce.tar.gz rulesets-61454894349e75b593ede5901a7b348ad580d3ce.zip | |
feat(notify): reserve "page me" for desktop, "text me" for Signal
"page me" and "text me" now name distinct channels: page is the desktop notification, text is the Signal phone push, and "text and page me" fires both. Before, "page me" defaulted to desktop and the phone was an unnamed "on my phone" variant, so you couldn't name the phone without naming the machine.
I renamed the Signal tool agent-page to agent-text to match, with a deprecated agent-page shim delegating to it so callers and other machines don't break before their next install. The dispatch and tests are otherwise unchanged. I rewrote protocols.org "Reaching Craig", page-me.org, and work-the-backlog's away-run logic around the three phrasings, and updated the runbook.
Diffstat (limited to 'docs/design')
| -rw-r--r-- | docs/design/2026-07-20-signal-pager-runbook.org | 39 |
1 files changed, 22 insertions, 17 deletions
diff --git a/docs/design/2026-07-20-signal-pager-runbook.org b/docs/design/2026-07-20-signal-pager-runbook.org index 671b1ec..f31ed18 100644 --- a/docs/design/2026-07-20-signal-pager-runbook.org +++ b/docs/design/2026-07-20-signal-pager-runbook.org @@ -30,30 +30,30 @@ him; ratio holds it too, so a page still lands when velox is down. * Choosing a channel -"Page me" has two channels; the choice is where Craig is, and both work from any -agent runtime (nothing here is Claude-specific). protocols.org "Paging Craig" -is the short version pointed at every project; this runbook is the full one. +Two trigger words, two channels, and both work from any agent runtime (nothing +here is Claude-specific). protocols.org "Reaching Craig" is the short version +pointed at every project; this runbook is the full one for the Signal side. -- *At his laptop/desktop* — desktop notification, stays up until dismissed: +- *"page me"* — desktop notification, stays up until dismissed: #+begin_src bash notify info "Title" "Message" --persist #+end_src -- *Away from his machine* — the phone, over Signal: +- *"text me"* — the phone, over Signal: #+begin_src bash - agent-page "Message for Craig's phone" + agent-text "Message for Craig's phone" #+end_src -When in doubt, fire both — the desktop one is free and the phone one reaches him -if he's away. +- *"text and page me"* — both. The default when a run can't tell whether he's + away: the desktop one is free and the phone one reaches him if he is. -* Sending a page +* Sending a text -=agent-page= (shipped at =claude-templates/bin/agent-page=, installed to +=agent-text= (shipped at =claude-templates/bin/agent-text=, installed to =~/.local/bin= by =make -C ~/code/rulesets install=) is the interface. It hides -the machine topology by checking whether the pager account is registered in the +the machine topology by checking whether the account is registered in the local signal-cli: - If the account is local (velox's primary or a linked device like ratio), it @@ -76,7 +76,7 @@ ssh velox.tailf3bb8c.ts.net \ "signal-cli -a +15045173983 send -m 'your message' b1b5601e-6126-47f8-afaa-0a59f5188fde" #+end_src -Prefer =agent-page= over the raw command — it hardens the message for the remote +Prefer =agent-text= over the raw command — it hardens the message for the remote shell and handles the fallback. Reach for the raw form only when debugging. * Reading replies @@ -149,7 +149,7 @@ systemctl --user status signal-receive.service # confirm a clean receive - *signal-mcp:* on velox, Claude sessions may also expose a =signal-mcp= tool (=send_message_to_user=, same pager identity) configured in velox's global =~/.claude.json=. It works there but is invisible from any other machine and - from non-Claude runtimes, so =agent-page= is the portable habit. The old + from non-Claude runtimes, so =agent-text= is the portable habit. The old =page-signal= shell script was removed 2026-06-12 — do not resurrect it. - *Linking a device:* to add a second signal-cli as a linked device of the pager account (see the open decision below), provision it from the new machine and @@ -176,7 +176,7 @@ device wanting its own regular =receive= — so the warm-keeping timer moved fro velox-only home to the shared =common= package, running on both. Adding another daily driver later is the same handshake plus a dotfiles stow; -the timer and =agent-page= already generalize to "any machine holding the +the timer and =agent-text= already generalize to "any machine holding the account." * History @@ -188,6 +188,11 @@ account." Craig" rewritten around the two channels. - 2026-07-20 — this runbook; receive-timer script + units added; a manual drain cleared the 47-day staleness live; ratio linked as a device of the pager - account and its direct send verified; =agent-page= generalized to send directly - from any machine holding the account; receive timer moved to the shared - =common= package and enabled on both machines. + account and its direct send verified; the tool (still named =agent-page= that + morning) generalized to send directly from any machine holding the account; + receive timer moved to the shared =common= package and enabled on both machines. +- 2026-07-20 (later) — notification vocabulary split: "page me" is the desktop + channel, "text me" is Signal, "text and page me" is both. The tool was renamed + =agent-page= → =agent-text= to match, with a deprecated =agent-page= shim + delegating to it. protocols.org section renamed "Paging Craig" → "Reaching + Craig". |
