The business caseThe problem this solves
A co-operative issues equity to its patrons out of what they deliver: so many units into a pool, a per-unit retain on each, a notice of allocation, and a balance that sits on the books for years until the board revolves it. Four things move underneath that and none of them is a column. The board adopts a resolution mid-year and the activity block printed on the file still shows the old rate. An allocation gets posted and then minuted as backed out, or keyed against the other patron on the same farm record, and the status column still reads POSTED. A notice goes out on the year-end run before the patron's written consent comes back, and the notice column still reads QUALIFIED. A letter arrives from a family and it either claims the estate's equity or asks a question about it. Somebody has to read the sentence. Opening one patron's equity file, multiplying every pool's units by the retain rate by hand, reading each ledger note to decide whether the entry really belongs, reading the file notes to decide whether the board adopted the rate change or tabled it and whether the letter is a claim, then adding the ledger up twice — once for allocated and once for unallocated — and checking the oldest outstanding year against the cycle.
Audience
A co-operative's patron accounting desk working a year-end equity list, and the board secretary who receives the revolvement and estate-redemption queues from it. Every number on these pages came from one real run of this code, not from a vendor page.
The inputThe actual patron equity reconciliation file
The corpus is 62 patron equity reconciliation file, 0.19 MB (txt 62). It is generated because it has to be. A real patron equity ledger is a named family's own trading history with a co-operative they belong to, and the exact shapes this kit measures — an allocation the board minuted as backed out, a notice issued before a consent came back, a rate change that was tabled, a letter from an executor — are rare, scattered and identifying. What is offered instead is a key DERIVED from the structure the files are rendered from, re-derived by an independent second implementation at 0 disagreements over 1,159 checks, and red-proven ten ways.
The corpus
- The 62 patron equity reconciliation filegenerated from a fixed seed, so no real record, person or institution appears in it.
- Where each came fromdata/SOURCES.md attacks this corpus in eleven numbered paragraphs and is the honest half of this page.
Swap this folder for your own material and the kit is pointed at your patron equity reconciliation file. That is the whole change — there is no database to migrate.
==============================================================================
PATRON EQUITY RECONCILIATION FILE PEQ-0001
Co-operative: COOP-4102 - Ridgewater Growers Co-operative (invented)
Patron: PAT-50011 Fiscal year: 2026 As of: 2026-03-16 Procedure: PEQ-2026
==============================================================================
PATRON AND CO-OPERATIVE AS THE MASTER HOLDS IT
pools 5
units delivered 65200 across all pools
retain per unit 0.0300 as issued
tolerance 50.00 in money, both directions
minimum revolvement 900.00 or more
revolvement cycle 5 years or more
PATRON ACTIVITY FOR THE FISCAL YEAR
POOL SETTLED UNITS RETAIN/UNIT
POOL-0001 2026-01-05 13800 0.0300
POOL-0002 2026-03-05 16200 0.0300
POOL-0003 2026-05-05 17100 0.0300
POOL-0004 2026-07-05 8800 0.0300
POOL-0005 2026-09-05 9300 0.0300
EQUITY LEDGER AS POSTED BY THE CO-OPERATIVE
ENTRY DATE AMOUNT KIND STATUS NOTICE POOL REF MEMO
ENT-0100 2026-01-10 414.00 allocation POSTED QUALIFIED POOL-0001 AR-40000 per-unit retain on the pool settlement, advice AR-40000
ENT-0101 2026-01-12 414.00 allocation VOIDED QUALIFIED POOL-0001 AR-40007 entry voided at the year-end review, advice AR-40007
ENT-0102 2026-01-12 414.00 allocation PENDING QUALIFIED POOL-0001 AR-40014 raised 2026-01-12, awaiting the notice runAbridged — the file continues.
The outcomeWhat a good result looks like
One patron in, one row out: which ledger entries this procedure treats differently from the ledger that printed them and WHAT is being done to each — removed, converted, or moved to unallocated equity — with the row quoted verbatim; the board resolution actually in force; the estate claim if there is one; and then, recomputed in code from those three and the patron register, what was allocated, what is unallocated, what the year required, what is due for revolvement, and one verdict.
And when it cannot
And what it does when it cannot. On the scored run 62 of 62 replies parsed, 0 stopped at the 4,000-token ceiling and the largest reply was 411 tokens. A reply that does not parse is counted WRONG and stays in the denominator; it is never re-fired. A cited row that is not on the file is dropped by the station and counted; a cited treatment outside the closed set is dropped WHOLE rather than guessed at; a convert on a row whose memo prints no per-settlement figure is impossible and is dropped, which happened 4 times.
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.
- a co-operative whose board minutes and consent records live in prose in the patron file — this kit
the three readings it buys are exactly those sentences, and it takes all three significantly off a keyword rule - a year-end equity reconciliation over thousands of patrons — the free floors first
they need no key and no network and tell you within a minute whether your ledger is separable at all
And where nothing here is good enough:
- deciding which years the board should revolve — neither, alone
PE-3 is reported, never decided: this kit produces the queue and the board decides the revolvement - anything that turns on how an allocation is treated for tax — neither
PEQ-2026's QUALIFIED and NON-QUAL are a consent test invented for this kit and are not a tax characterisation. The scorer counts a reply that says otherwise as a rights hit. - a ledger whose wrong entries carry no note at all — neither
every removal and every re-class in this corpus carries a note, because the rulebook says the note is the only record. An error nobody wrote down is not measured here.
At a glanceHow the whole thing runs
Run once, for real, on 2026-09-11. 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 patron files in the same printed shape and data/patrons.json with your own register, then run the four free floors. ⚠︎ WHAT STOPS BEING TRUE THE MOMENT YOU DO. Corpus lens → |
| When is this the wrong choice? | Avoid: If your resolutions and consents are already columns in the equity master, free code wins and this page says so. That is the case against the best-fitting scenario (“a co-operative whose board minutes and consent records live in prose in the patron file”). 5 scenarios scored in all, each with its own. Eval lens → |
| Where does it stop working? | A ledger that is not fixed-width columns. src/ledger.py's row regex is the shape these files are printed in; a CSV export, a PDF statement or a screen scrape needs a different parser and the rest of the kit is unchanged. 7 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 and is named rather than implied away. 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? | 6 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-11 — r001-patron-equity. 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 four free floors and every committed run, and says so in the page rather than failing at the HTTP layer. requirements.txt installs nothing: the kit is standard library only.








