How we compute things
This page renders our internal methodology document verbatim. When the method changes, the changelog says what changed and whether old numbers remain comparable.
Town pages are live for all 169 Connecticut towns. Their outage history is currently county-grain (labeled on every page); town-grain figures publish as tracking accrues. Towns without sufficient data for a claim show that instead of a number.
v1.4 (2026-07-15; v1.0→v1.1 ACE-0 F1 re-noun, v1.2 residents interim, v1.3 households primary, see CONVENTIONS_CHANGELOG for each). The public methodology page is generated from this file (generator strips internal comments and normalizes dashes per brand floor).
What we rank
Municipalities (169 CT towns; ranked set = towns with sufficient data, see floors).
Never USPS localities, never counties presented as towns (level disambiguation is load-bearing).
County-grain rankings (v1.4, the grain the interval data honestly supports today)
Counties are ranked per COMPLETE CALENDAR YEAR on customer-hours per 1,000 households (households = ACS 2021). A year is rankable only when (a) its raw interval data passes the month-grain coverage checks (edge checks are blind to mid-year holes; 2019's May-Aug gap is the proof) and (b) all 8 counties are present. Single-year county rankings are STORM-DRIVEN BY DESIGN: the #1 position typically belongs to whichever county the year's biggest storm hit, and every ranking surface must carry the worst-3-day concentration column so readers see that mechanism instead of inferring chronic difference. Ranks always render with their values. Multi-year averages publish only when >=3 rankable years exist (not yet).
The primary ranking metric (v1.3)
Customer-hours of outage per 1,000 households per year (households = ACS 5-year 2021 table
B11001, the last vintage on legacy-county geography; 2020 Census population ships alongside as
the secondary normalizer and the cross-check), computed
per town from EAGLE-I public data: customer-hours = sum(customers_out × interval) over county
intervals, apportioned to towns via the town-level snapshot where available and county scaling
elsewhere (every row carries apportionment: measured | county-scaled, the disclosure key).
Once live-era observation matures (≥12 months) AND the Phase-4 legal gate opens, our observed
incident history joins as a second, separately-labeled series.
- Why households, not "metered customers" (ACE-0 F1): per-town meter counts are not public; EIA-861 customer counts exist only at utility grain. Calling Census households "customers" would violate our own noun discipline (conventions §3). The denominator is named exactly what it is; utility-grain EIA customer counts appear on the methodology page for scale context only. Households ≈ metered residential accounts far more closely than population does (multi-person homes share one meter), which is why households is primary and population secondary.
- It is a RATE (normalized by size) with the N attached, not a raw count that crowns big towns.
- "Hours without power" is the reader's own unit, extractable, comparable, honest.
- Inputs trace to the published datasets on the open-data page: the DOE EAGLE-I derived town outage-history dataset (customer-hours), the town denominators dataset (households, population), and the as-filed reliability dataset (the comparison series).
Presented alongside (never merged into one score)
- Frequency: reported outage events per year (feed + definition stated per §2 of conventions).
- Duration: median and p90 estimated restoration time (quantized-to-poll caveat).
- As-filed vs as-observed: the utility's SAIDI-style figures (major event days EXCLUDED by IEEE 1366) next to all-days observations, the disagreement is the story, presented as method.
- The trend: is the town improving or worsening (window-over-window, only when both windows are complete per the completeness frame).
Floors and refusals (what we do NOT rank)
- Minimum-N floor: a town enters the ranking only with ≥ 12 months of healthy-feed coverage AND ≥ 5 attributed events or ≥ 1,000 Census households (the apportionment base). Below floor → "insufficient data to rank" (an honest badge, not a zero, not an omission).
- Eastern CT (no deep history): shown with live data + "tracking since June 2026", excluded from historical rankings until 12 months accrue.
major_per_yr = 0(no-household-match sentinel) → NULL → below floor. Never rank on it.- No ranking on a window containing a documented feed gap unless the metric is gap-insensitive (stated per metric in the completeness ledger).
Ties, stability, cadence
- Ranks carry their value: "#3 (41 outage customer-hours per 1,000 households per year)", never a bare ordinal.
- Ties within the value's precision are shown as ties (=3), not broken cosmetically.
- Recompute cadence: monthly for historical rankings (stability > freshness for evergreen pages); live status is separate and never re-orders the historical rank between recomputes.
Every ranking page states
- Metric, window, feed(s), and N (the denominator and its unit).
- The scaled-estimate disclosure where county apportionment is used.
- Major-event-day handling (both views).
- Date of computation + methodology version.
- What would change the number ("one large storm can move a small town several places, that is the nature of the data, and why we show the N").
The bias checks (run per recompute, results kept)
- Direction audit: does this recompute make the grid look worse than the last one? If yes, verify harder (it favors us). If a methodology change ONLY ever worsens grid optics, it fails the barium test and does not ship.
- Mirror audit: did any town's number improbably improve (the reassuring-bug direction, HAA5 precedent)?
- Spot-verify the top-3 and bottom-3 towns against raw feed data by hand, every recompute.
Data sources and conventions on ranking surfaces
Outage records: DOE EAGLE-I (county grain; raw 15-minute intervals for customer-hours). Filed reliability: EIA-861. Denominators: Census (2020 base; ACS 2021 households). Town-grain measured rows: the February 23, 2026 blizzard snapshot, Eversource and United Illuminating counts as published by Patch.com via its live Datawrapper embed (14:16 EST Eversource, 14:12 EST UI; a mid-afternoon snapshot, not the event peak, which came that morning). Zeros are kept: a measured zero is a fact about that moment. Towns served mostly by municipal utilities (Bozrah; the Norwich and Wallingford munis; Groton Utilities' territory) are not covered by that source and their pages say so.
Change control
Metric changes = version bump + changelog + side-by-side old/new publication for one cycle (publish the loosenings too, rankings that only ever get scarier are marketing, not measurement).