Eaternity AG · version v1.2.2 · built from commit 096606b ·
downloads & quick start
ZHAW FCM (Claudio Beretta) and any LCA practitioner replacing an ecoinvent 3.3 / Agribalyse v1.2 food-processing background.
BAFU/UVEK Open Government Data (Swiss Federal Administration, BAFU 2026) + Eaternity tributary LCIs (food-processing, fruit, dairy, livestock, ...); NO ecoinvent flow data, NO biosphere3, NO EDB.
Method: EF 3.1 (BAFU) 16-category impact set; plus GLAM (UNEP Life Cycle Initiative Global LCIA Method) BAFU-companion methods, Ecological Scarcity 2021 UBP, and IPCC 2021 GWP100 — all BAFU-biosphere bound.
Functional unit: 1 kg processed product, factory gate (gate-to-gate processing).
Scope: Gate-to-gate PROCESSING ONLY. Upstream agriculture is a SEPARATE layer. Per-node scope_marker tells you which double-counting rule applies: 'gate_to_gate' = substrate left unbound (add your own farm-gate input); 'cradle_to_gate_proxy' = upstream baked in (do NOT add upstream again).
| Coverage | entries |
|---|---|
| Mapping entries (total) | 621 |
| Shipped top nodes (OGD-closed) | 514 |
| Excluded — NOT OGD-closeable (recorded in coverage.json) | 107 |
Shipped by scope marker (the double-counting axis):
| scope_marker | nodes |
|---|---|
| gate to gate | 307 |
| cradle to gate proxy | 207 |
Shipped by inventory kind:
| kind | nodes |
|---|---|
| composite lci | 514 |
Why the 107 excluded entries cannot ship (by category, then by the non-OGD leaf database their closure reaches):
| exclusion category | entries |
|---|---|
| non ogd leak | 73 |
| nothing to ship | 34 |
| non-OGD leaf database | entries |
|---|---|
| EDB remapped final | 68 |
| no anchor | 34 |
| ecoinvent 3.6 cutoff | 2 |
| EDB bafu remapped | 3 |
OUR EF 3.1 (BAFU) Climate Change per kg, computed live on every shipped node (no external reference value exists for the processing layer — Claudio computes against his own background).
| Nodes computing a value | 514 |
| Nodes with non-zero EF 3.1 climate | 514 |
| Median (kg CO2eq / kg) | 0.8543 |
| Range (kg CO2eq / kg) | 0.0002 – 30.1536 |
| family | method objects |
|---|---|
| Ecological Scarcity 2021 | 1 |
| GLAM | 36 |
| EF 3.1 (BAFU) | 16 |
| IPCC 2021 | 2 |
EF 3.1 (BAFU) categories: 16/16; total method objects: 55.
Data-quality basis per node (a 5-axis pedigree is emitted ONLY where a real one exists; elsewhere the honest signal is the internal confidence — never a fabricated PEF/DQR class):
| dqr_basis | nodes |
|---|---|
| internal confidence only | 514 |
Verification: verify_self_contained.py: PASS — package imports into a FRESH Brightway project with NO ecoinvent / biosphere3 / EDB; layers not collapsed; every shipped node computes; 16/16 EF 3.1 categories register; the hero processing row lands in the plausible per-kg band.
Identity: Shipped nodes carry sediment.terms identity keyed by GADM location plus food-taxonomy terms (FoodOn, FoodEx2, AGROVOC, LangUaL, HESTIA). Coverage is per-namespace — see identity_coverage — NOT every-node-all-namespaces. This is the version-agnostic bridge to FCM's FoodOn-based food-impact layer (the standalone FoodOn crosswalk is published separately at zhaw-fcm-bridge).
Identity coverage (nodes carrying each sediment.terms namespace, of 514 shipped — per-namespace, not every-node-all-namespaces):
| namespace | nodes |
|---|---|
| gadm | 487 |
| foodon | 365 |
| foodex2 | 338 |
| agrovoc | 197 |
| langual | 54 |
| hestia | 47 |
How each layer of the shipped package carries its provenance, and therefore what an openLCA reviewer sees in the Documentation tab. Both shapes are real provenance — the difference is whether it is machine-readable facets or the prose the tributary wrote. Every process in the package is documented; none is silent.
| shape | nodes | carries |
|---|---|---|
| structured facets food_processing_replacements |
509 | method, scope, trust, license, recipe The shipped replacement layer — the datasets a consumer computes with. |
| prose comment 14 tributary layers |
505 | named plant + citation, system boundary, OGD licence signal, build_method (409/505) Tributary background layers. Their provenance is detailed but free-text, so it is parsed into the openLCA documentation fields rather than left invisible. The remaining gap is that it is not yet structured at the SOURCE — tracked per tributary. |
Where the remaining gap sits — named, not hidden:
| layer | gap |
|---|---|
fruit_crops_lci | 63 nodes; upstream lci-fruit has sediment on 327/329 mapping entries but structured provenance on only 30 — the activities file carries _climate_source/_erosion_source that never reach the package. |
food_processing_lci/legacy/agribalyse | 409 nodes; all carry build_method + boundary + licence in prose. |
This is a workspace-wide gap, not a food-processing one.
Across 51 mapping artifacts, 15040 of
15088 mapping entries carry a sediment identity
(99%) but only 15088
carry structured provenance (100%). The
identity layer was built out everywhere; the provenance layer was not. Only
STRUCTURED provenance can be projected into an openLCA Documentation tab, so a
low figure here is exactly what makes a well-documented dataset look
undocumented downstream. At 100%: lci-agri-integration, lci-algae, lci-aquaculture, lci-biodiversity, lci-cashew, lci-chemicals, lci-coffee, lci-cotton, lci-crops, lci-dairy, lci-electricity, lci-fermentation, lci-fertiliser, lci-fishing, lci-fishing-equipment, lci-fishing-gear, lci-food-loss, lci-food-processing, lci-fruit, lci-fruit-main, lci-fuel-combustion, lci-greenhouse, lci-icbm, lci-indigo-n, lci-irrigation, lci-lentil, lci-livestock, lci-luc, lci-market, lci-metals, lci-mushroom, lci-oilpalm, lci-origin, lci-packaging, lci-pesticide, lci-rainforest, lci-recipe, lci-rice-ch4, lci-rothc, lci-salca, lci-salt, lci-seed, lci-spices-additives, lci-storage, lci-textile-processing, lci-transport, lci-waste-treatment.
Full table: provenance_coverage.json.
| largest gaps | entries | with provenance | % |
|---|---|---|---|
lci-recipe | 8870 | 8870 | 100.0% |
lci-agri-integration | 904 | 904 | 100.0% |
lci-electricity | 695 | 695 | 100.0% |
lci-food-processing | 608 | 608 | 100.0% |
lci-rothc | 474 | 474 | 100.0% |
205 of 509 shipped inventories carry a per-100 g energy + macronutrient profile, joined on the sediment identity layer. 304 candidate matches were REJECTED and ship with their evidence but no numbers — a withheld value beats a wrong one.
| match tier | nodes |
|---|---|
| sediment direct | 130 |
| glossary name | 13 |
| embedding | 62 |
| unmatched rejected | 304 |
Read the quality fields in this order: identity_verified (False is rare but ~100% precise — a genuinely wrong food), then match_tier (sediment_direct > glossary_name > embedding), then match_confidence (ADVISORY, ~56% precision against a 41% base rate). embedding_cosine/embedding_distance are recorded for ordering a review queue ONLY: upstream measurement over 109 labelled links found similarity indistinguishable between correct and wrong picks (0.857 vs 0.869). Do not threshold correctness on it.
Nutrients come from national food-composition tables via lci-nutrients, joined on the sediment identity layer (esfc-glossary bridges vocabulary mismatches). They are NOT derived from the LCI and add no impact. Values are a multi-country weighted-median blend; national tables differ in energy conversion factors and recipe procedure, so the spread in nutrient_uncertainty is irreducible, not noise to be averaged away.
| v1.0.0 | First public, self-contained release of the gate-to-gate food-PROCESSING layer — a contribution artifact for ZHAW FCM (Claudio Beretta) to replace an ecoinvent 3.3 / Agribalyse v1.2 processing background. Layered Brightway package (food_processing_replacements over the tributary LCIs over BAFU/UVEK technosphere over the BAFU + EF 3.1 elementary flows), one node per shipped ecoinvent reference, every node carrying its FoodOn / LangUaL / FoodEx2 identity in sediment.terms plus the five inline provenance facets. Full EF 3.1 (BAFU) 16-category impact set + GLAM + UBP + GWP100. OGD-only: 89 entries whose upstream substrate links to ecoinvent / EDB are EXCLUDED and recorded honestly in coverage.json (never relabelled as OGD). Clean-room verified self-contained. |
| v1.0.5 | Added a direct SimaPro CSV download (food_processing_simapro.csv) so SimaPro users can import without the openLCA detour. Generated by the shared edb_bafu.publish SimaPro converter (the same one every published Eaternity LCI site reuses), deterministic, and round-trip-verified against bw2io's independent SimaPro-CSV parser. openLCA JSON-LD + ILCD method package unchanged. |
| v1.0.6 | Re-exported public/ from source: restored the FoodOn identity bridge on shipped nodes and reconciled all landing-page counts with the live artifacts. |
| v1.0.7 | Anchor descriptions on replacement nodes: every TOP node now carries a human-readable description of its BAFU/tributary anchor chain. |
| v1.1.0 | BAFU:2026 alignment + uncertainty completion + dataset growth. The source `bafu` technosphere DB was refreshed to BAFU:2026 v1 (11,947 activities, code-identical to bafu_2026, 2026-07-24), so technosphere AND method CFs are now the same vintage — the former 2025/2026 version-drift caveat is resolved. Every nonzero biosphere exchange now carries amount_p5/amount_p95 uncertainty bounds (workspace contract; the last 4 residual-CO2 corrections were bounded from documented literature ranges or a conservative ×0.5/×2.0 default band). Mapping grown to 608 entries via the July fix rounds (cocoa powder market, rehydrated soy protein hydration balance, onion powder upstream, lemon d-limonene provenance, and ~100 further reconciliations). |
| v1.2.0 | Nutrients + cascade documentation. Every shipped inventory is now linked, where a defensible link exists, to a per-100 g energy + macronutrient profile from national food-composition databases (lci-nutrients), joined on the sediment identity layer with esfc-glossary bridging vocabulary mismatches (FoodEx2 keys fresh 'Tomatoes' as A0DMX and 'Sun-dried tomatoes' as a SEPARATE term A00ZG). Three match tiers are recorded per row — sediment_direct, glossary_name, embedding — with the embedding cosine published for ordering a review queue, NOT as a correctness score: upstream measurement over 109 labelled links found similarity indistinguishable between correct and wrong picks (0.857 vs 0.869), and in this corpus a cosine of 1.0 matched pizza dough to 'Biscuits'. Candidate matches are rejected — shipped with evidence but no numbers — when the canonical is_same_food check fails, when the matched label is a bare qualifier ('raw', 'fresh') carrying no food identity, or when the cosine falls under a credibility floor; that last guard caught a 50-63% fat spread being given 34 kcal from a row labelled 'raw'. Nutrients are metadata beside the inventory, never inside it: no amount, bafu_key or biosphere flow changed, so every committed GWP is bit-identical. Also publishes cascades.html + food_processing_cascades.json — every multi-step chain, the study behind each processing step, and one fully-traced worked example, all derived from the live code so the page cannot drift. |
| v1.2.2 | Provenance + upstream-integrity release (re-cut as v1.2.2 — the v1.2.1 tag was already taken by the cascade-documentation release). Three databases now separate the shipped inventories by construction method — food_processing_lci (parametric cascade), food_processing_legacy_lci (flat composites), and food_processing_agribalyse_lci (Agribalyse-context) — so a consumer can filter by how each inventory was built, and every exchange distinguishes the background layer (emission factor) from the source of the amount: a modelled energy demand on a BAFU background now cites its literature source, not the BAFU catalog. Upstream crop pins to fruit_crops_lci are hardened against vintage drift: a build-time guard fails loud on any dangling pin, and 21 of 32 pins now re-resolve by sediment position (foodex2 + gadm) against the live lci-fruit publication, so a producer vintage roll re-resolves instead of silently zeroing upstream GWP — 3 pins that had already dangled to zero (paprika, elderberry, peanut) were re-pointed in the process. The FoodOn sediment crosswalk is committed in-repo so its 286 crosswalk-derived terms reproduce for anyone. Main generators moved to a position-predicate primary selector (output-neutral, zero GWP change). Every concentrate Brix target now carries a document citation or an explicit assumption marker. All changes are metadata / selection-path only — no amount, bafu_key or biosphere flow changed, so every committed GWP is bit-identical to v1.2.0. Dataset: 621 mapping entries (391 gate-to-gate / 230 cradle-to-gate proxy), 502 generated activities (514 shipped nodes). |
Generated from the live shipped artifacts (coverage.json, provenance.json, methods_cf.json, node_impacts.json); regenerated on every release so this page cannot drift from the dataset. Code Apache-2.0; data CC-BY-4.0; BAFU/UVEK OGD 2026; no ecoinvent.