Materials Decoded Lab · Artifact 03

Does recycling actually matter at the scale of a real supply risk?

Two real, independent physical systems, Denmark's real wind turbine fleet and the global EV battery fleet, run through the same unmodified survival-analysis engine to project how much copper, lithium, nickel, cobalt, graphite and rare earths they release as they retire. That real recovery is then compared against crm-trade-network's real 2023 UN Comtrade concentration and single-supplier disruption analysis for the same materials, a connection existing modular MFA tools (ODYM, flodym, MISO2, GCMat) don't make. Copper is tracked from both systems on purpose, the one material both real case studies actually contain, so the same real recovered tonne can be compared across technologies, not just within one.

Try the live dashboard →Read the code

2

real, independent technology systems

Danish wind turbines and the global EV fleet, through one unmodified engine

7

material/system combinations

connected to real 2023 UN Comtrade supply-chain risk data

105

(material, supplier) combinations regression-tested

0 crashes, 0 mathematically impossible results

1

real methodological bug found and fixed

comparing a multi-decade cumulative total against a one-year risk figure, see below

Why this problem, why this architecture

One reusable base class, CohortSurvivalMFA, implements right-censored survival analysis (Kaplan-Meier), Weibull extrapolation, cohort-by-cohort conditional-survival retirement projection, and secondary material accounting, once. A subclass provides exactly one thing, real sourced material content by category, everything else is inherited unchanged. Running two genuinely different technology systems through that same base class, not just one, without modifying it beyond a single additive method, is the actual test of "modular and reusable," not just a claim.

How it's wired

Wind turbines have real individual retirement events to fit a lifetime model from, the Danish register has real decommissioned turbines, verified to reproducedk-wind-mfa's own published numbers exactly (9/9 checks). The global EV fleet does not, it is simply too young: Argonne National Laboratory's own real assessment found only about 3% of global PEV battery capacity had been scrapped as of December 2020. So the EV case sources its Weibull parameters from a real, externally published vehicle survivability table (NHTSA, DOT HS 809 952), the same real source Argonne's own EV assessment uses for exactly this purpose, via one small additive method (fit_weibull_to_curve) rather than a fork of the engine. Material content per vehicle is derived from real cathode chemistry: real chemical formulas (NMC811, LFP) and real atomic masses split a real, reported total cathode mass into individual elements, not an invented split.

PieceReal sourceJob
CohortSurvivalMFAgeneralised from dk-wind-mfa's own codeSurvival fitting, cohort projection, material accounting, shared by both systems
WindTurbineMFADenmark's real turbine registerVerified to reproduce dk-wind-mfa's own published numbers exactly
EVBatteryMFAIEA, NHTSA, CRS/GREET, World BankReal sales, chemistry mix, and stoichiometry-derived material content
supply_risk_contextcrm-trade-network's real 2023 UN Comtrade dataCompares projected recovery against real concentration and cascade-shortfall risk

A real bug this caught, not a hypothetical one

Building a cross-material comparison chart exposed a genuine mistake: the connector was comparing a multi-decade cumulative recovery total (2025-2050) against crm-trade-network's real one-year disruption-shortfall estimate, two different time scales silently compared as if they were the same thing. For copper the mismatch stayed under 1% and was easy to miss; for graphite, a smaller real global market, cumulative recovery came out to over 1,000% of one year's real shortfall, mathematically consistent with the inputs but not a meaningful claim.

The fix: compare one real year against another. Recovery is now annualised (mean tonnes per year) before conversion to USD, with the real peak retirement year surfaced alongside the average so that fix doesn't quietly reintroduce a smaller version of the same problem. A 105-combination regression sweep (every material against every one of its real 15 largest suppliers) now runs after every change, checking for exactly this class of error.

What was actually verified before being trusted

What this is not