Repository navigation
v2026.09.25 — counts and page text for assistants; the independent graders' fixes; JSON shape 3
Two new MCP tools, the independent graders' fixes, and migrations 0030–0032 (PRs #34, #35, #36, #37, #38, #39, #40).
A migrating release (schema 29 → 32): deploy behind the wall (infra/deploy/README.md § Deploying a migrating release). Roll back with a Litestream restore, not a tag. JSON shape 3: a sheet's last_checked now means the last poll, and last_new_entry holds what last_checked used to mean. It is announced on /data.
What changes
- MCP
count_filings(#38) counts filings by the Board's own filing type, prefix and filed-date range, and how many of those proceedings also hold a second type.- It counts distinct filings and proceedings as entered.
- It names unfinished months, including months no wave has begun.
- It says what it did not count.
- MCP
read_page, and a matched passage on each page search hit (#38, ADR 0022 addendum). An assistant may read page text on a user's request.- Each answer carries who read the page, the Board's file, the scan, the operator's caveat and the licence line.
- Engine-read pages say they carry OCR errors.
- The independent graders' first fixes (#39):
- Decision summaries and deciding bodies are passed through MCP.
- A
.jsonmiss answers with JSON. - The
/apiexample is held to the live shape by a test. - Wording an assistant repeats is corrected:
1 filing, last filed …, the note at the 100-entry cap, the hedge on a comment miss. - README and CONTRIBUTING describe the live project.
- The operator's nine decisions (#40):
- robots.txt:
ChatGPT-User,Claude-UserandPerplexity-Usermay read party and text pages. Indexers and training crawlers stay refused, and/searchstays refused to every named agent. - Decision dates are labelled served, JSON entries gain
date_kind, and the cite line reads(STB served Sept. 3, 2026). - "Last checked" means the last poll (JSON shape 3).
- Webhooks add a timestamped signature alongside the unchanged one, and the payload carries
shape_version. - Cite blocks carry an access date and the newest kept archive.
/coverage,/statsand early sheets say the early years are thin because the Board's own table is.- The CC0 label covers the compilation and the Board's own fields; filings and comments are reproduced as filed.
- The methodology's repeated-filer sentence matches the rule.
- robots.txt:
- Migrations 0030–0032 (#35, #37, #36): the veto trigger, per-page OCR failure records, and the router's verdict (
page_route). Their addenda were accepted 2026-09-16. - The tabular fleet pass (#34): HunyuanOCR-1.5 workers, plus the worker fixes. Fleet code only; the running pass picks it up when the fleet is redeployed.
Verified before release
- Rehearsed 2026-09-17 in v2026.09.24's image (SQLite 3.46.1) on a Litestream restore of production taken at 09:35 UTC, with main mounted.
- The 0030 pre-check returned 0 rows.
- 29 → 32 in 11.4 s: foreign keys clean,
quick_checkok, row counts unchanged across capture, event, docket, filing, decision_record, enviro_comment, document and document_text (1,685,851). - The site served from the migrated store, every page checked in under 350 ms.
- On real data: JSON shape 3 with the true last poll, the early-years counts (1996: 4 … 2001: 456 · 2002: 2,382), the UP-SP sheet's record-begins line, the served cite line, the JSON 404 and the robots split.
- All six MCP tools answered.
count_filingsgave 201 AB proceedings holding a Consummation Notice and a trail-use filing (59 ms), andread_pageread Decision 46314 from a "trackage rights Peoria" search.
- Reviews:
- Tests and CI: 998 tests pass; CI green on every PR.
Deployed 2026-09-17 behind the wall, 09:41:23–09:44:52 UTC (restore point 09:41:23Z, Litestream generation 073494ca664fa87f).
- The 0030 pre-check returned 0 rows on the live store at schema 29.
migratetook the store 29 → 32./healthreports v2026.09.25, schema 32, and ingest polled on the new release at 09:44:01.- Checked against the live store before the wall came down: foreign keys clean; JSON shape 3; the sheet, coverage and served-cite changes; all six MCP tools, including
count_filings(201) andread_page. - From outside after: every page checked returns 200,
/filing/nope.jsonreturns a JSON 404, and MCP lists six tools.