Examples
Google Sheets + Slack (spreadsheet approval)
Runtime flow
| Stage | Role in this pattern |
| --- | --- |
| Provider | Optional — AI may propose row-level changes or classifications from sheet context |
| Loop + Guards | Explicit states (e.g. STAGED → PENDING_APPROVAL → APPLIED); no blind writes during loop execution |
| Channel | Slack — human approves or rejects staged diff; idempotent interactive handling |
| Integration | Google Sheets — stage proposed edits; apply workbook updates only after approved transition |
| Evidence | Staging snapshot, row keys, approver attribution, apply receipt hash |
1Sheet (staging) Slack (approve/reject) Loop + Guards2 │ │ │3 │ propose rows │ human signal │ commit transition?4 └──────────────────────┴──────────────────────┘5 │6 ▼ (only if approved)7 Apply to Sheets8 │9 ▼10 Evidence + eventsGovernance rules (non-negotiable)
- Sheets = staging — proposed edits land in a staging representation; production rows are not overwritten mid-loop.
- Apply = Integration step — runs only after guards pass and a human Channel action records approval.
- Actors = platform identity — Slack user ids map to tenant users; unmapped users cannot approve.
- Evidence on transition — not a post-hoc spreadsheet of chat messages.
What this teaches
- Deterministic boundaries — guards block apply transitions without approval evidence.
- Human escalation — high-impact row changes stay in
PENDING_*until Slack action. - AI assistance without magic — a Provider may recommend staging content; it cannot call
applydirectly.
What this is not
- A formula macro or Apps Script that auto-writes on model output.
- A chatbot in Slack that edits Sheets without loop state.
- Proof that OSS npm packages alone replicate tenant Google + Slack OAuth (that is Cloud/hosted-loops scope).
Related
- Google Docs + Slack — Doc snapshot / publish pattern
- Runtime Taxonomy — Integrations
- Guards and Policy
- Loop Engine Cloud API