Kortex
snapshot · 2026-09-06

Validation

Kortex outputs checked against independent ground truth, with the misses published alongside the hits. Fourteen studies: entity resolution against live GLEIF records (2026-07-05) · queue statistics against published LBNL research (2026-07-05) · modelled generation revenue against SEC-reported revenue (2026-07-05) · the US fleet against EIA-860 (2026-07-05) · spatial containment of every coordinate against its claimed country (2026-07-05) · parent chains against issuers' own Exhibit 21 filings (2026-07-05) · blind adjudication of 150 operator-to-entity stitches (2026-07-10) · every judgeable US cooling-water link against the utilities' own EIA-860 filings (2026-07-11) · modelled carbon exposure against the EU ETS compliance record (2026-07-11) · raw model sensitivities against the JAO flow-based market-coupling PTDFs (2026-07-15) · modelled German congestion against observed TSO redispatch (2026-07-15) · the GB corridor against SO-flagged Balancing Mechanism constraint energy (2026-07-15) · the DC flow model against ERCOT SCED shadow prices, pre-registered branch grain falsified and interface grain confirmed (2026-07-18) · whether an observed base rate separates built from withdrawn interconnection-queue projects, pre-registered and then materially qualified by its own robustness checks (2026-08-09). Each study states its method and execution date and can be reproduced against the live API.

Execution dates per study (stated above and in each section) · graph snapshot 2026-09-06

1 · Entity resolution vs live GLEIF records

Question. When Kortex says a generator's operator resolves to a legal entity with a given LEI, legal name and ultimate parent; do GLEIF's own records agree, today?

Method. Kortex carries 5,827 distinct LEIs on generator → entity stitches across three exposure tiers (verified_curated 570, verified_auto 1,100, unverified 4,157; a fourth tier, quarantined, is excluded from every product surface by design). We drew a blind deterministic sample, every ⌊n/25⌋th LEI in LEI order, 25 per tier, 75 records, and checked each against the GLEIF public API (CC0): does the LEI resolve, does our stored legal name match (script-aware comparison, CJK names compared directly), and where we store an ultimate parent, does GLEIF's relationship record agree?

TierSampledLEI resolvesLegal name exactUltimate parent agrees*Registration status
verified_curated2523/23†23/237/715 issued · 8 lapsed
verified_auto2525/2525/258/819 issued · 6 lapsed
unverified2525/2525/253/314 issued · 8 lapsed · 3 retired

*Where both Kortex and GLEIF report a parent: 18/18 agreement, zero contradictions. In 37 further cases we store a parent while GLEIF currently reports none. GLEIF Level-2 data allows entities to file reporting exceptions, and our stored chains derive from an earlier relationship snapshot. Flagged as a refresh item, not scored as agreement.

†The two non-resolving identifiers are not GLEIF LEIs: they are Kortex synthetic identifiers (prefix CE-SYNTH-, 75 platform-wide) minted for real operators that have no LEI; here the Office National de l'Électricité (Morocco) and the U.S. Army Corps of Engineers. The blind sample caught them, which is what a blind sample is for; they are documented and self-identifying.

What this does and does not validate. This study validates that the entity records Kortex serves are faithful to GLEIF as of today; identity, name, chain. It does not validate the judgment that a given operator string belongs to a given entity; that is what the audit tiers express, and why identity_source is stamped on every insight row. Honest findings: 22 of 73 LEIs are LAPSED (renewal lapsed; the identity remains valid; common for state-owned entities), and 3 entities in the unverified tier are RETIRED (ceased to exist); a hygiene backlog now flagged for curation.

2 · Queue statistics vs published LBNL research

Question. The /v2/insights/queue-blockage screen is computed from raw LBNL Berkeley Lab interconnection-queue records. Do Kortex's aggregates reproduce the numbers LBNL itself publishes from the same underlying data?

Method. We computed headline statistics from the raw records in Kortex (36,441 projects, 9 regions, LBNL 2025 data vintage, records through end-2024) and compared them against the figures published in LBNL's Queued Up reports (2024 edition, data through end-2023; 2025 edition, data through end-2024). LBNL's rate statistics use a subset with comprehensive status data (7 ISOs + 30 non-ISO balancing areas); Kortex computes over all records; exact equality is not expected, agreement within ~1 point is.

StatisticLBNL publishedKortex reproductionΔ
2000–2018 cohort built, % of projects19%19.9%+0.9 pp
2000–2018 cohort built, % of capacity14%13.5%−0.5 pp
2000–2019 cohort built, % of capacity (EOY 2024)13%12.6%−0.4 pp
Withdrawn, 2000–2018 cohort, % of projects72%73.2%+1.2 pp
Active projects (EOY 2024)~10,30010,538+2%
Active capacity in queues~2,290 GW2,043 GW−11%

The one gap worth explaining: active capacity. LBNL reports generation and storage capacity separately (~1,400 GW + ~890 GW at EOY 2024) and counts hybrid projects' storage components in the storage figure; Kortex's per-project capacity fields under-collect second and third components of hybrid projects. The rate statistics, the thing the queue-blockage screen actually sells, reproduce within ~1 point. Published sources: LBNL Queued Up 2024 edition and 2025 edition.

3 · Modelled revenue vs reported revenue

Question. Kortex's est_revenue_usd is a model; installed capacity × technology capacity factors × zone price signals. It is the ranking spine of the fossil-revenue and stranded-asset screens. How does it relate to what companies actually report?

Method. We took every operator in the live fossil-revenue-exposure screen that resolves to an exchange ticker (7 of the top 50), summed Kortex's modelled generation revenue and attributed capacity, and set them against reported revenue from each company's FY2024 filings. The two numbers measure different things; the model prices wholesale generation value of the attributed fleet; reported revenue includes retail, networks, gas and trading; so the honest expectations are: (a) the model should systematically undershoot reported revenue, (b) the ratio should be explainable by business mix, and (c) attributed capacity should approximate the real fleet.

Operator groupAttributed fleetKortex modelledReported FY2024*Modelled / reportedBusiness mix
Tennessee Valley Authority34.6 GW · 53 plants$4.92B$12.31B40%~100% wholesale generation; the cleanest comparison; attributed fleet ≈ actual ~34 GW
NextEra Energy (NEE)45.3 GW · 167 plants$8.71B$24.75B35%Regulated FPL + competitive generation (NEER ~$6B)
Dominion Energy (D)26.6 GW · 67 plants$5.07B$14.46B35%Regulated, vertically integrated
Evergy (EVRG)11.3 GW · 26 plants$2.47B$5.85B42%Fully regulated, vertically integrated
Entergy (→ Entergy Louisiana, LLC)27.8 GW · 34 plants$2.50B$11.88B†21%Regulated; identity resolved at subsidiary level (see below)
NRG Energy (NRG)20.5 GW · 59 plants$2.61B$28.13B9%~96% of reported revenue is retail; the model prices only the generation fleet, which is the point
E.ON SE (EONGY)9.3 GW · 49 plants$4.27B€80.1Bn/mAttribution error; published below

*Reported total operating revenue, FY2024, from SEC 10-K XBRL (TVA: FY ended Sep 2024, annual results; E.ON: 2024 integrated annual report, EUR). †Entergy Corporation consolidated; the resolved subsidiary Entergy Louisiana, LLC reported $5.14B.

Reading the ratios. Regulated, vertically-integrated utilities cluster at 35–42%; reported revenue includes delivery, fuel-cost recovery and retail margin that a wholesale-generation model deliberately does not price. The consistency of that ratio across independent companies is the validation: the model preserves rank order and portfolio structure. NRG's 9% is the control case; its reported revenue is ~96% retail, and the model correctly prices only its plants. Where the model and reality diverge for a bad reason, we say so:

Published misses. This comparison surfaced a real error: the E.ON operator group included plants divested to Uniper and RWE years ago; source-reported operator tags that predate the divestitures. Fixed 2026-07-03: the full group was then researched plant-by-plant against filings, regulator registers and operator sites; 41 plants moved to their researched current operators (RWE, Uniper, EPH, Repsol, Veolia and others, each stitch carrying its source rationale), 11 confirmed genuinely retained by E.ON, and the group then reflected E.ON's post-divestiture footprint as measured on 2026-07-03. The legacy operator tag can still surface in this screen as later-ingested or not-yet-researched assets enter the covered universe; where it does, the row's stitched legal entity (e.g. Uniper) is the authoritative identity and the operator string is the source-attested label, exactly the divergence the two-dimensional identity reporting exists to expose. Operator groups are re-screened weekly by the divestiture watch rather than fixed once. The comparison also shows a resolution-granularity effect: the Entergy group resolves to Entergy Louisiana, LLC (the group's largest operating subsidiary by attributed capacity) rather than Entergy Corporation; the LEI is correct but subsidiary-level; the parent chain climbs to the corporation, and since methodology v1.1 the row's exchange identifiers fall back to the listed parent when the operating entity itself is unlisted. Where attribution is clean, attributed capacity tracks the real fleet closely (TVA: 34.6 GW attributed vs ~34 GW actual). The table preserves the figures as measured on 2026-07-02.

4 · US fleet vs EIA-860, the official federal registry

Question. Kortex's US generator layer is built from OpenInfraMap, Global Energy Monitor and WRI; not from EIA-860. How does it compare, plant by plant, against the registry the US government itself maintains?

Method. We joined the Kortex US operational fleet (8,242 canonical generators, 1,009 GW) to EIA-860 2024 final (12,854 operating plants, 1,301 GW nameplate) through Kortex's existing EIA plant-ID crosswalk, aggregated both sides to plant level, and compared. One honesty constraint drives the design: the crosswalk was originally built by spatial-and-name matching, so location and name agreement are by construction. Capacity and fuel were never used in matching; they are the independent checks.

CheckResultCapacity-weighted
Plants joined5,887 (905 GW of EIA nameplate)69.5% of the official fleet
Capacity ratio, Kortex / EIA nameplatemedian 1.000
Capacity within ±10%86.1% of plants85.4%
Capacity within ±25%89.9% of plants93.3%
Dominant fuel agrees93.0% of plants96.1%

Coverage, stated by fuel; because the honest answer differs by technology. Kortex holds 90–97% of the official thermal, nuclear and hydro fleet, and that is where the platform's screens operate. Distributed renewables are the known gap:

FuelKortex USEIA-860Coverage
Gas509 GW564 GW90%
Coal175 GW190 GW92%
Nuclear96 GW102 GW95%
Hydro89 GW96 GW93%
Oil29 GW28 GW103%
Geothermal3.7 GW3.8 GW97%
Wind25 GW153 GW16%
Solar (utility-scale)28 GW124 GW22%
Batteries / storage·27 GWnot modelled

Published misses. (1) US wind and solar coverage is 16–22%; a real limitation of the upstream open-source inventories for distributed US renewables, stated here rather than averaged away; if your use case is a US wind/solar asset registry, EIA-860 itself is the better tool today. (2) The tail of extreme capacity ratios is dominated by crosswalk mis-matches, not capacity errors; 329 plants (~6% of the joined book) sit outside 0.5–2×; the worst case matched a 2.4 GW hydro plant to a 3 MW solar site. Fixed 2026-07-03: the 143 clearly-wrong links (beyond 5×) were unlinked, and the capacity-factor fields they had contaminated were removed pending re-match; the remainder are queued for review. (3) 44 GW of Kortex US capacity carried no fuel classification. Fixed 2026-07-03: 11,321 operational generators worldwide were backfilled from the curated fuel canon (the two fields agree in 99.8% of cases where both exist); 21 US plants remain genuinely unclassified. (4) 247 crosswalk IDs no longer resolve in EIA-860 2024, consistent with plant retirements since the crosswalk was built.

5 · Spatial containment: every coordinate checked against its claimed country

Question. 1.5 million records in the graph carry both coordinates and a country attribution. Does every point actually fall inside the country it claims? This is the screen that caught a German reactor wearing a North Carolina plant's coordinates during the nuclear-registry repair; here it is run across the whole graph.

Method. Every coordinated, country-attributed record (substations, mineral deposits, emission sources, generators, dams, ports, reactors) tested against its claimed country's polygon (geoBoundaries ADM0) with a 0.15° coastal buffer. Country claims normalised from names and codes; claims that could not be resolved to a polygon are reported as registry gaps, not scored as passes.

PopulationRecordsPassHard failsRegistry gaps*
Reactors (IAEA PRIS)720100.00%00
Dams41,14599.94%122
Mineral deposits304,60999.91%2821
Substations718,11899.76%61,699
Generators175,44499.50%313559
Emission sources294,56398.46%1,6262,917
Ports3,63094.63%90105
Total1,538,22999.50% · 99.85% of resolvable claims2,3185,303

*Registry gaps are claims that resolve to no polygon (Puerto Rico, Hong Kong and other territories absent from the boundary set) or to no ISO code; infrastructure limits of the screen itself, disclosed rather than counted as passes.

Reading the 2,318 fails; three different phenomena, not one. 1,774 (77%) sit within one degree of their claimed country: coastal and border precision, including offshore terminals beyond the buffer (most of the port fails; ports are the weakest row precisely because so many of them are legitimately offshore). 415 sit in a middle band. 129 records, 0.008% of the book, are in the far wrong-country class, and the confusion table separates real corruption from geography: a cluster of Peruvian mineral deposits from the USGS source whose coordinates land in India or the open ocean (source-data corruption, now a curation item), versus Kuril Islands assets claimed as Russian that the boundary set assigns to Japan, and Greenland sites recorded under Denmark; boundary and administrative attribution, not coordinate error.

Published misses. (1) A coordinate-corruption cluster in the USGS MRDS mineral-deposits source (~90 far fails, Peru cluster worst). Fixed 2026-07-03: 68 deposits were unambiguous digitisation sign errors; exactly one coordinate transform (longitude flip, latitude flip, both, or a swap) places each inside its claimed country; and were corrected with that containment guard; the 214 remaining fails are border-precision cases left as measured. (2) The port register's offshore anchorages need a marine-aware screen, not a landmass buffer. (3) The screen exposed two registry gaps in our own reference layer: the country-alias table lacked bare-code entries for Taiwan (fixed 2026-07-03) and French overseas territories (documented; the territory codes are absent from the country canon), and the boundary set has no polygons for several territories. (4) The reactor row is 100% because this same screen ran during the June nuclear-registry repair and its findings were fixed; that is the point of running it continuously.

6 · Parent chains vs the issuers' own Exhibit 21 filings

Question. When Kortex chains an operating utility to an ultimate parent, does the parent's own SEC 10-K, Exhibit 21, the subsidiary list the issuer signs, agree?

Method. We took every US-listed parent with at least two Kortex operating subsidiaries (entities that operate generators in the graph and chain to the parent via GLEIF relationship records), 12 parents, 70 chains, fetched each parent's latest 10-K Exhibit 21 from EDGAR, and checked each subsidiary against the issuer's own list with suffix-normalised name matching. One asymmetry is built into the design: Reg S-K Item 601(b)(21) lets issuers omit insignificant subsidiaries, so absence from Exhibit 21 is reported as not listed, never as wrong.

Parent (latest 10-K)Kortex operating subsidiariesIssuer-confirmed
Duke Energy77/7
The Southern Company55/5
Entergy55/5
Constellation Energy55/5
American Electric Power55/5
NRG Energy44/4
Xcel Energy33/3
Vistra22/2
Utility holding companies3636/36; 100%
The AES Corporation85/8
Dominion Energy64/6
Berkshire Hathaway116/11
Morgan Stanley90/9
All parents7051/70; 73%

Reading the split. For the eight pure utility holding companies, every chain Kortex asserts is confirmed in the issuer's own filing; 36/36. The 19 not listed cases all sit under diversified or fund parents, and each one is a known Exhibit 21 omission class rather than a contradicted chain: Morgan Stanley's nine are renewable project LLCs held through infrastructure funds (a bank's Exhibit 21 lists significant regulated entities, never project SPVs); Berkshire's five are wind SPVs under Berkshire Hathaway Energy, whose Exhibit 21 is famously abbreviated; Dominion's two are solar SPVs; AES's three are two Latin-American subsidiaries plus Indianapolis Power & Light; which the exhibit lists under its trade name AES Indiana while GLEIF (checked live during this study) still records the legal name Kortex carries. No chain was contradicted by any filing.

7 · The stitch itself: blind adjudication of operator-to-entity judgments

Question. Earlier studies validated the selected entity records; this one validates the selection judgment; the exact relation external review identified as unvalidated: does source operator string X actually belong to legal entity Y?

Method. A seeded random sample (seed 0.20260710, reproducible) of 30 active mappings from each of the five source tiers of operator_lei_resolved_v2; 150 cases. Each pair was adjudicated against the GLEIF record, jurisdiction and public registry knowledge, without reference to how the mapping was produced, and every verdict carries a written rationale. Verdicts: C correct entity · CS correct corporate family at subsidiary/parent granularity · W wrong entity · U insufficient evidence. The full case file is published; re-adjudicate any row.

Source tier (serving status)nFamily precisionExact entityWrong
manual (verified_curated; served)3096.7%73.3%1
auto_tier2 (verified_auto; served)30100%100%0
gleif_api (served)30100%86.7%0
gleif_subsidiary_v1 (served)30100%*100%*0
fuzzy_legacy (DEPRECATED; no longer used for stitching; identity withheld by default)3043.3%40.0%14

What the fuzzy row measures. fuzzy_legacy is a retired method, not an active one: fuzzy matching and its confidence scores proved unreliable and were abandoned; all new operator-entity pairs are stitched manually in curated batches, and recurring bad pairs are blacklisted at build time. The 4,792 fuzzy rows still in the register are the accepted immaterial legacy tail (sub-floor capacity), and this study measures exactly why they are treated that way: 43% correct, with the tier's own confidence scores adding little signal (below 0.70 confidence only 1 of 13 sampled mappings was correct). That is the empirical justification for the abstention default: identity-sensitive endpoints withhold unverified identities unless explicitly requested (include_unverified=true); a confident false identity is worse than no identity.

Published misses. The one wrong verified mapping found (case 135): the group label “Orsted (formerly Dong Energy)” was manually stitched to ORSTED AB (SE) rather than ØRSTED A/S (DK); corrected the same day through the curation flow (batch stitch_blind_v1_fixes, 14 graph edges restitched), and the case remains in the published file. *The gleif_subsidiary_v1 tier validates trivially at pair level (the operator string is the GLEIF legal name); whether the right assets attach to those entities is edge-level validation; the declared next study. Sampling is uniform per tier, not exposure-weighted; an exposure-weighted (capacity/revenue) replication is the other declared follow-up.

8 · Cooling-water links vs the utilities' own EIA-860 filings

Question. The one-river page depends on inferred Dam → SUPPLIES_COOLING → Generator edges (proximity-derived). Do plants actually draw cooling water where the graph says they do?

Method. Every US cooling edge (2,554) was tested against an independent reference: EIA-860 Schedule 6.2, where each utility files its own cooling systems; type (once-through / recirculating / dry), percent dry cooling, and the named water source. Generators were matched to EIA plants by coordinates (≤2 km); the 1,482 edges without an in-reference match are recorded as out-of-reference, not judged. This is a full census of the judgeable US edges, not a sample.

Verdict (1,072 judged edges)nMeaning
river_name_match82filed water source names the dam's river
river_reach_match580names differ but generator and dam sit on the SAME mainstem river system (HydroRIVERS reach test, reach_mainriv_v1, 2026-07-11); the name disagreement is tributary/mainstem naming noise; link hydrologically confirmed
river_name_mismatch_cross_basin26different level-6 sub-basins AND different mainstems; geometric contradiction; links doubtful
river_name_mismatch_basin_ok11same sub-basin but different mainstems; plausible yet unconfirmed; screening-grade
saline_contradiction181utility files ocean/brackish cooling; a freshwater-dam dependency is wrong
groundwater_mismatch128utility files wells / municipal / reclaimed supply
dry_contradiction64every cooling system at the plant is dry; no water dependency at all

Result and action. 35% of judged US edges (373) contradicted the utility's own filing. All 373 were quarantined in place the same day (cooling_flag on the edge; flagged, never deleted) and the water-concentration analytics were rebuilt excluding them. The full per-edge classification is in PG table analytics_cooling_validation. Honest limits: the reference is US-only, so non-US cooling edges remain inferred and unvalidated; the one-river page discloses this; coordinate matching itself can err (mitigated by the 2 km bound); and the large river_name_mismatch class was ambiguous rather than wrong; the declared geometry follow-up ran in two stages on 2026-07-11. Stage one (HydroBASINS level-6, in-house): 525 of 617 shared the dam's sub-basin. Stage two (HydroRIVERS reach test): 580 of 617 (94%) sit on the same mainstem river system as their dam; including 66 links the basin test had doubted, because mainstems legitimately cross basin boundaries. The residue is 45 links: 26 cross-basin/cross-mainstem (doubtful), 11 same-basin/different-mainstem (unconfirmed), 8 with no substantial reach within 10 km. Name matching had flagged 617 links; hydrology confirms 94% of them were real. The mismatch class is resolved.

9 · Modelled carbon exposure vs the EU ETS compliance record

Question. Kortex models per-generator carbon cost (capacity × technology capacity factor × emission factor × mechanism price). Does the modelled tonnage survive contact with the compliance ground truth; the verified emissions utilities report to the EUTL under penalty?

Method. Per EU country, 2025: EUTL verified emissions for combustion installations (activity 20, EEA publication of the Union Registry) vs the sum of Kortex modelled implied tCO₂ across ETS-priced generators. The comparison has a known, disclosed asymmetry: activity 20 includes district heat and industrial combustion that Kortex does not model, so a correct power-only model must land below 1.0; the test is that no country materially exceeds it and that the cross-country pattern tracks the power share of combustion.

Result. 27 countries compared. 26 land in the expected band (0.2–0.9), with exactly the structure the physics predicts: power-dominant combustion countries sit high (Greece 0.88, Romania 0.84), heat/industry-heavy ones sit low (Belgium 0.23); Germany 0.47, Poland 0.56. The published miss: Finland at 1.93; modelled 13.6 Mt vs 7.0 Mt verified. Finland's fossil fleet is largely reserve capacity that rarely runs; generic technology capacity factors overestimate it roughly twofold. This is a real limitation of capacity-factor-based modelling for reserve-heavy fleets, now disclosed wherever modelled revenue or carbon cost is served, and the CEMS observed-capacity-factor layer (US) is the template for the fix. Table analytics_ets_validation; country×activity grain is v1; installation-level EUTL matching is the declared upgrade (the new Union Registry export sits behind a token-gated interface).

10 · Raw model sensitivities vs the JAO flow-based market-coupling PTDFs

Question. The DC power-flow layer claims to know how a 100 MW exchange between two zones distributes across Europe's borders. Do its sensitivities agree with the official JAO Core flow-based market-coupling PTDFs; the sensitivities the actual day-ahead market clears on?

Method. Eight hourly finalComputation snapshots from JAO's public Core Publication Tool, spread over two days (2026-07-07 ×5, 2026-07-10 ×3). Kept: base-case direct tie-lines with both hubs in the model's zone set, deduplicated per network element; element sensitivity to an A→B exchange = ptdfA − ptdfB, summed per border, scaled to MW per 100 MW exchanged, averaged over hours. Kortex side: the raw, uncalibrated corridor sensitivities (the same pure-network basis as JAO's PTDFs), antisymmetrised per zone pair. Zones AT BE CH CZ DE FR NL PL; 28 zone-pair exchanges; 11 of 12 shared borders compared (CH-FR published no base-case element in the sampled hours; recorded, not judged).

Result. Median per-border Pearson r = +0.99. Nine of eleven borders sit at +0.987 or above; on most, the static annual model lands inside JAO's own hour-to-hour band. Witness (100 MW DE→FR, MW carried, ours vs JAO): DE-FR direct +36.8 vs +31.0; the loop through Belgium +32.5 vs +30.5; the loop through the Netherlands +30.3 vs +32.7. The weak ends, published: AT-CZ +0.929 and AT-DE +0.825, and per-border slopes vary (0.27–1.06), which is exactly what the out-of-sample calibration layer exists to absorb. No JAO data is served; the statistic is a fact about this model. Table analytics_jao_ptdf_validation.

11 · Modelled German congestion vs observed TSO redispatch

Question. German TSOs publish every redispatch measure they order; 84,386 measures since 2021, ~90 TWh of current-driven interventions. Does the modelled congestion layer agree with where and when the operators actually intervene?

Method. Observed side: current-driven redispatch only (voltage-driven and test measures excluded), reduce side only for hourly MW, so each reduce/increase pair is counted once. Model side: the DC chain re-solved on a stratified 2025 sample (every 29th hour, 303 hours), ENTSO-E actual net positions forced. A counterfactual reverses the observed redispatch back into the injections at curated plant coordinates (55% of the MW located; the remainder rebalanced on load weights), reconstructing the pre-intervention state the TSOs were reacting to.

Result. Geography: the observed reduce mass sits at 52.77°N and the increase mass at 50.07°N; the north→south corridor the model claims. Timing: modelled north→south transfer across the 51.2°N cut correlates with observed redispatch MW at Spearman +0.57 on the counterfactual (+0.54 on actuals), and 93% of top-decile transfer hours have above-median observed redispatch. The published miss, and it is structural: the ratings-dependent overload index (sum of MW above substrate branch ratings) correlates negatively (−0.27/−0.29); the substrate's branch ratings, not its topology, are the broken layer. Consequence on the product: branch-grain congestion claims fail this test and are deliberately not served; corridor grain only. Table analytics_redispatch_validation.

12 · The GB corridor vs SO-flagged Balancing Mechanism constraint energy

Question. The GB mirror of study 11, on a fully independent data chain: does the modelled Scotland→England (B6) corridor transfer track what NESO actually pays to manage in the Balancing Mechanism?

Method. Pre-registered before any correlation was computed. Hourly 2025, all 8,760 hours solved on the GB synchronous island (503 buses). Injections are Elexon fuel-half-hourly actuals; ENTSO-E's GB feed was rejected on inspection, as post-Brexit it carries ~1% of real volumes. The ten interconnectors inject at curated landing buses. Observed side: SO-flagged accepted bid energy (12.99 TWh in 2025) via the verified settlement join at unit grain. Counterfactual: SO actions reversed at ~45 curated unit locations. Primary cut B6 at 55.3°N; robustness cuts at 54.0°N and 56.0°N.

Result. Counterfactual Spearman at B6 +0.815, with 100% of the model's top-decile hours showing above-median observed constraint energy; post-balancing actuals +0.57 and 93%. The corridor-grain doctrine now holds in both of Europe's most constraint-stressed grids on independent evidence chains. The published defect: the pre-registered night-lights load weights turned out to be NULL for every GB substation and silently degraded to uniform-per-bus, which put 25% of GB load north of B6 and made the served series run net south→north; physically wrong. The correlation study alone did not catch it; a level sanity check against known physics did. Fixed with built-volume load weights (12.3% north of B6, a disclosed deviation from the pre-registered spec), the silent fallback now fails loudly, and every headline number improved. House lesson, stated on the methodology register: rank validation does not certify levels. Table analytics_gb_congestion_validation.

13 · The ERCOT corridor vs the interfaces ERCOT itself constrains

Question. The US mirror of studies 11 and 12, on a third independent evidence chain: does a west→east corridor transfer, built from observed ERCOT injections placed on Kortex network geography, predict observed ERCOT transmission congestion?

Method. Pre-registered before any correlation was computed. The Texas substrate passes the connectivity screen: 99.2% of 53,233 km of mapped ≥100 kV line in one component, 3,983 buses. Injections are ERCOT's own published hourly actuals over 561 days (2025 to mid-2026): wind by geographical region, solar by region, load by weather zone, with the thermal residual placed on a fixed EIA-923 plant-longitude profile. The corridor transfer is the lossless-DC identity, net injection west of a meridian cut; primary cut at 99.5°W with three robustness cuts reported, not selected. Observed side: SCED binding transmission constraints with shadow prices, 2.9 million intervals.

Result: the pre-registered test failed, and the failure re-taught the doctrine. Against west-located branch constraints (geolocated through the curated station crosswalk) the transfer correlates at Spearman −0.393; not weak, inverted. The mechanism, found afterwards and labelled post-hoc: ERCOT operates named corridor interfaces (Generic Transmission Constraints), and when west export is high the interface binds first and curtails upstream, so the branch elements behind it unload; the largest geolocated branch constraint binds against system wind at −0.537. Against the west-export interfaces themselves (Panhandle, West Texas, McCamey) the same transfer correlates at +0.65 on binding intervals and +0.59 on shadow-price mass, positive in all seven quarters, and specifically: every other ERCOT interface family sits near zero, so the transfer is reading the west corridor, not congestion in general. An independent audit recompute reproduced every statistic and confirmed the falsification survives the treatment of zero-congestion days. Honest status: the +0.65 is post-hoc; the confirmatory criterion (rho ≥ +0.5 on second-half 2026 data, out of sample) is frozen and the data to run it accrues daily. Corridor grain validates on a third grid; branch grain fails on a third grid. Table analytics_ercot_corridor_validation.

14 · Can an observed base rate tell which queued projects get built?

Question. The first study here that tests a decision rather than a figure. Interconnection-queue projects either reach operation or are withdrawn, and the US record retains both outcomes. Does an appraisal built only from what was knowable when a project entered the queue separate the two? This is deliberately not a forecast: it is an observed base rate, in the same posture as the connection-duration cohorts, and no learned model is served.

Method. Thresholds pre-registered in the script, before the first run (fail below 1.5× top/bottom decile lift or at or below 0.55 AUC). 25,353 resolved projects from the LBNL queue; 18,423 scored. Strict point-in-time: a project entering in year T is scored only from projects that had already resolved before T, so no later outcome can reach backwards into its score. Interconnection-agreement stage is excluded outright despite being the strongest single signal in the data (0.9% at Feasibility to 62.3% at IA Executed): its categories include Operational and Withdrawn, which are the outcome, and even the study stages reflect current state, so for a resolved project they encode its fate.

Result, and then the qualifications that matter more. Pooled, the appraisal passed: AUC 0.695, top decile completing at 39.9% against 5.9% in the bottom, a 6.80× lift, zero abstentions. Three robustness checks then materially qualified it, none of which were pre-registered and all of which should have been. Within technology, the signal largely disappears where most of the population sits: Solar, 47% of projects, scores 0.506 — no discriminating power at all; the pooled figure is substantially between-technology separation, part of which is the well-known fact that gas completes more often than batteries. Right-censoring is severe: completion among resolved projects falls from 30.2% (2013 entries) to 2.5% (2021) and 0.9% (2024), because recent projects have not had time to be built, so among those that resolved nearly all resolved by withdrawal while a recent project destined for operation is still active and excluded entirely. Any score correlating with entry era therefore earns spurious credit. Removing that confound by scoring within entry year gives 0.651, and on the mature cohorts where outcomes are largely settled (2010–2018) roughly 0.60. The honest headline is modest but real discrimination, driven largely by technology and size, and none within the largest segment.

Does the graph add anything? Two hypotheses rejected, one confirmed. Three deep-graph hypotheses were pre-specified, each required to carry a mechanism and to replicate across independent regions. Substation voltage and network centrality: rejected — voltage spans only 19% to 25% against technology's eightfold spread, and centrality gives 22% against 22%, no signal whatever. Contention at the connection substation: rejected on replication — pooled bands showed an interpretable inverted U that AUC could not see, and it proved to be PJM's idiosyncrasy amplified by sample weight; CAISO and MISO contradict it outright. Interconnecting-utility track record: confirmed — the utility's own point-in-time completion history scores 0.661 on Solar, precisely where every flat feature fails, and its replication is what makes it credible rather than lucky: it works where interconnection is run by individual vertically-integrated utilities (Southeast 0.767, West 0.592, SPP 0.596) and fails where a single ISO runs a common queue process (PJM 0.531, CAISO 0.467, NYISO 0.449), exactly as the institutional mechanism predicts. Adding county-grain context (hazard, social vulnerability, resilience, population, building value) improves Solar by a further +0.017 ± 0.010 AUC across ten held-out splits, winning nine of ten: small, consistent and real.

What this validates, what it does not, and what we cannot see. It validates the substrate, the gates and the appraisal machinery against 25,353 real outcomes. It does not validate the candidate-site screen's demand-direction verdicts: the queue is US-only and predominantly generation-direction, and treating it as a proxy for large-load siting would be exactly the over-reach this register exists to prevent. Two further limits are stated rather than discovered later: only about 49% of resolved projects carry a genuine resolution date, so base rates are drawn from the subset that can be placed in time and inherit any bias that subset carries; and reactive power is absent from this estate entirely — no MVAR, no power factor — so if reactive constraints drive project failure, Kortex cannot currently see it, and voltage is not an honest proxy for it. The appraisal is not served as a ranking of named live projects: the score discriminates but is not calibrated, so it belongs in ordered bands with observed rates and counts, never as a probability read off a row.

The obvious next test cannot be run on this record, and that was measured rather than assumed. A US county is an enormous unit for a siting question, so the features that should matter are node grain: the binding constraints and the nodal congestion at the connection substation. Kortex holds seven ISO constraint records and a nodal price record, and the join still fails on three independent counts. Time: every constraint table begins on 1 January 2025 while the last queue outcome carrying a date is 30 December 2024, so features and outcomes do not overlap at all; scoring past outcomes with present constraints would leak the future, which is the precise error this register exists to prevent. Key: ERCOT is the only constraint record at station grain, and only 9.1% of its resolved projects place on a mapped station, rising to just 11.4% if every station ever seen binding were mapped, because 48% carry no connection point at all and the rest are bus numbers written against a different naming system. Geometry: every ERCOT queue project is held at county centroid, so a spatial nearest-station join would only reproduce the county grain that was already too coarse. The nodal price leg fails differently and instructively: its key is close to workable, because PJM connection points and pricing nodes share a vocabulary, but the 44 projects resolving inside the price window are all completions and none are withdrawals, so there is no outcome variance to discriminate. The pass conditions for all three gates are declared in ops/queue_constraint_join_feasibility.py ahead of the data, so re-running it is how we will know the test has become possible, rather than deciding after the fact that it had.

15 · The Australian corridors, tested on fully observed data

Question. Studies 11 to 13 validated a modelled corridor transfer against observed congestion in Germany, Great Britain and Texas. Australia's National Electricity Market offers the converse test: AEMO publishes the corridor state itself; 5-minute interconnector flows against their dispatch limits for all six interconnectors joining the five regions, alongside regional prices. So the question is not whether a model reproduces the corridor, but whether the corridor signal carries the economics at all: does an interconnector sitting at its dispatch limit coincide with the inter-regional price separation a siting decision would care about?

Method. Pre-registered before any correlation was computed. For each interconnector and 5-minute pricing interval (375 days, August 2025 to August 2026): the corridor is at limit when its dispatched flow sits within 0.5 MW of its export or import limit; separation is the absolute regional price spread across it. Primary statistic: Spearman rank correlation of the daily at-limit share against the daily mean spread, per corridor; pass requires median ≥ +0.4 across the six and a positive sign on all four major corridors. Both sides come from the same dispatch solution, and deliberately so: the test is whether the corridor state is a sufficient statistic for separation; a zero would mean separation is driven by constraints the corridor grain cannot see.

Result: pass, strongest on the heaviest corridors. Median +0.492 across the six; Victoria–New South Wales +0.811, Heywood +0.712, Queensland–New South Wales +0.545, Basslink +0.404; all four majors positive. The strongest Australian corridor lands at the same level as the strongest modelled result in the ladder (GB at +0.815), on data with none of the model's coverage ceilings. Direction behaves as economics requires in eleven of twelve cases: at the export limit the importing region prices above the exporting one (Victoria–NSW median spread +$54.50/MWh at limit), and at the import limit the mirror holds on all six. Two honest findings ride along. Basslink first read as the twelfth case failing: at its "export limit" Tasmania prices above Victoria (median −$65.14/MWh). The dedicated look, run the same day, resolved it as a labeling artifact rather than an economic one: Basslink's dispatch envelope is set by frequency-control coupling and its no-go zone (the binding constraint ids say so directly), the envelope routinely pushes the whole allowed band negative, and in 80% of those "at export limit" intervals the link is actually import-capped toward Tasmania; where Tasmania pricing higher is exactly right. Conditioned on the direction of the constrained flow, every corridor behaves as economics requires, with no sign inversions anywhere: Basslink pinned while exporting shows Victoria above Tasmania (+$37.81/MWh median), pinned while importing shows Tasmania above Victoria (−$70.86/MWh). Our initial market-network-service conjecture was not needed and is withdrawn. The general rule this looked-for miss taught: on dynamically limited links, read direction from the sign of the constrained flow, never from which bound is touched. And AEMO's interconnector marginal value is zero on every one of 647,874 rows: the NEM enforces interconnector limits through generic constraints, so the at-limit observable, not the published marginal value, is the corridor signal in this market. Murraylink, a 220 MW link at limit two-thirds of all intervals, shows the observable saturating (+0.149), not failing. Table analytics_nem_corridor_validation.

Reproduce these studies

Corrections and challenges are welcome: kortex@orkora.com. Errors found by users are fixed in the graph and noted here.