Lineage definition
- Device
warehouse-gw-01, tabledevice_state→ one lineage - Same device, table
order_events→ a second lineage
Two ingest pipelines, one lineage
Every enrolled table maps to a single lineage, but ingest follows one of two MQTT paths:
Schema governance, staging, replay, and backpressure are lineage-scoped — both pipelines share the same lineage row and review ticket for a given
(device, source_table).
Lineage status
Check status in platform-tui → Edge Sync → Lineages or
GET /projects/{id}/edge/lineages.
Lifecycle
First batch
- Edge worker creates lineage row (usually
activebriefly). - If schema is unseen and policy requires review → classification
ambiguous. - Lineage flips to
paused, reviewqueued, rows go toedge_staged_rows.
- Pipeline A: telemetry batches stage via
stageTelemetryRowsTSDB, then governance queues the review. - Pipeline B: row batches on a paused lineage stage with
staging_reason=schema_review.
pause_lineage downlink.
After schema approval
- Materialization target provisioned (
edge_state_*for relational rows,edge_ts_*for telemetry). - Replay intent scheduled — staged rows drain (telemetry-first when both kinds exist).
- Lineage
active— subsequent live batches materialize directly.
Volume backpressure
When staged row count or bytes exceed policy caps (defaults: 100,000 rows / 1 GiB per lineage):- Lineage
paused. - Edge worker stages
EdgeIngestControlRequestedV2(pause_lineage); mqtt-broker delivers onsync/ingest/control. - Device stops publishing that table and buffers locally.
- When backlog drops below 80% of caps, server sends
resume_lineage.
Materialization circuit breaker
After 5+ permanent materialization errors on an active lineage:- Lineage
paused,pause_lineagedownlink sent. - Operator fixes root cause (DDL, bindings, TSDB issue).
POST .../lineages/{id}/reset-materializationclears error state and may resume.
Staging
What is staged?
Full row payloads (insert/update/delete for Pipeline B; timestamped samples for Pipeline A) as JSON, keyed by:device_id,source_table,source_commit_seqorevent_tsstaging_reason- Inline payload or compressed blob (server-internal)
Why rows stage
Inspecting staged rows
platform-tui:- Edge Sync → Lineages → select lineage
- Press
dfor staged data (orwfor written/mirror)
page and limit query params.
Related OLTP objects
Each lineage links to:Deleting a lineage
DELETE .../edge/lineages/{lineage_id} removes cloud sync state for that table on that device. It does not delete the edge SQLite database or Omega triggers.
Use when retiring a table sync or resetting a botched enrollment. Requires PROJECT_CAN_MANAGE_DEVICES.
platform-tui: lineage detail → D (confirm).
Edge-side state (Omega)
Separate from cloud lineage, Omega persists instate.db:
- Last published
commit_seq/batch_seqper table journal_epochper table- Pause watermarks from downlink controls
- Local backpressure buffer