CONNECTOR GAPS — r1.4 cross-domain sweep

Date: 2026-08-26 Scope: the 15 sources named in whitepaper amendment r1.4 §14.1 ("Unified Connector Gateway"). This register exists because that section's draft claimed all 15 "normalize through one gateway into canonical envelopes" — code verification found that claim true for less than half of them. Method: read-only sweep of src/shared/virtuoso_models/transforms/mappers.py, miz-oki-adk-agents/kg-canonical-ingest/mappers/, services/service-marketing-connectors/, services/measurement-rails/, services/intent-*-extender/, miz-oki-adk-agents/boss/connector_gateway/tools.py, services/service-canonical-ingestion/.

There is no single named gateway

Three separate, non-unified mechanisms exist:

  1. service-canonical-ingestion (Cloud Run) — POST /api/v1/ingest wraps payloads in the live CanonicalEventEnvelope (schema v3.5.1, contracts/mizoki_contracts/envelope.py). Callers must pre-normalize before calling it; it has no MAPPERS[source] dispatch of its own.
  2. MAPPERS[source](raw) → ingest_gate(event, upsert_fn) — an in-process library dispatch (src/shared/virtuoso_models/journey_event.py:198; dict at src/shared/virtuoso_models/transforms/mappers.py:434-440), the "no side doors" path named in .claude/rules/03-canonical-architecture.md. This produces a different envelope shape (src/shared/virtuoso_models/schemas/journey-event.json) than service-canonical-ingestion.
  3. miz-oki-adk-agents/boss/connector_gateway/tools.py — a Boss-agent outbound action tool registry (gmail.search, drive.fetch, github.create_issue, bigquery.query, neo4j.cypher, calendar.create_event). This is not an ingestion path; it does not touch either envelope.

Connector-by-connector status

Source Status Path Evidence
Google Ads LIVE (code) service-marketing-connectors adapter + MAPPERS services/service-marketing-connectors/direct_connectors.py:511 (GoogleAdsAdapter); mappers.py:434-436
Meta Ads LIVE (code) service-marketing-connectors adapter + MAPPERS direct_connectors.py:466 (MetaAdsAdapter); mappers.py:435
SendGrid LIVE (code) MAPPERS + separate cell mapper mappers.py:436 (map_sendgrid); miz-oki-adk-agents/kg-canonical-ingest/mappers/email.py
Shopify PARTIAL, fail-closed MAPPERS + extender mappers.py:437 (map_shopify); services/intent-shopify-extender/main.py (SHOPIFY_WEBHOOK_SECRET gate)
GA4 PARTIAL, fail-closed service-marketing-connectors adapter + extender direct_connectors.py:549 (GA4Adapter); services/intent-ga4-extender/main.py:39-44 (fails closed on unset GA4_EXPORT_DATASET)
Klaviyo PARTIAL, aggregate-only by design MAPPERS + connector mappers.py:437 (map_klaviyo); services/service-marketing-connectors/klaviyo_connector.py:145-200; excluded from bucket path (bucket_connectors.py:79, "no-per-person-nodes decision")
The Trade Desk (TTD) PARTIAL, fail-closed service-marketing-connectors adapter + extender direct_connectors.py:693 (TradeDeskAdapter); services/intent-pullers-extender/main.py (TTD_REDS_BUCKET gate)
OpenRTB IN BUILD, narrow MAPPERS (journey lane only) + separate cell mapper mappers.py:436 (map_openrtb); miz-oki-adk-agents/kg-canonical-ingest/mappers/openrtb.py. No HTTP adapter in direct_connectors.py — not reachable via service-canonical-ingestion
BigQuery not a source — destination landing table for canonical events CANONICAL_EVENTS_BQ_TABLE in erasure/ingestion code; never an inbound connector
Vertex AI not a source — inference backend LLM backend behind virtuoso_call src/shared/virtuoso_models/vendor_adapters.py:132-162; never feeds the envelope as a data source
Graph storage not a source — projection target Firestore-backed KG services/service-canonical-ingestion/projector_kg.py projects envelopes → KG; no reverse ingestion path found
Gmail not wired — Boss outbound tool only connector_gateway/tools.py:18-27 gmail.search/gmail.read — no wiring to MAPPERS/ingest_gate or service-canonical-ingestion
Drive not wired — Boss outbound tool only connector_gateway/tools.py:29-33 drive.fetch
GitHub not wired — Boss outbound tool only connector_gateway/tools.py:34-38 github.create_issue
Calendar not wired — Boss outbound tool only connector_gateway/tools.py:48-52 calendar.create_event

Summary

Register items

These are added to the Feature Coverage Matrix Gap Register (§10, rows G-25 through G-28):

← All docsView source on GitHub →