Understand the failure.
Verify the repair.
Small, reproducible software failures. The broken implementation, the fix that didn’t work, and the one that passed—preserved together.
Explore the cases ↓How results are verified ↗WHAT THE ARCHIVE CONTAINS
100840 executable cases. 20168 are open.
Every case records the implementation that fails, the fix that did not work, and the repair that passed its checks—with recorded outputs and source hashes. This release adds 100840 cases across 20168 failure mechanisms and 254 domains.
The open tier gives you the failure and the unsuccessful fix for one case in every mechanism. The remaining 80672 cases, 5 variants per mechanism, are member-only: the verified repair, its recorded checks, and the full fixture suite are held in the member archive. Read the methodology ↗
A RECORD OF WHAT WENT WRONG
Browse the archive / 100840
The conversion rate is rounded to four decimals before use · case 01
Large conversions at five- or six-decimal rates are off by many minor units.
The conversion rate is rounded to four decimals before use · case 02
Large conversions at five- or six-decimal rates are off by many minor units.
The conversion rate is rounded to four decimals before use · case 03
Large conversions at five- or six-decimal rates are off by many minor units.
The conversion rate is rounded to four decimals before use · case 04
Large conversions at five- or six-decimal rates are off by many minor units.
The conversion rate is rounded to four decimals before use · case 05
Large conversions at five- or six-decimal rates are off by many minor units.
Cash rounding is applied to each line instead of the basket total · case 01
A basket of 1.02 and 1.02 is charged 2.00 instead of 2.05.
Cash rounding is applied to each line instead of the basket total · case 02
A basket of 1.02 and 1.02 is charged 2.00 instead of 2.05.
Cash rounding is applied to each line instead of the basket total · case 03
A basket of 1.02 and 1.02 is charged 2.00 instead of 2.05.
Cash rounding is applied to each line instead of the basket total · case 04
A basket of 1.02 and 1.02 is charged 2.00 instead of 2.05.
Cash rounding is applied to each line instead of the basket total · case 05
A basket of 1.02 and 1.02 is charged 2.00 instead of 2.05.
A 5-rappen tie on a cash refund rounds toward positive infinity · case 01
A cash refund of -2.075 pays out -2.05 while a 2.075 sale charges 2.10.
A 5-rappen tie on a cash refund rounds toward positive infinity · case 02
A cash refund of -2.075 pays out -2.05 while a 2.075 sale charges 2.10.
A 5-rappen tie on a cash refund rounds toward positive infinity · case 03
A cash refund of -2.075 pays out -2.05 while a 2.075 sale charges 2.10.
A 5-rappen tie on a cash refund rounds toward positive infinity · case 04
A cash refund of -2.075 pays out -2.05 while a 2.075 sale charges 2.10.
A 5-rappen tie on a cash refund rounds toward positive infinity · case 05
A cash refund of -2.075 pays out -2.05 while a 2.075 sale charges 2.10.
Every non-card tender receives cash rounding · case 01
TWINT and voucher payments are rounded to 0.05 as if paid in coins.
Every non-card tender receives cash rounding · case 02
TWINT and voucher payments are rounded to 0.05 as if paid in coins.
Every non-card tender receives cash rounding · case 03
TWINT and voucher payments are rounded to 0.05 as if paid in coins.
Every non-card tender receives cash rounding · case 04
TWINT and voucher payments are rounded to 0.05 as if paid in coins.
Every non-card tender receives cash rounding · case 05
TWINT and voucher payments are rounded to 0.05 as if paid in coins.
A cash tender label with different case or padding is not recognised · case 01
'CASH' and ' cash ' payments are charged the exact total.
A cash tender label with different case or padding is not recognised · case 02
'CASH' and ' cash ' payments are charged the exact total.
A cash tender label with different case or padding is not recognised · case 03
'CASH' and ' cash ' payments are charged the exact total.
A cash tender label with different case or padding is not recognised · case 04
'CASH' and ' cash ' payments are charged the exact total.
A cash tender label with different case or padding is not recognised · case 05
'CASH' and ' cash ' payments are charged the exact total.
The cash rounding adjustment is reported with the wrong sign · case 01
Rounding 2.02 down to 2.00 reports an adjustment of +0.02.
The cash rounding adjustment is reported with the wrong sign · case 02
Rounding 2.02 down to 2.00 reports an adjustment of +0.02.
The cash rounding adjustment is reported with the wrong sign · case 03
Rounding 2.02 down to 2.00 reports an adjustment of +0.02.
The cash rounding adjustment is reported with the wrong sign · case 04
Rounding 2.02 down to 2.00 reports an adjustment of +0.02.
The cash rounding adjustment is reported with the wrong sign · case 05
Rounding 2.02 down to 2.00 reports an adjustment of +0.02.
A partial close re-weights the average rate · case 01
After selling part of a long position the remaining lot shows a new average and wrong unrealized P&L.
A partial close re-weights the average rate · case 02
After selling part of a long position the remaining lot shows a new average and wrong unrealized P&L.
A partial close re-weights the average rate · case 03
After selling part of a long position the remaining lot shows a new average and wrong unrealized P&L.
A partial close re-weights the average rate · case 04
After selling part of a long position the remaining lot shows a new average and wrong unrealized P&L.
A partial close re-weights the average rate · case 05
After selling part of a long position the remaining lot shows a new average and wrong unrealized P&L.
A position flip keeps the old lot's average rate · case 01
A long position flipped short reports the old long average for the new short lot.
A position flip keeps the old lot's average rate · case 02
A long position flipped short reports the old long average for the new short lot.
A position flip keeps the old lot's average rate · case 03
A long position flipped short reports the old long average for the new short lot.
A position flip keeps the old lot's average rate · case 04
A long position flipped short reports the old long average for the new short lot.
A position flip keeps the old lot's average rate · case 05
A long position flipped short reports the old long average for the new short lot.
Realized P&L on a short position has the wrong sign · case 01
Buying back a short below its average books a loss.
Realized P&L on a short position has the wrong sign · case 02
Buying back a short below its average books a loss.
Realized P&L on a short position has the wrong sign · case 03
Buying back a short below its average books a loss.
Realized P&L on a short position has the wrong sign · case 04
Buying back a short below its average books a loss.
Realized P&L on a short position has the wrong sign · case 05
Buying back a short below its average books a loss.
Unrealized P&L is measured as average minus spot · case 01
A long position shows a loss when spot is above its average.
Unrealized P&L is measured as average minus spot · case 02
A long position shows a loss when spot is above its average.
Unrealized P&L is measured as average minus spot · case 03
A long position shows a loss when spot is above its average.
Unrealized P&L is measured as average minus spot · case 04
A long position shows a loss when spot is above its average.
Unrealized P&L is measured as average minus spot · case 05
A long position shows a loss when spot is above its average.
A zero-quantity fill on a flat position invents an average rate · case 01
A flat book reports an average rate after a zero-quantity booking correction.
A zero-quantity fill on a flat position invents an average rate · case 02
A flat book reports an average rate after a zero-quantity booking correction.
A zero-quantity fill on a flat position invents an average rate · case 03
A flat book reports an average rate after a zero-quantity booking correction.
A zero-quantity fill on a flat position invents an average rate · case 04
A flat book reports an average rate after a zero-quantity booking correction.
A zero-quantity fill on a flat position invents an average rate · case 05
A flat book reports an average rate after a zero-quantity booking correction.
Realized P&L is rounded to cents after every closing trade · case 01
Several small closes accumulate a cent-level discrepancy against the exact realized total.
Realized P&L is rounded to cents after every closing trade · case 02
Several small closes accumulate a cent-level discrepancy against the exact realized total.
Realized P&L is rounded to cents after every closing trade · case 03
Several small closes accumulate a cent-level discrepancy against the exact realized total.
Realized P&L is rounded to cents after every closing trade · case 04
Several small closes accumulate a cent-level discrepancy against the exact realized total.
Realized P&L is rounded to cents after every closing trade · case 05
Several small closes accumulate a cent-level discrepancy against the exact realized total.
The fee is converted and rounded separately from the gross amount · case 01
The payout differs by a minor unit from converting the net amount once.
The fee is converted and rounded separately from the gross amount · case 02
The payout differs by a minor unit from converting the net amount once.
The fee is converted and rounded separately from the gross amount · case 03
The payout differs by a minor unit from converting the net amount once.
The fee is converted and rounded separately from the gross amount · case 04
The payout differs by a minor unit from converting the net amount once.
The fee is converted and rounded separately from the gross amount · case 05
The payout differs by a minor unit from converting the net amount once.
The percentage fee is floored instead of rounded up · case 01
A 1% fee on 1001 minor units is 10 instead of 11.
The percentage fee is floored instead of rounded up · case 02
A 1% fee on 1001 minor units is 10 instead of 11.
The percentage fee is floored instead of rounded up · case 03
A 1% fee on 1001 minor units is 10 instead of 11.
The percentage fee is floored instead of rounded up · case 04
A 1% fee on 1001 minor units is 10 instead of 11.
The percentage fee is floored instead of rounded up · case 05
A 1% fee on 1001 minor units is 10 instead of 11.
The minimum fee acts as a maximum · case 01
Large transfers are charged at most the minimum fee.
The minimum fee acts as a maximum · case 02
Large transfers are charged at most the minimum fee.
The minimum fee acts as a maximum · case 03
Large transfers are charged at most the minimum fee.
The minimum fee acts as a maximum · case 04
Large transfers are charged at most the minimum fee.
The minimum fee acts as a maximum · case 05
Large transfers are charged at most the minimum fee.
A fee equal to the transfer amount yields a zero payout · case 01
A transfer entirely consumed by the fee is accepted and pays out 0.
A fee equal to the transfer amount yields a zero payout · case 02
A transfer entirely consumed by the fee is accepted and pays out 0.
A fee equal to the transfer amount yields a zero payout · case 03
A transfer entirely consumed by the fee is accepted and pays out 0.
A fee equal to the transfer amount yields a zero payout · case 04
A transfer entirely consumed by the fee is accepted and pays out 0.
A fee equal to the transfer amount yields a zero payout · case 05
A transfer entirely consumed by the fee is accepted and pays out 0.
The pip size is chosen by searching the pair text for JPY · case 01
JPY-base pairs get yen pips while forint and won pairs get four-decimal pips.
The pip size is chosen by searching the pair text for JPY · case 02
JPY-base pairs get yen pips while forint and won pairs get four-decimal pips.
The pip size is chosen by searching the pair text for JPY · case 03
JPY-base pairs get yen pips while forint and won pairs get four-decimal pips.
The pip size is chosen by searching the pair text for JPY · case 04
JPY-base pairs get yen pips while forint and won pairs get four-decimal pips.
The pip size is chosen by searching the pair text for JPY · case 05
JPY-base pairs get yen pips while forint and won pairs get four-decimal pips.
Fractional forward points are truncated to whole pips · case 01
A 12.5-pip premium is applied as 12 pips.
Fractional forward points are truncated to whole pips · case 02
A 12.5-pip premium is applied as 12 pips.
Fractional forward points are truncated to whole pips · case 03
A 12.5-pip premium is applied as 12 pips.
Fractional forward points are truncated to whole pips · case 04
A 12.5-pip premium is applied as 12 pips.
Fractional forward points are truncated to whole pips · case 05
A 12.5-pip premium is applied as 12 pips.
The outright forward is rounded to whole pips · case 01
The forward rate loses the fractional pip that the dealing screen shows.
The outright forward is rounded to whole pips · case 02
The forward rate loses the fractional pip that the dealing screen shows.
The outright forward is rounded to whole pips · case 03
The forward rate loses the fractional pip that the dealing screen shows.
The outright forward is rounded to whole pips · case 04
The forward rate loses the fractional pip that the dealing screen shows.
The outright forward is rounded to whole pips · case 05
The forward rate loses the fractional pip that the dealing screen shows.
Fully offset currencies remain in the settlement instruction list · case 01
A currency that nets to zero still produces a zero payment instruction.
Fully offset currencies remain in the settlement instruction list · case 02
A currency that nets to zero still produces a zero payment instruction.
Fully offset currencies remain in the settlement instruction list · case 03
A currency that nets to zero still produces a zero payment instruction.
Fully offset currencies remain in the settlement instruction list · case 04
A currency that nets to zero still produces a zero payment instruction.
Fully offset currencies remain in the settlement instruction list · case 05
A currency that nets to zero still produces a zero payment instruction.
INSPECTABLE BY DESIGN
Every result has a runnable source.
Runnable implementations with recorded outputs, source hashes, and explicit contracts. Related variants share a failure mechanism and belong together in evaluation splits.
Read the methodology ↗