Anyone DMing @Larry in Slack โ staff, you. Routed to slack-dm-handler.
@Larry in any channel he's in (#larry-page is the home). Routed to slack-mention-handler.
New email to larry@formia.co.nz. Pub/Sub push โ inbox-triage on each message.
New hire submits at welcome.formia.co.nz/<token> โ Larry notified, manager DM'd.
Pulse survey (4pm weekdays), weekly digests, daily project sweep, monthly bills.
Every Slack-triggered run MUST end with a user-visible reply. If the model tries to silently exit, Larry posts a fallback message. You never sit in silence after a DM.
If the runner crashes BEFORE creating a task_runs row (e.g. schema migration race), the queue handler posts an 'on a break' message to the trigger channel + DMs you the error.
Every failed run DMs you in Slack: error class, trace id, triggering user, HTTP code, link to /runs/<id> for full call log. No silent failures.
High-risk actions (external email, deletions, irreversible writes) are proposed not executed. You tap Approve in Slack to action them. Auto-expire 72h with a nudge.
Every 'I'll get back to you on this' creates a project.upsert row with a next-review date. Daily project sweep DMs you on overdue items so nothing stalls forever.
You hitting a button on the dashboard โ /tasks page, individual run-now buttons.
Slack interactive buttons (approve/decline), Gmail Pub/Sub. All auth-verified.
One run can enqueue another โ e.g. inbox-triage of an invoice โ file follow-up.
Any task_run sitting in 'running' state >20 min gets auto-marked failed (probably crashed mid-execution). Runs every drain cycle so the dashboard never lies.
Tools detect when their work implies another workflow โ e.g. incident.log spotting 'off for a week' forces a leave.request in the same run. Documented in house-rules ยง4.
Every action is an event row (kind, payload, traceId, taskRunId). Every run is a task_runs row with cost + tool calls + summary. Drillable from /runs and /events.
House rule: Larry can't say 'done' without proof โ every claim cites the receipt (Drive link, Slack ts, DB row id, gmail message id). Catches hallucinated 'I filed it'.
Larry's email inbox is internal โ you never read it. Anything needing your attention appears as a Slack DM with summary + email link + recommended action.