Changelog
What has landed in the canonical model and on the site. Coverage grows deliberately — a source is promoted only once it's mapped and carries full provenance.
-
Resilient serving — prerendered content + cached data
Content pages (this changelog, mission, the journalist guide, about) are now prerendered to static HTML, and data routes carry HTTP caching. Between ingests the site behaves like a periodically-refreshed static site and keeps serving through brief upstream outages.
-
Public data explorer + GraphQL
The full public explorer went live — browse council votes with full roll calls, member voting records, and Oregon Legislature bills, all searchable and source-cited. Relational drill-downs are backed by a new GraphQL surface so a member's whole record or a vote's full roll call comes in one request.
-
Portland City Council votes, end to end
Council roll-call votes landed in the canonical model — schema, ingest, and REST serving — with every record carrying provenance back to its source.
-
Public API gateway
The read-only REST gateway over the canonical model went up, with a self-describing OpenAPI schema.
-
Oregon Legislature ingest
Oregon Legislature measures, sponsors, actions, and votes were promoted into the canonical model, with re-runnable ingestion and full provenance.