fuzzyworld

when-am-i / commit

data: correct Boston calendars (Julian until 1752) + Massachusett coexistence

143b640c4860ba1f518f3f2acae66fbc6beae194 · Pavel Safronov · 2026-06-18 17:56:32 -0700 · parents ba77fd9161cf

data: correct Boston calendars (Julian until 1752) + Massachusett coexistence

Replace the rectangle and the factually wrong "Gregorian from 1750" with a
sourced, three-era model:

- Massachusett reckoning (Algonquian lunar, descriptive-only), open-ended and
  usedBy "the Massachusett people" — a valid perspective at any date.
- Colonial (Old Style): Julian, 1630–1752 — Britain and its colonies used the
  Julian calendar until the 1752 reform (2 Sept → 14 Sept).
- New Style: Gregorian, 1752–present.

The Massachusett and colonial eras overlap, so e.g. 1650s Boston returns both
answers. The region polygon is a rough non-rectangular outline (an approximate
boundary, to be refined later). Known limitations not yet modeled: the Old-Style
25-March year start, and a precise/sourced polygon.

Also: document the usedBy field and era overlap in SCHEMA.{json,md}, refresh the
README example, and regenerate screenshots (1650 coexistence demo).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
 README.md                                          |  44 ++++++-------
 screenshots/app/01-landing.png                     | Bin 340620 -> 341291 bytes
 screenshots/app/02-boston-1650.png                 | Bin 0 -> 1571824 bytes
 screenshots/app/02-boston-1700.png                 | Bin 1666312 -> 0 bytes
 screenshots/app/03-boston-1800.png                 | Bin 1664908 -> 1573476 bytes
 .../boston/01-algonquian-lunar-calendar.png        | Bin 0 -> 1430463 bytes
 screenshots/calendars/boston/01-gregorian.png      | Bin 1660225 -> 0 bytes
 .../boston/02-algonquian-lunar-calendar.png        | Bin 1661597 -> 0 bytes
 screenshots/calendars/boston/02-julian.png         | Bin 0 -> 1430040 bytes
 screenshots/calendars/boston/03-gregorian.png      | Bin 0 -> 1429997 bytes
 scripts/generate-screenshots.mts                   |   8 +--
 src/data/calendars/SCHEMA.json                     |   1 +
 src/data/calendars/SCHEMA.md                       |  12 ++++
 src/data/calendars/boston.json                     |  69 +++++++++++----------
 14 files changed, 77 insertions(+), 57 deletions(-)

diff --git a/README.md b/README.md
index 6a80449..e92fb0d 100644
--- a/README.md
+++ b/README.md
@@ -86,7 +86,11 @@ 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: `src/data/calendars/boston.json`
+### Example (abbreviated): based on `src/data/calendars/boston.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.)
 
 ```json
 {
@@ -96,35 +100,33 @@ Each file describes a region (using GeoJSON geometry) and its calendar eras over
          "type": "Polygon",
          "coordinates": [
             [
-               [-71.1912, 42.2279],
-               [-71.1912, 42.3967],
-               [-70.9860, 42.3967],
-               [-70.9860, 42.2279],
-               [-71.1912, 42.2279]
+               [-71.30, 42.25],
+               [-71.05, 42.50],
+               [-70.92, 42.41],
+               [-71.12, 42.22],
+               [-71.30, 42.25]
             ]
          ]
       }
    },
    "eras": [
       {
-         "name": "Common Era (AD)",
-         "start": "1750-01-01",
+         "name": "Massachusett reckoning",
+         "start": null,
          "end": null,
-         "calendar": "Gregorian",
-         "description": "Used after British colonization.",
-         "sources": [
-            "https://en.wikipedia.org/wiki/Gregorian_calendar"
-         ]
+         "calendar": "Algonquian lunar calendar",
+         "usedBy": "the Massachusett people",
+         "description": "Lunar and seasonal reckoning of the Massachusett, the Algonquian people of the Boston area.",
+         "sources": ["https://en.wikipedia.org/wiki/Massachusett"]
       },
       {
-         "name": "Pre-Colonial",
-         "start": null,
-         "end": "1750-01-01",
-         "calendar": "Algonquian lunar calendar",
-         "description": "Used by indigenous peoples before colonization.",
-         "sources": [
-            "https://en.wikipedia.org/wiki/Algonquian_peoples"
-         ]
+         "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"]
       }
    ]
 }
diff --git a/screenshots/app/01-landing.png b/screenshots/app/01-landing.png
index cd22e0c..ac6a6da 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
new file mode 100644
index 0000000..f3b6617
Binary files /dev/null and b/screenshots/app/02-boston-1650.png differ
diff --git a/screenshots/app/02-boston-1700.png b/screenshots/app/02-boston-1700.png
deleted file mode 100644
index 83a4c59..0000000
Binary files a/screenshots/app/02-boston-1700.png and /dev/null differ
diff --git a/screenshots/app/03-boston-1800.png b/screenshots/app/03-boston-1800.png
index 3ce776f..7c9378b 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
new file mode 100644
index 0000000..2400e16
Binary files /dev/null and b/screenshots/calendars/boston/01-algonquian-lunar-calendar.png differ
diff --git a/screenshots/calendars/boston/01-gregorian.png b/screenshots/calendars/boston/01-gregorian.png
deleted file mode 100644
index 81d39b6..0000000
Binary files a/screenshots/calendars/boston/01-gregorian.png and /dev/null differ
diff --git a/screenshots/calendars/boston/02-algonquian-lunar-calendar.png b/screenshots/calendars/boston/02-algonquian-lunar-calendar.png
deleted file mode 100644
index f841f78..0000000
Binary files a/screenshots/calendars/boston/02-algonquian-lunar-calendar.png and /dev/null differ
diff --git a/screenshots/calendars/boston/02-julian.png b/screenshots/calendars/boston/02-julian.png
new file mode 100644
index 0000000..63c16a1
Binary files /dev/null and b/screenshots/calendars/boston/02-julian.png differ
diff --git a/screenshots/calendars/boston/03-gregorian.png b/screenshots/calendars/boston/03-gregorian.png
new file mode 100644
index 0000000..7eaeb49
Binary files /dev/null and b/screenshots/calendars/boston/03-gregorian.png differ
diff --git a/scripts/generate-screenshots.mts b/scripts/generate-screenshots.mts
index 575af46..80710cb 100644
--- a/scripts/generate-screenshots.mts
+++ b/scripts/generate-screenshots.mts
@@ -14,13 +14,13 @@ const OUT_DIR = path.join(REPO_ROOT, 'screenshots', 'app');
 const STATES = [
     { name: '01-landing', query: '', desc: 'Landing (default 1700, no pin)' },
     {
-        name: '02-boston-1700',
-        query: '?lat=42.30&lng=-71.06&zoom=10&year=1700&month=6&day=15',
-        desc: 'Boston, 1700 — Algonquian (descriptive-only)',
+        name: '02-boston-1650',
+        query: '?lat=42.32&lng=-71.06&zoom=10&year=1650&month=6&day=15',
+        desc: 'Boston, 1650 — coexistence (Massachusett + colonial Julian)',
     },
     {
         name: '03-boston-1800',
-        query: '?lat=42.30&lng=-71.06&zoom=10&year=1800&month=6&day=15',
+        query: '?lat=42.32&lng=-71.06&zoom=10&year=1800&month=6&day=15',
         desc: 'Boston, 1800 — Gregorian',
     },
 ];
diff --git a/src/data/calendars/SCHEMA.json b/src/data/calendars/SCHEMA.json
index d5e9b0a..9d01be8 100644
--- a/src/data/calendars/SCHEMA.json
+++ b/src/data/calendars/SCHEMA.json
@@ -12,6 +12,7 @@
             "start": "YYYY-MM-DD|null (start date, null for earliest)",
             "end": "YYYY-MM-DD|null (end date, null for present)",
             "calendar": "string (calendar system name)",
+            "usedBy": "string (optional — whose calendar this is, e.g. 'English colonists')",
             "description": "string (optional)",
             "sources": [
                 "string (URL or citation)"
diff --git a/src/data/calendars/SCHEMA.md b/src/data/calendars/SCHEMA.md
index a511bf7..9ab39db 100644
--- a/src/data/calendars/SCHEMA.md
+++ b/src/data/calendars/SCHEMA.md
@@ -20,9 +20,21 @@ Each file describes a region and its calendar eras.
       "start": "YYYY-MM-DD|null (start date, null for earliest)",
       "end": "YYYY-MM-DD|null (end date, null for present)",
       "calendar": "string (calendar system name)",
+      "usedBy": "string (optional — whose calendar this is, e.g. 'English colonists')",
       "description": "string (optional)",
       "sources": ["string (URL or citation)"]
     }
   ]
 }
 ```
+
+## Notes
+
+- 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).
+- `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
index 98af870..c1d8c75 100644
--- a/src/data/calendars/boston.json
+++ b/src/data/calendars/boston.json
@@ -5,50 +5,55 @@
             "type": "Polygon",
             "coordinates": [
                 [
-                    [
-                        -71.1912,
-                        42.2279
-                    ],
-                    [
-                        -71.1912,
-                        42.3967
-                    ],
-                    [
-                        -70.9860,
-                        42.3967
-                    ],
-                    [
-                        -70.9860,
-                        42.2279
-                    ],
-                    [
-                        -71.1912,
-                        42.2279
-                    ]
+                    [-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": "Common Era (AD)",
-            "start": "1750-01-01",
+            "name": "Massachusett reckoning",
+            "start": null,
             "end": null,
-            "calendar": "Gregorian",
-            "description": "Used after British colonization.",
+            "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/Gregorian_calendar"
+                "https://en.wikipedia.org/wiki/Massachusett",
+                "https://en.wikipedia.org/wiki/Algonquian_peoples",
+                "https://en.wikipedia.org/wiki/King_Philip%27s_War"
             ]
         },
         {
-            "name": "Pre-Colonial",
-            "start": null,
-            "end": "1750-01-01",
-            "calendar": "Algonquian lunar calendar",
-            "description": "Used by indigenous peoples before colonization.",
+            "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/Algonquian_peoples"
+                "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"
             ]
         }
     ]
-}
\ No newline at end of file
+}