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.

  1. 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.

  2. 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.

  3. 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.

  4. Public API gateway

    The read-only REST gateway over the canonical model went up, with a self-describing OpenAPI schema.

  5. Oregon Legislature ingest

    Oregon Legislature measures, sponsors, actions, and votes were promoted into the canonical model, with re-runnable ingestion and full provenance.