Day 2 · Compliance batch · collected 2026-09-01

Ten regulatory families graded by mechanical recomputation

The first day with real ground truth. Every shown computation was re-executed independently in scratch Python, so a verdict here is a recomputation.

141
files collected
15
models
10
prompt families
~720
computations recomputed
Presenter mode shows one section per screen. Arrow keys move, A toggles autoplay, Esc exits.
1
Ranking

How the field ranked on this day

JCS canonicalization: exact vectors passed
Share of each model’s own JCS vector set that canonicalized exactly under RFC 8785. Class-1 arithmetic saturated near 100% for most of the field, so this is the slice where Day 2 separates.
kimi12/12sonnet12/12meta10/10chatgpt10/11grok10/11qwen9/10solar17/19deepseek13/15mimo9/11yuanbao9/11glm 5.3 flash*9/11gemini6/8minimax m36/9minimax 2.75/10mistral3/11
top value groupbottom value groupbetween
Denominators differ because models returned different numbers of vectors, so a short set and a long set are not the same test. solar’s 17/19 is the largest set in the batch; mistral’s 3/11 is six substantive failures. * The free web chat build of GLM 5.3 Flash is the quantized one; the API-harness deployment of the same model name is a different build, and the two do not score alike.
2
The prompt

Eight C1 families and two C2 slices

Each prompt pinned one regulatory instrument by its exact citation, supplied the decisive rule, and asked for worked cases with a weakest_point. Several prompts were built specifically to expose the place implementations err.

Goal of this animation

Show the TRID ten percent tolerance rule the Day 2 prompt pinned, and the wrong method it was built to catch.

zero toleranceno increase allowed10% aggregate tolerancewhere implementations errno tolerance limitany change allowedfeeLECDchangerecording100180+80title services600570−30survey300340+40total1,0001,090+90aggregate against aggregatetotal CD 1,090 against total LE × 1.10 = 1,100within tolerancesum of the increases80 + 40 = 120 against 10% of 1,000 = 100flags a false violationthe defect this prompt exists to catchIllustrative numbers. Day 2 recomputed about 720 real cases.
Step 5 of 5

The defect this prompt exists to catch

A case that sums only the increases is the defect the prompt was built to expose. These numbers are illustrative; Day 2 recomputed about 720 real cases.

Left and right arrow keys step back and forward once the player has focus. Link to a step with #xp-day2-step=N.
PROMPT-C1-TRID-CASES · C1-TRID-v1one of ten Day-2 prompts
This task is about the TRID fee-tolerance rules — 12 CFR §1026.19(e)(3) — the zero-tolerance, 10%-aggregate-tolerance, and no-tolerance-limit buckets for comparing Loan Estimate to Closing Disclosure charges.

Produce up to 5 worked tolerance-test cases, each with a fee table (LE amount vs CD amount per fee, bucket assignment per the rule) — and at least 2 cases MUST have mixed directions inside the 10% bucket (some fees increased, some decreased), because the 10% test compares AGGREGATE to AGGREGATE and mixed-direction cases are where implementations get it wrong.

...`computation`: step by step — per-bucket sums, the 10% threshold (Σle × 0.10), the aggregate comparison (Σcd vs Σle, NOT the sum of increases) ... `weakest_point`

Hard rules: the load-bearing rule is aggregate-vs-aggregate for the 10% bucket — a case that computes the sum-of-increases instead is itself the defect this suite exists to catch.
The full Day-2 set: C1-APPJ-EXAMPLES · C1-CCD2-APRC · C1-FRTB-ES · C1-GLOBE-EXAMPLES · C1-IRB-EXAMPLES · C1-MICA-RESERVE · C1-OFAC-GRAPHS · C1-TRID-CASES · C2-JCS-EDGES · C2-RECEIPT-ANATOMY

Families and the rule each one turns on:

TRID: aggregate vs sum-of-increasesOFAC: attribution vs multiplicationGLOBE: rate-year pairingAPPJ: actuarial equationIRB: CRE31 groupingFRTB: ES multipliersMiCA: reserve compositionCCD2: APRCJCS: RFC 8785Receipt: risc0 anatomy
3
What graded it

Two mechanical grading passes

Station
Opus 5
First batch: 55 JSONs, 14 models × 4 prompts (GLOBE, APPJ, TRID, OFAC). Every shown computation re-executed independently in scratch Python. Verdicts are mechanical rather than judgment-based.
digest/day2-c1-adjudication.md
Station
Opus 5
Second batch: 86 files, 15 models × 6 prompts (IRB, FRTB, MiCA, CCD2, RECEIPT, JCS), plus two Solar cross-adds. CRE31 closed form with statistics.NormalDist; a bisection APRC solver; a scratch RFC 8785 canonicalizer self-tested against the RFC's own number vectors.
digest/day2-c1b-c2-adjudication.md
Vocabulary
Five verdicts, two of them added
VERIFIED / WRONG-INPUT / SELF-INCONSISTENT were given. Two more were unavoidable and are labelled as such: WRONG-RULE (arithmetic exact, rule misapplied) and INDETERMINATE.
§2 of both adjudications
4
How each model performed

The first class-1 arithmetic batch across four families

Per-model Class-1 verdict, first batch
ModelVerifiedSelf-inconsistentWrong-inputWrong-ruleAnti-reversalClass-1 verdict
chatgpt15/150000EXEMPLARYAPPJ rates match independent bisection to 1e-10 across four code paths; 5/5 GLOBE examples close. One wrong-content file (OFAC = its TRID) was not assessable
kimi20/200000EXEMPLARYClean on all four prompts; reproduces both published APPJ anchors
grok20/200000EXEMPLARYBoth APPJ anchors, full-attribution OFAC
meta18/180000EXCELLENTLabels all APPJ cases truthfully as constructed
qwen19/190000EXCELLENTContributes the sharpest TRID discriminator (+400/−400, aggregate zero)
sonnet18/180000EXCELLENTThe only 47% near-miss OFAC vector
minimax 2.719/190000EXCELLENTSee the reinstatement below
yuanbao19/200001STRONGForm 1 and Form 3 closed forms verify exactly; one TRID case titled “aggregate passes” while its own verdict is a violation
glm 5.3 flash14/1401 (GLOBE rate year)00STRONGBest OFAC gate case in the batch; its trid file is absent
mimo19/201 (OFAC)000GOODProduced parseable JSON for the first time in the collection
gemini15/16001 (OFAC multiplicative)0GOOD (with a rule defect)Arithmetic exact, legal treatment wrong on the one case the prompt was built to expose
deepseek18/201 (TRID)1 (GLOBE rate pair)00MIXEDSubstituted its own inputs mid-computation to manufacture a violation
mistral17/203 (OFAC)000MIXEDCorrect attribution arithmetic; blocked-entity verdicts omit the intermediaries
minimax m33/3 recovered0000NOT ASSESSABLEToken dropout in 3 of 4 files
Class-1 arithmetic, second batch: IRB, FRTB, MICA, CCD2, RECEIPT, JCS
ModelIRBFRTBMICACCD2JCSBatch-2 verdict
chatgpt4/4✓✓4/410/11EXEMPLARYIRB to 15 s.f.; JCS recovered only by salvage (its inner quotes were unescaped)
kimi4/4✓✓absent12/12EXEMPLARYThe only model that derives its Basel benchmark (CRE99.2 at LGD 40%, scaled) rather than asserting one; canonicalizer exact on all 12
sonnet4/4✓✓4/4 + 1 truthful UNKNOWN12/12EXEMPLARYDeclines to assert an APRC it cannot close; joint-best JCS
meta4/4✓✓✓10/10EXEMPLARYThe only receipt file with source-level detail: domain-separator tags, 4-byte selector, 128-bit claim-digest split
grok4/4✓✓5/510/11EXCELLENTOne escaping-form miss only
qwen4/4✓✓ (4 UNKNOWN flags)5/59/10EXCELLENTIts MiCA flags sit on the one figure now marked NEEDS-RETRIEVAL
mimoabsent✓✓5/59/11STRONGSecond consecutive batch of parseable, correct output
glm 5.3 flash––––9/11INSUFFICIENT DATA2 of 6 files. One anti-reversal instance
yuanbaoWRONG-RULE 4/4✓✓5/59/11SPLITExact on APRC, wrong grouping on CRE31
deepseek4/4✓✓SELF-INCONSISTENT 313/15, 1 WRONG-RULEMIXEDThe batch’s only UTF-16 key-order failure; APRCs disconnected from its own schedules
gemini3/4, 1 SELF-INCONSISTENT✓✓SELF-INCONSISTENT 36/8MIXEDNominal rate reported as APRC; fabricated a benchmark that confirms its own error
solarWRONG-RULE 4/4✓✓1/117/19SPLITBest JCS volume in the batch, worst IRB formula
minimax 2.7WRONG-RULE 4/4 + WRONG-INPUT✓✓WRONG-RULE 25/10WEAK but self-flaggedFour independent IRB defects, each correctly reported as not matching benchmark
minimax m3SELF-INCONSISTENT✓✓SELF-INCONSISTENT 36/9WEAKFabricated a BCBS table citation to explain away its own arithmetic
mistralWRONG-RULE 4/4✓✓WRONG-RULE + SELF-INCONSISTENT 33/11BOTTOMWeakest on arithmetic, rules and output integrity simultaneously
JCS: RFC 8785 canonicalization, exact scores
ModelOKFormWrongScoreNote
solar172017/19Largest set (21 vectors); both misses are escaping form
deepseek130213/15The only key-order failure in the batch
kimi120012/12Correct on all 12
sonnet120012/12Correct on all 12
chatgpt101010/11Recovered only by salvage
grok101010/11
meta100010/10One vector has an empty input_json; its stated output for it is correct
mimo9209/11
yuanbao9209/11
qwen9019/10-0 preserved
glm 5.3 flash9029/11
gemini6206/8
minimax m36036/92 vectors have malformed input_json
minimax 2.75235/10
mistral3263/11Six substantive failures spanning every rule family
5
What it found

Three defect classes the vocabulary could not name

Best performer
kimi
Verified 20 of 20 first-batch claims, scored 12 of 12 on JCS, and was the only model to derive the canonicalization rule.
Weakest performer
mistral
Came bottom: six substantive JCS failures, WRONG-RULE on every IRB entry, and the batch’s weakest arithmetic.
Arithmetic correctness and rule correctness are independent failure modes
gemini gets the OFAC arithmetic exactly right and applies the US multiplicative treatment where the EU attribution test applies, on the one case the prompt was built to expose. grok is 20/20 on Class-1 and invents an EAR band elsewhere. Both close arithmetically, so a recomputation gate passes both.
The IRB grouping error appeared in four models under four different spellings
yuanbao multiplies where the grouping requires division. solar omits the /√(1−R) term entirely. minimax 2.7 multiplies and carries three further defects. mistral drops the /(1−1.5b) divisor from the formula itself. Four spellings of one structural error, and all four close on their own inputs.
Most honesty labels were real and 15% were boilerplate
weakest_point was populated on 55 of 55 files and on every item. About 40% name the true fault line: gemini’s OFAC entry names the exact axis on which it is wrong, and deepseek flags the rate year that is the wrong constant. About 45% are real but secondary and 15% are boilerplate. It still missed the one defect that mattered, deepseek’s TRID case 2, which does not mention its own input substitution.
minimax m3 dropped a JSON key mid-structure
In 3 of its 4 files minimax m3 loses a key mid-object: trid: {"name": …, "bucket": "ten_pct_aggregate", 500.00, "cd_amount": 350.00}, where the "le_amount": key has vanished. Recorded as damaged delivery rather than as a wrong answer, and the three recoverable entries were graded.
6
Source files

Where the evidence lives

🔒 All inputs are processed locally in your browser. No data is transmitted. Do not enter real personal data — use synthetic or anonymised inputs only.