The business caseThe problem this solves
An engineering baseline says what a unit was designed to carry, position by position, and every line states which units it applies to. The as-built record says what was fitted. Reconciling them is a join — except that on 23 of these 62 packets the configuration system's own deviation list is wrong, because a line's effectivity does not cover this unit, an engineering order was released and the baseline was never re-issued, one was raised and refused and looks identical, or a line printed INSTALLED describes a part that was fitted for test and taken off. Somebody has to open the packet, read the clause under every baseline line and the remark under every build line, decide what is actually required and what is actually fitted, and name each difference by its kind before the configuration board sees it. Opening one unit's reconciliation packet, reading the effectivity clause under every baseline line against the unit's serial, variant and embodied bulletins, reading the remark under every build line to decide whether the part is really at that position, checking the engineering notes for an order that was actually released, joining the two tables position by position, and naming each difference by its kind.
Audience
A configuration management desk closing a build, and the engineer who takes the packet to the board. Whoever has to say what differs before anybody decides what to do about it. Every number on these pages came from one real run of this code, not from a vendor page.
The inputThe actual reconciliation packet
The corpus is 62 reconciliation packet, 0.12 MB (txt 62). It is generated because it has to be. A real as-built record is a manufacturer's own configuration data, and the exact shapes this kit measures — a line that does not apply to this unit, an order raised and refused, a part logged as fitted that is not there — are the rows nobody would publish. Generating it also makes the key DERIVED rather than written: each packet is built as a structure, the tables are rendered from it, and ABR-2026 is applied to the same structure by src/policy.py. There is no second place the answer lives.
The corpus
- The 62 reconciliation packetgenerated 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 unit serial, assembly, part number, revision, bulletin, order, date and remark is generated from one seed, and there is no personal data at all — evals/check_labels.py sweeps all 62 packets for six families of identifier on every run and reports 0. On its FIRST run it convicted eleven packets for a postal address, because the invented assembly name rendered as
4471 FLAP DRIVE; the assembly was renamed and the scanner was not weakened.
Swap this folder for your own material and the kit is pointed at your reconciliation packet. That is the whole change — there is no database to migrate.
AS-BUILT RECONCILIATION PACKET ABR-0001
Unit: FSA-0101 Assembly: ASY-4471 FLAP ACTUATOR ASSEMBLY
Baseline: BL-4471 rev E Build closed: 2026-06-03
Variant: short-body Embodied: SB-27-118
THE ENGINEERING BASELINE, as issued
LINE POS PART NO REV QTY CLASS
BL-0010 P-010 4471-101-01 A 1 ITEM
EFF: units 0099 and subsequent
BL-0020 P-020 4471-114-02 B 1 ITEM
EFF: all units
BL-0030 P-030 4471-127-03 C 1 ITEM
EFF: all units
BL-0040 P-040 4471-140-04 D 1 ITEM
EFF: all units
BL-0050 P-050 4471-153-01 A 1 ITEM
EFF: all units
BL-0060 P-060 4471-166-02 B 1 ITEM
EFF: all units
BL-0070 P-070 4471-179-03 C 1 REF
EFF: all units
THE AS-BUILT RECORD, as closed
LINE POS PART NO REV SERIAL STATUS
AB-0010 P-010 4471-101-01 A SN-10007 INSTALLED
AB-0020 P-020 4471-114-02 B SN-10014 INSTALLED
REMARK: torque check signed at station 30
AB-0030 P-030 4471-127-03 C SN-10021 INSTALLED
AB-0040 P-040 4471-140-04 D SN-10028 INSTALLED
AB-0050 P-050 4471-153-01 A SN-10035 INSTALLED
AB-0060 P-060 4471-166-02 B SN-10042 INSTALLED
AB-0070 P-030 4471-400-01 C SN-10049 REMOVED
REMARK: taken off at station 25 and returned to stores; the replacement is recorded above
AB-0080 P-080 4471-800-01 A SN-10056 INSTALLED
ENGINEERING NOTES
- The baseline was issued at the current revision and has not been re-issued since.
THE CONFIGURATION DESK'S DEVIATION PANEL, as it stands
POS KIND
P-080 EXTRA
deviations 1 state REV-OR-SUB
The outcomeWhat a good result looks like
One packet in, one row out: which printed lines this procedure treats differently from the tables that printed them, whether an engineering order was actually in force, and one verdict from a closed set of five — RECORD-BROKEN, MISSING-PART, WRONG-POSITION, REV-OR-SUB or CONFORMS. The deviation set, each deviation's kind and the count are re-derived in pure code from those two readings and the packet's own tables, so they follow ABR-2026 whatever the reply said. It never dispositions a deviation and it never says a word about airworthiness.
And when it cannot
And what it does when it cannot. On the scored run 61 of 62 replies parsed; the one that did not wrote its own working into the why string with an unescaped quote, which broke the JSON — it is counted WRONG and stays in the denominator, with its raw head in failures. Nothing stopped at the ceiling. What it gets wrong is published by name: 3 packets carry a deviation the arm reported at a position the baseline does not require of this unit, 6 have a deviation it missed at such a position, and 1 count a part whose own remark says it is not there.
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 effectivity is a serial range, or a structured field in a PLM system — the free rules floor, and do not buy a call at all
On the 8 packets whose finding is a serial range the free floor is right 7 times and the paid arm 2. A range is arithmetic on a serial the header already prints; there is nothing in it for a model to read. - Your effectivity clauses are about a BUILD VARIANT, an option, or a line superseded inside the baseline itself — the paid call, and read this family's own rate before anything else
This is the one family the money buys and it buys it completely: 7 of 8 for the paid arm against 0 for the free floor. There is no token to anchor a regex on and no polarity to invert — the clause is a sentence about a word in the header. - Your build records carry remarks that describe removals, duplicates and errors — some about this line and some about another — the paid call, with the keep-remark family's own rate in front of you
A removal vocabulary drops 8 lines that are really there; the paid arm drops 2. But it also misses 1 parts that are genuinely not there against the floor's 4, so the family is a narrow win rather than a clean one: 13 of 24 against 12. - You need to know whether an engineering order was actually released — either arm — and prefer the free one
62 of 62 for BOTH arms. Ten wordings put 'released', 'presented to the change board' and 'superseded' on both sides, and a modal-and-refusal word list still separates every one of them. The call buys nothing here and the grader's own ops table says so.
And where nothing here is good enough:
- You need somebody to decide what happens to a deviation — neither arm. This kit will not do it and cannot be made to
R-7 is enforced as a SHAPE: the answer contract offers no field a disposition could go in, asserted at import against 33 forbidden names. 0 of 19 attacked packets proposed one, including four handed a clause asking in terms. The configuration management board decides.
At a glanceHow the whole thing runs
Run once, for real, on 2026-09-09. 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 packets in the same shape and data/units.json with your own unit register, then rebuild the key by labelling them. ⚠︎ WHAT STOPS BEING TRUE THE MOMENT YOU DO. Corpus lens → |
| When is this the wrong choice? | Avoid: Paying per packet for a comparison you can write in an afternoon — and then reading 64.5 pct as if it applied to that family. That is the case against the best-fitting scenario (“Your effectivity is a serial range, or a structured field in a PLM system”). 5 scenarios scored in all, each with its own. Eval lens → |
| Where does it stop working? | A baseline that is not fixed-width columns with the effectivity printed underneath. src/packet.py's row regex is the shape these packets print; a PLM export or an XML configuration file needs a different parser and nothing above it changes. 6 recorded failure modes, each from a run rather than a guess. Corpus lens → |
| What was never verified? | WHETHER A REAL AS-BUILT PACKET LOOKS ANYTHING LIKE THIS. The corpus is generated. 6 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-09 — r001-asbuilt-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, all six committed runs and every screenshot. python3 -m evals.check_labels and python3 tools/build_corpus.py --check both run on a machine with nothing installed, and python3 -m evals.run --run-id b000-asbuilt-recon-rules --floor rules reproduces the number the paid arm has to beat, for $0.00.






