Brightway Flows 1.0
GitHub
Contents · What we have found

Docs / What we have found

On this page

A named substance is mapped onto a catch-all, and different chemicals become one

Part of What we have found, the class where a correspondence table sends a row that names its chemical to a flow that names none.

Kaolin is not alanycarb

The published ecoinvent → EF mapping is GLAD's ecoinvent 3.7 → ILCD EF 3.0 file, 5,394 rows. Thirty-five of them name a specific pesticide and target a catch-all, covering 34 substances:

catch-all target in EF 3.0 rows named substances
insecticides, unspecified 13 13
fungicides, unspecified 10 9
herbicides, unspecified 8 8
pesticides, unspecified 4 4

Among the thirteen routed to insecticides, unspecified are alanycarb (row 260, 83130-01-2, a carbamate), hexaflumuron (row 2251, 86479-06-3, a benzoylurea), thiacloprid (row 4724, 111988-49-9, a neonicotinoid), novaluron (row 3480) — and kaolin (row 2639, CAS 1332-58-7), which is a clay. It is sprayed as a particle film rather than as a poison, and whatever one thinks of its being classed as an insecticide, it is not alanycarb.

GLAD says these are approximations, and says so in the file. Every one of the 35 rows carries MapType = FLOWNAME_MANUAL_PROXY: a manual match on the flow name, flagged as a proxy. The 19 further rows that reach the same buckets are the buckets mapping to themselves — fungicides, unspecified to fungicides, unspecified, rows 2103 to 2108 and their neighbours — which is exactly right.

So the finding here is not that GLAD claimed something false. It is that a proxy is the only thing the table can offer, because for 34 named pesticides EF 3.0 has no flow at all, and that a proxy stops looking like one as soon as the qualifier is dropped downstream. This project's own export dropped it: it published these as exact matches, which chains — if thirteen flows are exact matches for one bucket they are exact matches for each other, and the export said that alanycarb is kaolin. That was ours to fix, and it is fixed (#405); GLAD's file never said it.

The characterisation follows the bucket. EF's three insecticide, herbicide and fungicide catch-alls carry four factors each — freshwater ecotoxicity and human toxicity, non-cancer — computed for an unspecified product of that class. A row sent there is scored as the generic bucket, not as the chemical the source named, in either direction and by an unknown amount.

The decision. Every one of these rows is declined: the prepared target is refused, and the substance is published under its own name, minting the flows it needs. Kaolin is the case that shows why declining is not the same as ignoring — EF does carry kaolin, but only as a resource extracted from the ground, so there was no emission flow to redirect to and the bucket was the table's only option. What a pesticide is for is not thrown away with the bucket: the class is published as a role on the substance — this substance has the role of an insecticide — rather than as the name of a different flow.

What it cost, and whose rows they are. GLAD maps one compartment per substance — 33 of the 35 rows are soil/agricultural, the compartment a pesticide application is actually reported in, plus two water rows for trifloxystrobin. The table this project reads is not GLAD's file directly: it is GLAD's mapping carried forward to ecoinvent 3.11 and EF 3.1 and extended with further matches, and in it the same 34 substances reach a bucket in all seven of their compartments — 307 rows. Only the 35 are GLAD's; the other 272 rows are the extension, which is this project's own work and not a finding about anybody's published data.

source rows sending a named pesticide to a bucket substances
GLAD ecoinvent 3.7 → EF 3.0, as published 35 (all marked proxy) 34
the table this project reads, after extension 307 49
BAFU 2026 v1 0 — it has no correspondence table

BAFU is the control, for a structural reason: with no table, its rows are matched on what they carry and reach their own substances. Nine of these pesticides are in BAFU — Boscalid, Thiacloprid, Trifloxystrobin and six others — and every one lands on itself. The gap is in EF 3.0's coverage, and the table could only paper over it.

Those 35 are the pesticide buckets alone, which is where the class was first looked for. Seven further rows send a named chemical to a hydrocarbon bucket, so GLAD's file holds 42 such rows over 38 substances, and the summary table on the overview counts all of them.

What the catch-alls are for

The bucket itself is not the error, and a table that reaches for one is not inventing anything.

Every inventory list carries catch-all flows — Insecticides, unspecified, Pesticides, unspecified — and they exist for a real situation: a field application where the record does not say which product was used. They are a statement of ignorance, and a correct one.

The published correspondence table routes rows onto them that are not ignorant. The source row names the pesticide, gives its registry number, and the table sends it to the bucket anyway. What the source knew is discarded at the point of translation, and — because everything in the bucket becomes the same published flow — chemicals that have nothing to do with each other become one substance.

The buckets are not only the pesticide ones

The pesticide catch-alls were found first because a curator was reading pesticides. The same thing happens at the hydrocarbon buckets, seven rows of it, and it is the same table doing it:

GLAD row source flow registry number target bucket
2131 glucose 50-99-7 hydrocarbons, aliphatic, unsaturated
3541 octaethylene glycol monododecyl ether 3055-98-9 hydrocarbons, aliphatic, alkanes, unspecified
1631 dimethyl hexynediol 142-30-3 hydrocarbons (unspecified)
1771–1773, 1775 ethane, 1,1,2-trichloro- 79-00-5 hydrocarbons, chlorinated

All seven carry MapType = FLOWNAME_MANUAL_PROXY, so GLAD again flags them as approximations. What is new here is that for three of the four substances the bucket is not even the right kind of thing. A hydrocarbon is a molecule of carbon and hydrogen and nothing else. Glucose is a sugar, C₆H₁₂O₆; octaethylene glycol monododecyl ether is a non-ionic surfactant, C₂₈H₅₈O₉; dimethyl hexynediol is a diol, C₈H₁₄O₂. Every one of them has oxygen in it, and the third is sent to an unspecified bucket while carrying a perfectly good registry number. So this is not a specific chemical made less specific: it is a sugar published as an unsaturated hydrocarbon.

EF 3.1 ships no flow for any of those three — checked by registry number across all 94,062 of them — so the coverage gap is the same one the pesticides ran into. The fourth is different, and worse: EF ships 1,1,2-trichloroethane in thirteen compartments, and the same table reaches it in one of the five, which is the next section.

What it cost. On the build of 20 August 2026 at 8be2336, before the corrections, thirteen ecoinvent rows across 3.12 and 3.8 were published as a hydrocarbon bucket: seven for 1,1,2-trichloroethane and two each for the other three. Seven of the thirteen are GLAD's rows; the rest are the extension carrying them into compartments GLAD never mapped, and are this project's own. The characterisation follows the bucket in both directions: the diol was scored with the four factors Hydrocarbons (unspecified) carries in water, and the seven trichloroethane rows were scored with nothing at all, because Hydrocarbons, Chlorinated carries no factor in any of the air compartments they reach while the substance's own flow carries seven in the same place. Every row is declined, the same as the pesticide rows, and each substance is published under its own name (#604, #607).

The table sometimes already names the right target

Nothing requires a correspondence table to give the same answer twice for one substance, and where it does not, one of the two answers is usually already right. Read on its own, GLAD's file has five source flows that reach more than one EF substance:

source flow the two targets how it splits
ethane, 1,1,2-trichloro- hydrocarbons, chlorinated / 1,1,2-trichloroethane four air rows to the bucket; the fifth, row 1774, to the substance itself, matched on its registry number
trifloxystrobin trifloxystrobin / fungicides, unspecified air and soil to itself by CAS, both water rows to the bucket
nitrogen dinitrogen / nitrogen, total (excluding n2) three air and resource rows to dinitrogen, matched on 7727-37-9; nine soil and water rows to a nutrient-load measure whose own name excludes the substance being sent to it
ethane, 1,1,1-trichloro-, hcfc-140 1,1,1-trichloroethane / hcfc-140 five air rows to one, five water rows to the other, every row by CAS — two EF flows for one chemical
water, unspecified natural origin water / ground water taken from a fossil well or from the ground to one, taken from water to the other — decided by compartment on purpose

The first four are the finding. In each, the table names the registry-number-matched substance in at least one compartment and something else in the rest, so no chemistry judgement is needed to see that it disagrees with itself: the better answer is in the file already. A consumer adding up 1,1,2-trichloroethane gets one air compartment of five, and the four it loses were folded in with every other chlorinated solvent nobody named. Nitrogen is the starkest, because the target's own name rules the source out: nitrogen, total (excluding N2) is the sum of nitrogen in its reactive forms, and what the table sends it, in nine compartments, is N₂ (#611).

Row 1774 is worth its own sentence, because it is the row that got the substance right: it sends an emission to unspecified air into EF's indoor air flow. Indoor air is not a subdivision of the outdoor atmosphere and carries its own factors, so the one row that identified the chemical correctly still lands somewhere the source row was not.

The last row of the table is why a check for this cannot key on the split alone: water against ground water is deliberate, and in the extended table carbon dioxide's biogenic and land-use-change variants are too. This project now checks the narrower question, recomputing it from the shipped tables rather than from a list somebody typed: where one source flow reaches more than one substance and one of those targets matches the flow's registry number, the others are reported (#602).

Keyboard

?
Show or hide this map
/
Focus search
Esc
Close