Brightway Flows 1.0
GitHub
Contents · What we have found

Docs / What we have found

On this page

The identifier stayed and the substance changed

Part of What we have found, the class where a flow keeps its identifier and its name from one release to the next, and means a different substance.

Pentavalent vanadium: thirteen identifiers, two substances, one release apart

ecoinvent 3.12 ships thirteen Vanadium V flows, all registered 22537-31-1ChEBI:33003, vanadium(5+). Those same thirteen identifiers, in ecoinvent 3.7 and 3.8, are:

the same thirteen uuids in ecoinvent 3.7 and 3.8 in ecoinvent 3.12
eight air and soil flows Vanadium, 7440-62-2, the element Vanadium V, 22537-31-1
five water flows Vanadium, ion, 22541-77-1, the trivalent ion Vanadium V, 22537-31-1

Three different substances share those identifiers across releases, and nothing in a uuid says so.

What it does to a mapping. GLAD's file maps every one of the thirteen correctly for the release it was written against — rows 5193 to 5201 send the eight elemental flows to EF's vanadium, rows 5204 to 5208 send the five ion flows to EF's Vanadium, ion, thirteen registry-number matches with nothing wrong in any of them. Read against ecoinvent 3.12, the same thirteen rows send pentavalent vanadium to the element in air and soil and to the trivalent ion in water: one substance published as two, decided by the compartment it was released to, and neither of them what the source row states.

EF 3.1 has the right target and no table uses it. vanadium (v) exists in EF in all thirteen compartments; it was unreachable while EF gave those flows the divalent ion's registry number, which is a finding of its own.

The decision. Thirteen rewrites onto vanadium (v), each keeping the target compartment the table chose and moving only the substance — and each conditional on the flow still being named Vanadium V, because applying them to 3.8 by identifier alone would move eight elemental and five trivalent rows onto a substance neither of them is. Measured on the build of 18 August 2026, it did exactly that until the guard was added (#561).

What an identifier promises

A flow identifier is a promise: this row is the same row it was last release. Both of the lists here have broken it — kept a uuid, kept the name, and changed the substance underneath — and when that happens every correspondence table built against the old release keeps working, silently, on the wrong chemical.

This is the class that makes stale mappings dangerous rather than merely out-of-date, and all three instances on this page were found by reading a mapping that was correct when it was written.

The same shape, twice more

EF 3.0 → EF 3.1, five trichloroethane flows. The five air flows named 1,1,1-trichloroethane carry 71-55-6 in EF 3.0 and 79-00-5 in EF 3.1, under unchanged identifiers and an unchanged name — the isomer swap the trichloroethane case is about, seen as a renumbering. GLAD's rows 1756 to 1760 matched them on the registry number, correctly, and were made wrong by a later edit to the target list.

ecoinvent 3.8 → 3.12, one flupyrsulfuron flow. uuid 0c77f5af-0a0b-4205-acb6-0b031c22029f is named Flupyrsulfuron-methyl in every release. In 3.7 and 3.8 it carries 144740-54-5, the sodium salt; in 3.12 it carries 144740-53-4, the parent acid — and a new flow, Flupyrsulfuron-methyl sodium, takes over the salt's number. The substance behind the identifier was replaced by its own chemical relative. GLAD's row 2051 maps it to EF's flow for the salt, which was a true registry-number match in 3.7 and is wrong for 3.12.

Why this class matters more than its size. Every one of these mappings was right when it was made, by the strongest evidence a mapper has — the registry number. Nothing in the table went stale in a way a reader could see, because the table still refers to identifiers that still exist. A correspondence table cannot be trusted to a release it was not written against, and this is why every curated correction in this project that keys on an ecoinvent identifier states the release it was checked against, and why several are conditional on the flow still being named what it was named when the decision was made.

Keyboard

?
Show or hide this map
/
Focus search
Esc
Close