Kerem Özdemir

Case study · one of eight

cbam-embedded

A single embedded emissions figure hides the one thing an abatement decision needs.

Running hereOpen full size

This is the instrument itself, not a picture of it. Change anything in it and the figures below follow.

Problem

A CBAM declarant reports the emissions embedded in each imported good. For a simple product that is one number over one activity level. For anything made in stages it is a chain traced backwards: crude steel carries pig iron, pig iron carries coke and sintered ore, and each of those is a process with its own emissions and its own output. Get the chain wrong in either direction and the declared figure is wrong by a multiple rather than by a margin.

The deeper problem is what the finished figure cannot say. The specific embedded emissions of crude steel tell you how much carbon a tonne of it carries. They do not tell you whether that carbon came out of the coke oven or the blast furnace, and an abatement decision turns entirely on that. Money spent in the wrong shop buys nothing, and the headline number gives no signal at all about which shop is the right one.

There is a third failure that only shows up in a chain with a shared input. Coke feeds the sinter plant and the blast furnace both, so the coke oven is reached down two different paths. Attribute by the immediate supplier and the coke oven appears twice under two different intermediates, and the table adds up to more than the figure it is attributing. A table that does not reconcile is not a rounding problem: it is double counting with a decimal point on it.

Method

Processes are resolved in dependency order by a depth first walk with a visiting set. Each one accumulates the emissions attributed to it plus its electricity plus, for every precursor, the quantity consumed multiplied by that precursor's own specific embedded emissions. The result divided by the activity level is the specific embedded emissions of the good. Direct and indirect are carried as a pair the whole way down and never summed, because CBAM reports them separately and the certificate calculation treats them differently.

The attribution is the part worth getting right. Every entry is keyed by the process that released the emissions rather than by the intermediate it arrived through, and the map of a process is built by folding its precursors' maps into its own, scaled by quantity over activity. A shared input reached down two paths therefore accumulates into one entry with the sum of both contributions. Purchased precursors are keyed under a separate prefix so that a bought good can never collide with a process of the same name.

What it does

Four processes with every figure editable: activity level, attributed direct emissions, electricity, and the quantity of each precursor consumed. Resolving prints the specific embedded emissions of each process, direct and indirect side by side and never added. A second panel draws the origin of the final good's emissions as a bar per releasing process, and closes with the reconciliation: the attribution added up against the figure it attributes, and the difference between them.

What it refuses to do

It refuses a precursor whose emissions nobody stated. If an input has no source process inside the installation it needs supplier data or a default value from the current implementing act, and there is a button on the page whose only job is to empty that field so the refusal can be seen rather than described. Silently treating an unstated input as emission free is the single most reliable way to understate a good, and it is the failure a spreadsheet makes by default.

It refuses to merge direct and indirect into a total. There is no column for the sum anywhere on the page. The streams are reported apart because that is how they are reported to the authority and because the certificate calculation does not treat them alike, and a number that collapses them loses information nothing downstream can recover.

It refuses to iterate a cycle. If two processes each name the other as a precursor the chain has no bottom, and there is no fixed point to converge on that means anything. The instrument prints the loop by name and stops, because a number produced by iterating a circular bill of materials looks exactly like a number produced by a correct one.

Close

A declaration needs one number and this produces it. The reason the rest of the page exists is that the one number is the least useful thing in the chain: it tells a declarant what to report and tells an engineer nothing at all about where to spend.