Gmail Source Adapter
Gmail capture is an account-scoped adapter owned by
source.absorb, not an independent knowledge-writing workflow.
Current State
email-sync is a paused Automation V2 definition. Reactivation requires the
exact Gmail read-only OAuth scope, root dependencies, and a healthy Daily
Brief. The collector writes private per-account digests below
raw/email/accounts/ and structured records below raw/email/.raw/<account>/.
Legacy merged digests remain preserved as earlier evidence.
Route
npm run sync:email
npm run brain -- workflow plan source.absorb source:email.archive
Each account has its own cursor and seen-ID namespace. A message is marked seen only after its complete account batch is durable. One failed account or message fetch holds global freshness without deleting successful artifacts.
Completion Proof
- every authorized account retains distinct provenance;
- the requested window and message revisions are recorded;
- no send, reply, archive, label, delete, or read-state mutation occurred;
- source review binds exact revisions to stable owners;
- any proposed owner diff appears once in Daily Brief.
Noise and signature rules are triage hints. Sender frequency is not authority to create a person/company page, and private email text is never promoted by the collector.
Timeline
- 2026-08-12 | Recast the legacy direct-enrichment runbook as a
scope-checked, account-isolated source adapter under
source.absorb; made output durability precede seen-state and freshness. Source:automations/email-sync.md;scripts/sync-email.ts - 2026-05-31 | Original email sync page created. Source:
automations/email-sync.md