CBAM Pulse
← All guides

Guide

CBAM data lineage: testing customs-to-installation evidence links

A complete row can still point to the wrong evidence. A lineage control tests identity, allocation, period and version across records, then reproduces exactly which sources supported a reviewed result.

Last updated: 22 September 2026Sources: Regulation 2025/2619, Article 2: defined customs information; applicable from 1 January 2026Regulation 2025/2547, Articles 7, 9 and 13–15 and Annex IV: reporting periods, calculation and operator-report content; definitive-period methodologyRegulation 2023/956, consolidated 20 October 2025: Articles 7–8 and Annex V, calculation records and verification

Test relationships, not just populated cells

Customs information under Implementing Regulation 2025/2619 Article 2 and installation emissions evidence are separate bodies of information. A customs row does not establish the producing installation or justify an intensity. Joining a supplier name to an emissions report can therefore produce a fully populated, wrong answer.

This article proposes a preparation architecture and tests of data integrity. It is not an official Registry schema, an emissions-allocation method or a claim that CBAM Pulse implements a lineage engine. The import-file field checklist owns the contents of the import record; the distinctive task here is proving that its relationships point to the intended source versions.

Give objects and relationships their own identities

Separate a source object from the assertion linking it to another object. A commercial-party identifier proves which party a document names; it does not by itself prove which installation produced a particular delivery. Preserve the evidence for that assertion, who accepted it and the period for which it applies.

A minimal edge record has its own ID/version, source-object ID/version, target-object ID/version, relationship type, applicable period, evidence reference, state and review event. An identifier alone is not the evidence. Store the actual source or a controlled location from which the exact version can be recovered.

  1. Object
    Customs line C
    Versioned content
    Source row, quantity/unit, import date, amendment status
    Relationship tested
    Allocated to goods evidence slice G
  2. Object
    Goods slice G
    Versioned content
    Quantity assignment and product identity
    Relationship tested
    Attributed to installation package P
  3. Object
    Commercial party T
    Versioned content
    Contract/order/invoice references
    Relationship tested
    Supplies goods; not automatically the producer
  4. Object
    Installation package P
    Versioned content
    Installation identity, goods, reporting period, methodology basis
    Relationship tested
    Supported by evidence and report versions E/V
  5. Object
    Review snapshot S
    Versioned content
    Exact objects, edges and calculation references used
    Relationship tested
    Depends on a fixed set of versions

Separate reuse of evidence from allocation of quantity

One installation package can support several goods lines. One customs line can require several evidenced goods slices. Treat those as many-to-many relationships, not a reason to multiply the customs quantity once for every matching document. Documents substantiate a slice; they are not additional slices.

For example, a synthetic 30 t customs line has documented assignments of 18 t to package P-A and 12 t to P-B. Two documents support P-A. A naive join repeats 18 t twice and produces 48 t; the allocation table must still total 30 t. Store the 18 t allocation once and attach both documents through a separate evidence relationship.

The 18/12 split is assumed to be supported by records in this synthetic test. It is not permission to invent a shipment allocation or emissions weighting method. If the producing-installation split is unknown, mark the relationship unresolved instead of dividing the mass evenly or choosing the package with the lower intensity.

Run failing-then-repaired integrity tests

A pass below means the specified data-control assertion holds. It does not mean that the emissions method, verification or declaration is legally sufficient. Keep failure evidence and repair evidence together so that a later reviewer can see why an initially rejected relationship became usable.

  1. Failure injected
    Wrong installation
    Detection assertion
    Goods slice expects INST-A; package names INST-B
    Repair evidence
    Operator/transaction evidence establishes the correct package; reviewer records the replacement edge
  2. Failure injected
    Duplicate join inflation
    Detection assertion
    Allocated mass must equal the current customs-line mass, independent of document count
    Repair evidence
    Unique slice retained; supporting documents moved to separate evidence edges
  3. Failure injected
    Missing precursor edge
    Detection assertion
    A calculation dependency listed in the reviewed process model has no source/version
    Repair evidence
    Relevant precursor reference supplied or calculation explicitly blocked; never a zero placeholder
  4. Failure injected
    Outdated verification reference
    Detection assertion
    Package version and verification scope/reference do not match the reviewed evidence set
    Repair evidence
    Reviewer checks applicable report scope and records the supported version relationship
  5. Failure injected
    Revised customs line
    Detection assertion
    Snapshot still references superseded C/v1 rather than accepted C/v2
    Repair evidence
    Amendment link confirmed; affected slices and calculations reviewed; new snapshot recorded

Make period and unit checks explicit

Regulation 2025/2547 Article 7 contains a specific rule for goods imported during 2026: the reporting period is 2026. Do not automatically apply the later-year evidence-based production-period exception to those imports. Store import date, asserted production period and applicable reporting-period decision as distinct fields, with the legal/method reference used by the reviewer.

Reject comparisons that silently treat kilograms as tonnes or confuse tonnes of goods with tonnes CO2e. Check the unit at each calculation boundary, not merely in the final report heading. A numeric value without its unit and basis is not a usable calculation dependency.

For complex goods, the precursor evidence and revision rules determine the substantive dependencies that the graph needs to represent. Lineage can detect a missing declared dependency; it cannot discover an omitted production process merely because every existing edge is valid. Completeness of the process model still needs technical review.

Freeze a review snapshot and replay the change

Suppose snapshot S-1 used customs C/v1, slices G-A/v1 and G-B/v1, package P-A/v2 and report V/v1. Store that version set and the calculation reference together. A query that always fetches the latest report cannot reproduce what the reviewer saw at S-1.

When C/v2 replaces C/v1, record the changed source and traverse its dependants: goods slices, calculations, summaries and review snapshots. Mark the affected outputs stale pending review; do not silently rewrite S-1. A replacement package can trigger the same process even if the customs quantity is unchanged.

Re-run the original integrity tests against the proposed new version set. Save S-2 only with the resulting failures or approvals and a change bridge explaining which outputs changed. The verification evidence manifest remains the owner of report-pack content; the lineage control supplies the exact references needed to compare it with this snapshot.

Use a bounded handoff, not a compliance score

The handoff should identify unresolved edges, affected quantities, stale snapshots, responsible reviewers and next evidence requests. A green completeness indicator is insufficient if its underlying test checks only that a file exists. State whether identity, period, unit, allocation and source-version checks ran and retain their results.

Where an output contains a free-allocation adjustment, attach the route-specific benchmark calculation trace as a dependency rather than a bare result. A changed precursor or benchmark basis then has a visible route to the affected output. Do not recalculate with a guessed substitute while the required input is unresolved.

The result is an inspectable explanation of how records relate. It does not infer missing emissions, select a legally permitted methodology, verify a report or certify readiness for an official declaration.