On this page
- Every field had a source. The denial had no explanation.
- Data lineage is indispensable
- What's the difference between data lineage and execution lineage?
- Seven domains, one run
- Context is selected, not just sourced
- Why can't data lineage show whether an AI action was allowed?
- Lineage has to cover time and waits
- Where should lineage end?
- Connect existing systems; don't replace them
- Lineage needs permission-aware views
- Common anti-patterns
- Ten rules for execution lineage
- The result: a complete account of the outcome
- Frequently asked questions
- How Frozion records what the application did
- Sources
Data lineage records where information came from and how it was transformed. Execution lineage records how an AI application used that information: which context was allowed in, which decisions and policies applied, who approved what, which versions were in force, and what actually changed in the system of record. You need both, linked by shared identifiers.
Every field had a source. The denial had no explanation.
An insurer uses an AI application to assess complex reimbursement claims. A claimant challenges a denial and asks why.
The data team answers confidently. Their lineage graph shows the claimed amount came from page three of the invoice, the coverage limit from the policy system, the prior-claim count from the claims warehouse, and the risk score from a versioned transformation. Every field traces cleanly to its source.
Then the harder questions arrive. Why was one policy amendment used and another excluded as stale? How did the model's "mismatch score" turn into the facts the policy rule checked? Policy required specialist review, but did that requirement reach the reviewer? The approval system says approved = true, but which version of the denial did the reviewer see? The case waited overnight while the claim and the policy bundle changed. Was anything rechecked before the denial went out? And the claims system shows a denial notice was issued, but nothing ties it back to the authority, proposal and approval behind it.
That's not a failure of data lineage. It's asking data lineage to answer a bigger question than it was built for.
Data lineage is indispensable
Data lineage records where information came from, how it moved and changed, which versions were involved, and what was derived from it. In AI applications it connects source records to extracted fields, document chunks, embeddings, feature values and model inputs. It powers data quality, change impact, debugging, stewardship and regulatory response.
Most lineage tools focus on datasets, tables, columns, files, documents and features; on pipelines, queries and transformations; and on ownership and classification. That's essential. It's one part of the application's history, not the whole of it.
General provenance models are broader than most implementations. W3C PROV can describe entities, activities and agents, including who acted on whose behalf. The gap is usually scope, not the standard.
What's the difference between data lineage and execution lineage?
Data lineage explains the history of information. Execution lineage explains the history of application behavior: how that information was selected, decided on, authorized, approved and turned into a real change.
| Question | Data lineage answers | Execution lineage answers |
|---|---|---|
| Origin | Where did this field or document come from? | Which application version and run used it? |
| Transformation | How was it cleaned, joined or embedded? | How did that feed a branch, check, decision or action? |
| Eligibility | Which upstream source supplied it? | Why was it allowed for this user, tenant, purpose and region? |
| Decision | Which data reached the model or rule? | How did model, rule, policy and human decisions combine? |
| Authority | Who owns the data asset? | Who started, acted, delegated and approved at each step? |
| State and time | Which data revision was used? | Which workflow, policy, approval and record versions applied? |
| Outcome | Which downstream dataset was produced? | Which action ran, and what did the system of record confirm? |
Execution lineage doesn't replace data lineage. It references it, and adds the application meaning around it.

Seven domains, one run
An application run draws on several kinds of record, each with its own owner and rules:
| Domain | Main question | Typical evidence |
|---|---|---|
| Data and context | What information was used, and why was it allowed? | Sources, chunks, features, queries, selected context, freshness |
| Decisions | What did each model, rule and check conclude? | Proposals, model outputs, validations, thresholds |
| Authority and policy | Who was acting, for whom, under which rules? | Identity, delegation, scope, policy decisions and obligations |
| State and version | Which versions governed each step? | Workflow and policy versions, record revisions, waits, resume checks |
| Human judgment | What did the reviewer see and authorize? | Exact proposal, evidence shown, reviewer authority, conditions |
| Action and effect | What actually changed outside the system? | Operation ID, attempts, confirmation, reconciliation |
| Integrity | Can the record itself be trusted? | Digests, timestamps, retention, redaction, completeness flags |
Execution lineage is the set of links that ties these to the same run.
Context is selected, not just sourced
Retrieval adds a selection step between stored information and the model. The application might start with thousands of candidate documents and build a small context package through filtering, ranking, chunking, summarizing and token limits. Source lineage tells you which document a chunk came from. The application record also needs which access and freshness rules applied, which candidates were filtered out, what was summarized or truncated, and exactly what the model received. (See context provenance.)
There's an honest limit here. Lineage can prove what information was allowed, selected and supplied to a model, and what came back. It shouldn't claim to reveal the model's internal reasoning.
Why can't data lineage show whether an AI action was allowed?
Because the same data can lead to different legitimate outcomes for different users, purposes, entities, record states or policy versions. Data origin says nothing about whether a specific action was permitted.
That's why execution lineage joins identity and delegation, scope and purpose, the policy version and its obligations, how the decision was enforced, and the human approval. With those links, investigators can tell apart outcomes that look identical in data lineage:
| What happened | What execution lineage can show |
|---|---|
| Correct data, unauthorized action | The facts were right, but the actor lacked authority for that entity or purpose |
| Correct policy decision, violating effect | The decision was valid, but an obligation wasn't enforced or the payload changed |
| Valid approval, different action | The reviewer approved one proposal; another one ran |
| Relevant context, improper disclosure | The information was relevant but outside the user's allowed scope |
Lineage has to cover time and waits
AI work is often long-running. Cases wait for people, events, timers and external systems, and the world changes meanwhile: a policy is updated, a record is edited, a reviewer loses authority, a proposal is recalculated. Each step needs a link to the workflow version, the record revisions, the wait and what resumed it, and whatever was rechecked at resume. Without that, you know which data revision was used but not which rules and current state governed the action.
Where should lineage end?
At the business effect. A lineage record is incomplete if it explains the information and the decision but can't identify what actually changed in the system of record, or prove that nothing did.
Many efforts stop at the model output or the API request. The outcome happens after that. A consequential record continues through the proposed action, the authorization to run it, one stable operation ID with its individual attempts, any timeout or uncertain result, and the confirmation or reconciliation from the target system. That's how you show the real effect matched what data, policy and the reviewer authorized. (See retries and idempotency.)

Connect existing systems; don't replace them
You probably already have authoritative records for data transformations, documents, features, model and prompt registries, identity and policy decisions, approvals, traces and external receipts. Don't copy all of them into one giant store to claim completeness. That blurs ownership, retention and access.
Instead, link them. Use stable identifiers, versions and digests so each system stays the authority for its own records, and the application record ties them to the same run, proposal, decision, approval and effect. Provenance standards already support specializing generic relationships and linking provenance across sources.
Lineage needs permission-aware views
A complete record can reference more sensitive material than the outcome itself: restricted documents, rejected candidates, personal identities, policy attributes, prompts, reviewer comments and API arguments. Don't make it universally visible. Keep one record and give each role an appropriate view: data owners see sources and use; developers see paths, versions and errors; security sees authority, scope and enforcement; auditors see proposals, policy, approvals and confirmations; business owners see the decision path and outcome; operations sees waits, retries and failures.
The same record also underpins replay. Running today's model and policy on yesterday's data is a useful comparison, but it isn't a reconstruction of what happened unless the past versions are restored too.
Common anti-patterns
| Anti-pattern | Why it fails | What to do instead |
|---|---|---|
| The trace is the lineage | Traces correlate operations, not proposals, approvals or effects | Link traces into an application-level record |
| Lineage stops at the model input | You can't see how output became action | Continue through decision, approval, action and confirmation |
| Timestamps imply cause | Sequence isn't influence or authorization | Record explicit links between records |
| One giant evidence store | Ownership, retention and access blur | Link authoritative systems by ID, version and digest |
| Generated output loses its scope | Derived data drops tenant and classification rules | Carry scope and origin to every derived artifact |
| Today's definitions explain history | Models, policies and indexes have changed | Bind each run to the versions it actually used |
| Lineage ends at the API call | A request doesn't prove an effect | Record the operation ID, attempts and confirmation |
Ten rules for execution lineage
- Keep data lineage; make it one part of the application record.
- Anchor lineage to the workflow version and the specific run.
- Give context, proposals, decisions, approvals, operations and attempts their own IDs.
- Record explicit links; don't infer meaning from timestamps.
- Connect context to decisions, authority, policy, approvals and effects.
- Bind every run to the model, prompt, policy and schema versions it used.
- Continue until the system of record confirms the effect, or confirms none.
- Link authoritative systems instead of copying them.
- Decide lineage coverage, retention and views before you deploy.
- Use the same record for explanation, audit, investigation and replay.
The result: a complete account of the outcome
Data lineage remains one of the most important foundations of enterprise AI. But an AI outcome isn't produced by data alone. It comes from data moving through an application shaped by identity, policy, versions, waits, human judgment and external systems.
Execution lineage is the record of that larger behavior. It gives data lineage a place inside the full explanation, so when a claimant, auditor or regulator asks why, you can show not only where the evidence came from, but how it became the decision.
Frequently asked questions
What is the difference between data lineage and execution lineage?
Data lineage explains the history of information: origin, movement and transformation. Execution lineage explains the history of an application's behavior: how that information was selected, decided on, authorized, approved and turned into a real change. Execution lineage references data lineage rather than replacing it.
Is a distributed trace the same as execution lineage?
A trace correlates technical operations and their timing. It's one input to execution lineage, but it usually doesn't carry the proposal, the policy decision, the approval scope or the confirmed effect, and traces are often sampled and expire.
Do we need to replace our data catalog to get execution lineage?
Keep your catalog, feature store, approval and identity systems as the authorities for their records. Execution lineage links to them with stable identifiers, versions and digests, so you get one application-level picture without copying everything into one store.
How does this work for agents we already run?
Route the agent's tool calls through a governed runtime over MCP or HTTPS. Each call is then tied to the context used, the rule that decided, any approval, every attempt and the outcome your system of record confirmed, in one record per decision.
How Frozion records what the application did
Frozion keeps one tamper-evident record per decision in Provenance & Evidence: the rule, the facts it decided on, the approval, each attempt and the outcome the system of record confirmed. Every action draws on a checked context package from Context Store & Assembly, and query receipts from Collections & Query Builder show which data a step read. Authority narrows at each hop and is rechecked before the change. Six role views read from the same record, evidence is exportable, and auditors get scoped read-only access.
Sources
- W3C PROV OverviewProvenance as entities, activities and agents involved in producing a thing.
- W3C PROV-OUsage, generation, derivation, association and delegation, open to specialization.
- W3C PROV-DMProvenance data model, including bundles for linking provenance across sources.
- NIST AI Risk Management FrameworkDocument data provenance, transformations, dependencies and system behavior.
- W3C Trace ContextTrace identifiers for correlation; a different thing from application lineage.
- OASIS XACML 3.0 CoreSeparates policy decision from enforcement, with obligations.
- NIST SP 800-207, Zero Trust ArchitectureAuthorization is per subject, resource, action and context.
- EY survey: autonomous AI outpaces oversight, Sep 202672% worry they can't trace lineage behind critical AI decisions.
More in Evidence & inspectability
Audit & explanation 2
Lineage & provenance 3
Versioning & replay 2
Other topics



