aboutsummaryrefslogtreecommitdiff
path: root/.ai/workflows/triage-intake.telegram.org
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-06-10 15:27:28 -0500
committerCraig Jennings <c@cjennings.net>2026-06-10 15:27:28 -0500
commit403f8b891d04780a99859ed7ef64efcc0f4f82f2 (patch)
treea903d67d46b2137eac1a95d23a4e517ec829ec80 /.ai/workflows/triage-intake.telegram.org
parent34c694567b24c7b22b68acb6e4b9860885eefa76 (diff)
downloadrulesets-403f8b891d04780a99859ed7ef64efcc0f4f82f2.tar.gz
rulesets-403f8b891d04780a99859ed7ef64efcc0f4f82f2.zip
feat(triage-intake): loud scan-failure rule + messenger plugin rework
The 2026-06-10 sweep shipped without Signal: a standalone signal-cli receive hung on the account lock while the signel daemon owned it, and the failure looked identical to a quiet source. The engine now renders any failed, hung, or skipped scan in a SCAN FAILED banner at the top of the summary. Quiet means the scan ran and found nothing. The signal plugin now detects which path owns the account before scanning: when the signel daemon is live it queries chat buffers through Emacs, and the standalone draining receive runs foreground-only when it isn't. The telegram plugin gets an at-a-glance lifecycle (docker-mode launch, scan, send, shutdown only if the scan started the server) and treats a real DM from a work contact as Action.
Diffstat (limited to '.ai/workflows/triage-intake.telegram.org')
-rw-r--r--.ai/workflows/triage-intake.telegram.org32
1 files changed, 31 insertions, 1 deletions
diff --git a/.ai/workflows/triage-intake.telegram.org b/.ai/workflows/triage-intake.telegram.org
index 68604bc..d855fcf 100644
--- a/.ai/workflows/triage-intake.telegram.org
+++ b/.ai/workflows/triage-intake.telegram.org
@@ -24,6 +24,35 @@
:SUBAGENT_OVER: 40
:END:
+** Quick reference — full lifecycle
+
+Telega does not autostart with the Emacs daemon. "Down" is its normal state
+unless Craig has Telegram open in Emacs. The scan therefore runs the full
+lifecycle every time, never skips because the server is down:
+
+1. Record prior state: TELEGA_WAS_RUNNING via (telega-server-live-p).
+2. Launch (only if not running):
+ emacsclient -e "(progn (setq telega-use-docker t) (telega t) 'started)"
+ The setq is mandatory defense: tdlib segfaults outside docker mode
+ (2026-06-09), and Craig's daemon currently has telega-use-docker nil.
+ Wait ~2s for Ready, then (telega--loadChats 'main) until telega--chats
+ is populated.
+3. Check messages: the maphash unread scan in ** Scan Step 2 (filters the
+ messageContactRegistered join-notice noise).
+4. Send (needs the server live; /voice personal first — Telegram
+ occasionally carries WORK communication to Kostya and Vrezh, so treat
+ sends with the same care as Slack):
+ emacsclient -e "(telega-chat-send-msg (telega-chat-get <CHAT-ID>) \"<body>\")"
+5. Shutdown (ONLY if step 1 recorded not-running):
+ emacsclient -e "(progn (telega-server-kill) (ignore-errors (telega-kill t)) 'stopped)"
+ Verify: telega-server-live-p → nil, no zevlg/telega-server container in
+ docker ps. If Craig had it running, leave it untouched.
+
+If any lifecycle step fails (docker image missing, server crash, daemon
+unreachable), the sweep reports it as SCAN FAILED at the top of the summary
+per the engine's failure rule — never as a silent skip. Craig gets real
+traffic here.
+
** Scan
Telegram direct messages and groups via telega.el in the running Emacs daemon.
@@ -148,7 +177,8 @@ and say so.
Bias: Craig's personal Telegram is *spam-dominated* with a thin layer of real
signal. The opposite of Signal (high signal/low volume) — here the volume is
high and almost all noise. Filter aggressively; surface only the few real
-threads.
+threads. Kostya and Vrezh occasionally reach Craig here, so a real DM from a
+work contact is Action, full stop.
- *Noise-trash (tally only, never itemized):*
- =messageContactRegistered= "joined Telegram" notices — always noise, no