The business caseThe problem this solves
A litigation matter has two records of what has happened in it. The court keeps a register of actions — every filing, order, notice and clerk's entry, by number — and the firm keeps an internal docket that drives its calendar. They drift apart: an order continues a hearing and the firm's entry still carries the old date, a motion is struck and the deadline to answer it stays on the calendar, a clerk says a notice was filed in the wrong case, one hearing is keyed twice after a failed sync, an entry is keyed against the wrong court number. The docketing system's own reconciliation pairs entries by the court-number column and treats every printed entry as standing; it is wrong on 31 of the 62 matters in this corpus, because what decides them is a sentence in the court's docket text or in a note. Opening one matter, reading the court's register of actions entry by entry against the firm's internal docket, reading each docket text and each note to see whether a later entry takes an earlier one out, deciding which court entry each internal entry really records, and writing down every discrepancy by kind.
Audience
The docketing desk at a law firm working its periodic reconciliation of internal dockets against court records — and the matter team who has to raise it with the court when two standing entries set one event to two dates. Every number on these pages came from one real run of this code, not from a vendor page.
The inputThe actual matter files
The corpus is 62 matter files, 0.18 MB (txt 62). It is generated because it has to be. A real docket is privileged and confidential: client names, case numbers that identify litigants, filings under seal, and notes written by named lawyers about named lawyers. None of that can be published, and a docket that could be published would have had the one thing this kit measures — the sentence in a docket text or a note that decides whether an entry still stands — stripped out first. So the whole thing is invented, declared, and generated from one seed with the key DERIVED by the same rulebook the kit applies.
The corpus
- The 62 matter filesgenerated from a fixed seed, so no real record, person or institution appears in it.
- Where each came fromdata/SOURCES.md states where every byte came from AND what the generator costs the measurement. Every court, case number, party, entry and note is invented, and THERE ARE NO PEOPLE IN THIS CORPUS AT ALL — every party is a company, a note is from the docketing desk, the matter team or litigation support, and no attorney, paralegal, clerk or judge is named. evals/check_labels.py sweeps all 62 files for a person-shaped name and an honorific on every run and reports 0.
Swap this folder for your own material and the kit is pointed at your matter files. That is the whole change — there is no database to migrate.
==============================================================================
DOCKET RECONCILIATION -- ONE MATTER, ONE AS-OF DATE
==============================================================================
FILE DKR-0001
MATTER M-26-0101
CLIENT Alder Crane Works LLC (plaintiff)
CASE NO. CV-2026-004811
COURT Aldermere County District Court
CAPTION Alder Crane Works LLC v. Dunlin Marine Services Inc.
AS-OF 2026-05-01
-- THE COURT'S RECORD (register of actions as retrieved on the as-of date) ---
NO. FILED KIND RE EVENT SETS DOCKET TEXT
1 2026-03-30 FILING -- -- -- COMPLAINT filed by Alder Crane Works LLC against Dunlin Marine Services Inc.
2 2026-04-01 CLERK -- -- -- SUMMONS issued as to Dunlin Marine Services Inc.
3 2026-04-06 CLERK -- -- -- NOTICE OF APPEARANCE of counsel for Dunlin Marine Services Inc.
4 2026-04-10 FILING 1 -- -- ANSWER to the complaint (no. 1) filed by Dunlin Marine Services Inc.
5 2026-04-13 ORDER 1 DEADLINE 2026-05-27 SCHEDULING ORDER: the deadline to amend the pleadings is set for 2026-05-27.
6 2026-04-15 FILING -- -- -- MOTION TO COMPEL discovery responses filed by Alder Crane Works LLC.
7 2026-04-20 ORDER 6 HEARING 2026-05-11 ORDER setting a hearing on the motion (no. 6) for 2026-05-11.
8 2026-04-24 ORDER 6 DEADLINE 2026-05-04 ORDER: any opposition to the motion (no. 6) is due by 2026-05-04.
9 2026-04-27 FILING -- -- -- NOTICE OF SERVICE of discovery responses by Alder Crane Works LLC.
-- THE FIRM'S INTERNAL DOCKET ------------------------------------------------Abridged — the file continues.
The outcomeWhat a good result looks like
One matter file in, one row out: which court entries no longer stand, which standing court entry each internal entry records, every exception by kind and reference, and one of seven DKR-2026 verdicts. 50 of 62 matters come back completely right, against 47 for the best free arm and 31 for the docketing system's own status — and the margin over the free arm is NOT statistically significant (p = 0.629059).
And when it cannot
And what it does when it cannot. On the scored run 62 of 62 replies parsed, nothing stopped at the ceiling and no call failed. The 12 matters it got wrong are named in the kit README with what it answered: 5 kept a struck or disowned court entry standing, 2 split a two-party order across one entry, 2 took a standing entry out, 3 left an internal entry unpaired. A reply that cannot be parsed is counted WRONG and stays in the denominator; it is never dropped and never re-fired.
Where it fitsWhat did work
Every line below is a measured result from this kit's own runs, with the figure that supports it. The headline above is not softened by any of them.
- You can write, or already have, a vocabulary rule with a negation guard over the court's docket text — the free rules floor, and do not buy a call
47 of 62 matters for $0.00, statistically level with the paid call's 50 (p = 0.629059). It is better on stricken matters, 4 of 6 against 1. - Your court records carry notices of correction, denied requests and 'remains filed' language that a vocabulary rule misreads — the paid call, read beside the rule
On the 31 decoy matters the paid arm is 26 and the rule 19 — the rule sees "entered in error" and takes a standing complaint off the record. - You need the conflicted matters found reliably, because that is the queue the court has to be asked about — the docketing system's own column view, or the free rules floor
The column view gets all 6 conflicts; the paid arm gets 4, both misses a pair it left out. A conflict is decidable from the (RE, EVENT, date) columns once the standing set is known. - You want the docketing system's own reconciliation audited — either paid or free — both beat it
The docketing system is right on 31 of 62; the rules floor on 47 and the paid arm on 50. It disagrees with DKR-2026 on every matter where a sentence decides.
And where nothing here is good enough:
- Your deadlines must be computed from a rule of procedure, or your docket spans consolidated matters — neither, yet
No file in this corpus does either. The kit compares printed dates and never computes one; the unit of work is one matter at one as-of date.
At a glanceHow the whole thing runs
Run once, for real, on 2026-09-12. Every figure on these pages was captured from that run — nothing is written from intent.
14 steps, grouped by the question that sends you to them rather than by build order. Each tile carries the one figure that step is about, and opens the page behind it.
Should you use this?What you bring, where it stops, and when not to use it
Before you commit an afternoon to this, these are the answers that decide it. Each one is rendered from the record it lives in — and links the page that holds it in full.
| What do I have to bring? | Replace data/corpus/*.txt with your own matter files in the same shape and data/matters.json with your own register, then run python3 -m evals.run --run-id b000-<yours>-rules --floor rules — it needs no key and costs nothing. ⚠︎ WHAT STOPS BEING TRUE THE MOMENT YOU DO. Corpus lens → |
| When is this the wrong choice? | Avoid: Paying per matter for a margin this corpus cannot distinguish from noise. That is the case against the best-fitting scenario (“You can write, or already have, a vocabulary rule with a negation guard over the court's docket text”). 5 scenarios scored in all, each with its own. Eval lens → |
| Where does it stop working? | A court register whose entries carry no RE column. DR-1 groups standing settings by (RE, EVENT); without the entry each setting relates to there is nothing to group and no conflict can be found. 6 recorded failure modes, each from a run rather than a guess. Corpus lens → |
| What was never verified? | NO SECOND SCORED RUN. One was fired, so the run-to-run spread on this corpus is unknown, no confidence interval is claimed anywhere on this page, and a 3-matter margin is well inside what a second run could move. 8 items this kit says it could not check. Eval lens → |
| Can I run this on a model I control? | Yes — any OpenAI-compatible endpoint, including one on your own hardware. The shipped adapter takes its host from BASE_URL and its model from MODEL, so nothing in src/ changes. The published figures come from 1 model on the fast tier, one provider, one key. Prompt lens → |
| And if it fits — what do I stand up? | 5 artifacts with a stated home and a stated egress, and 3 decisions each with what you provision past its ceiling — plus what was not measured. That is the next page, not this one. step 14 — Run it in your environment → |
Not asked of this kit — 2 questions: clone (a fresh clone of this kit runs with nothing fetched); judge (nothing here is graded by a model).
Last verified 2026-09-12 — r001-docket-recon. Every figure on these pages was captured from that run.
Run itHow this reaches your data
Every result on this page was produced by pure code over checked-in files, with no API key — which is why you can read the numbers before anyone spends anything.
Run this on your own data
- The pipeline, its eval harness and the runs behind every numberdeployed inside your environment, on your own model endpoints, against your own documents.
- The corpus above is the shape, not the limitit is a folder swap, and there is no database to migrate.
Checked before this shipped — A clean checkout with no key configured renders the whole board, all three free floors and every committed run. pip install -r requirements.txt installs nothing — the kit is standard library only. The only thing a key buys is the ASK THE MODEL button and a new scored run.








