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"
# Mecklenburg County, NC
County jurisdiction.
County jurisdiction — 3 officeholders mapped.
## Demographics (ACS 2023)
@@ -0,0 +1,39 @@
---
type: Person
title: "Vi Lyles"
description: "Mayor, Charlotte, NC"
role: "Mayor, Charlotte, NC"
level: "municipal"
branch: "executive"
state: "NC"
tenure:
start: "2017-12-04"
current: true
ids:
person: "f6674e0f-e62e-47b6-a6c1-64d889d6b9e1"
office: "b65b61ed-ebf5-4a77-94c4-21f9aaf88ef8"
tenure: "2120b97d-e767-415b-96e0-b211c846251d"
jurisdiction: "815e2879-f1e5-471f-90b5-6b665bd8a476"
sources:
- field: office
source: "Wikidata"
- field: tenure
source: "Wikidata"
- field: jurisdiction
source: "Census TIGER 2024"
confidence: official
tags: [officeholder, municipal, executive, nc]
timestamp: "2026-07-04"
---
# Vi Lyles
Current Mayor, Charlotte, NC.
## 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: "Rusty Knox"
description: "Mayor, Davidson, NC"
role: "Mayor, Davidson, NC"
level: "municipal"
branch: "executive"
state: "NC"
tenure:
start: "2017-01-01"
current: true
ids:
person: "c7f4e81d-db71-4d86-b126-e0ddf23a2f4b"
office: "30fef47e-3f4b-489b-8fdf-08db0f015c29"
tenure: "9025ea30-4a1d-4206-8f57-046dd95a4929"
jurisdiction: "b3e4a5df-f31f-4388-ae2a-36ed066ba998"
sources:
- field: office
source: "Wikidata"
- field: tenure
source: "Wikidata"
- field: jurisdiction
source: "Census TIGER 2024"
confidence: official
tags: [officeholder, municipal, executive, nc]
timestamp: "2026-07-04"
---
# Rusty Knox
Current Mayor, Davidson, NC.
## 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: "Christy Clark"
description: "Mayor, Huntersville, NC"
role: "Mayor, Huntersville, NC"
level: "municipal"
branch: "executive"
state: "NC"
tenure:
start: "2023-12-04"
current: true
ids:
person: "8dc78b1f-de57-4ad2-a8c7-80a062c9d236"
office: "8f1bd38d-69f6-4899-aef9-71593f24726d"
tenure: "45d3c6f0-e968-47fd-9c34-f73c296856a5"
jurisdiction: "810c8a9a-ed7c-4392-b9ba-4f8cbbc8ce11"
sources:
- field: office
source: "Wikidata"
- field: tenure
source: "Wikidata"
- field: jurisdiction
source: "Census TIGER 2024"
confidence: official
tags: [officeholder, municipal, executive, nc]
timestamp: "2026-07-04"
---
# Christy Clark
Current Mayor, Huntersville, NC.
## Sources
- office: Wikidata
- tenure: Wikidata
- jurisdiction: Census TIGER 2024
Generated from the Atlas officeholders v3 export (2026-07-04).