Fabio 12850196f9 Board: regenerate board.html data in-place; drive header from TOTALS
The Board is a self-contained Artifact, so its county data is INLINED
(const D / const CDETAIL) — the standalone county_*.json companions are not
read by it. build_viz.py was only writing those companions, so the rendered
Board kept showing the pre-crosswalk state (67 counties). Now build_viz.py
injects the fresh data straight into board.html's three marked const lines,
and the header stats read from an injected TOTALS object instead of being
hardcoded (so they can't go stale — the original 11,285 drift).

- scripts/build_viz.py — inject_board(): rewrite const D / CDETAIL / TOTALS
  in board.html; load candidates + acs_cd for the totals
- viz/board.html — header driven by TOTALS; inlined data refreshed
  (county drill-downs 67 → 1049 counties; e.g. Fulton GA now shows all 7
  metro mayors)

Deterministic: board.html is byte-identical on rerun. Verified live —
header 13,329/2,494/3,131/363, Fulton/Bastrop drill-downs render nested
municipals.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 20:55:43 -04:00
2026-07-04 19:49:09 -04:00

Republic OS

An open, version-controlled mirror of public power in the United States.

Government is already software: statutes are code, agencies are processes, elections change the maintainers, and a bill is a pull request against the law. What government has never had is a changelog. This repository is that changelog.

The diff is the product. Every file here mirrors the observable public state of a government entity or legal text as a deterministic, sourced, human-readable record. When government changes, the files change, and git makes the change visible, permanent, and inspectable.

What's in here today

19,721 markdown records, every one schema-validated:

Entity Count What it is
Person 13,329 Current officeholders — federal, all 50 state legislatures, and Florida down to the municipal level. Federal members carry their bioguide ID, leadership roles, and committee seats.
Body 233 The institutions themselves — the U.S. House, the Senate, 49 committees, 181 subcommittees, each with its leadership.
Candidate 2,494 Everyone running for federal office in 2026, from FEC filings.
Jurisdiction 3,494 Every U.S. county (3,131) and 363 congressional districts, each carrying Census demographics — the nationwide skeleton, filled with data.
LegalText 171 U.S. Code Title 52, Voting and Elections, mirrored from the official OLRC XML release current through Public Law 119-100.

The mirror answers, with receipts: who holds power, who runs the institution, who's running, what each place is made of, and now what legal text governs elections — and, through git, what changed.

How it works

raw source exports         deterministic build          validated tree
data/*.jsonl        ──►    scripts/build.py      ──►    data/jurisdictions/**
data/legal/raw      ──►    scripts/ingest_*.py   ──►    legal/**
(committed as-is)          (one pass)                   (OKF markdown + YAML)
  • Format — Markdown with YAML frontmatter, OKF-conformant, validated by JSON Schema in /schemas. Human-readable in any editor or on GitHub; machine-readable by any agent.
  • Deterministicmake build and make legal-us-code regenerate their trees from committed raw sources and pinned official snapshots. Records change only when government changes, so every diff is signal.
  • Sourced — every record carries field-level provenance and a confidence level. This repo is a mirror, never the authority; official sources remain the source of truth.
  • Raw-first — source exports land in data/*.jsonl untouched before any transformation, so the origin is always recoverable.

Commands

make build         # regenerate the entity tree from the raw exports
make legal-us-code # regenerate the U.S. Code Title 52 legal corpus seed
make validate      # OKF + schema + link-integrity checks on all records
make changelog     # what changed in the government since the last commit
make check         # build, then validate — the full gate

Everything runs on the Python standard library. No dependencies to install.

Documentation

The disciplines

Three rules govern everything here, and they are won by subtraction:

  1. Never overwrite — a change is a new commit, not a clobbered file. Deletes are diffs.
  2. Never rewrite history — no force-push, no squash. The past is load-bearing.
  3. Always push off-box — one copy is a single point of failure; more is not.

Substrate for influence.tools.

S
Description
An open, version-controlled mirror of public power in the United States.
Readme 935 MiB
Languages
Python 98.3%
Makefile 1.7%