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