Municipals: nest 1,823 city officeholders under their real counties

Pull Atlas's place→county crosswalk (Census TIGER 2024 places × county
geometries, 32,041 places) into the build as a committed raw input, and
use it to resolve municipal officeholders whose county was unknown.

- data/place_county_crosswalk.jsonl — new raw input (place_geoid → county_geoid)
- build.py — place-name+state → county_geoid → ACS county slug as a fallback
  in county_slug(); city_slug() generalized to non-FL bare place labels
- data/sources/sources.yaml — provenance entry for the crosswalk

_unresolved municipals: 1919 → 58. The remainder are genuine: CT planning
regions (post-county), county-level rows mislabeled municipal upstream,
consolidated city-counties (null label), Wikidata-QID placeholder names,
and ambiguous same-name places — left unresolved rather than guessed.

Join key is county_geoid (5-digit FIPS); the directory slug is taken from
the ACS county node so municipals nest under the exact existing county dir.
Deterministic (byte-identical rebuild); validate.py passes 19,721 records.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Fabio
2026-07-04 20:23:57 -04:00
parent ad7607856d
commit 199d8b37d3
2893 changed files with 33094 additions and 995 deletions
@@ -32,7 +32,7 @@ timestamp: "2026-07-03"
# Strafford County, NH
County jurisdiction.
County jurisdiction — 3 officeholders mapped.
## Demographics (ACS 2023)
@@ -0,0 +1,39 @@
---
type: Person
title: "Robert Carrier"
description: "Mayor, Dover, NH"
role: "Mayor, Dover, NH"
level: "municipal"
branch: "executive"
state: "NH"
tenure:
start: "2022-01-01"
current: true
ids:
person: "6d2d4793-93b3-4d2d-9b8f-8af1f29cfe33"
office: "ca6f4b93-73db-4c19-a9ed-468770cd3cdf"
tenure: "5afabdb5-c983-4636-8676-17fe0556ecb5"
jurisdiction: "9e641433-759a-45d5-ae4c-598566b89e4b"
sources:
- field: office
source: "Wikidata"
- field: tenure
source: "Wikidata"
- field: jurisdiction
source: "Census TIGER 2024"
confidence: official
tags: [officeholder, municipal, executive, nh]
timestamp: "2026-07-04"
---
# Robert Carrier
Current Mayor, Dover, NH.
## Sources
- office: Wikidata
- tenure: Wikidata
- jurisdiction: Census TIGER 2024
Generated from the Atlas officeholders v3 export (2026-07-04).
@@ -0,0 +1,39 @@
---
type: Person
title: "Paul Callaghan"
description: "Mayor, Rochester, NH"
role: "Mayor, Rochester, NH"
level: "municipal"
branch: "executive"
state: "NH"
tenure:
start: "2026-06-20"
current: true
ids:
person: "c3953417-e419-472a-aaca-b869457e9cc1"
office: "b8aecbe5-745d-44af-88a4-5ea384916b51"
tenure: "6b0c40df-e259-4759-9b99-3510e034ceb8"
jurisdiction: "cc9f5853-c15d-4277-ad6e-1d38018cfc53"
sources:
- field: office
source: "Wikidata"
- field: tenure
source: "Wikidata"
- field: jurisdiction
source: "Census TIGER 2024"
confidence: official
tags: [officeholder, municipal, executive, nh]
timestamp: "2026-07-04"
---
# Paul Callaghan
Current Mayor, Rochester, NH.
## Sources
- office: Wikidata
- tenure: Wikidata
- jurisdiction: Census TIGER 2024
Generated from the Atlas officeholders v3 export (2026-07-04).
@@ -0,0 +1,39 @@
---
type: Person
title: "Matt Gerding"
description: "Mayor, Somersworth, NH"
role: "Mayor, Somersworth, NH"
level: "municipal"
branch: "executive"
state: "NH"
tenure:
start: "2026-06-20"
current: true
ids:
person: "3be614d0-2a26-4b2c-b4db-ed2be79bc894"
office: "e5d83da7-3b87-4532-b871-d2a2a293d3ab"
tenure: "bd27f98b-226d-4cfb-b212-04b328e0ce15"
jurisdiction: "9f59033a-a550-4415-a143-abd7fe9e6836"
sources:
- field: office
source: "Wikidata"
- field: tenure
source: "Wikidata"
- field: jurisdiction
source: "Census TIGER 2024"
confidence: official
tags: [officeholder, municipal, executive, nh]
timestamp: "2026-07-04"
---
# Matt Gerding
Current Mayor, Somersworth, NH.
## Sources
- office: Wikidata
- tenure: Wikidata
- jurisdiction: Census TIGER 2024
Generated from the Atlas officeholders v3 export (2026-07-04).