{
  "receipt": "gdrive-persistent-ingest",
  "recorded": "2026-07-17T21:45:00-05:00",
  "account": "chris@ax0s.io Google Drive (Google Workspace)",
  "contract": {
    "scope": "file metadata, containment, ownership, and sharing relations for one account; Google Docs body text is exported, secret-redacted, then truncated to a 20,000-character cap",
    "excluded": "Sheets, Slides, and binary file content (metadata only); trashed files",
    "budgets": "300 items / 480 seconds per run; bootstrap and periodic full re-listing (14-day rebuild cadence) drain under the same budget with checkpointed resume"
  },
  "pipeline": {
    "source": "ax0s-ingest v0.1.0 (versioned source + 248-test suite)",
    "runtime": "systemd user timer ax0s-ingest-gdrive.timer, 5-minute cadence, hub host; secrets supplied per-unit via systemd LoadCredential",
    "write_path": "ax0s-memory REST /api/remember + /api/fabric/write (gate-receipt checked)"
  },
  "connector_query": {
    "endpoint": "Google Drive API files.list + changes.list (OAuth2 refresh-token flow)",
    "result_class": "ok",
    "seed_window": "generation rebuild: full Drive listing, then the incremental changes feed"
  },
  "sync": {
    "files_ingested_at_record": 1700,
    "per_run": "300-item budget per 5-minute run; backlog retained between runs (bootstrap rebuild in progress at record time)",
    "raw_corpus": "project gdrive (secret-redacted snapshots; no owner identity in corpus)",
    "raw_record_example": "record:r_9f9d33983d36",
    "pointer_record_example": "record:r_efa74ef92c63",
    "fabric": "domain comms on slug ax0s — file, person, organization, topic, project entities"
  },
  "checkpoint": {
    "mechanism": "changes startPageToken plus mid-listing page tokens persisted atomically during the run; a stale listing token is detected and re-listed once per run; a budget pause resumes exactly where it stopped",
    "scheduled_run_observed": "2026-07-17T21:34:37-05:00 timer run wrote 300 items and retained backlog"
  },
  "deduplication": {
    "mechanism": "per-file seen ledger (content hash, cap sized to the full listing) + supersede_same_key on gdrive/file/<id>; one live pointer per file superseded in place; removal tombstones are written only after a files.get probe confirms the file is gone"
  },
  "later_recall": {
    "query": "drive file (hybrid recall, slug ax0s, drive-file-pointer tag)",
    "hit": "drive-file pointer record:r_efa74ef92c63 (machine-generated dataset manifest source_manifest.json) surfaced, linking corpus snapshot record:r_9f9d33983d36",
    "result_class": "ok"
  },
  "redaction": "Google Docs text is secret-redacted before the truncation cap is applied, so a secret straddling the cap cannot leak its head; corpus snapshots carry no identity — normalized owner and sharing emails live only on pointer records",
  "limitation": "This receipt records a bootstrap in progress: 1,700 files of a larger backlog ingested at record time under the per-run budget. It proves persistent Drive/Docs ingest with checkpoint, deduplication, and one later recall on the recorded date; it does not prove a completed bootstrap, indefinite continuous operation, production health, or customer availability. Sheets and Slides content is not ingested."
}
