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"
# Middlesex County, NJ
County jurisdiction.
County jurisdiction — 3 officeholders mapped.
## Demographics (ACS 2023)
@@ -0,0 +1,39 @@
---
type: Person
title: "Jim Cahill"
description: "Mayor, New Brunswick, NJ"
role: "Mayor, New Brunswick, NJ"
level: "municipal"
branch: "executive"
state: "NJ"
tenure:
start: "2026-06-20"
current: true
ids:
person: "517b9b69-7a9a-4c56-982c-9a242fa0a567"
office: "d694bb8f-0716-49c6-bfe8-ac1e6fc90d9e"
tenure: "692a07fe-6229-4161-b465-d53d82d13888"
jurisdiction: "ed9fdb2c-c4bb-4e2e-b32c-2a349782c6c3"
sources:
- field: office
source: "Wikidata"
- field: tenure
source: "Wikidata"
- field: jurisdiction
source: "Census TIGER 2024"
confidence: official
tags: [officeholder, municipal, executive, nj]
timestamp: "2026-07-04"
---
# Jim Cahill
Current Mayor, New Brunswick, NJ.
## 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: "Helmin J. Caba"
description: "Mayor, Perth Amboy, NJ"
role: "Mayor, Perth Amboy, NJ"
level: "municipal"
branch: "executive"
state: "NJ"
tenure:
start: "2026-06-20"
current: true
ids:
person: "edf5eab8-4e4c-4a10-a5f0-31d1756f6541"
office: "787b76d2-c722-493b-a3af-ecfa6d72d25f"
tenure: "56b30c90-39df-4f40-a26c-0803d82deb22"
jurisdiction: "af88e47b-f418-4ce9-b691-d2b916eed8ad"
sources:
- field: office
source: "Wikidata"
- field: tenure
source: "Wikidata"
- field: jurisdiction
source: "Census TIGER 2024"
confidence: official
tags: [officeholder, municipal, executive, nj]
timestamp: "2026-07-04"
---
# Helmin J. Caba
Current Mayor, Perth Amboy, NJ.
## 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: "Fred A. Henry"
description: "Mayor, South Amboy, NJ"
role: "Mayor, South Amboy, NJ"
level: "municipal"
branch: "executive"
state: "NJ"
tenure:
start: "2026-06-20"
current: true
ids:
person: "43ee4482-d905-4022-8832-9bdaa5803aa6"
office: "6e5e256f-0c09-49e1-85a8-df989473f639"
tenure: "3522f114-8d07-4f0f-8491-ee93e8728f3c"
jurisdiction: "2e31686d-952f-4be6-b6a0-abfd52796056"
sources:
- field: office
source: "Wikidata"
- field: tenure
source: "Wikidata"
- field: jurisdiction
source: "Census TIGER 2024"
confidence: official
tags: [officeholder, municipal, executive, nj]
timestamp: "2026-07-04"
---
# Fred A. Henry
Current Mayor, South Amboy, NJ.
## Sources
- office: Wikidata
- tenure: Wikidata
- jurisdiction: Census TIGER 2024
Generated from the Atlas officeholders v3 export (2026-07-04).