#+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. * Addendum (work, 2026-06-15 17:16) Add a third end-of-sweep output line: the current date/time/timezone, on its own final line, via =date "+%A %Y-%m-%d %H:%M:%S %Z (%z)"=. Reason: on an away day with frequent unattended sweeps, the per-sweep stamp shows how fresh each summary is at a glance. Sweep output sections become: (a) Deltas, (b) Responses awaiting acknowledgment, (c) the timestamp. Implemented 2026-06-15; the stamp prints on quiet sweeps too, as proof the loop ran.