Moose Lineage Manifest
The lineage manifest is a static description of a pipeline's systems and data flow. It lives under the implementation directory at moose/lineage.manifest.json
(preferred) or lineage/manifest.json
.
For full details on entity and relationship types, see the sections below.
Entities (Nodes)
Each node has: id
, type
, name
, namespace
, version
, attrs
.
- Allowed types: connector, ingest_api, stream, dlq, transform, sync, table, materialized_view, external_table, consumption_api, openapi_spec, client, workflow
- Required attrs per type (minimal):
- connector:
{ mode: "webhook"|"etl"|"cdc", schema_hash }
- ingest_api:
{ route, version, auth: { method: "jwt"|"api_key"|"none", audience?: string } }
- stream:
{ partitions, retention_seconds }
- dlq:
{ backing: "stream"|"table" }
- transform:
{ code_ref: { repo, path, commit, line? }, dlq?: nodeId }
- sync:
{ semantics: "at_least_once", flush: { rows?, interval_ms? }, offset_tracking: true }
- table:
{ physical_name, engine, order_by, deduplicate?: boolean }
- materialized_view:
{ target_table, select_from: string[] }
- external_table:
{ provider: "clickpipes"|"debezium"|"aws_dms", lifecycle: "externally_managed" }
- consumption_api:
{ route, query_spec: { params_schema_ref, tables_referenced: string[] }, auth }
- openapi_spec:
{ path: ".moose/openapi.yaml" }
- client:
{ kind: "dashboard"|"service"|"agent", sdk?: { language, version } }
- workflow:
{ kind: "workflow"|"task", schedule?: string }
- connector:
Recommended extras for connector
nodes:
connector
:{ name, version?, author?, language?, implementation? }
identifier
(e.g., GA4 propertyproperties/1234
)schema_path
(repo-relative path to a relevant schema file)
Relationships (Edges)
Each edge has: from
, to
, type
, attrs
.
- Allowed types: produces, publishes, dead_letters_to, transforms, emits, syncs_to, writes, derives, reads, queries, serves, documents, triggers, backfills, retries_from
- Common edge attrs (optional):
schema_from_hash
,schema_to_hash
privacy_tags: string[]
(e.g., ["pii_email","pii_phone"])policy: { retention_days?, encryption?: "at_rest"|"none" }
Source of truth for types
Runtime types live in packages/models/src/lineage.ts
. Keep docs and scaffolds in sync with these types.