CAISO node intelligence

Methodology

Everything on this site is a deterministic transform of a public file. This page states the sources, the node definition, every window and exclusion, every metric, and the list of things the public files cannot answer. An auditor should be able to reproduce any figure from this page and DATA.md without reading code.

Source as-of dates

Age is measured against each source's own publication cadence, not against today. An annual report eleven months old is current, not stale; a monthly file two months old is stale. Thresholds are recorded per source in data/source_freshness.csv, and a source whose figures are withheld shows blank cells rather than zero.

SourceCadencePublishedAgeStatus
CAISO Public Queue Reportweekly2026-10-120 dFRESHfigures shown
CAISO Cluster 15 Interconnection Requests reportad-hoc2026-07-1688 dFRESHfigures shown
CAISO 2025 TPD allocation cycle resultsannual2026-05-04161 dFRESHfigures shown
CAISO 2024 TPD allocation cycle resultsarchival2025-05-06524 dFRESHfigures shown
PG&E Wholesale Distribution Access Tariff queuemonthly2026-08-1954 dFRESHfigures shown
EIA-860 annual generator censusannual2026-09-1032 dFRESHfigures shown
CAISO Final 2027 Local Capacity Technical Reportannual2026-04-29166 dFRESHfigures shown
CAISO and PTO Cluster 16 POI availability noticesad-hoc2026-01-15270 dFRESHfigures shown
OpenStreetMap substations via Overpasson-demand2026-09-0834 dFRESHfigures shown
CAISO OASIS day-ahead LMPon-demandnot establishedMISSINGfigures withheld

Sources

CAISO Public Queue Report (three sheets: active, completed, withdrawn; report run date 2026-10-12). CAISO Cluster 15 Interconnection Requests report (active + withdrawn sheets; posted 2026-07-16). CAISO 2024 and 2025 Transmission Plan Deliverability allocation cycle results. CAISO 2025 TPD Allocation Report (group definitions, 2026-04-13). CAISO Final 2027 Local Capacity Technical Report (area boundary substations, 2026-04-29). CAISO and PTO notices on Cluster 16 POI availability, encoded only where a notice names the POI. PG&E Wholesale Distribution (WDAT) public queue. OpenStreetMap substations (ODbL) for positions. Kings and Kern county GIS and CEC open data for land screens. Licences and attribution: DATA_LICENSES.md.

What a node is

A node is CAISO's free-text point of interconnection normalised: upper-cased, voltage tokens, "SUBSTATION" / "SWITCHING STATION" and circuit suffixes (#1, #2) removed, line POIs split at the hyphen. Two consequences to keep in mind: a station's 230 kV and 500 kV yards are one node here even though they are different constraints, and a same-name station in two utilities can collide (utility is used to separate them where a source names it).

Windows, censoring, exclusions

"Recent" means withdrawn in the last 5 calendar years including the current one, i.e. from 2022. Storage MW per project is the sum of its storage components capped at its net-to-grid figure. Survival curves: event = withdrawal at withdrawn_date; active projects censored at the public report run date; completed projects censored at their on-line date (completion is success, not an event); Cluster 15 censored at its posting date 2026-07-16, or at the latest withdrawal the file records if CAISO has re-posted it since; a cohort's S(t) is reported only while at least 5 projects remain at risk; rows with a withdrawal before their queue date, or no queue date, are excluded and counted.

Attrition compares regimes, not only nodes. C10–C13 entered under the standard cluster process; C14 entered in April 2021 at 2.4x the prior year's volume under special procedures that made Phase I cost estimates advisory and refunded deposits in full on early withdrawal when Phase II costs came in 25 % or more above Phase I; C15 is the first cohort scored and capped by zone under the 2023 IPE, and its queue date (2025-02-12) is the post-scoring date, so the 541 → 170 intake cut happened before its month 0. A flatter C14 or C15 curve is partly the rule change, not only the projects or the nodes.

Ratios and small numbers

Every ratio on a node page carries the count of projects behind it. A ratio built on fewer than 3 projects or on a denominator under 500 MW is shown dimmed: it is arithmetically correct and statistically empty (a node with one withdrawal and one survivor has a churn of 1.00 or 3.33 or 0.10 depending on their sizes, and none of those numbers describes the node).

Metric definitions

metricdefinition
legacy_active_mwactive MW in the public report (C14 and earlier)
c15_active_mwactive MW in the Cluster 15 report
operating_mwcompleted MW in the public report
pipeline_storage_mwstorage MW inside legacy_active_mw + c15_active_mw
operating_storage_mwstorage MW inside operating_mw (completed, public report)
wd_recent_mwwithdrawn in the last 5 years (both reports)
wd_recent_storage_mwstorage MW of those rows — each project's storage components capped at its net-to-grid figure; a handful of filings report net-to-grid as 0 and keep the component MW, so this can exceed the row above at 3 nodes.
wd_post_phase2_mwwithdrew AFTER Phase II / Facilities Study results (public report only)
p2_reached_mwMW of projects that received Phase II / Facilities Study results here (public report, any sheet)
p2_withdrawn_mwof those, MW that then withdrew (== wd_post_phase2_mw)
p2_attritionp2_withdrawn_mw / p2_reached_mw — share of studied MW that left with results in hand
committed_mwACTIVE MW holding an executed interconnection agreement (public report)
churn_nprojects behind storage_churn (withdrawn recent + queued + operating)
c15_nprojects behind c15_survival
p2_nprojects behind p2_attrition
eia_plantsoperable EIA-860 plants within 5 km of the node's mapped position (positioned nodes only)
eia_nameplate_mwtheir nameplate MW, all technologies (EIA-860 Generator file, Operable sheet)
eia_storage_mwhbattery energy capacity among them (EIA-860 Energy Storage file), as reported
eia_storage_1h_mwstorage MW at units whose reported MWh is no more than their MW (one hour or less); shown with 'duration not established' because the value may reflect how the form was filled
eia_proposed_mwnameplate MW in EIA-860's Proposed sheet within the same radius (planned / under construction)
wd_alltime_mwevery withdrawn MW since 2006 (includes dead wind/solar-era projects)
storage_churnwd_recent_storage_mw / (active + operating storage MW) — the one to quote
churn_alltimewd_alltime_mw / (pipeline + operating MW) — historical color only
c15_survivalc15_active / (c15_active + c15_withdrawn)
c15_fcds_req_mwC15 active MW that requested Full Capacity Deliverability Status (requested, not allocated)
tpd25_projectsprojects at the node that sought TPD in CAISO's 2025 allocation cycle
tpd25_req_mwMW at the node that sought TPD in CAISO's 2025 allocation cycle
tpd25_alloc_mwMW allocated in that cycle (requested × allocation %)
tpd25_denied_mwMW requested by rows that received 0 %
tpd25_unalloc_mwrequested minus allocated: MW refused outright PLUS the remainder left by partial allocations — quote this for 'what the developer did not get'
tpd25_unknown_mwMW requested by rows with no allocation percentage in the file; 0 today
tpd25_req_A_mwof tpd25_req_mw, requested in allocation group A: executed PPA (or LSE own load)
tpd25_req_B_mwof tpd25_req_mw, requested in allocation group B: shortlisted / negotiating a PPA
tpd25_req_C_mwof tpd25_req_mw, requested in allocation group C: already in commercial operation
tpd25_req_D_mwof tpd25_req_mw, requested in allocation group D: no PPA, Section 8.9.2.3 path
tpd25_denied_A_mwof tpd25_denied_mw, refused at 0 % in group A
tpd25_denied_B_mwof tpd25_denied_mw, refused at 0 % in group B
tpd25_denied_C_mwof tpd25_denied_mw, refused at 0 % in group C
tpd25_denied_D_mwof tpd25_denied_mw, refused at 0 % in group D
tpd25_denied_ppa_mwrefused MW in groups A + B: contracted or shortlisted projects that did not get deliverability; the refusal that matters
tpd24_fcdsa_projectsprojects at the node allocated Full Capacity in the 2024 cycle
lcr_statusCAISO Local Capacity Area (Resource Adequacy geography): 'in <area>' or 'outside <area>' as the LCT report's boundary lists state it; blank = not encoded, never 'outside every area'
lcr_sub_areasub-area / load pocket within that area, when the LCT report delineates it
wdat_active_projectsactive WDAT requests at the same substation (WDAT = distribution-level queue at the same substation, PG&E file today; not CAISO deliverability)
wdat_active_mwMW of active WDAT (distribution-level) requests at the same substation (PG&E file today)
wdat_active_storage_mwstorage MW attributed from wdat_active_mw — an assumption: the PG&E file publishes one MW figure per request, so storage-only requests count in full and solar+storage requests count at half (160 of 1,011 active requests carry storage; 362 of their 479 MW is attributed as storage).
wdat_inservice_mwWDAT MW already in service at that substation
wdat_withdrawn_mwWDAT MW withdrawn at that substation (all-time in the file)
wdat_ft_over_cap_nactive Fast Track requests above the 5 MW Fast Track ceiling — held out of wdat_active_*
wdat_ft_over_cap_mwMW of those held-out rows, as posted; cause not established

What the public files cannot answer

These are stated on every node page as Not public. They are the questions a developer must pay for, ask for, or accept as unknown — knowing which is which is most of the diligence.

questionwhere the answer lives
Network upgrade cost per projectPhase I / Phase II cluster study reports, served through CAISO's RIMS login.
Per-constraint transmission headroomthe same study reports; CAISO's zonal transmission-capability table is the public proxy used for cluster scoring.
Interconnection customer identitynot in the Public Queue Report or the Cluster 15 report; project names only.
Interconnection financial security postedcomputed per project from non-public study costs; no public $/MW rate reconstructs it.
Why a project withdrewthe files carry no reason beyond the withdrawal date.
Begin-construction status (tax credit eligibility)not a CAISO data element.
Landowner willingnessassessor parcels give ownership class; owner names are withheld on purpose.
Load-side interconnectiondata-center and other load requests are a utility process with no public queue.

What this site never does

No composite score. No cause attributed to a withdrawal. No dollar figure that is not in a source. No per-project prediction. No names of private individuals: parcel owners are never read, and an EIA-860 owner or operator that reads as a person is counted, not named. No figure generated by a language model: the pipeline is deterministic Python, the code is public, and every output row carries the source file, the source run date and the pipeline commit.

Update cadence

A GitHub Actions job runs every Monday: it downloads CAISO's current files, rebuilds everything, and commits a dated snapshot, opens a row-level diff issue only when CAISO's report run date is new; the site itself is redeployed on every run.

No figure on this site states a cause. CAISO files carry no withdrawal reason beyond "IC Request".

Screening tool, not engineering advice. Built from public filings by an engineer who is not a licensed PE. Verify every figure against the source filing named in its row before you rely on it for any decision. No warranty of any kind. Not affiliated with CAISO, EIA, or any utility. No engineering services are offered.