Skip to content

A1–A3 Material Impact Database — Reverse-Engineering Spec & Reconciliation

Sources read (read-only, verified 2026-07-16):

File Sheet(s) read Tool
reference/excel/embodied_carbon_material_database.xlsx BuildX Database, MASS Database openpyxl 3.x, data_only=True
reference/excel/materials_database.xlsx all 11 sheets openpyxl 3.x, data_only=True
reference/excel/2_lca_vn.xlsx LCI Final, A1-A3 openpyxl 3.x, raw formulas (data_only=False) + computed values (data_only=True)

A1–A3 values already recorded in docs/methodology/lca-stages-b4-c3-c4-d-spec.md §2 (PR #18) are the starting point for the reconciliation. This document does not re-extract those values; it adds the full per-source analysis, reconciliation findings, and verdict/geographic tags.

Verdict tags follow PROJECT.md decision #23 (two-axis scheme). Geographic tags follow PROJECT.md decision #26 (per-stage geographic-provenance policy). Vendorability tags follow PROJECT.md decision #25.


§1 Source files — structure and scope

§1.1 reference/excel/embodied_carbon_material_database.xlsx — BuildX Database tab

The BuildX Database tab (rows 1–428) is a general embodied-carbon reference tool used by the Chiwara team. Its structure:

Column Header Content
B Material Material category
C Sub-Material Sub-type description
D Density (kg/m³) Used for unit conversion
E Biogenic Carbon EC (kgCO2e/kg) Biogenic carbon component
F EC (kgCO2e/kg) A1–A3 GWP factor, kg CO₂e per kg
G Database Source database name
H Region of Manufacture Geographic scope
I EC (kgCO2e/kg) A4 transport GWP factor
J Database A4 source database

Source database: ICE (Inventory of Carbon and Energy), University of Bath, UK. All entries in the material section (rows 9–193) cite ICE as database; the link column references ICE Embodied-carbon-footprint-database.

Critical finding — ICE is not in the approved source list (decision #4): PROJECT.md decision #4 lists the permitted free and humanitarian data sources as: EPDASA, INIES, ÖKOBAUDAT, EPD Norge, EPD International, IBU, IPCC EFDB, UNEP GlobalABC, US LCI (where relevant), and named earth-material peer-reviewed literature. ICE is not in this list. ICE is a UK academic database produced by the University of Bath; it is not an EPD programme operator database. ICE data cannot be vendored into backend/app/data/seed_epds/ under the current project policy.

The BuildX Database is therefore a team reference tool, not a source for seed EPDs. Its values are used in this document purely as a cross-check to assess plausibility of the 2_lca_vn.xlsx factors.

Source clearance status: ICE not cleared under decision #4. Must be added to THIRD_PARTY.md with UNKNOWN/BLOCKED licence status before any ICE value is relied upon in a reported result.

§1.2 reference/excel/materials_database.xlsx

This file contains 11 sheets, each aggregating EPD data for a material family: Rockwool, Gypsum, Fire Protection, Bricks, Timber Cladding-Finish, OSB, Hardwood Timber, Plywood, XLAM - CLT, Steel Virgin, Steel Recycled.

Structure: EPD issuer, company name, functional unit, dimensions, GWP and other indicators. Sources include ROCKWOOL, Bau-EPD, EPD-Norge, Institut Bauen (IBU), EPD International, BRE, EPD Australia. None of the material families in this file correspond to the 18 materials in 2_lca_vn.xlsx LCI Final (it covers insulation, timber, gypsum, bricks, and steel — not aggregates, earth, cement, or finishes coatings). This file is a background reference only; it does not feed the LCA calculation and is not reconciled further.

§1.3 reference/excel/2_lca_vn.xlsx — LCI Final and A1-A3 sheets

The primary source for the LCA calculation's A1–A3 factors. Full extraction already in lca-stages-b4-c3-c4-d-spec.md §2. Summary:

  • LCI Final sheet: columns I (A1-A3 GWP), J (C3), K (C4), L (D) hold all impact factors.
  • A1-A3 sheet: applies the impact formula E_row = C_row × D_row (weight × factor), pulling weight from LCI Final!F and factor from LCI Final!I. Formula VALIDATED (see §3.1).
  • Raw formulas extracted with data_only=False: all I-column cells are either literal values or simple arithmetic expressions (e.g. =2.854/1000, =779/1000). No lookup formulas; no cross-file references. Factors are hardcoded into LCI Final.

§2 A1–A3 sheet formula structure

A1-A3 sheet formulas (openpyxl raw, data_only=False):

B5:  Rock(m³)             C5 = ='LCI Final'!F3   D5 = ='LCI Final'!I3   E5 = =C5*D5
B6:  Gravel (m³)          C6 = ='LCI Final'!F4   D6 = ='LCI Final'!I4   E6 = =C6*D6
B7:  Sand (m³)            C7 = ='LCI Final'!F5   D7 = ='LCI Final'!I5   E7 = =C7*D7
B8:  Earth (m³)           C8 = ='LCI Final'!F6   D8 = ='LCI Final'!I6   E8 = =C8*D8
B9:  Water (m³)           C9 = ='LCI Final'!F7   D9 = ='LCI Final'!I7   E9 = =C9*D9
B10: Cement(Kg)           C10= ='LCI Final'!F8   D10= ='LCI Final'!I8   E10= =C10*D10
B11: Steel Rebars(Kg)     C11= ='LCI Final'!F9   D11= ='LCI Final'!I9   E11= =C11*D11
B12: Steel plates (m³)    C12= ='LCI Final'!F10  D12= ='LCI Final'!I10  E12= =C12*D12
B13: Steel profiles (m³)  C13= ='LCI Final'!F11  D13= ='LCI Final'!I11  E13= =C13*D13
B14: polyethylene film(m²)C14= ='LCI Final'!F12  D14= ='LCI Final'!I12  E14= =C14*D14
B15: bitumen(Kg)          C15= ='LCI Final'!F13  D15= ='LCI Final'!I13  E15= =C15*D15
B16: Crude oil(L)         C16= ='LCI Final'!F14  D16= ='LCI Final'!I14  E16= =C16*D16
B17: Waste Oil(L)         C17= ='LCI Final'!F15  D17= ='LCI Final'!I15  E17= =C17*D17
B18: Glass (m³)           C18= ='LCI Final'!F16  D18= ='LCI Final'!I16  E18= =C18*D18
B19: Anti-termite(m³)     C19= ='LCI Final'!F17  D19= ='LCI Final'!I17  E19= =C19*D19
B20: Wall paint(L)        C20= ='LCI Final'!F18  D20= ='LCI Final'!I18  E20= =C20*D20
B21: Antirust paint(L)    C21= ='LCI Final'!F19  D21= ='LCI Final'!I19  E21= =C21*D21
B22: Floor Tiles(m²)      C22= ='LCI Final'!F20  D22= ='LCI Final'!I20  E22= =C22*D22
B23: TOTAL                E23= =SUM(E5:E22)

Formula verdict: VALIDATED. The A1-A3 sheet applies impact = weight × factor correctly for all 18 materials. No formula errors. The 0.1% parity gate applies to this formula structure.


§3 Reconciliation — material-by-material

§3.1 Authoritative source determination

The 2_lca_vn.xlsx LCI Final is the authoritative source for the A1-A3 parity test of the future lca.a1_a3 module. This is the Excel that is the requirements artifact for the Keur Songho reference case.

The embodied_carbon_material_database.xlsx BuildX Database uses ICE — a different, non-approved source. Its values are recorded here as a cross-check for plausibility, not as competing authorities. Where the two sources diverge, the LCI Final value is the parity target; the divergence magnitude informs the urgency of sourcing a primary EPD.

§3.2 LCI Final raw formulas — I column (A1-A3 factor)

Extracted via openpyxl data_only=False:

ID Material LCI Final!I formula Computed factor Unit
1 Rock =2.854/1000 0.002854 kg CO₂/kg
2 Gravel =2.854/1000 0.002854 kg CO₂/kg
3 Sand =2.854/1000 0.002854 kg CO₂/kg
4 Earth =4.675/1000 0.004675 kg CO₂/kg
5 Water 0 (literal) 0
6 Cement =779/1000 0.779 kg CO₂/kg
7 Steel Rebars =2941/1000 2.941 kg CO₂/kg
8 Steel plates =1650/1000 1.650 kg CO₂/kg
9 Steel profiles =2167/1000 2.167 kg CO₂/kg
10 Polyethylene film 2.77 (literal) 2.770 kg CO₂/kg
11 Bitumen =64/1000 0.064 kg CO₂/kg
12 Crude oil 134 (literal) 134 kg CO₂/kg
13 Waste Oil 0.25 (literal) 0.250 kg CO₂/kg
14 Glass =9.71*(1/0.006)*(1/E16) where E16=2200 0.7356 kg CO₂/kg
15 Anti-termite 0.65 (literal) 0.650 kg CO₂/kg
16 Wall paint 1.2 (literal) 1.200 kg CO₂/kg
17 Antirust paint =20.16*(1/0.16)*1000*(1/E19) where E19=1200 105 → CORRECTED 4.87 kg CO₂/kg
18 Floor Tiles 5.09 (literal) 5.090 kg CO₂/kg

§3.3 Material-by-material reconciliation

Material 1 — Rock (ROCK_STONE)

Source Value Basis
2_lca_vn.xlsx (LCI Final!I3) 0.002854 kg CO₂/kg =2.854/1000; note: "Okobaudat database screens in folder 'Aggregates'"
BuildX ICE (row 9) 0.090 kg CO₂/kg ICE Aggregates, General; density 1600 kg/m³
PR #18 (spec §2.1) 0.002854 kg CO₂/kg As extracted in lca-stages-b4-c3-c4-d-spec.md

Divergence: 0.002854 vs ICE 0.090 = 31.5× lower. The two sources use different methodologies: the ÖKOBAUDAT aggregate value reflects the EPD declared scope (quarrying/crushing only), while ICE includes a broader system boundary. The 0.002854 value is within the range of published quarried-stone ÖKOBAUDAT EPDs (0.001–0.008 kg CO₂/kg). Plausible.

Reconciliation verdict: 0.002854 from LCI Final is the parity target. Formula verdict: VALIDATED. Provenance verdict: BLOCKED — "Okobaudat folder" without dataset UUID. Geographic tag: ÖKOBAUDAT-interim, EU-contextualised — pending African data. Weidema axis-4 note: Geographic representativeness score = 3 (different country, similar climate).

Material 2 — Gravel (AGGREGATE_COARSE)

Source Value Basis
2_lca_vn.xlsx (LCI Final!I4) 0.002854 kg CO₂/kg =2.854/1000; same ÖKOBAUDAT folder note
BuildX ICE (row 9) 0.090 kg CO₂/kg ICE Aggregates, General
PR #18 0.002854 As extracted

Divergence: 31.5×. Same analysis as Rock. Reconciliation verdict: 0.002854 from LCI Final is the parity target. Finding: Rock (m³ quarried) and Gravel (m³ river/pit gravel) share an identical A1-A3 factor. This may mean a single aggregate EPD was applied across all three aggregate types (Rock, Gravel, Sand), or it is a simplification. The per-material EPD assignment must be resolved when ÖKOBAUDAT UUIDs are sourced. Formula verdict: VALIDATED. Provenance verdict: BLOCKED. Geographic tag: ÖKOBAUDAT-interim, EU-contextualised — pending African data. Weidema axis-4 note: score = 3.

Material 3 — Sand (AGGREGATE_FINE)

Source Value Basis
2_lca_vn.xlsx (LCI Final!I5) 0.002854 kg CO₂/kg =2.854/1000; same ÖKOBAUDAT folder
BuildX ICE row 140 0.0075 kg CO₂/kg ICE Sand, General River Sand
PR #18 0.002854 As extracted

Divergence: 0.002854 vs ICE 0.0075 = 2.6× lower. Both are low-impact extraction factors. ICE river sand (0.0075) is higher than the ÖKOBAUDAT value, possibly because river dredging has more environmental impact than land-quarried aggregate. Reconciliation verdict: 0.002854 from LCI Final is the parity target. Formula verdict: VALIDATED. Provenance verdict: BLOCKED (same folder, no UUID). Finding: All three aggregate materials (Rock, Gravel, Sand) share factor 0.002854. This is likely a single ÖKOBAUDAT aggregate EPD applied uniformly — a modelling simplification that must be corrected when per-material EPD UUIDs are found. Geographic tag: ÖKOBAUDAT-interim, EU-contextualised — pending African data. Weidema axis-4 note: score = 3.

Material 4 — Earth (EARTH / RAW_EARTH)

Source Value Basis
2_lca_vn.xlsx (LCI Final!I6) 0.004675 kg CO₂/kg =4.675/1000; note: "Pietro's Thesis"
BuildX ICE row 149 0.023 kg CO₂/kg ICE General Rammed soil
BuildX ICE row 150 0.060 kg CO₂/kg ICE Cement stabilised soil @5%
PR #18 0.004675 As extracted

Divergence: 0.004675 vs ICE rammed soil 0.023 = 4.9× lower. The low value reflects minimal-processing earth: on-site excavated earth that requires no transportation or energy-intensive processing. The ICE value includes mechanical compaction and possibly transport. In the context of on-site adobe/CEB production in Sahel, 0.004675 is within the published range for artisanal earth extraction (0.002–0.010 kg CO₂/kg per Ben-Alon et al. 2020).

CRITICAL FINDING — Decision #26 hard block applies: Earth is a locally-produced EARTH material under decision #26. No ÖKOBAUDAT or ICE substitute is permitted. The current source "Pietro's Thesis" is a methodology reference (the Pedrazzi thesis), not a primary EPD. The thesis does not function as an LCA data source — it cites other sources that must be identified. The value 0.004675 is BLOCKED until a primary African or community-validated source (Chiwara field data, CRAterre, RILEM TC 274-TCE, Ben-Alon et al.) is identified and linked.

lca.a1_a3 must raise ValueError for EARTH/RAW_EARTH until this is resolved.

Attribution item 12 — Earth A1-A3 primary source. Formula verdict: VALIDATED (formula structure). Provenance verdict: BLOCKED. Geographic tag: LOCAL-DATA-REQUIRED — no EU substitute permitted (decision #26). Weidema axis-4 note: N/A until primary source on file; currently score = 5 (unknown basis).

Material 5 — Water (WATER)

Source Value Basis
2_lca_vn.xlsx (LCI Final!I7) 0 Literal 0; note: "NA"
BuildX ICE No match Water not in BuildX

Assessment: Zero GWP for process water (A1-A3) is standard practice. Potable water processing emissions are negligible at the volumes used. Water transport impact (if any) is included in A4. VALIDATED. Provenance verdict: SOURCED (common LCA convention; confirmed by "NA" note). Geographic tag: N/A (zero impact).

Material 6 — Cement (CEMENT)

Source Value Basis
2_lca_vn.xlsx (LCI Final!I8) 0.779 kg CO₂/kg =779/1000; note "MB: EE is ok" + Pedrazzi thesis p42
BuildX ICE row 27 0.912 kg CO₂/kg ICE Cement – Portland cement
PR #18 0.779 As extracted

Divergence: 0.779 vs ICE 0.912 = 17% lower. The note "MB: EE is ok" suggests Marco (MB) reviewed the embodied energy value and found it acceptable at the time of workbook creation. The reference to Pedrazzi thesis p42 is a methodology review, not a primary EPD.

The 0.779 value is below typical ÖKOBAUDAT CEM I OPC values (0.83–0.96 kg CO₂/kg for German cements). It may correspond to: (a) a blended cement (CEM II with 20–30% supplementary cementitious material, which can reach 0.65–0.80 kg CO₂/kg); (b) an older EN 15804 computation (pre-EF 3.1 characterisation factors); (c) a cement EPD specifically for Sub-Saharan Africa where clinker factor differs. Without the primary source, the distinction cannot be made.

Reconciliation verdict: 0.779 from LCI Final is the parity target. 17% divergence from ICE is material but within inter-database variability for blended cements. Formula verdict: VALIDATED. Provenance verdict: BLOCKED (thesis reference ≠ primary EPD). Geographic tag: ÖKOBAUDAT-interim, EU-contextualised — pending African data. Weidema axis-4 note: score = 3 (cement is globally traded; EU factor is a reasonable proxy pending Senegalese or regional cement EPD, e.g. Dangote, CIMAF, Holcim Africa).

Material 7 — Steel Rebars (STEEL_REBAR)

Source Value Basis
2_lca_vn.xlsx (LCI Final!I9) 2.941 kg CO₂/kg =2941/1000; note: "ok"
BuildX ICE row 159 1.990 kg CO₂/kg ICE Steel – Rebar
PR #18 2.941 As extracted

Divergence: 2.941 vs ICE 1.99 = 48% higher. This is a large divergence. ICE uses a European blend of primary (BF-BOF) and secondary (EAF) steel. 2.941 kg CO₂/kg corresponds to primary blast-furnace steel with few credits — consistent with steel production in contexts where recycled scrap is scarce (common in West Africa). The higher factor is more conservative and may be appropriate for the SSA context where scrap metal recycling rates are lower.

Reconciliation verdict: 2.941 from LCI Final is the parity target. The divergence from ICE is explained by primary vs blended steel production basis and is not an error. Formula verdict: VALIDATED. Provenance verdict: BLOCKED ("ok" is not a citation). Geographic tag: ÖKOBAUDAT-interim, EU-contextualised — pending African data. Weidema axis-4 note: score = 3 (steel supply chain is global; SSA may favour higher primary fraction, so EU factor may underestimate actual impact; conservative direction).

Material 8 — Steel plates (STEEL_SHEET)

Source Value Basis
2_lca_vn.xlsx (LCI Final!I10) 1.650 kg CO₂/kg =1650/1000; note: "ok"
BuildX ICE row 160 1.550 kg CO₂/kg ICE Steel – Section
PR #18 1.650 As extracted

Divergence: 6% higher than ICE. Well within inter-database variability. Reconciliation verdict: 1.650 from LCI Final is the parity target. Formula verdict: VALIDATED. Provenance verdict: BLOCKED ("ok"). Geographic tag: ÖKOBAUDAT-interim, EU-contextualised — pending African data. Weidema axis-4 note: score = 3.

Material 9 — Steel profiles (STEEL_PROFILE)

Source Value Basis
2_lca_vn.xlsx (LCI Final!I11) 2.167 kg CO₂/kg =2167/1000; note: "ok"
BuildX ICE row 154 2.484 kg CO₂/kg ICE Steel, General
PR #18 2.167 As extracted

Divergence: 15% lower than ICE general steel. Plausible for hollow sections or light structural profiles with more EAF content. Reconciliation verdict: 2.167 from LCI Final is the parity target. Formula verdict: VALIDATED. Provenance verdict: BLOCKED ("ok"). Geographic tag: ÖKOBAUDAT-interim, EU-contextualised — pending African data. Weidema axis-4 note: score = 3.

Material 10 — Polyethylene film (PLASTIC_FILM)

Source Value Basis
2_lca_vn.xlsx (LCI Final!I12) 2.770 kg CO₂/kg Literal 2.77; note: "Poland company's EPD"
BuildX ICE No direct match No PE film in BuildX
PR #18 2.770 As extracted

Assessment: 2.77 kg CO₂/kg for LDPE/HDPE film is within the published range (2.0–3.5 kg CO₂/kg depending on process). The ICE BuildX does not have a PE film entry. The "Poland company's EPD" is unnamed — a RESTRICTED source outside ÖKOBAUDAT.

Reconciliation verdict: 2.770 from LCI Final is the parity target (no competing primary source). Formula verdict: VALIDATED. Provenance verdict: BLOCKED (unnamed EPD, RESTRICTED territory). Geographic tag: ÖKOBAUDAT-interim, EU-contextualised — pending African data (PE film is globally manufactured; an ÖKOBAUDAT PE film EPD must substitute for the unnamed Polish EPD).

Note on weight formula: LCI Final!F12 = =(C12*0.03)*E12 applies a 3% mass fraction factor to the declared area quantity. This embedded material property (3% mass conversion) has no citation in the workbook. It should be verified against a polyethylene film product datasheet. Weidema axis-4 note: score = 3.

Material 11 — Bitumen (BITUMEN)

Source Value Basis
2_lca_vn.xlsx (LCI Final!I13) 0.064 kg CO₂/kg =64/1000; no source note
BuildX ICE row 24 0.191 kg CO₂/kg ICE Bitumen – Straight-run
BuildX ICE row 25 0.326 kg CO₂/kg ICE Bitumen – PMB
PR #18 0.064 As extracted

Divergence: 0.064 vs ICE straight-run 0.191 = 198% lower. This is a large divergence. The 0.064 value is very low for refined petroleum products. Possible explanations: (a) The declared unit may be different (e.g. kg CO₂ per MJ, not per kg of product); (b) The value may apply to a bitumen emulsion with water dilution; (c) It may be an extraction-only factor excluding refining energy.

Published ÖKOBAUDAT bitumen EPDs typically show 0.15–0.45 kg CO₂/kg for road-grade bitumen. The 0.064 value appears anomalously low but cannot be corrected without the primary source.

Reconciliation verdict: 0.064 from LCI Final is the parity target. Formula verdict: VALIDATED. Provenance verdict: BLOCKED (no source note at all). Geographic tag: ÖKOBAUDAT-interim, EU-contextualised — pending African data. Weidema axis-4 note: score = 5 (unknown source; unusually low value; high uncertainty).

Material 12 — Crude oil (PETROLEUM_DISTILLATE)

Source Value Basis
2_lca_vn.xlsx (LCI Final!I14) 134 kg CO₂/kg Literal 134; note: "No Eol as it is burned (all emissions go in A1-3)"
BuildX ICE No match No crude oil in BuildX
PR #18 134 As extracted

CRITICAL FINDING — anomalous factor: 134 kg CO₂/kg for crude oil is approximately 44× higher than the combustion emission factor for crude oil. Standard values: - Combustion: ~3.0 kg CO₂/kg (IPCC EFDB, crude oil Tier 1) - Extraction + refining (A1-A3): ~0.4–1.2 kg CO₂/kg (ÖKOBAUDAT crude oil EPDs) - Combustion + extraction combined: ~3.5–4.2 kg CO₂/kg

The note "burned in A1-3" means the workbook intends to include combustion emissions of crude oil used as construction-site fuel in the A1-A3 scope. Even so, 134 kg CO₂/kg is inexplicable. Likely root causes: (a) Unit confusion: 134 MJ/kg is the approximate heating value of crude oil in MJ, not kg CO₂. The formula may have imported a primary energy value as a GWP factor. (b) Decimal-point or factor-of-1000 slip similar to the antirust paint anomaly. (c) An intermediate calculation artifact not cleaned from the cell.

This is a second anomaly of the same type as the antirust paint (see antirust-paint-investigation.md): a factor that is orders of magnitude higher than any published EPD value with no traceable source. The crude oil A1-A3 factor generates 8 055 kg CO₂ — 8.7% of the Excel's total A1-A3 of 92 361 kg CO₂.

Verdict: BLOCKED. The 134 value must NOT be used in lca.a1_a3. The module must raise ValueError for PETROLEUM_DISTILLATE until a primary source is on file. Do NOT write a parity test against 134 — it is anomalous.

Attribution item 13 — Crude oil A1-A3 = 134 kg CO₂/kg — anomaly investigation required. Formula verdict: N/A — factor itself is anomalous. Provenance verdict: BLOCKED. Geographic tag: BLOCKED — geographic assessment is premature until the factor is resolved. Weidema axis-4 note: score = 5 (anomalous; cannot assess).

Material 13 — Waste Oil (WASTE_OIL)

Source Value Basis
2_lca_vn.xlsx (LCI Final!I15) 0.250 kg CO₂/kg Literal 0.25; note: "No EE as it is paid by previous use (only filtering and transport)"
BuildX ICE No match No waste oil in BuildX
PR #18 0.250 As extracted

Assessment: The note explains the rationale: no A1-A3 burden is allocated to waste oil (its primary production burden is already allocated to the original petroleum product that generated it). The 0.25 kg CO₂/kg represents only the re-processing energy (filtering, transport). This is an economically-allocated approach. The value 0.25 is plausible for waste oil re-processing but has no normative citation.

Reconciliation verdict: 0.250 is the parity target. Formula verdict: VALIDATED. Provenance verdict: BLOCKED ("research papers" with no citation). Geographic tag: ÖKOBAUDAT-interim, EU-contextualised — pending African data. Weidema axis-4 note: score = 4 (methodology plausible but citation absent).

Material 14 — Glass (GLASS)

Source Value Basis
2_lca_vn.xlsx (LCI Final!I16) 0.7356 kg CO₂/kg =9.71*(1/0.006)*(1/E16) where E16=2200
BuildX ICE row 94 1.437 kg CO₂/kg ICE Glass – Single pane, density 2500
PR #18 0.7356 As extracted

Formula analysis: The glass factor formula reverses a declared-unit EPD value back to per-kg: factor_per_kg = 9.71 [kg CO₂/DU] ÷ (0.006 [m thickness] × 2200 [kg/m³])

Where the declared unit (DU) is 1 m² of glass at 6mm thickness. The 9.71 kg CO₂/m² for 6mm glass is plausible (ICE single pane at 2500 kg/m³ and 1.437 kg CO₂/kg = 1.437 × 0.006 × 2500 = 21.6 kg CO₂/m² — much higher than 9.71, reflecting a different product or system boundary).

Divergence: 0.7356 vs ICE 1.437 = 95% lower. This difference may reflect: (a) Different glass product (ICE may include toughening, coating, or frame) (b) Different LCI system boundary (ÖKOBAUDAT vs ICE scope) (c) Different density assumed in the EPD (ICE uses 2500, formula uses 2200 kg/m³)

The formula is internally consistent but the base value 9.71 has no citation.

Reconciliation verdict: 0.7356 (computed from formula) is the parity target. Formula verdict: VALIDATED (the per-unit → per-kg conversion is structurally correct). Provenance verdict: BLOCKED (base EPD value 9.71 kg CO₂/m² has no citation). Geographic tag: ÖKOBAUDAT-interim, EU-contextualised — pending African data. Weidema axis-4 note: score = 3.

Material 15 — Anti-termite (PESTICIDE)

Source Value Basis
2_lca_vn.xlsx (LCI Final!I17) 0.650 kg CO₂/kg Literal 0.65; no source
BuildX ICE No match No pesticide/termiticide in BuildX
PR #18 0.650 As extracted

Assessment: 0.65 kg CO₂/kg for termiticide is plausible for a diluted chemical formulation but has no citation. Termiticide EPD data is essentially absent from all approved programme operator databases (ÖKOBAUDAT, INIES, EPD Norge). A local supplier Safety Data Sheet or product specification is the most likely route to sourcing.

Reconciliation verdict: 0.650 is the parity target. Formula verdict: VALIDATED. Provenance verdict: BLOCKED (no source at all). Geographic tag: BLOCKED — no ÖKOBAUDAT EPD available for termiticide; local supplier data required. This material is a speciality chemical product per decision #26. Weidema axis-4 note: score = 5 (unknown; no comparable data found).

Material 16 — Wall paint (PAINT_WALL)

Source Value Basis
2_lca_vn.xlsx (LCI Final!I18) 1.200 kg CO₂/kg Literal 1.2; note: "Silicate external paint is ok"
BuildX ICE row 112 2.910 kg CO₂/kg ICE Paint – General
BuildX ICE row 116 2.540 kg CO₂/kg ICE Paint – Waterborne
BuildX ICE row 117 3.760 kg CO₂/kg ICE Paint – Solvent borne
PR #18 1.200 As extracted

Divergence: 1.2 vs ICE range 2.5–3.8 = 108–217% lower. The note "Silicate external paint" suggests a mineral paint (potassium silicate / Keim-type). Mineral silicate paints have lower GWP than synthetic organic paints because they use inorganic binders. Published INIES FDES values for silicate mineral paints: 0.8–2.0 kg CO₂/kg, consistent with 1.2.

The "is ok" note suggests Marco reviewed and accepted the value. No EPD or FDES number is cited.

Reconciliation verdict: 1.200 is the parity target. Formula verdict: VALIDATED. Provenance verdict: BLOCKED (no EPD or FDES number cited). Geographic tag: ÖKOBAUDAT-interim, EU-contextualised — pending African data. Weidema axis-4 note: score = 4 (plausible for mineral paint but no citation; mineral paint type confirmed by note but not the EPD).

Material 17 — Antirust paint (PAINT_ANTIRUST)

Source Value Basis
2_lca_vn.xlsx (LCI Final!I19) 105 kg CO₂/kg =20.16*(1/0.16)*1000*(1/E19) — anomaly
CORRECTED (antirust investigation) 4.87 kg CO₂/kg INIES FDES 2-152:2020 (SIPEV, provisional)
BuildX ICE row 117 3.760 kg CO₂/kg ICE Paint – Solvent borne
PR #18 CORRECTED 4.87 As recorded in antirust-paint-investigation.md

Divergence (corrected vs ICE): 4.87 vs 3.76 = 29% higher. This is within normal inter-database variability for solvent-phase alkyd paints. The INIES FDES value (4.87) and ICE solvent-borne (3.76) are in the same order of magnitude, confirming the correction direction is sound.

Reconciliation verdict: CORRECTED to 4.87 per antirust-paint-investigation.md. The Excel value of 105 must NOT be used as a parity target. Formula verdict: CORRECTED. Provenance verdict: BLOCKED (two active blockers: FDES expired June 2025; solvent vs water phase pending Chiwara attribution — see Item 7). Geographic tag: BLOCKED pending type confirmation and renewed FDES. Weidema axis-4 note: N/A until blockers resolved.

Material 18 — Floor Tiles (CERAMIC_TILE)

Source Value Basis
2_lca_vn.xlsx (LCI Final!I20) 5.090 kg CO₂/kg Literal 5.09; no source
BuildX ICE row 184 0.192 kg CO₂/kg ICE Tiles – General
BuildX ICE row 186 0.120 kg CO₂/kg ICE Terrazzo tiles
PR #18 5.090 As extracted

Divergence: 5.09 vs ICE 0.192 = 26.5× higher. This is a very large divergence comparable to the antirust and crude oil anomalies. Published ceramic floor tile GWP: 0.10–0.80 kg CO₂/kg for standard tiles; up to 1.5 kg CO₂/kg for porcelain. 5.09 kg CO₂/kg is not consistent with any published ceramic tile EPD.

Possible unit error: The glass formula shows explicit declared-unit → per-kg conversion. Floor tiles have no such conversion. If 5.09 is actually kg CO₂ per m² of tiles (not per kg), the correct per-kg factor would be: 5.09 ÷ (thickness × density) = 5.09 ÷ (0.010 m × 2400 kg/m³) = 5.09 ÷ 24 = 0.212 kg CO₂/kg — consistent with the ICE value of 0.192.

The weight formula LCI Final!F20 = =(C20*0.005)*E20 uses a 5mm thickness factor (0.005 m). If the EPD declared unit is m² at 10mm standard tile thickness and the workbook weight formula uses 5mm, there may be a compounded error.

This is a third anomaly: floor tiles A1-A3 factor = 5.09 is likely expressed in kg CO₂/m² (not per kg) and was applied without the necessary declared-unit → per-kg conversion.

Verdict: BLOCKED. The 5.09 value must NOT be used in lca.a1_a3 until: (a) The primary EPD is identified and the declared unit confirmed; (b) The per-kg conversion is applied correctly (analogous to the glass formula). Do NOT write a parity test against 5.09 — it is likely a unit error.

Attribution item 14 — Floor tiles A1-A3 factor: possible unit error requiring EPD identification. Formula verdict: BLOCKED (possible unit error in factor itself). Provenance verdict: BLOCKED. Geographic tag: ÖKOBAUDAT-interim, EU-contextualised — pending African data. Weidema axis-4 note: score = 5 (unknown source; suspected unit error).


§4 Authoritative A1–A3 factor table for lca.a1_a3 parity test

These are the factors that the future lca.a1_a3 regression test must use as parity targets for the Keur Songho reference case. CORRECTED values override the Excel; BLOCKED values raise in the module (no parity test possible until sourced).

ID Material MaterialCategory Factor (kg CO₂/kg) Verdict Notes
1 Rock ROCK_STONE 0.002854 VALIDATED / BLOCKED ÖKOBAUDAT folder, no UUID
2 Gravel AGGREGATE_COARSE 0.002854 VALIDATED / BLOCKED Same EPD as Rock (simplification)
3 Sand AGGREGATE_FINE 0.002854 VALIDATED / BLOCKED Same EPD (simplification)
4 Earth EARTH / RAW_EARTH RAISES ValueError BLOCKED Decision #26 hard block; no EU substitute
5 Water WATER 0 VALIDATED / SOURCED Standard convention
6 Cement CEMENT 0.779 VALIDATED / BLOCKED Thesis reference ≠ primary EPD
7 Steel Rebars STEEL_REBAR 2.941 VALIDATED / BLOCKED "ok" not a citation
8 Steel plates STEEL_SHEET 1.650 VALIDATED / BLOCKED "ok"
9 Steel profiles STEEL_PROFILE 2.167 VALIDATED / BLOCKED "ok"
10 Polyethylene film PLASTIC_FILM 2.770 VALIDATED / BLOCKED Unnamed Polish EPD
11 Bitumen BITUMEN 0.064 VALIDATED / BLOCKED No source; unusually low
12 Crude oil PETROLEUM_DISTILLATE RAISES ValueError BLOCKED 134 kg CO₂/kg is anomalous (likely unit error)
13 Waste Oil WASTE_OIL 0.250 VALIDATED / BLOCKED "Research papers", no citation
14 Glass GLASS 0.7356 VALIDATED / BLOCKED Base EPD value 9.71 uncited
15 Anti-termite PESTICIDE 0.650 VALIDATED / BLOCKED No source; no ÖKOBAUDAT EPD available
16 Wall paint PAINT_WALL 1.200 VALIDATED / BLOCKED No EPD number cited
17 Antirust paint PAINT_ANTIRUST 4.87 (CORRECTED) CORRECTED / BLOCKED Excel 105→4.87; two blockers active (see antirust investigation)
18 Floor Tiles CERAMIC_TILE RAISES ValueError BLOCKED 5.09 likely kg CO₂/m² not per kg (unit error)

Computed A1-A3 impacts (Excel parity, using Excel factors where not RAISED):

Material Weight (kg) Factor (kg CO₂/kg) A1-A3 (kg CO₂) Verdict
Rock 191 345.77 0.002854 546.30 VALIDATED
Gravel 52 187.31 0.002854 148.94 VALIDATED
Sand 85 196.23 0.002854 243.17 VALIDATED
Earth 1 494 888.52 RAISES BLOCKED
Water 299 583.55 0 0 VALIDATED
Cement 23 301.05 0.779 18 151.52 VALIDATED
Steel Rebars 1 330.60 2.941 3 913.04 VALIDATED
Steel plates 2 415.87 1.650 3 986.19 VALIDATED
Steel profiles 1 491.50 2.167 3 231.97 VALIDATED
Polyethylene film 5 025.60 2.770 13 920.91 VALIDATED
Bitumen 376.48 0.064 24.09 VALIDATED
Crude oil 60.11 RAISES BLOCKED
Waste Oil 120.23 0.250 30.06 VALIDATED
Glass 21.14 0.7356 15.55 VALIDATED
Anti-termite 1 445.75 0.650 939.74 VALIDATED
Wall paint 393.21 1.200 471.85 VALIDATED
Antirust paint 138.00 4.87 (CORRECTED) 672.06 CORRECTED
Floor Tiles 3 379.90 RAISES BLOCKED
Excel total 92 361 using Excel 105 for antirust, 134 for crude, 5.09 for tiles
Corrected total (antirust only) 78 543 Excel 92 361 − (105−4.87)×138 = −13 818

Divergence assertion for antirust paint: Excel A1-A3 total − corrected A1-A3 total = 92 361 − 78 543 = 13 818 kg CO₂ (−15.0% of A1-A3 total).


§5 Verdict summary table

Axis 1 — Formula verdicts

Item Verdict Note
A1-A3 sheet formula E = C × D VALIDATED Weight × factor; structurally correct for all 18 materials
Earth A1-A3 factor BLOCKED Source "Pietro's Thesis" — not a primary EPD
Crude oil A1-A3 = 134 kg CO₂/kg CORRECTED (anomaly) Likely unit confusion (MJ/kg ≠ kg CO₂/kg); raises ValueError
Floor tiles A1-A3 = 5.09 CORRECTED (suspected unit error) Likely kg CO₂/m² applied as per-kg; raises ValueError
Antirust paint A1-A3 = 105 CORRECTED → 4.87 (provisional) Per antirust-paint-investigation.md
All other A1-A3 factors VALIDATED (formula) / BLOCKED (provenance) Parity assertion valid; provenance sourcing required

Axis 2 — Parameter provenance (all A1-A3 factors)

Parameter Verdict Sourcing path
Water A1-A3 = 0 SOURCED Standard LCA convention
All aggregate factors (Rock, Gravel, Sand) BLOCKED ÖKOBAUDAT UUID required
Earth factor BLOCKED Local/primary data required (decision #26); no EU substitute
Cement 0.779 BLOCKED Primary cement EPD required (ÖKOBAUDAT CEM II or African cement)
All steel factors BLOCKED Primary ÖKOBAUDAT steel EPD required
Polyethylene film 2.77 BLOCKED ÖKOBAUDAT PE film EPD required (unnamed Polish EPD inadmissible)
Bitumen 0.064 BLOCKED Primary ÖKOBAUDAT bitumen EPD required
Crude oil 134 BLOCKED Anomaly investigation before any value can be used
Waste Oil 0.25 BLOCKED Research paper citation required
Glass 0.7356 BLOCKED Primary EPD for base value 9.71 kg CO₂/m² required
Anti-termite 0.65 BLOCKED Local supplier EPD required; no ÖKOBAUDAT EPD available
Wall paint 1.2 BLOCKED ÖKOBAUDAT silicate mineral paint EPD required
Antirust paint 4.87 BLOCKED Two active blockers (expired FDES; Chiwara type decision)
Floor tiles 5.09 BLOCKED Unit error must be resolved first

Geographic provenance tags (decision #26)

Material Geo tag Basis
Rock, Gravel, Sand ÖKOBAUDAT-interim, EU-contextualised Globally-similar quarried aggregate
Earth LOCAL-DATA-REQUIRED — no EU substitute EARTH material, decision #26 hard block
Water N/A Zero impact
Cement ÖKOBAUDAT-interim, EU-contextualised Globally traded commodity; EU factor reasonable proxy
Steel Rebars/plates/profiles ÖKOBAUDAT-interim, EU-contextualised Globally manufactured; higher SSA primary-steel fraction may increase actual impact
Polyethylene film ÖKOBAUDAT-interim, EU-contextualised Globally manufactured
Bitumen ÖKOBAUDAT-interim, EU-contextualised Petroleum-derived; globally traded
Crude oil BLOCKED Anomalous factor; geographic assessment premature
Waste Oil ÖKOBAUDAT-interim, EU-contextualised Once primary source found
Glass ÖKOBAUDAT-interim, EU-contextualised Float glass is globally manufactured
Anti-termite BLOCKED — speciality chemical Decision #26: no ÖKOBAUDAT EPD; local supplier data required
Wall paint ÖKOBAUDAT-interim, EU-contextualised Mineral paint; ÖKOBAUDAT has applicable EPDs
Antirust paint BLOCKED Pending Chiwara type decision and renewed FDES
Floor Tiles ÖKOBAUDAT-interim, EU-contextualised Once unit error resolved and ÖKOBAUDAT EPD sourced

§6 Weidema pedigree axis-4 notes (geographic representativeness)

These scores feed the axis-4 column of proxy_provenance when seed EPDs are committed.

Material Axis-4 score Rationale
Rock 3 Different country, similar climate; aggregates supply chains locally variable
Gravel 3 Same as Rock
Sand 3 Same as Rock
Earth 5 Unknown; no valid source yet on file
Water Zero impact, not applicable
Cement 3 Cement is globally traded; EU factor reasonable but SSA clinker factor may differ
Steel Rebars 3 Global commodity; SSA higher primary-steel fraction increases uncertainty
Steel plates 3 Same as rebars
Steel profiles 3 Same as rebars
Polyethylene film 3 Globally manufactured; EU factor is reasonable interim
Bitumen 4 Unusually low value; additional uncertainty from unknown source
Crude oil 5 Anomalous value; cannot score until resolved
Waste Oil 4 Plausible methodology but citation absent
Glass 3 Float glass globally manufactured; EU factor reasonable
Anti-termite 5 No data at all; speciality chemical, likely produced locally
Wall paint 4 Plausible for mineral paint but no primary EPD
Antirust paint 5 Anomaly still partially unresolved; two blockers active
Floor Tiles 5 Suspected unit error; cannot assess until resolved

§7 MaterialCategory mapping

All 18 materials from 2_lca_vn.xlsx LCI Final map to existing MaterialCategory StrEnum members (defined in backend/app/schemas/enums.py). No missing member.

Material MaterialCategory Notes
Rock ROCK_STONE Quarried masonry stone
Gravel AGGREGATE_COARSE Coarse aggregate (>4mm)
Sand AGGREGATE_FINE Fine aggregate (<4mm)
Earth EARTH On-site excavated earth (where unstabilised); RAW_EARTH for adobe/vault bricks
Water WATER Process water
Cement CEMENT Portland or blended cement
Steel Rebars STEEL_REBAR Reinforcing bar
Steel plates STEEL_SHEET Flat rolled sheet/plate
Steel profiles STEEL_PROFILE Hollow sections, angles, I-beams
Polyethylene film PLASTIC_FILM LDPE/HDPE waterproof membrane
Bitumen BITUMEN Road-grade bitumen for waterproofing
Crude oil PETROLEUM_DISTILLATE Construction fuel/lubricant
Waste Oil WASTE_OIL Recovered used oil
Glass GLASS Float glass (fanlight glazing)
Anti-termite PESTICIDE Termiticide soil treatment
Wall paint PAINT_WALL Mineral silicate exterior paint
Antirust paint PAINT_ANTIRUST Alkyd primer for steel elements
Floor Tiles CERAMIC_TILE Fired ceramic floor tile

§8 New BLOCKED items → GitHub issues and attribution requests

Three new anomalies found in this session require attribution requests:

  • Attribution item 12 (docs/methodology/chiwara-attribution-requests.md): Earth A1-A3 primary source — "Pietro's Thesis" is not a primary EPD; need CRAterre or peer-reviewed citation. Blocks lca.a1_a3 for EARTH.
  • Attribution item 13: Crude oil A1-A3 = 134 kg CO₂/kg — anomaly investigation. Likely unit confusion (MJ/kg used as kg CO₂/kg). Must be traced to original calculation before any value can be committed. Blocks lca.a1_a3 for PETROLEUM_DISTILLATE.
  • Attribution item 14: Floor tiles A1-A3 = 5.09 — suspected unit error (kg CO₂/m² used as per-kg). Needs primary EPD identification and declared-unit verification. Blocks lca.a1_a3 for CERAMIC_TILE.

These join existing items 8–11 in chiwara-attribution-requests.md.

ICE source status: The BuildX Database's ICE source must be added to THIRD_PARTY.md with UNKNOWN licence status. ICE is not in the approved source list (decision #4). No ICE value may be committed to seed_epds/.


§9 Session prerequisite status

This document is the last Session-6 prerequisite. Combined with lca-stages-b4-c3-c4-d-spec.md (the B4/C3/C4/D stage RE), the full 2_lca_vn.xlsx reverse-engineering is complete. The lca.a1_a3 module can now proceed to Steps 2–6 of the Phase 1 incremental loop.

BLOCKED gates remaining before lca.a1_a3 Step 3 (implementation): - Aggregate ÖKOBAUDAT UUIDs: must source before seeding; module can raise for now. - Earth primary source: must source; module raises per decision #26. - Crude oil anomaly: must investigate; module raises. - Floor tiles unit error: must verify; module raises. - Antirust paint two blockers: module raises (or uses provisional 4.87 with BLOCKED flag).