What these are
Each tracker is a public dataset that consolidates information already scattered across government portals, registries, and announcements. The value is consolidation and a verifiable, hash-chained change history — not access to anything non-public.
How it works
- Collection. A small Go engine fetches each source on a declared cadence using conditional requests (ETag / If-Modified-Since) and polite rate limits.
- Normalization. Every source is reduced to a common record shape and written to
data/<tracker>/current.json. - Change detection. Each run is diffed against the last published state; additions, removals, and changes are appended to
events/<year>.jsonl. - Publication. The site is static — it simply renders the committed JSON. There is no server, no database, and no telemetry.
Freshness is stated, never assumed
Every source carries a state and a last-success timestamp in data/status.json, rendered as the signal light on each tracker:
- fresh — updated within its cadence.
- lagging — overdue; the last-good data is still shown, clearly marked.
- stale / degraded — collection is failing; do not treat the data as current.
A failed fetch never overwrites good data with garbage. A validation gate quarantines suspicious batches (too few records, or implausible churn) and keeps the last-good snapshot live rather than publishing a broken one.
Verifiability
The changelog is append-only and hash-chained: each event records the SHA-256 of the previous event, so the history is internally consistent and anyone can re-derive the chain from the public data with the engine: engine verify --out .. On its own a hash chain detects accidental corruption and partial edits — it does not, by itself, stop a maintainer who controls the repository from rewriting both the history and the chain head. To close that gap the engine signs the chain head and anchors it with an RFC 3161 trusted timestamp, so the head can be verified against an independent witness; engine verify checks the signature and timestamp when present.
What we deliberately do not track
These trackers cover solicitations, policies, authorizations, and public lists. They do not aggregate operational incidents, unit information, troop or platform movements, or anything that would assemble a sensitive picture from individually public pieces. That line is a design constraint on source selection, not an afterthought.
Stewardship
This project is run as a neutral, public-interest effort. It aggregates only public information, carries no vendor sponsorship in its data, and is intended to remain a stable, citable source regardless of who maintains it. The data and engine are open so the work can be independently verified and continued.
Licensing & succession
Data is licensed CC-BY-4.0; the engine and site code are MIT. The project is built to outlive any single maintainer — see Succession for how to fork and continue it, and CITATION.cff to cite it.