Bug-fix patch closing the four open issues from the v0.3.19 audit.
Fixed:
- roll_votes order='recent' now strictly newest-first — fetches the
full session, sorts by updateDate desc client-side, then pages.
Replaces the fetch-tail-and-reverse, which produced only
approximate order when upstream's opaque insertion sequence
drifted from updateDate. Closes #27.
- senate_nominations sub-resources render properly again — actions,
committees, nominees, and hearings dispatch through shape-keyed
renderers instead of every row collapsing to a bare "Nomination".
Closes #26.
- Empty paginated pages now read "Page is empty — offset is past
the end of N total items" instead of just "**N results**" with no
items. Closes #28.
- committee_lookup description documents that the bills sub-
resource omits titles upstream; points callers at bill_lookup
get per row. Closes #29.
Added:
- Search-line echo on every list response so the caller can confirm
what was filtered, even on empty result sets.
- ISO 8601 validation on bill_lookup and bill_summaries date
filters — rejects malformed inputs with an actionable message.
- Tighter output schemas across all ten tools (listOutput /
listOrDetail envelopes).
Changed:
- Bill and CRS report detail views lead with a title-first header
and key meta before the structured field dump.
- Service layer filters non-record list items at the boundary;
FetchListResult.data narrows to ApiRecord[].