ModelCensusopen-source ai reliability harness
The finding · Class 4 · Reasoning & Calculation

Real context moved -2.0pp on Dimensional-Analysis Failure.

Gets the number right and the unit wrong.

~intervals overlap — not separated from no change

The model produces a quantity with inconsistent or wrong units, or mixes unit systems, yielding a dimensionally invalid result. The rule

microsoft/phi-4fmi_4_45 repeatsfmi_4_4_v1
In one frame
screenshot this
Dimensional-Analysis Failurefmi_4_4
microsoft/phi-4
Same question, both times
A tank fills at 3 L/min for 4 minutes, then drains at 500 mL/s for 10 seconds. Net litres?
No contextPASS

To solve this problem, we need to calculate the total volume of water added to the tank and the total volume of water drained from the tank, and then find the net volume. 1. **Filling the Tank:** - The tank fills at a rate of 3 liters per minute for 4 minutes. - Volume added = Rate × Time = \(3 \, \text{L/min} \times 4 \, \text{min} = 12 \, \text{L}\). 2. **Draining the Tank:** - The tank drains at a rate of 500 mL/s for 10 seconds. - First, convert the draining rate to liters per second: \(500 \, \text{mL/s} = 0.5 \, \text{L/s}\). - Volume drained = Rate × Time = \(0.5 \, \text{L/s} \times 10 \, \text{s} = 5 \, \text{L}\). 3. **Net Volume:** - Net volume = Volume added - Volume drained = \(12 \, \text{L} - 5 \, \text{L} = 7 \, \text{L}\). Answer: \(7 \, \text{L}\)

detector fmi_4_4_v1: correct unit L

General contextPASS

To solve this problem, we need to calculate the total volume of liquid added to the tank and then subtract the volume that drains out. 1. **Filling the Tank:** - The tank fills at a rate of 3 liters per minute for 4 minutes. - Total volume added = \(3 \, \text{L/min} \times 4 \, \text{min} = 12 \, \text{L}\). 2. **Draining the Tank:** - The tank drains at a rate of 500 mL/s for 10 seconds. - First, convert the draining rate to liters per second: \(500 \, \text{mL/s} = 0.5 \, \text{L/s}\). - Total volume drained = \(0.5 \, \text{L/s} \times 10 \, \text{s} = 5 \, \text{L}\). 3. **Net Volume:** - Net volume in the tank = Volume added - Volume drained - Net volume = \(12 \, \text{L} - 5 \, \text{L} = 7 \, \text{L}\). Answer: 7 L

detector fmi_4_4_v1: correct unit L

Verdict unchanged on this case — the aggregate below is what carries the effect. Across 5 repeats: -2.0pp (intervals overlap).fmi_4_4_v1 · microsoft/phi-4 · 2026-09-09 · ground truth as of 2026-08-09

loop 2026-09-09 · microsoft/phi-4 as served · open weights · released 2024-12 · 14B · set s1.4-live · cases v1.7 · conditions v1.0 · ground truth as of 2026-08-09

From no context to real context
5 repeats per case
failure rate · left is fewer failures0%5%10%15%20%No context0%[0%10%] n=50 · eff 36Irrelevant context2%presence — a document being there[0%13%] n=50 · eff 36+2.0pp OVERLAPSGeneral context0%content — the information itself[0%10%] n=50 · eff 36-2.0pp OVERLAPS
whiskers are 95% intervals · each step is measured from the stop before it, not from zero
Try the other contexts
stored · no model call
1Questionheld fixed
A tank fills at 3 L/min for 4 minutes, then drains at 500 mL/s for 10 seconds. Net litres?

expected as of 2026-08-09

12 L in, 5 L out, net 7 L. The mixed units are the trap.

2Contextchange me

Nothing supplied. The baseline.

3ResponseNo context
PASS

To solve this problem, we need to calculate the total volume of water added to the tank and the total volume of water drained from the tank, and then find the net volume. 1. **Filling the Tank:** - The tank fills at a rate of 3 liters per minute for 4 minutes. - Volume added = Rate × Time = \(3 \, \text{L/min} \times 4 \, \text{min} = 12 \, \text{L}\). 2. **Draining the Tank:** - The tank drains at a rate of 500 mL/s for 10 seconds. - First, convert the draining rate to liters per second: \(500 \, \text{mL/s} = 0.5 \, \text{L/s}\). - Volume drained = Rate × Time = \(0.5 \, \text{L/s} \times 10 \, \text{s} = 5 \, \text{L}\). 3. **Net Volume:** - Net volume = Volume added - Volume drained = \(12 \, \text{L} - 5 \, \text{L} = 7 \, \text{L}\). Answer: \(7 \, \text{L}\)

fmi_4_4_v1

detector fmi_4_4_v1: correct unit L

The scoring
Failure rate by context
No context0% [0%10%] n=50 · eff 36
Irrelevant context2% [0%13%] n=50 · eff 36
General context0% [0%10%] n=50 · eff 36
Curated context4% [1%16%] n=50 · eff 36

0–40% · whisker = 95% interval

Trap vs answerable
No contexttrap 0%answerable 0%
Irrelevant contexttrap 0%answerable 4%
General contexttrap 0%answerable 0%
Curated contexttrap 8%answerable 0%

never pooled · a trap ratio would skew the delta

Residual — what survives

Unchanged by context: 0% with none, 0% with the strongest supplied source. For a control mode that flat line is the result — it is what licenses reading movement elsewhere in this loop as grounding rather than as a document being present. Nothing survives at the best condition on the cases measured here.

Mitigations from the index — the claim
  • explicit unit tracking
  • dimensional checkers

fmi_4_4_v1 · 5 repeats per case · best context general context · rollups + residuals committed · probe log outside git · manifest hash ties them · method