fuzzyworld

when-am-i / commit

feat: split Boston into Massachusett + British North America regions; rename site to "When am I?"

26a02b71de431ace57de5b21b13c200c1321f5db · Pavel Safronov · 2026-06-19 09:21:10 -0700 · parents 6bcd5898c234

feat: split Boston into Massachusett + British North America regions; rename site to "When am I?"

- Replace boston.json with massachusett.json (people-framed homeland) and
  colonial-america.json (empire-wide Julian->Gregorian on a seaboard polygon),
  since the 1752 cutover was British-America-wide, not Boston-specific.
  Overlapping regions mean a Boston click still returns both answers.
- Rename "What Year Is It?" -> "When am I?" everywhere (title, header, and the
  question asked of locals). The Jumanji still can't be licensed and the old
  phrase was year-only; plan.md keeps a "(formerly ...)" record.
- Update tests, README/SCHEMA/plan docs, badges (2 calendars), screenshots.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
 .gitignore                                         |   1 +
 README.md                                          |  36 ++++++-------
 index.html                                         |   2 +-
 plan.md                                            |  18 ++++---
 screenshots/app/01-landing.png                     | Bin 339274 -> 338806 bytes
 screenshots/app/02-boston-1650.png                 | Bin 1728487 -> 1548233 bytes
 screenshots/app/03-boston-1800.png                 | Bin 1741247 -> 1547441 bytes
 .../boston/01-algonquian-lunar-calendar.png        | Bin 1585654 -> 0 bytes
 screenshots/calendars/boston/02-julian.png         | Bin 1585734 -> 0 bytes
 screenshots/calendars/boston/03-gregorian.png      | Bin 1593269 -> 0 bytes
 .../calendars/colonial-america/01-julian.png       | Bin 0 -> 421365 bytes
 .../calendars/colonial-america/02-gregorian.png    | Bin 0 -> 414401 bytes
 .../massachusett/01-algonquian-lunar-calendar.png  | Bin 0 -> 1419418 bytes
 scripts/screenshot-calendar.mts                    |   2 +-
 src/App.tsx                                        |   4 +-
 src/components/ResultPanel.tsx                     |   2 +-
 src/data/calendars/SCHEMA.md                       |  11 ++--
 src/data/calendars/boston.json                     |  59 ---------------------
 src/data/calendars/colonial-america.json           |  53 ++++++++++++++++++
 src/data/calendars/massachusett.json               |  34 ++++++++++++
 src/data/index.test.ts                             |  14 ++---
 src/data/index.ts                                  |   2 +-
 src/types/index.ts                                 |  13 ++---
 src/utils/resolve.ts                               |   2 +-
 24 files changed, 144 insertions(+), 109 deletions(-)

diff --git a/.gitignore b/.gitignore
index cc733c5..e2a527d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@ dist
 public/*
 !public/favicon.png
 .playwright-mcp
+temp
diff --git a/README.md b/README.md
index ad9dad3..303b1a3 100644
--- a/README.md
+++ b/README.md
@@ -5,7 +5,7 @@
 [![pipeline status](https://gitlab.com/PavelSafronov/what-year-is-it/badges/main/pipeline.svg)](https://gitlab.com/PavelSafronov/what-year-is-it/-/pipelines)
 [![live demo](https://img.shields.io/badge/demo-live-success)](https://pavelsafronov.gitlab.io/what-year-is-it)
 ![version](https://img.shields.io/badge/version-v0.1.0-blue)
-![calendar data](https://img.shields.io/badge/calendar%20data-1-orange)
+![calendar data](https://img.shields.io/badge/calendar%20data-2-orange)
 ![license](https://img.shields.io/badge/license-MIT-green)
 
 ![React](https://img.shields.io/badge/React-20232A?logo=react&logoColor=61DAFB)
@@ -14,9 +14,9 @@
 ![Leaflet](https://img.shields.io/badge/Leaflet-199900?logo=leaflet&logoColor=fff)
 <!-- badges:end -->
 
-## What Year Is It?
+## When am I?
 
-Imagine you're a time traveler who ends up in a random place and time in history. What does a local say when you ask, "What year is it?" This project is a fun and educational React app that lets you explore different calendar systems around the world by selecting a location on an interactive map and choosing any year in history. It then shows you the local calendar year and system for that place and time.
+Imagine you're a time traveler who ends up in a random place and time in history. What does a local say when you ask, "When am I?" This project is a fun and educational React app that lets you explore different calendar systems around the world by selecting a location on an interactive map and choosing any year in history. It then shows you the local calendar year and system for that place and time.
 
 ## Features
 
@@ -82,7 +82,7 @@ running dev server or start one automatically.
 
 ```bash
 npm run screenshot                                   # app states → screenshots/app/
-npm run screenshot:calendar -- src/data/calendars/boston.json   # one calendar → screenshots/calendars/<file>/
+npm run screenshot:calendar -- src/data/calendars/massachusett.json   # one calendar → screenshots/calendars/<file>/
 ```
 
 `screenshot:calendar` pins a point inside the region and a representative date
@@ -111,16 +111,20 @@ crashes, the error report additionally includes the error message and stack.
 Calendar region and era data is stored as flat JSON files in `src/data/calendars/`.
 Each file describes a region (using GeoJSON geometry) and its calendar eras over time.
 
-### Example (abbreviated): based on `src/data/calendars/boston.json`
+### Example (abbreviated): based on `src/data/calendars/massachusett.json`
 
-Note how eras can **overlap in time** — the Massachusett and colonial calendars
-both apply in 1650s Boston, so the app returns both answers. (The real file also
-has a "New Style (Gregorian)" era from 1752 onward.)
+Note how answers can **overlap** — both in time and in space. A click in 1650s
+Boston returns the Massachusett reckoning (from `massachusett.json`, a tight
+homeland polygon around Massachusetts Bay) **and** the colonial Julian calendar
+(from `colonial-america.json`, a broad "British North America" polygon that also
+covers the same spot). The Julian → Gregorian cutover was empire-wide, so it
+lives in the larger region rather than being duplicated into every town;
+overlapping regions are expected, not an error.
 
 ```json
 {
    "region": {
-      "name": "Boston Area",
+      "name": "Massachusett homeland",
       "geo": {
          "type": "Polygon",
          "coordinates": [
@@ -141,22 +145,16 @@ has a "New Style (Gregorian)" era from 1752 onward.)
          "end": null,
          "calendar": "Algonquian lunar calendar",
          "usedBy": "the Massachusett people",
-         "description": "Lunar and seasonal reckoning of the Massachusett, the Algonquian people of the Boston area.",
+         "description": "Lunar and seasonal reckoning of the Massachusett, the Algonquian people of the Massachusetts Bay area.",
          "sources": ["https://en.wikipedia.org/wiki/Massachusett"]
-      },
-      {
-         "name": "Colonial (Old Style)",
-         "start": "1630-09-17",
-         "end": "1752-09-14",
-         "calendar": "Julian",
-         "usedBy": "English colonists",
-         "description": "English colonists used the Julian calendar ('Old Style') until the 1752 reform.",
-         "sources": ["https://en.wikipedia.org/wiki/Old_Style_and_New_Style_dates"]
       }
    ]
 }
 ```
 
+The colonial Julian and Gregorian eras live in `colonial-america.json`, whose
+larger polygon overlaps this one — so a Boston click resolves against both files.
+
 ### Schema
 
 See `src/data/calendars/SCHEMA.json` for the schema and field documentation.
diff --git a/index.html b/index.html
index 3b53985..3537e7f 100644
--- a/index.html
+++ b/index.html
@@ -4,7 +4,7 @@
 <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>WhatYearIsIt</title>
+    <title>When am I?</title>
     <link rel="icon" type="image/png" href="/favicon.png" />
 </head>
 
diff --git a/plan.md b/plan.md
index 595d9d9..19dce22 100644
--- a/plan.md
+++ b/plan.md
@@ -1,4 +1,4 @@
-# Plan — WhatYearIsIt
+# Plan — When am I? (formerly "What Year Is It?")
 
 Status as of 2026-06-16. Owner: Pavel.
 
@@ -18,7 +18,9 @@ Boston is the proof-of-architecture region; the loop must generalize to any regi
 Working:
 - [App.tsx](src/App.tsx): header + intro + map; echoes clicked lat/lng.
 - [src/components/MapPicker.tsx](src/components/MapPicker.tsx): the live map (`center=[20,0]`, `zoom=2`).
-- Data: one region file, [boston.json](src/data/calendars/boston.json); schema docs in
+- Data: region files [massachusett.json](src/data/calendars/massachusett.json)
+  (Massachusett reckoning) and [colonial-america.json](src/data/calendars/colonial-america.json)
+  (empire-wide Julian/Gregorian); schema docs in
   [SCHEMA.json](src/data/calendars/SCHEMA.json) / [SCHEMA.md](src/data/calendars/SCHEMA.md).
 - Deploy: [.gitlab-ci.yml](.gitlab-ci.yml) builds and publishes `dist/` to GitLab Pages.
 
@@ -37,7 +39,7 @@ Missing / debt:
 
 ## Architecture for the MVP
 
-Core framing (from Q4): *"What year is it?"* is addressed to **a person**, so the answer
+Core framing (from Q4): *"When am I?"* is addressed to **a person**, so the answer
 is **plural**. The engine does not pick one era — it **collects every valid answer** a local
 could give. Ask a Boston settler and an Algonquian person in 1700 and you get two answers;
 both are valid and we show both.
@@ -121,9 +123,11 @@ Mirror the JSON schema and add result types:
   required fields, valid geometry, parseable proleptic-Gregorian dates. **Overlapping eras
   are allowed** (Q4) — do not flag them.
 - Add the optional `usedBy` field to the schema (back-compatible).
-- Update [boston.json](src/data/calendars/boston.json) to reflect **coexistence**: around
-  colonization the colonial Gregorian era and the Algonquian lunar era **overlap in time**
-  rather than a clean 1750 cutover, each tagged with `usedBy`.
+- Model **coexistence**: around colonization the colonial calendars and the Massachusett
+  lunar reckoning apply at the same place and time, each tagged with `usedBy`. (Now split
+  across two overlapping regions — [massachusett.json](src/data/calendars/massachusett.json)
+  and [colonial-america.json](src/data/calendars/colonial-america.json) — rather than one
+  Boston file.)
 - Wire validation into `prebuild` and into CI so bad data can't deploy.
 
 ---
@@ -234,5 +238,5 @@ This is authentic *in structure*. Its pieces split sharply by cost:
   answers" below for the nuance the UI should convey.)
 - **Q4 — Plural answers / overlap.** ✅ The engine returns **all** valid answers.
   Geographic region overlap → show all matched regions. Eras within a region **may overlap
-  in time** → show all concurrent calendars, because "what year is it?" is asked of a person
+  in time** → show all concurrent calendars, because "When am I?" is asked of a person
   and different people legitimately answer differently.
diff --git a/screenshots/app/01-landing.png b/screenshots/app/01-landing.png
index 7bdc697..35531ed 100644
Binary files a/screenshots/app/01-landing.png and b/screenshots/app/01-landing.png differ
diff --git a/screenshots/app/02-boston-1650.png b/screenshots/app/02-boston-1650.png
index edb9928..340af9f 100644
Binary files a/screenshots/app/02-boston-1650.png and b/screenshots/app/02-boston-1650.png differ
diff --git a/screenshots/app/03-boston-1800.png b/screenshots/app/03-boston-1800.png
index 0380c39..4da6a63 100644
Binary files a/screenshots/app/03-boston-1800.png and b/screenshots/app/03-boston-1800.png differ
diff --git a/screenshots/calendars/boston/01-algonquian-lunar-calendar.png b/screenshots/calendars/boston/01-algonquian-lunar-calendar.png
deleted file mode 100644
index 906abc4..0000000
Binary files a/screenshots/calendars/boston/01-algonquian-lunar-calendar.png and /dev/null differ
diff --git a/screenshots/calendars/boston/02-julian.png b/screenshots/calendars/boston/02-julian.png
deleted file mode 100644
index 6790485..0000000
Binary files a/screenshots/calendars/boston/02-julian.png and /dev/null differ
diff --git a/screenshots/calendars/boston/03-gregorian.png b/screenshots/calendars/boston/03-gregorian.png
deleted file mode 100644
index 3fb646c..0000000
Binary files a/screenshots/calendars/boston/03-gregorian.png and /dev/null differ
diff --git a/screenshots/calendars/colonial-america/01-julian.png b/screenshots/calendars/colonial-america/01-julian.png
new file mode 100644
index 0000000..a4ac690
Binary files /dev/null and b/screenshots/calendars/colonial-america/01-julian.png differ
diff --git a/screenshots/calendars/colonial-america/02-gregorian.png b/screenshots/calendars/colonial-america/02-gregorian.png
new file mode 100644
index 0000000..9b2f8b2
Binary files /dev/null and b/screenshots/calendars/colonial-america/02-gregorian.png differ
diff --git a/screenshots/calendars/massachusett/01-algonquian-lunar-calendar.png b/screenshots/calendars/massachusett/01-algonquian-lunar-calendar.png
new file mode 100644
index 0000000..e89554e
Binary files /dev/null and b/screenshots/calendars/massachusett/01-algonquian-lunar-calendar.png differ
diff --git a/scripts/screenshot-calendar.mts b/scripts/screenshot-calendar.mts
index 81dd176..53827f6 100644
--- a/scripts/screenshot-calendar.mts
+++ b/scripts/screenshot-calendar.mts
@@ -1,7 +1,7 @@
 // Screenshot one calendar data file across its eras, for inclusion in a
 // calendar PR (so reviewers can see geometry/era/conversion issues visually).
 //
-//   npm run screenshot:calendar -- src/data/calendars/boston.json
+//   npm run screenshot:calendar -- src/data/calendars/massachusett.json
 //
 // For each era it pins a point inside the region and a representative date in
 // that era, then captures the answer panel + shaded map. Output:
diff --git a/src/App.tsx b/src/App.tsx
index 92a2a8d..d86ecee 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -97,12 +97,12 @@ function App() {
     return (
         <div style={{ maxWidth: 880, margin: '0 auto', padding: '24px 20px 48px' }}>
             <div style={{ display: 'flex', alignItems: 'center', gap: 12 }}>
-                <h1 style={{ margin: 0 }}>What Year Is It?</h1>
+                <h1 style={{ margin: 0 }}>When am I?</h1>
                 <img src={calendar} alt="" style={{ width: 40, height: 40 }} />
             </div>
             <p style={{ marginTop: 12 }}>
                 You&rsquo;re a time traveler who lands somewhere in history. You stop a local
-                and ask: <em>&ldquo;What year is it?&rdquo;</em> Their answer depends on where
+                and ask: <em>&ldquo;When am I?&rdquo;</em> Their answer depends on where
                 you are &mdash; and who you ask. Pick a date and a spot on the map to begin.
             </p>
 
diff --git a/src/components/ResultPanel.tsx b/src/components/ResultPanel.tsx
index a753214..ab1f95e 100644
--- a/src/components/ResultPanel.tsx
+++ b/src/components/ResultPanel.tsx
@@ -123,7 +123,7 @@ const ResultPanel: React.FC<ResultPanelProps> = ({ picked, date, resolution }) =
         <div style={{ marginTop: 16 }}>
             <p style={{ color: '#555', marginTop: 0 }}>
                 In <strong>{yearText(date)}</strong>, here&rsquo;s what you&rsquo;d hear if you asked
-                &ldquo;What year is it?&rdquo;:
+                &ldquo;When am I?&rdquo;:
             </p>
             <ul style={{ display: 'flex', flexDirection: 'column', gap: 12, padding: 0, margin: 0 }}>
                 {resolution.answers.map((answer, i) => (
diff --git a/src/data/calendars/SCHEMA.md b/src/data/calendars/SCHEMA.md
index 9ab39db..5328e99 100644
--- a/src/data/calendars/SCHEMA.md
+++ b/src/data/calendars/SCHEMA.md
@@ -1,4 +1,4 @@
-# Calendar Region/Era Schema for WhatYearIsIt
+# Calendar Region/Era Schema for "When am I?"
 
 Place JSON files in `src/data/calendars/`.
 Each file describes a region and its calendar eras.
@@ -32,9 +32,12 @@ Each file describes a region and its calendar eras.
 
 - Dates (`start`/`end`) are **proleptic Gregorian** `YYYY-MM-DD`. They are
   compared as half-open intervals `[start, end)`; `null` means open-ended.
-- **Eras may overlap in time.** Parallel calendars coexisting at the same place
-  and time is supported — each is shown as a separate answer (e.g. the
-  Massachusett and colonial calendars both apply in 1650s Boston).
+- **Eras may overlap in time, and regions may overlap in space.** Parallel
+  calendars coexisting at the same place and time is supported — each is shown as
+  a separate answer. The overlap can be within one file (multiple eras active at
+  once) or across files (overlapping region polygons): e.g. the Massachusett
+  reckoning (`massachusett.json`) and the colonial Julian/Gregorian calendars
+  (`colonial-america.json`, a larger polygon) both apply in 1650s Boston.
 - `usedBy` labels whose answer it is, shown as "Ask &lt;usedBy&gt;: …".
 - A calendar with no continuous numeric year (e.g. an observational lunar
   calendar) is shown descriptively rather than converted to a number.
diff --git a/src/data/calendars/boston.json b/src/data/calendars/boston.json
deleted file mode 100644
index c1d8c75..0000000
--- a/src/data/calendars/boston.json
+++ /dev/null
@@ -1,59 +0,0 @@
-{
-    "region": {
-        "name": "Boston Area",
-        "geo": {
-            "type": "Polygon",
-            "coordinates": [
-                [
-                    [-71.30, 42.25],
-                    [-71.25, 42.46],
-                    [-71.05, 42.50],
-                    [-70.92, 42.41],
-                    [-70.95, 42.28],
-                    [-71.12, 42.22],
-                    [-71.30, 42.25]
-                ]
-            ]
-        }
-    },
-    "eras": [
-        {
-            "name": "Massachusett reckoning",
-            "start": null,
-            "end": null,
-            "calendar": "Algonquian lunar calendar",
-            "usedBy": "the Massachusett people",
-            "description": "Lunar and seasonal reckoning of the Massachusett, the Algonquian people of the Boston area. Their society was devastated by the 1616–1619 epidemic and colonization, but the Massachusett endure and their reckoning remains a valid way to answer the question.",
-            "sources": [
-                "https://en.wikipedia.org/wiki/Massachusett",
-                "https://en.wikipedia.org/wiki/Algonquian_peoples",
-                "https://en.wikipedia.org/wiki/King_Philip%27s_War"
-            ]
-        },
-        {
-            "name": "Colonial (Old Style)",
-            "start": "1630-09-17",
-            "end": "1752-09-14",
-            "calendar": "Julian",
-            "usedBy": "English colonists",
-            "description": "After Boston's founding in 1630, English colonists used the Julian calendar ('Old Style'), as in Britain, until the 1752 calendar reform.",
-            "sources": [
-                "https://en.wikipedia.org/wiki/Boston",
-                "https://en.wikipedia.org/wiki/Old_Style_and_New_Style_dates",
-                "https://en.wikipedia.org/wiki/Julian_calendar"
-            ]
-        },
-        {
-            "name": "New Style (Gregorian)",
-            "start": "1752-09-14",
-            "end": null,
-            "calendar": "Gregorian",
-            "usedBy": "British colonists, then Americans",
-            "description": "Britain and its colonies adopted the Gregorian calendar in 1752: Wednesday 2 September (Julian) was followed by Thursday 14 September (Gregorian).",
-            "sources": [
-                "https://en.wikipedia.org/wiki/Calendar_(New_Style)_Act_1750",
-                "https://en.wikipedia.org/wiki/Gregorian_calendar"
-            ]
-        }
-    ]
-}
diff --git a/src/data/calendars/colonial-america.json b/src/data/calendars/colonial-america.json
new file mode 100644
index 0000000..1709f5c
--- /dev/null
+++ b/src/data/calendars/colonial-america.json
@@ -0,0 +1,53 @@
+{
+    "region": {
+        "name": "British North America",
+        "geo": {
+            "type": "Polygon",
+            "coordinates": [
+                [
+                    [-69.0, 44.5],
+                    [-69.5, 41.0],
+                    [-73.5, 39.6],
+                    [-75.0, 35.5],
+                    [-79.0, 32.5],
+                    [-80.5, 28.0],
+                    [-80.0, 25.0],
+                    [-82.5, 28.0],
+                    [-85.0, 31.0],
+                    [-84.5, 39.0],
+                    [-79.5, 43.0],
+                    [-71.5, 45.3],
+                    [-69.0, 44.5]
+                ]
+            ]
+        }
+    },
+    "eras": [
+        {
+            "name": "Colonial (Old Style)",
+            "start": "1607-05-14",
+            "end": "1752-09-14",
+            "calendar": "Julian",
+            "usedBy": "English colonists",
+            "description": "From the first permanent English settlement at Jamestown (1607), English colonists across British North America used the Julian calendar ('Old Style'), as in Britain, until the 1752 calendar reform. The cutover was empire-wide, so this applies to the whole British seaboard — Boston included, not just one town.",
+            "sources": [
+                "https://en.wikipedia.org/wiki/British_America",
+                "https://en.wikipedia.org/wiki/Jamestown,_Virginia",
+                "https://en.wikipedia.org/wiki/Old_Style_and_New_Style_dates",
+                "https://en.wikipedia.org/wiki/Julian_calendar"
+            ]
+        },
+        {
+            "name": "New Style (Gregorian)",
+            "start": "1752-09-14",
+            "end": null,
+            "calendar": "Gregorian",
+            "usedBy": "British colonists, then Americans",
+            "description": "Britain and its colonies adopted the Gregorian calendar in 1752 under the Calendar (New Style) Act 1750: Wednesday 2 September (Julian) was followed by Thursday 14 September (Gregorian), simultaneously across all British possessions.",
+            "sources": [
+                "https://en.wikipedia.org/wiki/Calendar_(New_Style)_Act_1750",
+                "https://en.wikipedia.org/wiki/Gregorian_calendar"
+            ]
+        }
+    ]
+}
diff --git a/src/data/calendars/massachusett.json b/src/data/calendars/massachusett.json
new file mode 100644
index 0000000..74f84a9
--- /dev/null
+++ b/src/data/calendars/massachusett.json
@@ -0,0 +1,34 @@
+{
+    "region": {
+        "name": "Massachusett homeland",
+        "geo": {
+            "type": "Polygon",
+            "coordinates": [
+                [
+                    [-71.30, 42.25],
+                    [-71.25, 42.46],
+                    [-71.05, 42.50],
+                    [-70.92, 42.41],
+                    [-70.95, 42.28],
+                    [-71.12, 42.22],
+                    [-71.30, 42.25]
+                ]
+            ]
+        }
+    },
+    "eras": [
+        {
+            "name": "Massachusett reckoning",
+            "start": null,
+            "end": null,
+            "calendar": "Algonquian lunar calendar",
+            "usedBy": "the Massachusett people",
+            "description": "Lunar and seasonal reckoning of the Massachusett, the Algonquian people of the Massachusetts Bay area (the land the city of Boston was later built on). Their society was devastated by the 1616–1619 epidemic and colonization, but the Massachusett endure and their reckoning remains a valid way to answer the question. The polygon approximates their core territory around the bay; 'Algonquian' is a language family of many distinct nations, so this is the Massachusett specifically, not Algonquian peoples in general. The colonial Julian/Gregorian answers that also apply here are kept in the broader 'British North America' region, since that calendar history was empire-wide rather than specific to this place.",
+            "sources": [
+                "https://en.wikipedia.org/wiki/Massachusett",
+                "https://en.wikipedia.org/wiki/Algonquian_peoples",
+                "https://en.wikipedia.org/wiki/King_Philip%27s_War"
+            ]
+        }
+    ]
+}
diff --git a/src/data/index.test.ts b/src/data/index.test.ts
index 7648fff..7b8d9f8 100644
--- a/src/data/index.test.ts
+++ b/src/data/index.test.ts
@@ -8,13 +8,13 @@ describe('calendar data loader', () => {
         expect(regions.length).toBeGreaterThan(0);
     });
 
-    it('loads Boston with named eras and Polygon geometry', () => {
-        const boston = regions.find((r) => r.region.name === 'Boston Area');
-        expect(boston).toBeDefined();
-        expect(boston!.region.geo.type).toBe('Polygon');
-        expect(boston!.sourceFile).toBe('src/data/calendars/boston.json');
-        expect(boston!.eras.length).toBeGreaterThan(0);
-        for (const era of boston!.eras) {
+    it('loads the Massachusett region with named eras and Polygon geometry', () => {
+        const massachusett = regions.find((r) => r.region.name === 'Massachusett homeland');
+        expect(massachusett).toBeDefined();
+        expect(massachusett!.region.geo.type).toBe('Polygon');
+        expect(massachusett!.sourceFile).toBe('src/data/calendars/massachusett.json');
+        expect(massachusett!.eras.length).toBeGreaterThan(0);
+        for (const era of massachusett!.eras) {
             expect(era.name).toBeTruthy();
             expect(era.calendar).toBeTruthy();
         }
diff --git a/src/data/index.ts b/src/data/index.ts
index 8ad552d..961e389 100644
--- a/src/data/index.ts
+++ b/src/data/index.ts
@@ -63,7 +63,7 @@ function assertCalendarRegion(value: unknown, path: string): CalendarRegion {
     const region = assertRegion(v.region, path);
     if (!Array.isArray(v.eras)) fail(path, 'eras must be an array');
     const eras = v.eras.map((era, i) => assertEra(era, path, i));
-    // glob keys look like "./calendars/boston.json"; store the repo-relative
+    // glob keys look like "./calendars/massachusett.json"; store the repo-relative
     // path so the UI can link to the source file on GitLab.
     const sourceFile = `src/data/${path.replace(/^\.\//, '')}`;
     return { region, eras, sourceFile };
diff --git a/src/types/index.ts b/src/types/index.ts
index 4e02499..33c5601 100644
--- a/src/types/index.ts
+++ b/src/types/index.ts
@@ -1,4 +1,4 @@
-// Shared types for WhatYearIsIt.
+// Shared types for "When am I?" (the calendar app).
 //
 // Data flow (see plan.md): click (lat,lng) + date
 //   → find all regions containing the point
@@ -36,10 +36,11 @@ export interface Region {
 }
 
 /**
- * One calendar era used in a region over some span of time. Eras within a
- * region MAY overlap in time — parallel calendars coexisting at the same place
- * and time is expected (e.g. colonial Gregorian + Algonquian lunar in 1700
- * Boston), not an error.
+ * One calendar era used in a region over some span of time. Eras MAY overlap in
+ * time — parallel calendars coexisting at the same place and time is expected
+ * (e.g. the colonial Julian and the Massachusett lunar reckoning both apply in
+ * 1700 Massachusetts Bay), whether the overlap is within one region's eras or
+ * across two overlapping regions. Not an error.
  */
 export interface Era {
     name: string;
@@ -100,7 +101,7 @@ export interface CalendarConversion {
     note?: string;
 }
 
-/** One possible reply a local could give to "what year is it?". */
+/** One possible reply a local could give to "When am I?". */
 export interface Answer {
     region: Region;
     era: Era;
diff --git a/src/utils/resolve.ts b/src/utils/resolve.ts
index 31b9ae1..34ecfe8 100644
--- a/src/utils/resolve.ts
+++ b/src/utils/resolve.ts
@@ -1,4 +1,4 @@
-// The engine: "what year is it?" at a point and date.
+// The engine: "When am I?" at a point and date.
 //
 // Composes the layers into the plural-answers model — every valid reply a local
 // could give. Pure (regions are passed in) so it is easy to unit-test; the UI