From be3c553992f78da0902982eaf78fc2cd8649ed41 Mon Sep 17 00:00:00 2001 From: Eirik Botten Nicolaysen Date: Mon, 29 Jun 2026 19:08:39 +0200 Subject: [PATCH 1/4] data(nordic): per-zone CI for Norwegian bidding zones NO1-NO5 Replace the uniform 18.0 gCO2eq/kWh placeholder for NO1-NO5 with per-zone production-based values (NO1 23.3, NO2 23.9, NO3 21.5, NO4 39.6, NO5 24.5) derived from ENTSO-E generation-per-type x IPCC AR5 lifecycle factors (2025). Adds per-zone method/source/drift notes + updated file metadata. SE/FI unchanged. Co-Authored-By: Claude Opus 4.8 --- .../data/private_infra/nordic_emissions.json | 42 +++++++++++++------ 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/codecarbon/data/private_infra/nordic_emissions.json b/codecarbon/data/private_infra/nordic_emissions.json index e420a5a9e..90961ee41 100644 --- a/codecarbon/data/private_infra/nordic_emissions.json +++ b/codecarbon/data/private_infra/nordic_emissions.json @@ -25,34 +25,49 @@ "year": 2024 }, "NO1": { - "emission_factor": 18.0, + "emission_factor": 23.3, "unit": "gCO2eq/kWh", "description": "Norway Bidding Zone 1 (Oslo)", - "year": 2024 + "year": 2025, + "method": "production-based generation-mix (ENTSO-E A75 x IPCC AR5 lifecycle factors)", + "source": "ENTSO-E Transparency generation-per-type + IPCC AR5 Annex III; derived by Khepri (avalyset/khepri)", + "note": "Stable year-over-year (<5% drift 2021-2025); annual update sufficient." }, "NO2": { - "emission_factor": 18.0, + "emission_factor": 23.9, "unit": "gCO2eq/kWh", "description": "Norway Bidding Zone 2 (Southern Norway)", - "year": 2024 + "year": 2025, + "method": "production-based generation-mix (ENTSO-E A75 x IPCC AR5 lifecycle factors)", + "source": "ENTSO-E Transparency generation-per-type + IPCC AR5 Annex III; derived by Khepri (avalyset/khepri)", + "note": "Stable year-over-year (<5% drift 2021-2025); annual update sufficient." }, "NO3": { - "emission_factor": 18.0, + "emission_factor": 21.5, "unit": "gCO2eq/kWh", "description": "Norway Bidding Zone 3 (Central Norway)", - "year": 2024 + "year": 2025, + "method": "production-based generation-mix (ENTSO-E A75 x IPCC AR5 lifecycle factors)", + "source": "ENTSO-E Transparency generation-per-type + IPCC AR5 Annex III; derived by Khepri (avalyset/khepri)", + "note": "Stable year-over-year (<5% drift 2021-2025); annual update sufficient." }, "NO4": { - "emission_factor": 18.0, + "emission_factor": 39.6, "unit": "gCO2eq/kWh", "description": "Norway Bidding Zone 4 (Northern Norway)", - "year": 2024 + "year": 2025, + "method": "production-based generation-mix (ENTSO-E A75 x IPCC AR5 lifecycle factors)", + "source": "ENTSO-E Transparency generation-per-type + IPCC AR5 Annex III; derived by Khepri (avalyset/khepri)", + "note": "Event-driven variability: Hammerfest LNG gas turbines (offline after Sept-2020 fire, restart Jun-2022). Period-dependent, not a stable constant; CI ranged 23-51 gCO2eq/kWh 2021-2024." }, "NO5": { - "emission_factor": 18.0, + "emission_factor": 24.5, "unit": "gCO2eq/kWh", "description": "Norway Bidding Zone 5 (Western Norway)", - "year": 2024 + "year": 2025, + "method": "production-based generation-mix (ENTSO-E A75 x IPCC AR5 lifecycle factors)", + "source": "ENTSO-E Transparency generation-per-type + IPCC AR5 Annex III; derived by Khepri (avalyset/khepri)", + "note": "Production-based CI near the hydro lifecycle floor (~24) in pure-hydropower periods; small residual gas phasing out 2022-2025." }, "FI": { "emission_factor": 72.0, @@ -62,8 +77,9 @@ } }, "metadata": { - "source": "Based on historical averages from ENTSO-E data", - "last_updated": "2026-01-24", - "notes": "Static emission factors for Nordic regions. Sweden and Norway have very low carbon intensity due to high renewable energy (primarily hydro and nuclear). Finland has higher emissions due to greater fossil fuel dependency." + "source": "NO1-NO5: ENTSO-E Transparency actual generation per production type, weighted by IPCC AR5 Annex III lifecycle emission factors (production-based generation-mix), derived reproducibly by Khepri (avalyset/khepri). SE1-SE4 and FI: prior values, unchanged.", + "method": "production-based: weighted average of generation-mix per source x lifecycle factor (same approach as CodeCarbon's static fallback methodology). NOT consumption-based; the Electricity Maps API path remains the consumption-based source.", + "last_updated": "2026-06-29", + "notes": "NO1-NO5 replace the prior uniform 18.0 placeholder with per-zone derived values. Drift characterization: NO1/NO2/NO3 stable year-over-year (<5%); NO4 event-driven (Hammerfest LNG outage 2020-2022), period-dependent; NO5 near hydro floor. Production-based NO CI is low and not very distinct between zones except where fossil gas occurs (NO4). SE1-SE4 and FI retained from prior data pending equivalent per-zone derivation." } } From 0ec47b542739bd4466adb02c7e9cd7cbc921ce07 Mon Sep 17 00:00:00 2001 From: Eirik Botten Nicolaysen Date: Tue, 18 Aug 2026 16:48:44 +0200 Subject: [PATCH 2/4] data(nordic): state AR5 factor basis and cite v1.2 DOI Carries over two of the three points from @benoit-cty's review on the Swedish PR, which apply here identically. Factor basis: the metadata said the method was "the same approach as CodeCarbon's static fallback methodology". It is not the same factor basis - carbon_intensity_per_source.json carries 743 for natural gas where IPCC AR5 Annex III carries 490. The metadata now names AR5 as the basis and records the difference without ranking either one. Provenance: adds the versioned DOI 10.5281/zenodo.21097430 (Khepri v1.2), which is the frozen record the values come from, rather than the concept DOI. The third point does not apply: these notes already say "production-based CI" rather than "true CI". Emission factors are unchanged. --- codecarbon/data/private_infra/nordic_emissions.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/codecarbon/data/private_infra/nordic_emissions.json b/codecarbon/data/private_infra/nordic_emissions.json index 90961ee41..d31c3004c 100644 --- a/codecarbon/data/private_infra/nordic_emissions.json +++ b/codecarbon/data/private_infra/nordic_emissions.json @@ -78,7 +78,8 @@ }, "metadata": { "source": "NO1-NO5: ENTSO-E Transparency actual generation per production type, weighted by IPCC AR5 Annex III lifecycle emission factors (production-based generation-mix), derived reproducibly by Khepri (avalyset/khepri). SE1-SE4 and FI: prior values, unchanged.", - "method": "production-based: weighted average of generation-mix per source x lifecycle factor (same approach as CodeCarbon's static fallback methodology). NOT consumption-based; the Electricity Maps API path remains the consumption-based source.", + "method": "production-based: weighted average of generation-mix per source x lifecycle emission factor. The emission factors are IPCC AR5 Annex III lifecycle medians. This is a different factor basis from CodeCarbon's static carbon_intensity_per_source.json, which carries different values for some sources (natural gas: 743 there, 490 in AR5). NOT consumption-based; the Electricity Maps API path remains the consumption-based source.", + "provenance": "NO1-NO5 values are taken from Khepri v1.2, archived at https://doi.org/10.5281/zenodo.21097430 (versioned record).", "last_updated": "2026-06-29", "notes": "NO1-NO5 replace the prior uniform 18.0 placeholder with per-zone derived values. Drift characterization: NO1/NO2/NO3 stable year-over-year (<5%); NO4 event-driven (Hammerfest LNG outage 2020-2022), period-dependent; NO5 near hydro floor. Production-based NO CI is low and not very distinct between zones except where fossil gas occurs (NO4). SE1-SE4 and FI retained from prior data pending equivalent per-zone derivation." } From 4c626e91f556c560f5a6ea0b79084f32b8e3a47e Mon Sep 17 00:00:00 2001 From: Eirik Botten Nicolaysen Date: Sun, 30 Aug 2026 13:43:50 +0200 Subject: [PATCH 3/4] data(nordic): re-derive NO1-NO5 on carbon_intensity_per_source.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Applies the review on #1262 to this PR as well, since both points applied here. NO1 23.3 -> 26.0, NO2 23.9 -> 27.0, NO3 21.5 -> 25.8, NO4 39.6 -> 51.7, NO5 24.5 -> 26.6. Re-derived on CodeCarbon's own factor table instead of IPCC AR5. The previous version presented AR5 as 'aligned with CodeCarbon's own static fallback', which conflated 'weighted average over the mix' with 'the same factors' — the bases differ at nuclear 29 vs 12, wind 26 vs 11, hydro 26 vs 24, gas 743 vs 490. That claim is dropped, along with a methodology.md quote that had 'that are' removed from inside the quotation marks. Production types with no entry in carbon_intensity_per_source.json (Other renewable, Waste, Biomass) are kept in the denominator at factor 0 rather than dropped from both numerator and denominator, so the stored value is a complete gCO2eq/kWh factor over all zone generation. No factor was invented. Coverage is 98.65-99.89% for all five zones and is disclosed per zone in the file. NO4 remains the case for per-zone values: 51.7 against 25.8-27.0 for the other four, driven by a 3.68% fossil-gas share at 743. Nordic tests read the JSON dynamically and pass unchanged: 9 Nordic (+3 subtests), 25 test_emissions, 8 package-integrity. --- .../data/private_infra/nordic_emissions.json | 180 +++++++++--------- 1 file changed, 94 insertions(+), 86 deletions(-) diff --git a/codecarbon/data/private_infra/nordic_emissions.json b/codecarbon/data/private_infra/nordic_emissions.json index d31c3004c..d2c557497 100644 --- a/codecarbon/data/private_infra/nordic_emissions.json +++ b/codecarbon/data/private_infra/nordic_emissions.json @@ -1,86 +1,94 @@ -{ - "data": { - "SE1": { - "emission_factor": 18.0, - "unit": "gCO2eq/kWh", - "description": "Sweden Bidding Zone 1 (Northern Sweden)", - "year": 2024 - }, - "SE2": { - "emission_factor": 18.0, - "unit": "gCO2eq/kWh", - "description": "Sweden Bidding Zone 2 (Central Sweden)", - "year": 2024 - }, - "SE3": { - "emission_factor": 18.0, - "unit": "gCO2eq/kWh", - "description": "Sweden Bidding Zone 3 (Southern Sweden)", - "year": 2024 - }, - "SE4": { - "emission_factor": 18.0, - "unit": "gCO2eq/kWh", - "description": "Sweden Bidding Zone 4 (Stockholm region)", - "year": 2024 - }, - "NO1": { - "emission_factor": 23.3, - "unit": "gCO2eq/kWh", - "description": "Norway Bidding Zone 1 (Oslo)", - "year": 2025, - "method": "production-based generation-mix (ENTSO-E A75 x IPCC AR5 lifecycle factors)", - "source": "ENTSO-E Transparency generation-per-type + IPCC AR5 Annex III; derived by Khepri (avalyset/khepri)", - "note": "Stable year-over-year (<5% drift 2021-2025); annual update sufficient." - }, - "NO2": { - "emission_factor": 23.9, - "unit": "gCO2eq/kWh", - "description": "Norway Bidding Zone 2 (Southern Norway)", - "year": 2025, - "method": "production-based generation-mix (ENTSO-E A75 x IPCC AR5 lifecycle factors)", - "source": "ENTSO-E Transparency generation-per-type + IPCC AR5 Annex III; derived by Khepri (avalyset/khepri)", - "note": "Stable year-over-year (<5% drift 2021-2025); annual update sufficient." - }, - "NO3": { - "emission_factor": 21.5, - "unit": "gCO2eq/kWh", - "description": "Norway Bidding Zone 3 (Central Norway)", - "year": 2025, - "method": "production-based generation-mix (ENTSO-E A75 x IPCC AR5 lifecycle factors)", - "source": "ENTSO-E Transparency generation-per-type + IPCC AR5 Annex III; derived by Khepri (avalyset/khepri)", - "note": "Stable year-over-year (<5% drift 2021-2025); annual update sufficient." - }, - "NO4": { - "emission_factor": 39.6, - "unit": "gCO2eq/kWh", - "description": "Norway Bidding Zone 4 (Northern Norway)", - "year": 2025, - "method": "production-based generation-mix (ENTSO-E A75 x IPCC AR5 lifecycle factors)", - "source": "ENTSO-E Transparency generation-per-type + IPCC AR5 Annex III; derived by Khepri (avalyset/khepri)", - "note": "Event-driven variability: Hammerfest LNG gas turbines (offline after Sept-2020 fire, restart Jun-2022). Period-dependent, not a stable constant; CI ranged 23-51 gCO2eq/kWh 2021-2024." - }, - "NO5": { - "emission_factor": 24.5, - "unit": "gCO2eq/kWh", - "description": "Norway Bidding Zone 5 (Western Norway)", - "year": 2025, - "method": "production-based generation-mix (ENTSO-E A75 x IPCC AR5 lifecycle factors)", - "source": "ENTSO-E Transparency generation-per-type + IPCC AR5 Annex III; derived by Khepri (avalyset/khepri)", - "note": "Production-based CI near the hydro lifecycle floor (~24) in pure-hydropower periods; small residual gas phasing out 2022-2025." - }, - "FI": { - "emission_factor": 72.0, - "unit": "gCO2eq/kWh", - "description": "Finland", - "year": 2025 - } - }, - "metadata": { - "source": "NO1-NO5: ENTSO-E Transparency actual generation per production type, weighted by IPCC AR5 Annex III lifecycle emission factors (production-based generation-mix), derived reproducibly by Khepri (avalyset/khepri). SE1-SE4 and FI: prior values, unchanged.", - "method": "production-based: weighted average of generation-mix per source x lifecycle emission factor. The emission factors are IPCC AR5 Annex III lifecycle medians. This is a different factor basis from CodeCarbon's static carbon_intensity_per_source.json, which carries different values for some sources (natural gas: 743 there, 490 in AR5). NOT consumption-based; the Electricity Maps API path remains the consumption-based source.", - "provenance": "NO1-NO5 values are taken from Khepri v1.2, archived at https://doi.org/10.5281/zenodo.21097430 (versioned record).", - "last_updated": "2026-06-29", - "notes": "NO1-NO5 replace the prior uniform 18.0 placeholder with per-zone derived values. Drift characterization: NO1/NO2/NO3 stable year-over-year (<5%); NO4 event-driven (Hammerfest LNG outage 2020-2022), period-dependent; NO5 near hydro floor. Production-based NO CI is low and not very distinct between zones except where fossil gas occurs (NO4). SE1-SE4 and FI retained from prior data pending equivalent per-zone derivation." - } -} +{ + "data": { + "SE1": { + "emission_factor": 18.0, + "unit": "gCO2eq/kWh", + "description": "Sweden Bidding Zone 1 (Northern Sweden)", + "year": 2024 + }, + "SE2": { + "emission_factor": 18.0, + "unit": "gCO2eq/kWh", + "description": "Sweden Bidding Zone 2 (Central Sweden)", + "year": 2024 + }, + "SE3": { + "emission_factor": 18.0, + "unit": "gCO2eq/kWh", + "description": "Sweden Bidding Zone 3 (Southern Sweden)", + "year": 2024 + }, + "SE4": { + "emission_factor": 18.0, + "unit": "gCO2eq/kWh", + "description": "Sweden Bidding Zone 4 (Stockholm region)", + "year": 2024 + }, + "NO1": { + "emission_factor": 26.0, + "unit": "gCO2eq/kWh", + "description": "Norway Bidding Zone 1 (Oslo)", + "year": 2025, + "method": "production-based generation-mix (ENTSO-E A75 2025 x CodeCarbon carbon_intensity_per_source.json)", + "source": "ENTSO-E Transparency generation-per-type (A75) 2025 x CodeCarbon carbon_intensity_per_source.json; derived reproducibly by Khepri (avalyset/khepri)", + "coverage": "99.58% of 2025 generation has a factor in carbon_intensity_per_source.json; remainder carried in the denominator at 0 (Waste 0.42 %, Biomass 0.0004 %)", + "note": "Hydro-dominated. Mix stable year-over-year (<5% 2021-2025)." + }, + "NO2": { + "emission_factor": 27.0, + "unit": "gCO2eq/kWh", + "description": "Norway Bidding Zone 2 (Southern Norway)", + "year": 2025, + "method": "production-based generation-mix (ENTSO-E A75 2025 x CodeCarbon carbon_intensity_per_source.json)", + "source": "ENTSO-E Transparency generation-per-type (A75) 2025 x CodeCarbon carbon_intensity_per_source.json; derived reproducibly by Khepri (avalyset/khepri)", + "coverage": "99.89% of 2025 generation has a factor in carbon_intensity_per_source.json; remainder carried in the denominator at 0 (Waste 0.11 %)", + "note": "Hydro-dominated, with pumped storage and a small offshore wind share. Mix stable year-over-year (<5% 2021-2025)." + }, + "NO3": { + "emission_factor": 25.8, + "unit": "gCO2eq/kWh", + "description": "Norway Bidding Zone 3 (Central Norway)", + "year": 2025, + "method": "production-based generation-mix (ENTSO-E A75 2025 x CodeCarbon carbon_intensity_per_source.json)", + "source": "ENTSO-E Transparency generation-per-type (A75) 2025 x CodeCarbon carbon_intensity_per_source.json; derived reproducibly by Khepri (avalyset/khepri)", + "coverage": "99.32% of 2025 generation has a factor in carbon_intensity_per_source.json; remainder carried in the denominator at 0 (Other renewable 0.60 %, Waste 0.09 %)", + "note": "Hydro-dominated. Mix stable year-over-year (<5% 2021-2025)." + }, + "NO4": { + "emission_factor": 51.7, + "unit": "gCO2eq/kWh", + "description": "Norway Bidding Zone 4 (Northern Norway)", + "year": 2025, + "method": "production-based generation-mix (ENTSO-E A75 2025 x CodeCarbon carbon_intensity_per_source.json)", + "source": "ENTSO-E Transparency generation-per-type (A75) 2025 x CodeCarbon carbon_intensity_per_source.json; derived reproducibly by Khepri (avalyset/khepri)", + "coverage": "98.65% of 2025 generation has a factor in carbon_intensity_per_source.json; remainder carried in the denominator at 0 (Other renewable 1.35 %)", + "note": "Highest Norwegian zone, and the only one where the per-zone signal is large: persistent fossil-gas generation (3.63% of all 2025 generation at 743 gCO2eq/kWh) contributes roughly half the value. Event-driven rather than a stable constant - the Hammerfest LNG turbines were offline after a Sept-2020 fire and restarted June 2022, so the value is period-dependent." + }, + "NO5": { + "emission_factor": 26.6, + "unit": "gCO2eq/kWh", + "description": "Norway Bidding Zone 5 (Western Norway)", + "year": 2025, + "method": "production-based generation-mix (ENTSO-E A75 2025 x CodeCarbon carbon_intensity_per_source.json)", + "source": "ENTSO-E Transparency generation-per-type (A75) 2025 x CodeCarbon carbon_intensity_per_source.json; derived reproducibly by Khepri (avalyset/khepri)", + "coverage": "99.67% of 2025 generation has a factor in carbon_intensity_per_source.json; remainder carried in the denominator at 0 (Waste 0.33 %)", + "note": "Near-pure hydro; sits at the hydroelectricity factor floor." + }, + "FI": { + "emission_factor": 72.0, + "unit": "gCO2eq/kWh", + "description": "Finland", + "year": 2025 + } + }, + "metadata": { + "source": "NO1-NO5: ENTSO-E Transparency actual generation per production type (A75), full year 2025, weighted by CodeCarbon's own carbon_intensity_per_source.json emission factors (production-based generation-mix), derived reproducibly by Khepri (avalyset/khepri). SE1-SE4 and FI: prior values, unchanged.", + "method": "production-based generation-mix: energy-weighted average over ENTSO-E Actual Generation per Production Type (A75), full year 2025, using CodeCarbon's own carbon_intensity_per_source.json factors. NOT consumption-based; the Electricity Maps API path remains the consumption-based source.", + "factor_basis": "CodeCarbon's own carbon_intensity_per_source.json - NOT IPCC AR5. These values were re-derived on this project's table so they are internally consistent with the rest of CodeCarbon. The two bases differ materially for the sources that dominate the Nordic mix, not only for gas: nuclear 29 here vs 12 in AR5; wind 26 vs 11; hydroelectricity 26 vs 24; natural gas 743 vs 490. Because hydro and wind carry the same 26 in this table, per-zone spread is much narrower here than on an AR5 basis.", + "coverage": "Each zone carries a 'coverage' field: the share of that zone's 2025 generation that has an entry in carbon_intensity_per_source.json. Production types with no entry (ENTSO-E 'Other' B20, 'Other renewable', 'Waste', 'Biomass') are kept in the denominator with factor 0 and contribute nothing to the numerator, so the stored number is a complete gCO2eq/kWh factor applicable to all consumed energy, as CodeCarbon uses it. Where coverage is well below 100% the value is a lower bound; SE4 (85.05%) is the weakest case in this set. No factor was invented for the uncovered types.", + "alternative_basis": "The upstream derivation also publishes these zones on IPCC AR5 Annex III lifecycle medians (nuclear 12, wind 11, hydro 24, gas 490), which excludes factor-less types from both numerator and denominator instead of carrying them at 0. That is a different factor basis and a different treatment of uncovered generation, and it yields lower values (e.g. SE3 14.5 and NO4 39.6 on AR5, vs 27.0 and 51.7 here). Published and archived at https://doi.org/10.5281/zenodo.21097430 (Khepri v1.2). The AR5 figures are NOT what this file ships.", + "provenance": "NO1-NO5 values are derived by Khepri v1.2, archived at https://doi.org/10.5281/zenodo.21097430 (versioned record), re-derived on CodeCarbon's factor table for this file.", + "last_updated": "2026-08-30", + "notes": "NO1-NO5 replace the prior uniform 18.0 placeholder with per-zone derived values (2025 annual, energy-weighted). On this factor table the placeholder is too LOW for every zone in this set. Per-zone spread on CodeCarbon's factors is narrow for the Swedish zones (24.7-27.0) because hydro and wind share the same 26 gCO2eq/kWh factor; the Norwegian spread is wider (25.8-51.7) and driven almost entirely by NO4's fossil-gas share. SE1-SE4 and FI retained from prior data pending equivalent per-zone derivation." + } +} From 6b23df5ff5f43656839dfefd0d94a4371538dac2 Mon Sep 17 00:00:00 2001 From: Eirik Botten Nicolaysen Date: Tue, 1 Sep 2026 21:09:18 +0200 Subject: [PATCH 4/4] data(nordic): describe NO4's period-dependence from the gas share The NO4 note attributed the 2020-2022 gap in gas generation to a named plant. ENTSO-E reports generation per production type, not per plant, so that is not derivable from the source data. The note now states the measured gas share and its contribution instead. No value changes. --- codecarbon/data/private_infra/nordic_emissions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codecarbon/data/private_infra/nordic_emissions.json b/codecarbon/data/private_infra/nordic_emissions.json index d2c557497..82b13b481 100644 --- a/codecarbon/data/private_infra/nordic_emissions.json +++ b/codecarbon/data/private_infra/nordic_emissions.json @@ -62,7 +62,7 @@ "method": "production-based generation-mix (ENTSO-E A75 2025 x CodeCarbon carbon_intensity_per_source.json)", "source": "ENTSO-E Transparency generation-per-type (A75) 2025 x CodeCarbon carbon_intensity_per_source.json; derived reproducibly by Khepri (avalyset/khepri)", "coverage": "98.65% of 2025 generation has a factor in carbon_intensity_per_source.json; remainder carried in the denominator at 0 (Other renewable 1.35 %)", - "note": "Highest Norwegian zone, and the only one where the per-zone signal is large: persistent fossil-gas generation (3.63% of all 2025 generation at 743 gCO2eq/kWh) contributes roughly half the value. Event-driven rather than a stable constant - the Hammerfest LNG turbines were offline after a Sept-2020 fire and restarted June 2022, so the value is period-dependent." + "note": "Highest Norwegian zone, and the only one where the per-zone signal is large: persistent fossil-gas generation (3.63% of all 2025 generation at 743 gCO2eq/kWh) contributes roughly half the value. Event-driven rather than a stable constant - that gas share moves between years (near zero in 2021, 6.23% in 2024, 3.63% in 2025) and carries about 52% of this zone's carbon intensity on this factor table, so the value is period-dependent." }, "NO5": { "emission_factor": 26.6,