Home › Use Cases › Reconcile a mine shift's grade control release against truck dispatch and mill receipts
Use caseUC0438
🧪 Use-case kit · runnable

Reconcile a mine shift's grade control release against truck dispatch and mill receipts

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

An open-pit gold mine decides before every blast which dig blocks are ore and which are waste, and at the end of every shift somebody has to check that the gold the mill received is the gold grade control said it would be. Four records have to agree: the grade control release (each block's class, estimate tonnes, grade and destination), the truck dispatch export (every load and where it tipped), the ROM weighbridge (every load that arrived, weighed and tagged to a sample) and the mill laboratory (every assay, including re-assays). The shift spreadsheet reconciles those COLUMNS. What decides the answer is often a sentence: a load voided as a rehandle keyed to the wrong block, a truck turned back at the ROM gate, a release re-issued after infill drilling, a re-assay the laboratory rejected. The spreadsheet's own status disagrees with the procedure on 27 of the 64 shift packs in this corpus. Opening one shift pack, checking every counted load's destination against its block's class and every mill load against a weighbridge ticket, reading each note to see whether it voids a load, turns one back, re-issues a release or rejects an assay before the AS AT date, recomputing each ore block's expected and mill metal at the in-force grade, and testing the gap and the dilution against the register's tolerances.

Audience

The grade control desk and the metallurgical accounting desk at an open-pit operation, working the previous shift's reconciliation before the month-end balance — and the dispatch, weighbridge and laboratory desks an exception is routed to. Every number on these pages came from one real run of this code, not from a vendor page.

The inputThe actual shift packs

The corpus is 64 shift packs, 0.28 MB (txt 64). It is generated because it has to be. A real mine's shift reconciliation is an operator's own production record: grade control estimates and assays that bear on a reported reserve, fleet telemetry, weighbridge tickets and desk notes written by named people about named people. None of that can be published, and a corpus that could be published would have had the one thing this kit measures — the sentence that decides the reading — stripped out of it first. So the whole thing is invented, declared, and generated from one seed with the key DERIVED by the same rulebook the kit applies. It is the first mining kit in this estate; every other resources kit is oil and gas.

The corpus

  • The 64 shift packsgenerated 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 operation, pit, dig block, truck, load, ticket, sample, assay and note is arithmetic on the file index, every grade and assay is synthetic, GCR-2026 is invented for this kit, and THERE ARE NO PEOPLE IN THIS CORPUS AT ALL — a truck is an HT-number, a loader an EX-number, and a note speaks for the dispatch, pit control, grade control or laboratory desk. evals/check_labels.py sweeps all 64 files for a person-shaped name on every run and reports 0.

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

One shift pack, as the model receives itGRC-0001.txt · 1 of 64
================================================================================
GRADE CONTROL TO MILL RECONCILIATION -- ONE SHIFT, ONE AS-AT DATE (SYNTHETIC)
================================================================================
FILE              GRC-0001
OPERATION         OP-12  open-pit gold operation, invented for this corpus
PIT               P3
SHIFT             2026-08-09 NIGHT  18:00 to 06:00
AS AT             2026-08-13
PACK COMPILED     2026-08-16
REGISTER ROW      RR-P3-260809-N
UNITS             tonnes; grades in g/t; metal in grams

-- RECORDED TOLERANCES (from the reconciliation register) ----------------------
DILUTION TOLERANCE              8%
METAL BALANCE TOLERANCE         6%

-- GRADE CONTROL RELEASE (dig blocks depleted this shift, survey pickup) -------
BLOCK        CLASS  EST TONNES  EST G/T  RELEASED    DESTINATION
GC-1105-19   WASTE         284     0.22  2026-08-08  DUMP
GC-1120-06   ORE           448     1.97  2026-08-07  MILL
GC-1135-22   ORE           385     2.54  2026-08-08  MILL
GC-1150-06   WASTE         270     0.20  2026-08-08  DUMP
GC-1165-11   ORE           267     1.78  2026-08-05  MILL
GC-1180-14   ORE           641     1.94  2026-08-05  MILL

-- TRUCK DISPATCH (fleet system export) ----------------------------------------
LOAD      TIME   TRUCK   LOADER  BLOCK        DEST  PAYLOAD T
L-64545   18:11  HT-232  EX-05   GC-1120-06   MILL         88
L-64547   18:15  HT-220  EX-05   GC-1120-06   MILL         95
L-64551   18:24  HT-202  EX-05   GC-1120-06   MILL         91
L-64555   18:25  HT-203  EX-02   GC-1105-19   DUMP         96
L-64559   18:45  HT-220  EX-05   GC-1120-06   MILL         86
L-64562   18:46  HT-232  EX-05   GC-1120-06   MILL         84
L-64564   18:57  HT-202  EX-05   GC-1180-14   MILL         91

Abridged — the file continues.

The outcomeWhat a good result looks like

One shift pack in, one row out: which loads count, which tipped at the mill, which blocks are ore and which assay rows are in force, every load's flags, every ore block's metal gap in hundredths of a gram, every exception and one of five GCR-2026 verdicts. 54 of 64 packs come back with all seven graded fields right, against 40 for the best free floor and 0 for the shift spreadsheet's own status.

And when it cannot

And what it does when it cannot. On the scored run 64 of 64 replies parsed, 0 stopped at the ceiling and no call failed. The 10 packs it got wrong are named in the kit README with what it answered: 2 late notes it followed (GRC-0005, GRC-0007), 6 deciding notes it ignored — two voided loads kept, two blocks re-issued ORE kept as waste, one block re-issued WASTE kept as ore and one withdrawn assay kept — and 2 dispatch columns it misread (GRC-0018, GRC-0043). 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.

  • Your fleet system records a voided load, a redirect at the ROM gate and a re-issued release as a STATUS, and your laboratory system marks a rejected re-assay — the free modal floor, and do not buy a call at all
    40 of 64 packs for $0.00. Ore to the dump, waste to the mill, missing tickets, metal imbalance and dilution are all decidable from columns, dates and the register, and on those 40 packs the floor gets 40 and the paid call 36.
  • Voids, gate redirects, re-issues and assay rejections arrive as free text — a dispatch desk note, a pit control radio log, a laboratory email pasted into the pack — the paid call
    This is the whole product. On the 24 packs where a sentence decides a reading the paid arm is 18, the modal floor 0 and the best vocabulary floor 13.
  • You want ore on the waste dump or an unweighed mill load never reported as RECONCILED — the paid call, and read reconciled_where_exception beside it
    The station returns RECONCILED on a flagged shift 2 times for the paid arm (GRC-0011, GRC-0020 — blocks re-issued ORE it kept as waste), 6 for the modal floor, 7 for one_load and 44 for the shift spreadsheet's own status.
  • You want the shift spreadsheet's own reconciliation status audited — either paid or free — both beat it comprehensively
    The spreadsheet's status disagrees with GCR-2026 on 27 of 64 packs and gets 0 whole: it returns no reading at all, and the station fed nothing returns RECONCILED on 44 flagged shifts. It is published as an arm so the comparison is against what is running today rather than against nothing.

And where nothing here is good enough:

  • Notes are routinely recorded after the AS AT date the shift is reconciled at — neither alone — compile the pack at AS AT, or add a date check in front of the call
    The paid arm gets 1 of the 4 date traps and followed the late note on 2 (GRC-0005, GRC-0007); the modal floor gets all 4 by never reading a note. A pack compiled at AS AT makes the date question disappear.
  • Your mine runs ROM or low-grade stockpiles, blends, several commodities, or blocks mined across shifts — neither, yet
    No file in this corpus does. The unit of work is one shift's depleted blocks to two destinations, and every percentage on this page is against that unit.

At a glanceHow the whole thing runs

84%rechecked all correct pct
2,209 msp50, end to end
$1.65per 1,000 shift packs · the fast tier

Run once, for real, on 2026-09-13. 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 shift packs in the same seven-block shape and data/shifts.json with your own reconciliation register, then run python3 -m evals.run --run-id b000-<yours>-modal --floor modal — 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 shift for arithmetic you already have. That is the case against the best-fitting scenario (“Your fleet system records a voided load, a redirect at the ROM gate and a re-issued release as a STATUS, and your laboratory system marks a rejected re-assay”). 6 scenarios scored in all, each with its own. Eval lens →
Where does it stop working?A load tipped on a ROM stockpile, a low-grade stockpile or a blend. GCR-2026 has two destinations, MILL and DUMP, and a third reads as a misrouting. 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 no confidence interval is claimed anywhere on this page. 9 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-13 — r001-grade-reconcile. 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 key configured renders the whole board, all five free floors and every committed run, and scores the modal floor offline for $0.00. 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.

A living map of modern AI — kept current every morning