From 403f8b891d04780a99859ed7ef64efcc0f4f82f2 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Wed, 10 Jun 2026 15:27:28 -0500 Subject: 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. --- .ai/workflows/triage-intake.telegram.org | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to '.ai/workflows/triage-intake.telegram.org') 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 ) \"\")" +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 -- cgit v1.2.3