Lineage
ivyx✓
See where your data came from, with the stages between a dataset and the model it trained
Lineage
See where your data came from, with the stages between a dataset and the model it trained.
This hub collects nothing. It derives a directed graph from what a lineage engine already records, so a workspace that ran its pipeline last month has its history the moment this extension is installed. Install the DVC engine and this panel reads DVC; write another engine and it reads that, with no change here.
What you can do
- See the pipeline — every stage with what it reads and what it writes.
- See the data — one row per path, marked as source data or as something a stage wrote, with the engine's own digest for it.
- Walk back from anything — click a path and the panel shows the stages between it and the source data it came from.
- Walk back from a model version —
lineage.tracetakes a registered model and version, resolves the training run, and reports the data that run read. - Ask programmatically —
lineage.graphreturns the whole graph andlineage.tracethe walk, both through the capability gateway.
What it does not do
It does not export. The format that matters here is OpenLineage, which Marquez, DataHub and Atlan already read, and the whole value of adopting it is that the shape belongs to that ecosystem rather than to this one. An export shipped before that decision would be a shape this fleet then owns forever, so it ships with the engine that defines it.
Where the direction comes from
The audit record already names what a call touched, as payload.subjects. It
does not say which way the edges point: fs.readFile and fs.writeFile
produce identical subject records, and fs.copy records its source and its
destination the same way. So a graph drawn from that field would point half its
edges backwards.
The direction lives with the capability that knows it.
mlops.<engine>.lineage reports what each stage read and what it wrote,
separately, with digests — and that answer reaches the audit trail as the
record's output, which is why the history here is retroactive.
The engine contract
An engine is a set of declared capability ids. The hub finds it by reading the capability catalogue once; nothing is imported across extensions and nothing is registered by hand.
| Id | Required | Meaning |
|---|---|---|
mlops.<engine>.lineage |
yes | what each covered stage read and wrote, with digests |
mlops.<engine>.reveal |
no | the engine's own panel |
The full contract is punica-editor/docs/lineage-engines.md.
Requirements
A lineage engine. extension-mlops-dvc 1.5.2 or newer ships the DVC one and
needs a workspace with a dvc.lock, which dvc repro writes.
Getting started
- Install this extension and a lineage engine.
- Run your pipeline once, so the engine has something to describe.
- Open Lineage from the activity bar and click any path to walk back.
License
MIT