Blog
Saved0

Execution lineage vs data lineage: why data origin can't explain an AI decision

The insurer could trace every field in a denied claim back to its source. It still couldn't explain the denial. What execution lineage adds to data lineage, and how to connect the two.

LinkedIn
On this page
  1. Every field had a source. The denial had no explanation.
  2. Data lineage is indispensable
  3. What's the difference between data lineage and execution lineage?
  4. Seven domains, one run
  5. Context is selected, not just sourced
  6. Why can't data lineage show whether an AI action was allowed?
  7. Lineage has to cover time and waits
  8. Where should lineage end?
  9. Connect existing systems; don't replace them
  10. Lineage needs permission-aware views
  11. Common anti-patterns
  12. Ten rules for execution lineage
  13. The result: a complete account of the outcome
  14. Frequently asked questions
  15. How Frozion records what the application did
  16. Sources
The short answer

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.

QuestionData lineage answersExecution lineage answers
OriginWhere did this field or document come from?Which application version and run used it?
TransformationHow was it cleaned, joined or embedded?How did that feed a branch, check, decision or action?
EligibilityWhich upstream source supplied it?Why was it allowed for this user, tenant, purpose and region?
DecisionWhich data reached the model or rule?How did model, rule, policy and human decisions combine?
AuthorityWho owns the data asset?Who started, acted, delegated and approved at each step?
State and timeWhich data revision was used?Which workflow, policy, approval and record versions applied?
OutcomeWhich 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.

Data lineage shown as a source-to-feature chain, embedded inside a wider execution lineage that continues through decision, policy, approval, action and confirmed effect
Data lineage is one strand inside the execution record.

Seven domains, one run

An application run draws on several kinds of record, each with its own owner and rules:

DomainMain questionTypical evidence
Data and contextWhat information was used, and why was it allowed?Sources, chunks, features, queries, selected context, freshness
DecisionsWhat did each model, rule and check conclude?Proposals, model outputs, validations, thresholds
Authority and policyWho was acting, for whom, under which rules?Identity, delegation, scope, policy decisions and obligations
State and versionWhich versions governed each step?Workflow and policy versions, record revisions, waits, resume checks
Human judgmentWhat did the reviewer see and authorize?Exact proposal, evidence shown, reviewer authority, conditions
Action and effectWhat actually changed outside the system?Operation ID, attempts, confirmation, reconciliation
IntegrityCan 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 happenedWhat execution lineage can show
Correct data, unauthorized actionThe facts were right, but the actor lacked authority for that entity or purpose
Correct policy decision, violating effectThe decision was valid, but an obligation wasn't enforced or the payload changed
Valid approval, different actionThe reviewer approved one proposal; another one ran
Relevant context, improper disclosureThe 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.)

A chain from context item to proposal, policy facts, policy decision requiring review, approval, operation, attempts and confirmed effect
Each link states what one record meant to the next, through to the confirmed effect.

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-patternWhy it failsWhat to do instead
The trace is the lineageTraces correlate operations, not proposals, approvals or effectsLink traces into an application-level record
Lineage stops at the model inputYou can't see how output became actionContinue through decision, approval, action and confirmation
Timestamps imply causeSequence isn't influence or authorizationRecord explicit links between records
One giant evidence storeOwnership, retention and access blurLink authoritative systems by ID, version and digest
Generated output loses its scopeDerived data drops tenant and classification rulesCarry scope and origin to every derived artifact
Today's definitions explain historyModels, policies and indexes have changedBind each run to the versions it actually used
Lineage ends at the API callA request doesn't prove an effectRecord the operation ID, attempts and confirmation

Ten rules for execution lineage

  1. Keep data lineage; make it one part of the application record.
  2. Anchor lineage to the workflow version and the specific run.
  3. Give context, proposals, decisions, approvals, operations and attempts their own IDs.
  4. Record explicit links; don't infer meaning from timestamps.
  5. Connect context to decisions, authority, policy, approvals and effects.
  6. Bind every run to the model, prompt, policy and schema versions it used.
  7. Continue until the system of record confirms the effect, or confirms none.
  8. Link authoritative systems instead of copying them.
  9. Decide lineage coverage, retention and views before you deploy.
  10. 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.

With Frozion

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

  1. W3C PROV OverviewProvenance as entities, activities and agents involved in producing a thing.
  2. W3C PROV-OUsage, generation, derivation, association and delegation, open to specialization.
  3. W3C PROV-DMProvenance data model, including bundles for linking provenance across sources.
  4. NIST AI Risk Management FrameworkDocument data provenance, transformations, dependencies and system behavior.
  5. W3C Trace ContextTrace identifiers for correlation; a different thing from application lineage.
  6. OASIS XACML 3.0 CoreSeparates policy decision from enforcement, with obligations.
  7. NIST SP 800-207, Zero Trust ArchitectureAuthorization is per subject, resource, action and context.
  8. EY survey: autonomous AI outpaces oversight, Sep 202672% worry they can't trace lineage behind critical AI decisions.
More in Evidence & inspectability

Evidence & inspectability

Audit & explanation 2
Lineage & provenance 3
Versioning & replay 2

Other topics

Pick up where you left off: