aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/design/2026-06-15-auto-triage-intake-spec.org43
1 files changed, 43 insertions, 0 deletions
diff --git a/docs/design/2026-06-15-auto-triage-intake-spec.org b/docs/design/2026-06-15-auto-triage-intake-spec.org
new file mode 100644
index 0000000..1c7cd94
--- /dev/null
+++ b/docs/design/2026-06-15-auto-triage-intake-spec.org
@@ -0,0 +1,43 @@
+#+TITLE: Proposed engine addition — Auto mode (auto triage-intake)
+#+DATE: 2026-06-15
+
+* What this adds
+
+A new *mode* of the triage-intake engine: *auto mode* (auto triage-intake). It's a self-running monitor for when Craig is away from the desk but wants tight awareness — a loop that runs the standard triage on a short interval, accumulates rather than mutating, and hands Craig a controlled checkpoint to commit the batch.
+
+Origin: 2026-06-15, the morning Craig had to clear his day for a family emergency and wanted the desk watched while he was in and out. He asked for 20-minute sweeps that summarize what's come in for him, with an explicit command to process and commit the batch.
+
+* The mode
+
+** Cadence
+A loop (CronCreate / =/loop=) fires the triage on an interval — default *20 minutes*. Craig sets the interval.
+
+** Accumulate, don't mutate (the core difference from a normal run)
+A normal triage run writes the sentinel, creates =:quick:reactive:= todos, takes mail actions on confirmation, and is a one-shot. An auto-mode *sweep* does none of the mutations:
+
+- Does NOT advance the sentinel — the scan window grows from the last *close* until the next close, so nothing is dropped between sweeps.
+- Does NOT create todo.org tasks — accumulates them (in the session log) for the close.
+- Does NOT take mail actions (trash / mark-read / star).
+- Does NOT commit.
+- DOES run the full plugin scan, DOES update an active daily-prep (Update mode) and re-open it on change, DOES report.
+
+** End-of-sweep output
+Each sweep ends with two short sections:
+1. *Deltas* — what changed since the last sweep (one line if nothing).
+2. *Responses awaiting your acknowledgment* — every Slack reply, email, or message directed at the user that he hasn't explicitly acknowledged or had the agent answer. This is a *running list carried forward* across sweeps until the user acks each item or closes the triage. It exists because an away user's main need is "who's waiting to hear back from me," which a delta-only sweep loses the moment it scrolls past.
+
+** Close / stop commands (the checkpoint)
+The mutations are gated behind two user commands:
+
+- *"close the triage"* — finish the mail + sentinel processing, add all accumulated todos (asking the user questions along the way), commit and push, then *keep looping* (next sweep on the normal interval). This is the "flush the batch and carry on" checkpoint.
+- *"stop the triage"* — the same close processing, then *stop the loop* and revert to manual triage (run only when asked).
+
+* Why it's worth adding to the engine
+
+The standard engine is one-shot and mutating, which is right for an at-the-desk "what's new?" glance. It's wrong for unattended monitoring: running it every 20 minutes would spray reactive todos, advance the sentinel past unprocessed items, and commit noise without review. Auto mode separates the cheap, frequent *watching* from the deliberate, gated *committing* — and adds the away-user's missing primitive, the running unacknowledged-responses list.
+
+* Companion notes
+
+- The interval loop is the delivery mechanism (CronCreate session-only, or a durable schedule); the mode is the behavior. They compose.
+- "Responses awaiting acknowledgment" tracking needs a small piece of state. In a session it can live in the session-context log; if the engine wants it durable across sessions, a tiny =.ai/triage-unacked.org= (or similar) is the natural home — flagged as a design choice for the rulesets side to decide.
+- Deltas-only reporting (the 2026-06-11 ruling) and loud scan-failure surfacing both still apply inside each sweep.