Greater Boston, 1882 to the present, keyed to the distribution circuit. What the atlas claims, how it is bounded, and what it refuses to do.
Adopted 15 September 2026. Harvard Graduate School of Design, STU 1504 "Who Owns the Grid?", Assignment 2.
This is the frame, written down before the work, so that a reader can tell what the atlas claims and what it does not.
An open atlas of Boston's energy transitions — what each new technology asked of the grid, what the grid did to accommodate it, and who paid — built so the next transition can be read the same way.
Every era of this city's electrical system was rebuilt around one dominant load. Lighting, then streetcars, then appliances, then air conditioning, then the gas heating that took winter off the electric system, then colocation, then distributed generation, then heat pumps putting winter back, and now compute. Each arrival was accommodated by somebody, in a document, at a cost that landed somewhere. The atlas collects the evidence for that sentence and publishes it in a form other people can question.
It is not a dashboard of the present. It is a record of accommodation over time.
Two things already exist and are good at what they do.
The CELT Energy Transition Atlas (Boston University Institute for Global Sustainability with UMass Lowell, backed by the Massachusetts Department of Energy Resources) is a statewide spatial tool at the municipal grain, built to help municipalities act. The City of Boston Energy and Water Utility Data Explorer (Advanced Energy Intelligence, 2016) is a faceted explorer of city-owned facility consumption, 2011–2015, and has not moved since.
Both are inventories of assets, keyed to place. Neither is keyed to time, neither records the decisions that produced the assets, and neither publishes what it could not find. Two further references set the method rather than the subject: Point Luna for the discipline of documenting a public dataset — provenance, pull date, cleaning log, reliability tier, and an honest writeup of what was rejected so the next person does not redo the work — and analogs.earth for the civic form of an atlas that states its frame out loud and invites additions.
What this atlas adds to that field is three things:
who_paid a required field. This is what turns data about energy into a record of how the energy system gets decided.Geography. Greater Boston, defined operationally as the extent of the distribution layer already assembled: 1,026 Eversource circuits — every circuit that touches the box 71.19°W–70.98°W, 42.22°N–42.42°N, which takes in Boston, Cambridge, Somerville, Brookline, Chelsea and Everett, with circuits kept whole where they run on into neighbouring towns. The social join is wider: Suffolk and Middlesex counties, 591 census tracts. The municipal layer is wider again, 68 cities and towns. The three extents are not the same and the atlas does not pretend they are; a statement about circuits is a statement about the inner core.
The bound is a bounding box and a service territory, not a claim that energy stops there. Extending to Eversource's whole eastern Massachusetts territory is a change to one line in the pipeline (the pull box in pipelines/feeders/assemble_feeders.py), not a rewrite — that was the point of choosing this shape.
Time. 1882 to the present, with a forecast tail to 2046 where the source carries one. Nine load eras, defined with dates in eras.json.
In scope: electricity distribution and the loads that connect to it; the gas system where its retirement becomes an electric load event; the decisions, at any level from statute to tariff, that accommodated a load; the places those loads sat.
Out of scope, deliberately: bulk generation economics and wholesale market design beyond what sets the regional peak; buildings-level energy modelling; anything requiring data the atlas cannot show a reader.
The distribution feeder is the spine. The census tract is the social join.
Every new load — a charger, a heat pump, a data centre, a compute node — connects to exactly one circuit, and the circuit is the utility's own unit of account. The tract is where population, income, tenure and energy burden are reported.
Feeders do not nest inside tracts, ZIPs or municipalities. They cross all of them. So the governing rule is:
Every dataset declares the grain at which its source reports, and is never silently reaggregated. Joins across grains happen through a published crosswalk that states its method and its error characteristic.
The crosswalks are in site/atlas/crosswalks/ with their methods. The seam between grains is shown, not hidden — a user who is joining a tract statistic to a circuit can see that they are doing it, and can see how well it works.
Four types, each with a published JSON Schema in site/atlas/schema/:
| Type | What it is |
|---|---|
| dataset | A documented table or layer, with sources, provenance, cleaning log, rights and at least one stated limitation. |
| decision | A dated act by a named body: what was decided, what it enabled, who paid. |
| site | A place where a load or a supply sat, with its location precision stated and the circuit it connects to. |
| gap | Something that is not published, what was tried, and what would close it. |
Four reliability tiers apply to all of them — verified, secondary, unverified, modeled — and an entry's tier is the weakest tier of anything load-bearing inside it, not the average.
This is coursework, and the atlas says so rather than claiming more than it has.
LICENSE.LICENSE-DATA.rights block naming the holder, the licence as the holder states it, and a redistributable flag with four values: yes, no, unclear, created-here.unclear is the honest and common case — a public endpoint that publishes no terms at all — and the atlas treats it as no in practice: the material is described, linked and fetched by a published pipeline rather than relicensed. Redistributing somebody's network as an open dataset is a different act from showing it in a student project, and the atlas does not blur the two.
Where a permission would change this, the request is named in the gap register rather than assumed. CREDITS.md lists every shipped asset with its rights.
The entries in site/atlas/entries/ are authored. The warehouse in warehouse/atlas.duckdb is built from them and from the research files, and nobody edits it by hand — anything changed there is gone on the next build. There is one place to write and one place to read.
Every figure that reaches a reader is a row in site_numbers, carrying the query that produced it and the datasets it drew on, and the build refuses to publish a number that cannot name its sources. Every decision is a row in decisions, joined to what it shaped through decision_links and its six relation verbs — including left-unmeasured, which links a decision to a silence in the gap register.
Stated plainly, because an atlas implies refresh and a frozen atlas is a report.
refresh cadence and a stale_after date, so a reader can tell at a glance whether what they are looking at has rotted. Four sources move on their own: the CELT forecast annually, EIA-861 annually, Eversource hosting capacity continuously, City of Boston EV data continuously.stale_after dates are what makes that visible instead of silent. That is the minimum honest commitment, and it is the one being made.The nine-chapter reading — Who the Grid Is Built For — is not demoted to a demo. It is the first reading over the atlas and the thing that makes it legible to somebody who does not already know what a feeder is. Readings draw from the atlas; the atlas does not depend on any reading.
modeled tier and the method.gap:no-load-headroom-layer, not papered over.Decisions still open: whether machine access (an MCP server or query API over the catalogue) is in scope, and who maintains the atlas after this semester. Both are recorded here as open rather than answered by default.