01 Contract
Provision schema
Each section is stored as typed records. The model that writes the summary also fills the records. The site checks them. It does not parse the legal language with a pile of patterns.
The machine-readable contract is omnibus-provision-1.0.json, version 1.0.0. A bill’s records are at /api/bill/<congress>/<type>/<number>/provisions.json.
What every record carries
An id, the bill and text version, the section citation, a source span (character offsets, the verbatim text, and its hash), the action type, a confidence, and whether a model or a person wrote it. Dates are optional. Audience is the same set of household categories the questionnaire uses, and it stays empty when the section is not about a person.
Action types
- APPROPRIATE. Agency, account, amount, fiscal years, how long the money stays available, and purpose. An “of which” line is a child record.
- RESCIND. Account, amount, and the source law or year the balance came from.
- TRANSFER. The account moved from, the account moved to, and an amount or percent cap.
- LIMIT. A “none of the funds” prohibition: what is limited, the scope, and any exception.
- AMEND. The statute being changed, the operation, and the old and new text quoted from the bill.
- EXTEND. The program or authority, with the old date and the new date.
- DIRECT. Who must act, what they must do, the deadline, and who receives the report.
- DEFINE. A term and the definition the section gives it.
- WAIVE. The requirement that is waived, and who it is waived for.
- EMERGENCY_DESIGNATION. The emergency designation and the statute it cites.
- OTHER. A short reason, used only when none of the types above fit.
Checks
Import rejects a record that fails the schema, whose span hash does not match, whose dollar amount is not printed in the span, whose quoted amendment text is not in the source, whose dates do not parse, or whose citation does not resolve. A dollar figure in the section that no record carries is flagged. “Of which” children must not sum to more than the parent. Totals add top-level appropriations and subtract rescissions. Children are not counted twice.
Versions
When a bill has two text versions, the JSON includes which record ids were added, removed, or changed. The comparison uses the section path, the action type, and the amount or purpose.