Skip to content

LCA Stages B4 / C3 / C4 / D — Formula Reverse-Engineering Spec

Source workbook: reference/excel/2_lca_vn.xlsx (read-only) Sub-chat deliverable — Phase 2 prerequisite Date: 2026-07-16

Verdict tags apply the two-axis scheme from PROJECT.md decision #23 and RSL provenance gate from decision #24. Vendorability tags follow decision #25 (ÖKOBAUDAT = sole vendorable source).


§1 Workbook structure

reference/excel/2_lca_vn.xlsx contains twelve sheets:

Sheet name Purpose
LCI Final Master material inventory: quantities, densities, impact factors (A1-A3, C3, C4, D), disposal rates, recycling rates
A1-A3 Manufacturing impact per material
A4 Transport to site
A5 Construction energy
B1 Labelled "B1" in the workbook; actually Module B6 (operational energy). See Finding D-F1.
B4 (Replacement) Maintenance/replacement impacts
C1(Demolition) Demolition energy
C2 (Transport) End-of-life transport
C3(Waste Processing) Waste processing impacts
C4 (Disposal) Landfill/disposal impacts
D Benefits/loads beyond system boundary (recycling credits)
INTERPRETATION Per-material multi-module summary and project totals

The material list across all sheets is 18 materials (rows 3–20 of LCI Final): Rock, Gravel, Sand, Earth, Water, Cement, Steel Rebars, Steel plates, Steel profiles, Polyethylene film, Bitumen, Crude oil, Waste Oil, Glass, Anti-termite, Wall paint, Antirust paint, Floor Tiles.


§2 LCI Final — master impact database

LCI Final is the single source of all impact factors and rates. Columns:

Column Label Content
A ID Row number 1–18
B Material Name
C BOQ Quantity Declared quantity in declared unit
D BOQ unit Declared unit (m³, Kg, L, m²)
E Density (kg/m³) Used to convert declared unit → kg
F BoQ weight (kg) = C × E (or = C when unit is already kg)
G Disposal Rate Fraction going through C3/C4 processing at end of life
H Recycling Rate = 1 − G (formula =(1-G_row))
I A1-A3 (kg CO2-eq/kg) Manufacturing GWP factor
J C3 (kg CO2-eq/kg) Waste processing GWP factor
K C4 (kg CO2-eq/kg) Landfill/disposal GWP factor
L D (kg CO2-eq/kg) Recycling/reuse credit GWP factor (negative)
M Source Provenance note (column N in the data dump)

§2.1 Full factor table extracted from LCI Final rows 3–20

All cell references are LCI Final!<cell>.

ID Material Qty Unit Density Weight (kg) G (Disposal) H (Recycle) I (A1-A3) J (C3) K (C4) L (D) Source notes
1 Rock 70.869 m³ 2700 191 346 0.10 0.90 0.002854 0.006726 0 −0.002854 "ÖKOBAUDAT — Aggregates folder"
2 Gravel 31.064 m³ 1680 52 187 0.50 0.50 0.002854 0.006726 0 −0.002854 "ÖKOBAUDAT — Aggregates folder"
3 Sand 56.050 m³ 1520 85 196 1.00 0 0.002854 0.006726 0 −0.002854 "ÖKOBAUDAT — Aggregates folder"
4 Earth 830.494 m³ 1800 1 494 889 0.08 0.92 0.004675 0.003378 0 −0.004675 "Pietro's Thesis"
5 Water 299.584 m³ 1000 299 584 1.00 0 0 0 0 0 NA
6 Cement 23 301 kg Kg 1440 23 301 1.00 0 0.779 0.001890 0.004810 0 Note references Pedrazzi thesis p42
7 Steel Rebars 1 330.6 kg Kg 7850 1 331 0.05 0.95 2.941 0 7.18 −1.480 "ok"
8 Steel plates 0.308 m³ 7850 2 416 0.05 0.95 1.650 0 1.81 −1.010 "ok"
9 Steel profiles 0.19 m³ 7850 1 492 0.05 0.95 2.167 0 7.18 −1.480 "ok"
10 Polyethylene film 139.6 m² 1200 5 026 1.00 0 2.77 1.13 0.0128 −1.32 "Poland company's EPD"
11 Bitumen 376.5 kg kg 1060 376 1.00 0 0.064 0.000282 0.000900 −0.00705 (none)
12 Crude oil 66.794 L L 900 60 1.00 0 134 0 0 0 "No EoL — burned in A1-A3"
13 Waste Oil 133.588 L L 900 120 1.00 0 0.25 0 0.400 0 "No C3; only EoL from research papers"
14 Glass 0.009608 m³ 2200 21 0.10 0.90 0.7356 0 0.018712 −0.006437 (none)
15 Anti-termite 1445.75 L L 1000 1 446 1.00 0 0.65 0.05 0.200 0 (none)
16 Wall paint 327.675 L L 1200 393 1.00 0 1.2 0.05 1.000 −0.0782 "Silicate external paint is ok"
17 Antirust paint 115 L L 1200 138 1.00 0 105¹ 0.05 1.000 0 (none — formula =20.16*(1/0.16)*1000*(1/E19))
18 Floor Tiles 281.658 m² 2400 3 380 0.10 0.90 5.09 0.12 0.016 −0.12 (none)

¹ Antirust paint A1-A3 factor is CORRECTED per antirust-paint-investigation.md. Cell I19 = =20.16*(1/0.16)*1000*(1/E19) = 105 kg CO₂/kg. This is an anomaly (18–25× any published EPD value). The provisional correction is 4.87 kg CO₂/kg (INIES FDES 2-152:2020, SIPEV). Full verdict in §8 of quantities-formula-reconciliation.md. Carry forward as CORRECTED in all downstream stages; do NOT write a parity test for 105.

Polyethylene film weight formula: =(C12*0.03)*E12 — applies 3% film thickness factor to declared area quantity. This calculation embedded a material property (3% mass fraction) with no citation. BLOCKED per §2.2.

§2.2 Source assessment for LCI Final factors

Source note in workbook Provenance verdict Action
"ÖKOBAUDAT — Aggregates folder" BLOCKED — screenshot reference without ÖKOBAUDAT dataset UUID or version Locate ÖKOBAUDAT UUID for each aggregate EPD; commit as seed EPD per decision #25
"Pietro's Thesis" BLOCKED — a methodology reference, not a primary EPD source Locate primary EPD backing Pedrazzi's earth factors; if none, use ÖKOBAUDAT earth substitute
"ok" (steel rows) BLOCKED — not a citation Source ÖKOBAUDAT steel EPD or equivalent
"Poland company's EPD" BLOCKED — unnamed EPD, RESTRICTED source territory, not ÖKOBAUDAT Source ÖKOBAUDAT PE film EPD
No note / empty BLOCKED Source required before seeding
=20.16*(1/0.16)*1000*(1/E19) (antirust) CORRECTED (antirust investigation §8) Provisional 4.87 kg CO₂/kg; two blockers active

Geographic representativeness caveat (issue #14): All currently cited factors (ÖKOBAUDAT, Pedrazzi thesis) reflect European supply chains. Every seed EPD committed for this project must document geographic scope in justification_text and proxy_provenance per decision #25.


§3 Module B4 — Replacement

Sheet: B4 (Replacement)

§3.1 Column structure

Col Header Formula
A Material ='A1-A3'!B_row
B BoQ quantity (kg) ='A1-A3'!C_row (= LCI Final F column)
C GWP (kg CO2-eq/kg) ='A1-A3'!D_row (= LCI Final I column)
D Unit Impact (kg CO2 eq) ='A1-A3'!E_row = B × C
E % Finishes Hardcoded fraction per material
F Replacements =ROUNDUP('B1'!$C$5/10 − 1, 0)
G Component Quantity = E × B
H Unit Impact B4 = C × (F × G)
I share% = H / H23

Impact formula:

$$\text{Impact_B4}[\text{material}] = \text{GWP} \times (\text{replacements} \times \text{finishes_fraction} \times \text{BoQ_weight_kg})$$

Which can also be written as:

$$H_{\text{row}} = C_{\text{row}} \times F_{\text{row}} \times E_{\text{row}} \times B_{\text{row}}$$

§3.2 Replacement count formula

The replacement count is a single shared formula applied uniformly to all materials:

F_row = ROUNDUP('B1'!$C$5 / 10 − 1, 0)

Where 'B1'!C5 = 50 (study period in years), giving:

ROUNDUP(50/10 − 1, 0) = ROUNDUP(4.0, 0) = 4

Mathematical equivalence to decision #24: ROUNDUP(x − 1, 0) equals ⌈x⌉ − 1 for all positive x (integer and non-integer cases). So when RSL = 10 years and study period = 50 years: ⌈50/10⌉ − 1 = 5 − 1 = 4. The formula produces the correct count for this specific case. The structural deviation is the hardcoded RSL = 10 (see §3.4, Finding B4-F1).

Study period (B1!C5 = 50): The workbook uses a 50-year study period. Decision #15 defaults to 30 years for the Sahel context. The 50-year value is a project-specific choice with no citation in the B1 sheet. EXPERT-JUDGEMENT — see attribution item 8.

§3.3 % Finishes values (column E, B4 sheet)

The % Finishes column determines what fraction of each material's installed quantity is considered a "finishes" component that degrades and is replaced. Materials with E = 0 contribute zero B4 impact.

Material % Finishes (E) Formula verdict Note
Rock 0 (empty) VALIDATED Structural — no maintenance replacement
Gravel 0 (empty) VALIDATED Structural aggregate
Sand 0.50 BLOCKED Source required — see item 8
Earth 0.08 BLOCKED Source required
Water 0.03 BLOCKED Maintenance water fraction unclear
Cement 0.40 BLOCKED Finishes cement fraction — source required
Steel Rebars 0 (empty) VALIDATED Structural steel not replaced
Steel plates 0 (empty) VALIDATED Structural
Steel profiles 0 (empty) VALIDATED Structural
Polyethylene film 0 (empty) VALIDATED Waterproof membrane — not typically replaced
Bitumen 1.00 BLOCKED Full replacement assumed — source required
Crude oil 1.00 CORRECTED See B4-F2 — crude oil is not a maintenance material
Waste Oil 1.00 BLOCKED See B4-F3 — waste oil as maintenance item questionable
Glass 0 (empty) CORRECTED See B4-F4 — glass should have replacement modelled
Anti-termite 0.30 BLOCKED Treatment fraction and RSL source required
Wall paint 1.00 BLOCKED Full repainting — source required for interval
Antirust paint 0 BLOCKED Not replaced — see B4-F5
Floor Tiles 0 CORRECTED See B4-F6 — tiles should be replaced

§3.4 Extracted computed values (parity reference)

The following are the Excel's computed values (data_only read from B4 (Replacement)). Used as parity target only for VALIDATED formulas; divergence tests document CORRECTED rows.

Material B (kg) C (kg CO2/kg) E (finishes) F (replace) G (comp. qty) H (B4 impact kg CO2)
Rock 191 345.77 0.002854 0 4 0 0
Gravel 52 187.31 0.002854 0 4 0 0
Sand 85 196.23 0.002854 0.50 4 42 598.12 486.30
Earth 1 494 888.52 0.004675 0.08 4 119 591.08 2 236.35
Water 299 583.55 0 0.03 4 8 987.51 0
Cement 23 301.05 0.779 0.40 4 9 320.42 29 042.42
Steel Rebars 1 330.60 2.941 0 4 0 0
Steel plates 2 415.87 1.650 0 4 0 0
Steel profiles 1 491.50 2.167 0 4 0 0
Polyethylene film 5 025.60 2.770 0 4 0 0
Bitumen 376.48 0.064 1.00 4 376.48 96.38
Crude oil 60.11 134 1.00 4 60.11 32 221.48 ¹
Waste Oil 120.23 0.25 1.00 4 120.23 120.23
Glass 21.14 0.736 0 4 0 0 ²
Anti-termite 1 445.75 0.65 0.30 4 433.73 1 127.69
Wall paint 393.21 1.200 1.00 4 393.21 1 887.41
Antirust paint 138.00 105 0 4 0 0 ³
Floor Tiles 3 379.90 5.09 0 4 0 0 ²
TOTAL 67 218.26

¹ CORRECTED — crude oil should not be a maintenance replacement material (B4-F2). ² CORRECTED — glass and floor tiles should have B4 replacement modelled (B4-F4, B4-F6). ³ Antirust paint E21 = 0: no B4 replacement. Factor also CORRECTED to 4.87 (antirust investigation).

§3.5 Findings

B4-F1 — CORRECTED: RSL hardcoded at 10 years; not per-material

Cell: F7 (and all other F rows): =ROUNDUP('B1'!$C$5/10 − 1, 0)

The 10 in the denominator is a hardcoded RSL = 10 years applied uniformly to all materials. Decision #24 requires per-material RSL, provenance-gated (SOURCED / EXPERT-JUDGEMENT / BLOCKED). The Python module lca.b4 must consume an RSL attribute per material, raise ValueError for any BLOCKED RSL, and apply replacements = ⌈study_period / RSL⌉ − 1.

Parity: For the Keur Songho case with study_period = 50 and RSL = 10, both the Excel formula and decision #24 formula produce 4 replacements. The numeric outputs in the table above are correct parity targets only for rows where the E fraction and other inputs are otherwise validated. The RSL=10 assumption must be replaced by per-material RSL in production.

Attribution item 8 — RSL = 10 years and "% finishes" fractions.

B4-F2 — CORRECTED: Crude oil as 100% maintenance replacement material

Cell: E16 = 1 (% finishes = 100%)

Crude oil (66.794 L declared, 60.11 kg) is assigned 100% finishes fraction and is thus fully replaced 4 times. This generates 32 221 kg CO₂ eq — 47.9% of the entire B4 total. The rationale is not documented. Crude oil in the BoQ is a construction-phase fuel/lubricant (used in A5 or as form-work oil); it is not a building maintenance material. Using it as a 100% maintenance item that is replaced every 10 years is methodologically unsound and inflates B4 by ~32 t CO₂ eq.

Verdict: CORRECTED. The Python lca.b4 module must exclude crude oil from B4 replacements (E = 0), or treat it as a construction-phase material properly scoped to A5. No parity test for E16 = 1.

Attribution item 9 — confirm crude oil scope.

B4-F3 — BLOCKED: Waste oil as 100% maintenance material

Cell: E17 = 1

Waste oil (120.23 kg) is also fully replaced 4 times. The note in LCI Final N15 states: "No EE as it is paid by previous use (only filtering and transport)." Waste oil collected from construction machinery has uncertain B4 scope. BLOCKED pending Chiwara attribution on whether waste oil is a B4 maintenance item.

Attribution item 9 (same item as crude oil).

B4-F4 — CORRECTED: Glass replacement missing (E18 = 0)

Cell: E18 = 0

Glass (21.14 kg, fanlight glazing) has no B4 replacement. EN 15978 §6.2.5 states that elements with RSL < study period must be replaced. Glass in an unprotected West African climate (BSh/BWh) will typically require replacement within a 50-year study period due to thermal stress and impact damage. The E = 0 assignment means glass contributes 0 to B4, which is not defensible unless the glass RSL > 50 years is explicitly documented.

Verdict: CORRECTED. RSL for glass must be attributed (item 8) before lca.b4 can include it. Until attributed, glass RSL is BLOCKED — the module raises.

B4-F5 — BLOCKED: Antirust paint replacement missing (E21 = 0)

Cell: E21 = 0

Antirust paint on metal structural elements is a maintenance coating that requires periodic re-application (typically every 10–15 years under humid tropical climates). E21 = 0 means no B4 replacement is modelled for antirust paint. With the CORRECTED factor of 4.87 kg CO₂/kg (provisional), and assuming 138 kg applied per cycle, each replacement cycle would add approximately 672 kg CO₂ eq — potentially significant. This requires Chiwara attribution on whether antirust repainting is a modelled maintenance activity.

Verdict: BLOCKED — E21 is currently 0; this may be intentional (single application only) or an oversight. Attribution item 8 must clarify.

B4-F6 — CORRECTED: Floor tile replacement missing (E22 = 0)

Cell: E22 = 0

Floor tiles (3379.90 kg) have zero B4 replacement. For a 50-year study period, floor tiles in a school building with high pedestrian traffic will require replacement. EN 15978 §6.2.5 requires modelling replacement when RSL < study period. The tile RSL in a Sahel school context is estimated 15–25 years (no peer-reviewed source found) — consistent with 1–3 replacement cycles in 50 years. BLOCKED pending RSL attribution.

Verdict: CORRECTED. RSL for floor tiles is BLOCKED — must be attributed before lca.b4 can include it. Attribution item 8.


§4 Module C3 — Waste Processing

Sheet: C3(Waste Processing)

§4.1 Column structure

Col Header Formula
B Material ='A1-A3'!B_row
C BoQ quantity (kg) ='LCI Final'!F_row
D Disposal Rate ='LCI Final'!G_row
E GWP (kg CO2-eq/kg) ='LCI Final'!J_row
F Module Impact = C × D × E
G share = F / F25

Impact formula:

$$\text{Impact_C3}[\text{material}] = \text{BoQ_weight_kg} \times \text{disposal_rate} \times \text{C3_GWP_factor}$$

The formula is structurally correct and internally consistent. Verdict: VALIDATED for formula structure. All impact factors and disposal rates are BLOCKED (see §4.3).

§4.2 Extracted computed values (parity reference)

Material Qty (kg) Disposal Rate C3 Factor C3 Impact (kg CO₂)
Rock 191 345.77 0.10 0.006726 128.70
Gravel 52 187.31 0.50 0.006726 175.51
Sand 85 196.23 1.00 0.006726 573.03
Earth 1 494 888.52 0.08 0.003378 403.98
Water 299 583.55 1.00 0 0
Cement 23 301.05 1.00 0.001890 44.04
Steel Rebars 1 330.60 0.05 0 0
Steel plates 2 415.87 0.05 0 0
Steel profiles 1 491.50 0.05 0 0
Polyethylene film 5 025.60 1.00 1.130 5 678.93
Bitumen 376.48 1.00 0.000282 0.11
Crude oil 60.11 1.00 0 0
Waste Oil 120.23 1.00 0 0
Glass 21.14 0.10 0 0
Anti-termite 1 445.75 1.00 0.05 72.29
Wall paint 393.21 1.00 0.05 19.66
Antirust paint 138.00 1.00 0.05 6.90 ¹
Floor Tiles 3 379.90 0.10 0.120 40.56
TOTAL 7 143.69

¹ Antirust paint C3 factor (0.05 kg CO₂/kg) is a SEPARATE factor from the CORRECTED A1-A3 anomaly (105 → 4.87). The C3 factor (waste-processing emissions) is independently BLOCKED pending source attribution. The A1-A3 correction does not affect C3 numerics.

§4.3 Findings

C3-F1 — BLOCKED: All C3 disposal rates and GWP factors lack normative sources

The LCI Final column G (disposal rate) and column J (C3 GWP factor) have no normative citations for any material. Source notes in column N are narrative fragments ("ÖKOBAUDAT" without dataset ID; "Pietro's Thesis" for earth; "ok" for steel; unnamed Polish EPD for polyethylene film). Under decision #23, every parameter feeding a reported result must be SOURCED or EXPERT-JUDGEMENT. Currently all are BLOCKED.

Disposal rates (G column) — specific concerns: - Sand: G5 = 1.00 (100% disposal). With a density of 1520 kg/m³ and 85 t of sand, the claim that 100% goes to waste processing and nothing is reused is conservative but should be documented (sand is often reusable as fill). - Earth: G6 = 0.08 (only 8% disposed — 92% recycled as fill). This is the primary driver of the large Module D earth credit. The 8% disposal rate needs a source. - Steel: G9/G10/G11 = 0.05 (5% disposed, 95% recycled). Reasonable for steel in theory, but no Sub-Saharan Africa context is cited. For recycling to be modelled, functional scrap markets must exist — which varies significantly across Senegal, Mali, Ghana.

C3 GWP factors (J column) — specific concerns: - Polyethylene film (J12 = 1.13 kg CO₂/kg) dominates C3 at 79.5%. Source: unnamed "Poland company's EPD" — BLOCKED. If this value is wrong (polyethylene incineration EPD values range widely: 0.5–2.5 kg CO₂/kg depending on incineration efficiency), the C3 total could shift significantly. - Anti-termite, wall paint, antirust paint (J17/J18/J19 = 0.05 kg CO₂/kg): identical across three very different product types. This appears to be an assumed value, not product-specific. BLOCKED. - Earth C3 factor (J6 = 0.003378 = 3.378/1000): source "Pietro's Thesis." The Pedrazzi thesis is a methodology reference document, not a primary EPD or LCI database. BLOCKED.

Attribution item 10 — all C3 disposal rates and GWP factors.


§5 Module C4 — Disposal

Sheet: C4 (Disposal)

§5.1 Column structure

Col Header Formula
B Material ='C3(Waste Processing)'!B_row
C BoQ quantity (kg) ='C3(Waste Processing)'!C_row
D Disposal Rate ='C3(Waste Processing)'!D_row (= same as C3)
E GWP (kg CO2-eq/kg) ='LCI Final'!K_row
F Module Impact = C × D × E
G share = F / F23

Impact formula:

$$\text{Impact_C4}[\text{material}] = \text{BoQ_weight_kg} \times \text{disposal_rate} \times \text{C4_GWP_factor}$$

The formula is structurally identical to C3 with different GWP factors (column K vs J) and uses the same disposal rate as C3. Verdict: VALIDATED for formula structure.

Note on shared disposal rate: Both C3 and C4 apply the same disposal_rate (G column). This is internally consistent with the model's intent: the G fraction of each material goes through both C3 processing AND C4 landfill disposal (i.e., C3 models sorting/crushing before landfill; C4 models the landfill impact itself). The non-G fraction (H = 1 − G) goes to recycling and is credited in Module D. This is a coherent, EN 15804+A2-compatible model.

§5.2 Extracted computed values (parity reference)

Material Qty (kg) Disposal Rate C4 Factor C4 Impact (kg CO₂)
Rock 191 345.77 0.10 0 0
Gravel 52 187.31 0.50 0 0
Sand 85 196.23 1.00 0 0
Earth 1 494 888.52 0.08 0 0
Water 299 583.55 1.00 0 0
Cement 23 301.05 1.00 0.004810 112.08 ¹
Steel Rebars 1 330.60 0.05 7.180 477.69 ²
Steel plates 2 415.87 0.05 1.810 218.64 ²
Steel profiles 1 491.50 0.05 7.180 535.45 ²
Polyethylene film 5 025.60 1.00 0.012800 64.33
Bitumen 376.48 1.00 0.000900 0.34
Crude oil 60.11 1.00 0 0
Waste Oil 120.23 1.00 0.400 48.09
Glass 21.14 0.10 0.018712 0.040
Anti-termite 1 445.75 1.00 0.200 289.15
Wall paint 393.21 1.00 1.000 393.21 ³
Antirust paint 138.00 1.00 1.000 138.00 ³
Floor Tiles 3 379.90 0.10 0.016 5.41
TOTAL 2 282.41

¹ Cement C4 factor: =4.81/1000. Note references Pedrazzi thesis p42. BLOCKED. ² Steel C4 factors (7.18, 1.81, 7.18 kg CO₂/kg): anomalously high for landfill disposal. See C4-F2. ³ Paint C4 factors = 1.0 kg CO₂/kg: very high for landfill disposal. See C4-F3.

§5.3 Findings

C4-F1 — CORRECTED: G23 share formula references wrong cell

Cell: G23 (C4 sheet, total row) — formula not explicitly populated in extracted data. In Module D, G24 = ='C4 (Disposal)'!G23 → computed = 0.

The C4 share column (G) divides each row's F impact by $F$23 (total). The total row itself (G23) does not have a meaningful share value and evaluates to 0. Module D's G24 inherits this 0 instead of computing a meaningful share. Verdict: CORRECTED — G24 in Module D should be =SUM(G6:G23) (share of D total) or simply omitted if share is not meaningful for a total row.

C4-F2 — BLOCKED: Steel C4 factors anomalously high

Cells: K9 = 7.18, K10 = 1.81, K11 = 7.18 (kg CO₂/kg)

For steel sent to landfill (5% of installed mass), the C4 factor of 7.18 kg CO₂/kg is very high. Landfill disposal of inert steel does not generate 7.18 kg CO₂/kg.

Possible explanations: - These are incineration emission factors, not landfill emission factors. If the 5% steel is incinerated (rather than landfilled), factors in this range can occur for steel with high-carbon content or in mixed-waste streams. - The factors may be cross-contaminated from another indicator (e.g. kg SO₂ eq for AP).

Neither explanation is documented. Source "ok" is insufficient. BLOCKED — all steel C4 factors must be traced to an EPD or LCI database before lca.c4 can implement them.

Attribution item 11 — steel C4 factors.

C4-F3 — BLOCKED: Paint C4 factors = 1.0 kg CO₂/kg

Cells: K18 = 1.0 (wall paint), K19 = 1.0 (antirust paint)

1.0 kg CO₂/kg for landfill disposal of paint is extremely high. Published landfill emission factors for liquid coatings are typically 0.001–0.05 kg CO₂/kg for inert constituents. A value of 1.0 suggests these may be incineration factors or include volatile solvent burn-off, but this is not documented. BLOCKED.

Attribution item 11 (same as steel).


§6 Module D — Benefits/Loads Beyond System Boundary

Sheet: D

§6.1 Column structure

Col Header Formula
B Material ='C4 (Disposal)'!B_row
C BoQ quantity (kg) ='C4 (Disposal)'!C_row
D Recycling Rate ='LCI Final'!H_row (= 1 − disposal rate)
E GWP (header row references C4 header) Actually ='LCI Final'!L_row
F Module Impact = C × D × E
G share = F / F24

Impact formula:

$$\text{Impact_D}[\text{material}] = \text{BoQ_weight_kg} \times \text{recycling_rate} \times \text{D_GWP_factor}$$

Where D_GWP_factor (column L) is negative for all credited materials (recycling credit). Formula structure is VALIDATED.

§6.2 Extracted computed values (parity reference)

Material Qty (kg) Recycling Rate D Factor D Impact (kg CO₂) L formula
Rock 191 345.77 0.90 −0.002854 −491.49 =−I3
Gravel 52 187.31 0.50 −0.002854 −74.47 =−I4
Sand 85 196.23 0 −0.002854 0 =−I5 (rate=0)
Earth 1 494 888.52 0.92 −0.004675 −6 429.52 =−I6
Water 299 583.55 0 0 0 0
Cement 23 301.05 0 0 0 0
Steel Rebars 1 330.60 0.95 −1.480 −1 870.82 =−1480/1000
Steel plates 2 415.87 0.95 −1.010 −2 318.03 =−1010/1000
Steel profiles 1 491.50 0.95 −1.480 −2 097.05 =−1480/1000
Polyethylene film 5 025.60 0 −1.320 0 =−1.32 (rate=0)
Bitumen 376.48 0 −0.007050 0 =−7.05/1000 (rate=0)
Crude oil 60.11 0 0 0 0
Waste Oil 120.23 0 0 0 0
Glass 21.14 0.90 −0.006437 −0.12 =(−1.59/100)/2.47
Anti-termite 1 445.75 0 0 0 0
Wall paint 393.21 0 −0.078200 0 =−7.82/100 (rate=0)
Antirust paint 138.00 0 0 0 0
Floor Tiles 3 379.90 0.90 −0.120 −365.03 hardcoded
TOTAL −13 646.53

§6.3 EN 15804+A2 conformance assessment

D-F1 — Finding: B1 sheet is mislabelled — it is Module B6 (operational energy)

The sheet named B1 in the workbook contains: - B5 = 49.8 kWh/year·m² - C5 = 50 years - D5 = 1.1 kg CO₂/kWh (Senegal grid emission factor) - E5 = 10.04 × 28.8 = 289.15 m² (floor area × rooms) - F5 = D5 × B5 × C5 × E5 = 791 987 kg CO₂

This is an operational energy calculation (kWh/year × years × emission factor), which corresponds to Module B6 (operational energy use) under EN 15978 / EN 15804+A2, not B1 (use stage — no energy required). The B1 mislabel is recorded in PROJECT.md §Reference and ROADMAP.md Phase 2. No correction required in this spec; lca.b6 will implement the correct module with the corrected label.

D-F2 — CORRECTED: Aggregate D credits use gross avoided-burden approach (not EN 15804+A2 net method)

Cells: L3 = =−I3, L4 = =−I4, L5 = =−I5, L6 = =−I6

The D credits for Rock, Gravel, Sand, and Earth are computed as the negative of their A1-A3 factors. This implements a 100% avoided-burden credit: the recycled material is credited as if it fully substitutes for virgin primary material production, with no secondary production cost deducted.

EN 15804+A2 §6.4.3.2 (net flows method): The D module must account for "the net flows and impacts resulting from reuse, recovery and/or recycling of materials beyond the system boundary." The net credit must equal:

Net credit = (primary material production burden avoided) − (secondary material production burden incurred)

For earth and aggregate reused as fill, the secondary processing burden may be near-zero (transport, compaction), making the gross approximation defensible in magnitude. However, the normative justification that secondary production burden ≈ 0 is not documented in the workbook.

Verdict: CORRECTED. The Python lca.d module must implement the net method. For cases where secondary processing burden is genuinely near-zero (earth/aggregate fill reuse), the practical result may be close to the gross result, but a documented secondary burden value (or a documented justification for zero) is required. The parity test applies only to the total D impact; the implementation must use net accounting.

Attribution item 12 — D factors for aggregates and earth.

D-F3 — BLOCKED: Steel D credits are pre-computed net values with no source

Cells: L9 = =−1480/1000, L10 = =−1010/1000, L11 = =−1480/1000

Steel D credits (−1.48, −1.01, −1.48 kg CO₂/kg) are less than the A1-A3 factors (2.941, 1.65, 2.167 kg CO₂/kg), implying a net credit rather than a gross avoided-burden credit. This is closer to EN 15804+A2 compliance than the aggregate approach, but no source is cited. Source "ok" in the Notes column is insufficient.

Possible basis: steel recycling net credit from an EPD programme operator (e.g., worldsteel's LCA data, ÖKOBAUDAT steel scrap EPD). BLOCKED — must be traced.

Attribution item 12 (same as D-F2).

D-F4 — CORRECTED: G24 formula error in Module D

Cell: D sheet G24 = ='C4 (Disposal)'!G23 → computed = 0

The share column for Module D total (G24) should be =SUM(G6:G23) (which equals 1.0 by construction since each row's share sums to 100%) or simply omitted. The current formula references C4's total-row share which is 0.

D-F5 — EN 15804+A2: Module D is reported separately — CONFORMANT

The INTERPRETATION sheet column M is explicitly labelled "Total (no D)" and uses =SUM(C_row:K_row) (columns A1-A3 through C4, skipping L=D). Column L shows Module D separately. Row 26 (LCA Total) preserves this separation. This structure is EN 15804+A2 conformant: Module D is never aggregated into the A–C system boundary total.

The INTERPRETATION M26 formula =SUM(C25:K26) has an apparent range anomaly (starts at row 25 rather than row 5), but the pre-aggregated module totals in row 26 ensure the total is computed correctly without double-counting the material-level rows.


§7 INTERPRETATION sheet — totals cross-check

The INTERPRETATION sheet (INTERPRETATION) aggregates all modules per material and provides project-level totals.

Module Total (kg CO₂ eq) % of non-D total Notes
A1-A3 92 361 9.6% Antirust anomaly (105 factor) inflates by ~13 800
A4 3 773 0.4%
A5 281 0.03%
B6 (sheet: "B1") 791 987 81.9% Dominates total; mislabelled as B1
B4 67 218 7.0% Crude oil inflates by ~32 200 (B4-F2)
C1 574 0.06%
C2 819 0.08%
C3 7 144 0.7% Polyethylene film dominates at 79.5% of C3
C4 2 282 0.2%
Total (no D) 966 439 100%
D −13 647 −1.4% of total Reported separately per EN 15804+A2

Impact of CORRECTED antirust paint (A1-A3): Replacing 105 → 4.87 kg CO₂/kg for the 138 kg quantity reduces A1-A3 by 13 820 kg CO₂ (−15.0% of A1-A3, −1.4% of project total).

Impact of CORRECTED crude oil B4 (B4-F2): Removing crude oil from B4 reduces B4 by 32 221 kg CO₂ (−47.9% of B4, −3.3% of project total).


§8 Verdict summary table

Axis 1 — Formula verdicts

Stage Item Verdict Parity target
B4 Impact formula H = C × F × G VALIDATED §3.4 table
B4 Replacements = ROUNDUP(50/10−1,0) VALIDATED (this case) §3.4
B4 RSL = 10 years hardcoded CORRECTED B4-F1
B4 Crude oil E=1 (maintenance) CORRECTED B4-F2
B4 Glass E=0 (no replacement) CORRECTED B4-F4
B4 Floor tiles E=0 (no replacement) CORRECTED B4-F6
C3 Impact formula F = C × D × E VALIDATED §4.2 table
C4 Impact formula F = C × D × E VALIDATED §5.2 table
C4 G24 formula (share total row) CORRECTED C4-F1
D Impact formula F = C × D × E VALIDATED §6.2 table
D Aggregate L factors = −I (gross) CORRECTED D-F2
D G24 = C4!G23 = 0 CORRECTED D-F4

Axis 2 — Parameter provenance

Parameter Verdict Block scope
B4 % Finishes per material BLOCKED lca.b4 raises for any material lacking attribution
B4 RSL = 10 years BLOCKED lca.b4 requires per-material RSL
B4 Study period = 50 years EXPERT-JUDGEMENT (pending) Attribution item 8
C3 disposal rates (G column) BLOCKED lca.c3 raises
C3 GWP factors (J column) BLOCKED lca.c3 raises
C4 steel factors (K9/K10/K11) BLOCKED lca.c4 raises
C4 paint factors (K18/K19) BLOCKED lca.c4 raises
D aggregate D factors (L3/L4/L5/L6) BLOCKED (net accounting) lca.d raises
D steel D factors (L9/L10/L11) BLOCKED lca.d raises
D floor tile D factor (L20) BLOCKED lca.d raises
D glass D factor (L16) BLOCKED lca.d raises

Vendorability tags (decision #25)

All factors in LCI Final that require an EPD source: - "ÖKOBAUDAT — Aggregates folder" references: vendorable once ÖKOBAUDAT UUID is confirmed. - "Pietro's Thesis" (earth, cement): NOT vendorable — thesis is not an EPD source. Requires ÖKOBAUDAT earth/cement substitute. - "Poland company's EPD" (polyethylene film): NOT vendorable — unidentified RESTRICTED source. Requires ÖKOBAUDAT PE film EPD. - Steel: "ok" — NOT vendorable. Requires ÖKOBAUDAT structural steel EPD. - All other sources: NOT vendorable until identified and cleared.


§9 CORRECTED formula divergence summary

These divergences must be asserted in backend/tests/fixtures/test_b4_c3_c4_d_divergence.py.

ID Stage Correction Expected divergence direction
B4-C1 B4 Remove crude oil from replacements (E16: 1 → 0) B4 total −32 221 kg CO₂ (−47.9%)
B4-C2 B4 Glass RSL gate: raise ValueError until attributed Glass B4 currently = 0; corrected = BLOCKED
B4-C3 B4 Floor tiles RSL gate: raise ValueError until attributed Floor tile B4 currently = 0; corrected = BLOCKED
D-C1 D Net accounting for aggregates: must document net credit D aggregate credit magnitude may change
D-C2 D G24 = SUM(G6:G23) not C4!G23 0 → 1.0
C4-C1 C4 G23 share formula: see D-C2