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 fromLCI Final!Fand factor fromLCI 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. Blockslca.a1_a3for 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_a3for 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_a3for 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).