Home › Use Cases › Say what the record shows about each owed step, and never compute a deadline
Use caseUC0509
🧪 Use-case kit · runnable

Say what the record shows about each owed step, and never compute a deadline

A small, forkable project that does one job end to end. Run once for real, and every figure on these pages captured from that run.

The business caseThe problem this solves

A district's student services records desk holds a folder for one evaluation cycle: a referral, the consent artefacts that followed it, the owed assessment components with whatever evidences each, a SIS status column, and whatever closed the cycle. Somebody reads it to answer what is actually owed and what the record actually shows. Four artefacts in the same folder each carry a date for the same instrument — a signature date, a portal timestamp, a receipt stamp and a typed status column — and only one of them started the cycle; a revocation followed by a fresh consent starts a NEW cycle rather than making the old one late. The by-hand read of one evaluation cycle folder against the owed-component set — which event started it, and whether each owed step is evidenced or merely asserted.

Audience

Whoever owns a special-education records desk and is deciding whether a model is worth buying for it. The answer this kit gives is no, on this use case, and the measurement is here so the decision does not have to be taken on anybody's word. Every number on these pages came from one real run of this code, not from a vendor page.

The inputThe actual evaluation cycle folders

The corpus is 64 evaluation cycle folders, 0.22 MB (txt 64). No public corpus of special-education evaluation cycle folders exists and one could not ethically be assembled: every real folder is a named child's record. So it is generated, with the generator shipped. ⚠︎ AND THE FIRST CORPUS WAS THROWN AWAY: the free floor read 64/64 on the start event and 256/256 on the cells, identical to the ceiling arm, because the device sat on the surface of a sentence. The rebuild moved the decision off the surface and into a rule the record cannot express — which artefact is a RECEIPT is decided by ECM-2026, not by which line looks most like one — and the floor fell to 29 of 64.

The corpus

  • The 64 evaluation cycle foldersgenerated 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, which families it deals and how many of each, plus the fourteen failures phase 1 expected — committed to data/prediction.json before the first call so the scoring is auditable by somebody who was not there.

Swap this folder for your own material and the kit is pointed at your evaluation cycle folders. That is the whole change — there is no database to migrate.

One evaluation cycle folder, as the model receives itECF-0001.txt · 1 of 64
EVALUATION CYCLE FOLDER  ECF-0001
FOLDER ASSEMBLED  2026-01-25   STANDARD  ECM-2026
CYCLE  CYC-26-0500   STUDENT FILE  STU-4100   SCHOOL  SCH-01
REFERRAL  REF-7700   RECORDED  2026-01-05
DAY-COUNT RULE  NOT LOADED   NON-INSTRUCTIONAL CALENDAR  NOT LOADED

[1] OWED COMPONENTS AND THE STATUS COLUMN AS KEYED
COMPONENT  DISCIPLINE               STATUS COLUMN
CMP-COG    COGNITIVE                complete
CMP-ACA    ACADEMIC ACHIEVEMENT     not started
CMP-SLP    SPEECH AND LANGUAGE      complete

[2] EVENT LOG AS RECORDED
ID       DATE         DESK
EVT-01   2025-12-27   Front office desk
  RECORDS  CNS-2202 was issued to the family as a consent to evaluate on 2025-12-27. The entry was reviewed on 2025-12-29.
EVT-02   2025-12-29   Records desk
  RECORDS  CNS-2202 carries a signature dated 2025-12-29. The record was copied to the student file on 2026-01-01.
EVT-03   2025-12-30   Case manager desk
  RECORDS  CNS-2202 was stamped as received by the records desk on 2025-12-30. The entry was reviewed on 2026-01-04.
EVT-04   2026-01-01   Evaluation desk
  RECORDS  CNS-2202 was submitted through the family portal on 2026-01-01.
EVT-05   2026-01-03   Student services desk
  RECORDS  The status column was set to consent on file for CNS-2202 on 2026-01-03. The record was copied to the student file on 2026-01-04.
EVT-06   2026-01-05   Enrolment desk
  RECORDS  REF-7700 was recorded as a referral for evaluation on 2026-01-05.
EVT-07   2026-01-07   Front office desk
  RECORDS  CNS-2200 was issued to the family as a consent to evaluate on 2026-01-07.
EVT-08   2026-01-09   Records desk
  RECORDS  CNS-2200 carries a signature dated 2026-01-09. The entry was reviewed on 2026-01-12.
EVT-09   2026-01-11   Case manager desk

Abridged — the file continues.

The outcomeWhat a good result looks like

One folder in, one reading out: the single dated event that started the cycle, a verdict of EVIDENCED, ASSERTED-ONLY or ABSENT per owed component, and the cycle state. src/recheck.py then recomputes the instrument, the date, the owed worklist, the flag and the clock from that reading and the folder's own printed lines, for every arm.

And when it cannot

And what it does when it cannot. 64 of 64 replies parsed, 0 unparsed, 0 calls at the ceiling, 0 calls not admitted, 0 replies over the free-text budget. A folder with no receipt of record returns NO-RECEIPT-OF-RECORD and a null start event rather than reaching for the signature date — which is the one thing it gets right 3 times in 4 on that family.

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 need the owed-step state of an evaluation cycle folder — the floor of record (b000-eval-consent-clock-floor), or any free rule at all
    free code takes 29 of 64 folders wholly right and 215 of 256 owed-step cells at $0.00, and the paid call reaches 20 and 191. p = 0.163 and p = 0.188 — no separable difference, point estimate against. The money buys nothing here.
  • The start event is decided by a SENTENCE — a same-terms reference, a superseding receipt, a conditional acceptance — still the floor, and know that it is a coin toss
    on the 46 folders in that slice the paid call takes 15 and the floor 14, 11 discordant each way, p = 1.0. This is the slice the money was REGISTERED to win before the run, and it wins nothing.
  • The ordering alone reaches the start — a plain receipt, a restart after a revocation — free code, and this one is not close
    5 of 18 against the bar's 15, 1 only-paid against 11 only-floor, p = 0.00635 AGAINST. The paid call BREAKS arithmetic that free code already does.
  • You need to be certain no deadline, eligibility or plan decision is ever stated — either arm — and read how it is enforced, not what it scored
    0 breaches over 64 scored calls and 20 adversarial calls under five framings, including one ordering a computed due date, the rule, the days elapsed AND the plan decision. The answer contract offers no field a day count could go in and src/prompt.py asserts 57 forbidden names absent at import. The refusal is a SHAPE, not a request.

And where nothing here is good enough:

  • You want days remaining, a due date or an eligibility — nothing in this kit
    the day-count rule and the non-instructional calendar are the operator's and neither is loaded here, so every folder reads open, deadline unknown. Load them and the arithmetic is a SELECT and a subtraction in free code.

At a glanceHow the whole thing runs

31%whole rechecked pct
1,741 msp50, end to end
$2.95per 1,000 evaluation cycle folders · the fast tier

Run once, for real, on 2026-09-18. 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 folders in the same shape — a header, an event log of dated rows, an owed-component set, an indexed-filings table and a status column — and supply data/gold.jsonl with one labelled row per folder. ⚠︎ WHAT STOPS BEING TRUE THE MOMENT YOU DO. Corpus lens →
When is this the wrong choice?Avoid: Buying a call per folder to re-read a closed vocabulary that a rules engine already reads better. That is the case against the best-fitting scenario (“You need the owed-step state of an evaluation cycle folder”). 5 scenarios scored in all, each with its own. Eval lens →
Where does it stop working?A folder with no event log at all — the whole reading is over dated entries, and a folder that carries only a status column has nothing for any arm to read. 7 recorded failure modes, each from a run rather than a guess. Corpus lens →
What was never verified?Whether any OTHER wording would breach the refusals. Five framings were tried; the space of instructions a records desk could write is not enumerable and no claim is made about it. 10 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 5 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-18 — r002-eval-consent-clock. 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.

Talk to us →

Checked before this shipped — A clean checkout with no provider key configured renders the whole board and every published figure: both paid runs and all three free arms are committed under results/, and so are the reply caches. ⚑ MEASURED RATHER THAN ASSUMED (the .gitignore question): the kit was copied to scratch, results/*.jsonl deleted, and the board loaded against the copy. All eight free arms and four of the five surfaces are unaffected; the three PAID arm views degrade to a named UNAVAILABLE and print the missing filename. So the caches are evidence and they ship. ⚠︎ On the first pass that degradation was an HTTP 500 instead — a KeyError in arms_on(). Fixed and re-measured at 0 tracebacks.

A living map of modern AI — kept current every morning