{
  "anchors": [
    {
      "about": "2-letter state/jurisdiction code (PD-003).",
      "format": "usps_state",
      "kind": "geography",
      "name": "state",
      "scope": "universal"
    },
    {
      "about": "5-digit Census county FIPS, zero-padded string.",
      "format": "fips5",
      "kind": "geography",
      "name": "county_fips",
      "scope": "universal"
    }
  ],
  "capability": "power.interconnection_queue_spp",
  "codebooks": {
    "cluster_group": {
      "codes": {},
      "coverage": "the distinct cluster groups served from the SPP snapshot",
      "note": "SPP's regional cluster group, e.g. `01 NORTH`, `02 NEBRASKA`, `03 CENTRAL`, `04 SOUTHEAST`, `05 SOUTHWEST`. Filter by SPP's EXACT value.",
      "semantics": "as_reported_spp_cluster_group",
      "source": "SPP GI Summary `Cluster Group` column \u2014 SPP's regional grouping."
    },
    "current_cluster": {
      "codes": {},
      "coverage": "the distinct clusters served from the SPP snapshot",
      "note": "SPP's study cluster, e.g. `DISIS-2024-001`, `Surplus`, `RTOE Transitional Cluster` (blank for un-clustered rows). Filter by SPP's EXACT value.",
      "semantics": "as_reported_spp_cluster",
      "source": "SPP GI Summary `Current Cluster` column \u2014 SPP's study-cluster identifier."
    },
    "fuel_type": {
      "codes": {},
      "coverage": "the distinct fuel-type strings served from the SPP snapshot",
      "note": "Free-text and often blank; slash-delimited combos (e.g. `Solar/Storage`, `Wind/Storage`) are kept WHOLE, never split. Filter by SPP's EXACT string.",
      "semantics": "as_reported_spp_fuel_type",
      "source": "SPP GI Summary `Fuel Type` column \u2014 free-text, often slash-delimited for hybrids."
    },
    "generation_type": {
      "codes": {},
      "coverage": "the distinct generation types served from the SPP snapshot",
      "note": "SPP's own values, served verbatim \u2014 e.g. `Wind`, `Solar`, `Battery/Storage`, `Thermal`, `Hybrid`, `Hydro`. SPP encodes hybrids NATIVELY as `Hybrid` (no is_hybrid is invented). SPP's own case inconsistencies (`WIND`/`wind` vs `Wind`) are surfaced as-reported, not normalized. Filter by SPP's EXACT value.",
      "semantics": "as_reported_spp_generation_type",
      "source": "SPP GI Summary `Generation Type` column \u2014 SPP's own technology grouping."
    },
    "native_status": {
      "codes": {
        "DISIS STAGE": {
          "label": "In a Definitive Interconnection System Impact Study cluster"
        },
        "ERAS": {
          "label": "Expedited Resource Adequacy Study"
        },
        "FACILITY STUDY STAGE": {
          "label": "In the facility study stage"
        },
        "IA FULLY EXECUTED/COMMERCIAL OPERATION": {
          "label": "IA signed, in commercial operation"
        },
        "IA FULLY EXECUTED/ON SCHEDULE": {
          "label": "Interconnection Agreement signed, on schedule"
        },
        "IA FULLY EXECUTED/ON SUSPENSION": {
          "label": "IA signed, suspended"
        },
        "IA PENDING": {
          "label": "Interconnection Agreement not yet executed"
        },
        "ICS": {
          "label": "as-reported SPP value (rare)"
        },
        "None": {
          "label": "literal 'None' string as SPP publishes it (rare)"
        },
        "SPECIAL STUDY": {
          "label": "In a special study"
        },
        "TERMINATED": {
          "label": "Terminated \u2014 left the queue"
        },
        "WITHDRAWN": {
          "label": "Withdrawn \u2014 left the queue (the dominant class, ~66%)"
        }
      },
      "coverage": "the status values observed in the SPP snapshot (live; SPP may add more)",
      "note": "ALWAYS scope by `native_status`. Served VERBATIM (never mapped to a lifecycle enum, never a derived active/withdrawn boolean \u2014 that equivalence is the analyst's). ~66% of rows are `WITHDRAWN`. A queue-MW total is REQUESTED capacity, never built \u2014 for built/operating capacity use query_power_capacity_v1. Filter by SPP's EXACT string.",
      "semantics": "as_reported_spp_status",
      "source": "SPP GI Summary `Status` column \u2014 SPP's OWN verbatim status vocabulary."
    },
    "service_type": {
      "codes": {},
      "coverage": "the distinct service types served from the SPP snapshot",
      "note": "SPP's request service type, e.g. `ER/NR` (Energy Resource / Network Resource), `ER`, `NR`. Filter by SPP's EXACT value.",
      "semantics": "as_reported_spp_service_type",
      "source": "SPP GI Summary `Service Type` column."
    }
  },
  "data_point": {
    "does_not_answer": [
      "built/operating/nameplate capacity as a queue total (the MW columns are REQUESTED interconnection, not built; for operating capacity use power.capacity / EIA-860M)",
      "a single nameplate figure (SPP publishes six MW columns \u2014 capacity, max summer, max winter, requested max injection, requested network resource deliverability, nameplate \u2014 all served and never collapsed)",
      "a sum of MW treated as planned or operating capacity (most queued MW withdraws \u2014 ~66% of SPP rows are WITHDRAWN \u2014 totals are scoped by native_status, never read as built)",
      "a cross-ISO or national queue total (methodologies, inclusion, and withdrawal rates differ per ISO \u2014 never summed or deduped across ISOs; for MISO use query_power_interconnection_queue_v1, for PJM query_power_interconnection_queue_pjm_v1 (or query_power_interconnection_queue_pjm_cycle_v1), for CAISO query_power_interconnection_queue_caiso_v1, for NYISO query_power_interconnection_queue_nyiso_v1, for ISO-NE query_power_interconnection_queue_isone_v1, for ERCOT query_power_interconnection_queue_ercot_v1)",
      "which projects are \"data-center driven\" or load requests (SPP's GI queue publishes no load/data-center request type \u2014 it is generation-only; that inference is the analyst's, never tagged here)",
      "the probability that a queued project will actually be built or reach commercial operation",
      "generation MWh, demand, prices, retail sales, or transmission flows",
      "lat/lon or plant-level attribution (SPP supplies no coordinate; only a free-text town-or-county, the State column, and derived county_fips)",
      "queues for other ISOs/RTOs (MISO, PJM, CAISO, NYISO, ISO-NE, ERCOT) \u2014 each is a separate block under the same gate"
    ],
    "grain": "project_snapshot",
    "id": "power.interconnection_queue_spp",
    "note": "This is SPP's interconnection queue \u2014 Southwest Power Pool's public GI Summary report. `capacity_mw` is REQUESTED interconnection capacity (a waiting line), NOT built / installed / operating capacity (SPP also publishes five other MW columns \u2014 summer/winter peak, requested injection/NRD, nameplate \u2014 served labeled, never blended). Always scope by `native_status` \u2014 SPP's OWN verbatim vocabulary (e.g. `IA FULLY EXECUTED/ON SCHEDULE`, `DISIS STAGE`, `IA PENDING`, `WITHDRAWN`, `TERMINATED`), served as-reported and never mapped to a lifecycle enum; ~66% of rows are WITHDRAWN. For operating capacity use query_power_capacity_v1. SPP is generation-only and infers no load/data-center type. SPP keeps no per-vintage archive, so this serves a CURRENT snapshot (history accrues forward, not deep as_of time-travel). SPP only \u2014 never summed or compared across ISOs; for MISO use query_power_interconnection_queue_v1, for PJM query_power_interconnection_queue_pjm_v1 (or query_power_interconnection_queue_pjm_cycle_v1), for CAISO query_power_interconnection_queue_caiso_v1, for NYISO query_power_interconnection_queue_nyiso_v1, for ISO-NE query_power_interconnection_queue_isone_v1, for ERCOT query_power_interconnection_queue_ercot_v1.",
    "product_spec": "blocks/power_interconnection_queue_spp/card.md",
    "represented_fact": "The SPP generator interconnection queue \u2014 Southwest Power Pool's public GI Summary report, the waiting line of every generation project that has REQUESTED to connect to the SPP grid (the ~14-state central-US RTO), served as-reported, project by project. SPP's full published structure is carried faithfully, in SPP's own words, across all 27 columns of the report: the six labeled megawatt readings (`capacity_mw`, `max_summer_mw`, `max_winter_mw`, `requested_max_injection_mw`, `requested_nrd_mw`, `nameplate_capacity_mw`, kept SEPARATE \u2014 SPP publishes several and we never blend them), the as-reported `native_status` (SPP's own vocabulary \u2014 WITHDRAWN, IA FULLY EXECUTED/ON SCHEDULE, IA FULLY EXECUTED/COMMERCIAL OPERATION, DISIS STAGE, IA PENDING, SPECIAL STUDY, TERMINATED, FACILITY STUDY STAGE, ERAS, IA FULLY EXECUTED/ON SUSPENSION, \u2026, kept verbatim with a per-source codebook, never mapped to a lifecycle enum), the `generation_type` and free-text `fuel_type` (kept verbatim, including SPP's own `Hybrid` generation type and slash-delimited fuel combos \u2014 no is-hybrid flag is invented), the study `current_cluster` (DISIS-YYYY-NNN / Surplus / RTOE Transitional \u2026) and SPP regional `cluster_group`, the transmission owner at the point of interconnection (`to_at_poi`), the `service_type`, the substation, and the lifecycle dates (request received, in-service, commercial operation, withdrawn, cessation). This is a REQUEST, not built capacity: historically the large majority of queued MW withdraws before it is built (in the SPP file, ~66% of rows are WITHDRAWN). This is a forward-looking slice (capacity/generation/demand are backward-looking actuals). SPP genuinely spans many states, so `state` is a real dimension and anchor; SPP carries no county_fips and no lat/lon, only a free-text \"Nearest Town or County\" \u2014 `county_fips` is derived by name where it resolves and left null otherwise (towns, multi-county labels, and unresolved names stay null, never guessed \u2014 the derivation is LOSSY by design). The grain key is SPP's Generation Interconnection Number (globally unique). SPP publishes no load/data-center request type \u2014 the queue is generation-only \u2014 so no load or data-center signal is inferred; that interpretation is the analyst's. SPP keeps no per-vintage archive (the CSV is regenerated on demand), so history accrues forward from first capture \u2014 this serves a CURRENT snapshot, not deep as_of time-travel.",
    "source_basis": [
      "energy.spp.queue"
    ],
    "source_decisions": [
      "docs/sources/energy/spp/gi_queue/build-plan.md"
    ]
  },
  "input": {
    "controls": [
      "include_records",
      "include_evidence",
      "limit",
      "order_by",
      "top_n",
      "order",
      "rollup_other"
    ],
    "date_range_params": [
      "request_received_from",
      "request_received_to",
      "commercial_operation_date_from",
      "commercial_operation_date_to"
    ],
    "date_ranges": [
      "request_received",
      "commercial_operation_date"
    ],
    "field_metadata": {},
    "filters": [
      "as_of",
      "state",
      "county_fips",
      "native_status",
      "generation_type",
      "fuel_type",
      "service_type",
      "current_cluster",
      "cluster_group",
      "to_at_poi",
      "request_received",
      "commercial_operation_date"
    ],
    "group_by": [
      "state",
      "county_fips",
      "native_status",
      "generation_type",
      "fuel_type",
      "service_type",
      "current_cluster",
      "cluster_group",
      "to_at_poi"
    ],
    "ranking": {
      "no_ranking": "Omit order_by and top_n to return all groups in group-key order.",
      "order": {
        "default": "desc",
        "valid_values": [
          "desc",
          "asc"
        ]
      },
      "order_by": {
        "accepts": "one of output.metrics",
        "note": "Ranks the groups by a metric (a measure). Not a group_by dimension \u2014 rows already come back grouped by each group_by field.",
        "requires": [
          "group_by"
        ],
        "valid_values": [
          "capacity_mw",
          "source_record_count"
        ]
      },
      "top_n": {
        "note": "Keeps the top N groups by order_by; the rest fold into one (other) remainder (additive metrics sum into it, non-additive ones are nulled) so the result still reconciles to summary.totals.",
        "requires": [
          "group_by",
          "order_by"
        ],
        "type": "positive integer"
      }
    }
  },
  "output": {
    "aggregate_citation_fields": [
      "source_id",
      "publisher",
      "source_url",
      "source_file",
      "raw_file_sha256",
      "as_of",
      "source_rows_count",
      "source_rows_sample",
      "verify",
      "lineage_filter"
    ],
    "citation_fields": [
      "source_id",
      "source_url",
      "source_file",
      "sheet",
      "source_row",
      "raw_file_sha256",
      "as_of"
    ],
    "detail_fields": [
      "source_id",
      "iso",
      "generation_interconnection_number",
      "source_record_key",
      "native_status",
      "state",
      "state_raw",
      "nearest_town_or_county",
      "county_fips",
      "county_fips_source",
      "county_fips_unresolved",
      "ifs_queue_number",
      "current_cluster",
      "cluster_group",
      "to_at_poi",
      "service_type",
      "generation_type",
      "fuel_type",
      "substation_or_line",
      "jtiq_participant",
      "jtiq_commitment",
      "cause_of_delay",
      "capacity_mw",
      "max_summer_mw",
      "max_winter_mw",
      "requested_max_injection_mw",
      "requested_nrd_mw",
      "nameplate_capacity_mw",
      "in_service_date",
      "commercial_operation_date",
      "cessation_date",
      "original_generator_commercial_op_date",
      "request_received",
      "date_withdrawn",
      "report_period",
      "source_row_number",
      "as_of",
      "raw_file_sha256",
      "citation"
    ],
    "metric_groups": {
      "records": [
        "source_record_count"
      ],
      "requested_mw": [
        "capacity_mw"
      ]
    },
    "metric_metadata": {
      "capacity_mw": {
        "additive_across_groups": true,
        "aggregation": "sum",
        "authoritative_total_path": "summary.totals.capacity_mw",
        "category": "requested_mw",
        "definition": "The project's requested interconnection capacity in MW, as SPP reports it (the `Capacity` column \u2014 SPP's headline MW figure).",
        "description": "This is REQUESTED interconnection capacity (a project in the queue), NOT built, installed, or operating capacity: historically the large majority of queued MW withdraws before it is built (~66% of SPP rows are WITHDRAWN). It is additive across distinct rows (each is its own request) but must be read as REQUESTED \u2014 scope it with `native_status` (SPP's own verbatim vocabulary). `capacity_mw` is SPP's headline `Capacity` figure; SPP publishes five other MW columns (`max_summer_mw`, `max_winter_mw`, `requested_max_injection_mw`, `requested_nrd_mw`, `nameplate_capacity_mw`) served labeled in the detail records and never blended. For operating capacity use query_power_capacity_v1.",
        "display_name": "Capacity (MW, requested)",
        "display_precision": "MW values are rounded to 6 decimal places in JSON to remove binary floating-point noise.",
        "grain": "queue project row",
        "null_handling": "capacity_mw=0 is a REAL value, not missing. A row with no reported value contributes null (ignored by the sum). An empty-query summary returns zero.",
        "rollup_behavior": "additive_partition_metric",
        "row_metric_path": "rows[].metrics.capacity_mw",
        "source_fields": [
          "Capacity"
        ],
        "unit": "MW"
      },
      "source_record_count": {
        "additive_across_groups": true,
        "aggregation": "count source records",
        "authoritative_total_path": "summary.totals.source_record_count",
        "category": "records",
        "definition": "Count of SPP GI queue rows in the current result scope (one atom = one project row).",
        "description": "Number of queued rows contributing to the value \u2014 scope with native_status to separate active from withdrawn from terminated.",
        "display_name": "Queued row count",
        "display_precision": "Integer.",
        "grain": "queue project row",
        "null_handling": "Always an integer count.",
        "rollup_behavior": "additive_partition_metric",
        "row_metric_path": "rows[].metrics.source_record_count",
        "source_fields": [
          "source_record_key"
        ],
        "unit": "count"
      }
    },
    "metrics": [
      "capacity_mw",
      "source_record_count"
    ],
    "summary_fields": [
      "group_count",
      "totals"
    ]
  },
  "primitive": "query_power_interconnection_queue_spp_v1",
  "status": "available"
}
