Row batch — sync/rows/batch
Primary path for Omega today.
Dedup: per row
(device_id, source_table, journal_epoch, source_pk_hash, commit_seq).
Telemetry batch — sync/telemetry/batch
Dedup:
(device_id, batch_id). batch_seq monotonic per table — stale/duplicate seq rejected.
Omega telemetry publish: not fully implemented — use row batches meanwhile.
Schema observation — sync/schema/observe
Ingest ACK — sync/ingest/ack
Required response to every downlink control:
Ingest request — sync/ingest/request
URL request:
segment_kind: bootstrap_snapshot | payload_spill
Schema fingerprint (hash input)
Canonical JSON before SHA-256:name. Affinity from SQLite rules. Hash = lowercase hex SHA-256 of canonical JSON.
→ Schema governance
Forbidden payload fields
Do not include in device JSON (broker strips or rejects):device_id,org_id,project_id,fleet_id