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
Net positions are computed as paid minus received · case 01
Currencies we receive are reported as outgoing payments.
Net positions are computed as paid minus received · case 02
Currencies we receive are reported as outgoing payments.
Net positions are computed as paid minus received · case 03
Currencies we receive are reported as outgoing payments.
Net positions are computed as paid minus received · case 04
Currencies we receive are reported as outgoing payments.
Net positions are computed as paid minus received · case 05
Currencies we receive are reported as outgoing payments.
Net amounts are emitted with the raw Decimal exponent · case 01
A net of five dollars is written as '5' rather than '5.00'.
Net amounts are emitted with the raw Decimal exponent · case 02
A net of five dollars is written as '5' rather than '5.00'.
Net amounts are emitted with the raw Decimal exponent · case 03
A net of five dollars is written as '5' rather than '5.00'.
Net amounts are emitted with the raw Decimal exponent · case 04
A net of five dollars is written as '5' rather than '5.00'.
Net amounts are emitted with the raw Decimal exponent · case 05
A net of five dollars is written as '5' rather than '5.00'.
A short fraction is read as minor units without right-padding · case 01
'12.5' dollars parses as 1205 cents.
A short fraction is read as minor units without right-padding · case 02
'12.5' dollars parses as 1205 cents.
A short fraction is read as minor units without right-padding · case 03
'12.5' dollars parses as 1205 cents.
A short fraction is read as minor units without right-padding · case 04
'12.5' dollars parses as 1205 cents.
A short fraction is read as minor units without right-padding · case 05
'12.5' dollars parses as 1205 cents.
The sign of a negative amount is applied only to the whole-unit part · case 01
'-12.50' parses as -1150 cents and '-0.50' as +50.
The sign of a negative amount is applied only to the whole-unit part · case 02
'-12.50' parses as -1150 cents and '-0.50' as +50.
The sign of a negative amount is applied only to the whole-unit part · case 03
'-12.50' parses as -1150 cents and '-0.50' as +50.
The sign of a negative amount is applied only to the whole-unit part · case 04
'-12.50' parses as -1150 cents and '-0.50' as +50.
The sign of a negative amount is applied only to the whole-unit part · case 05
'-12.50' parses as -1150 cents and '-0.50' as +50.
Digit groups of any width are accepted · case 01
'1,23,4.00' is accepted as 1234.00 although it is not a valid grouped amount.
Digit groups of any width are accepted · case 02
'1,23,4.00' is accepted as 1234.00 although it is not a valid grouped amount.
Digit groups of any width are accepted · case 03
'1,23,4.00' is accepted as 1234.00 although it is not a valid grouped amount.
Digit groups of any width are accepted · case 04
'1,23,4.00' is accepted as 1234.00 although it is not a valid grouped amount.
Digit groups of any width are accepted · case 05
'1,23,4.00' is accepted as 1234.00 although it is not a valid grouped amount.
Trailing zero fraction digits beyond the exponent are rejected · case 01
'1 234,500' euros is refused although the extra digit is a zero.
Trailing zero fraction digits beyond the exponent are rejected · case 02
'1 234,500' euros is refused although the extra digit is a zero.
Trailing zero fraction digits beyond the exponent are rejected · case 03
'1 234,500' euros is refused although the extra digit is a zero.
Trailing zero fraction digits beyond the exponent are rejected · case 04
'1 234,500' euros is refused although the extra digit is a zero.
Trailing zero fraction digits beyond the exponent are rejected · case 05
'1 234,500' euros is refused although the extra digit is a zero.
French amounts grouped with a narrow no-break space are rejected · case 01
'1 234,50' from a locale-aware formatter fails to parse.
French amounts grouped with a narrow no-break space are rejected · case 02
'1 234,50' from a locale-aware formatter fails to parse.
French amounts grouped with a narrow no-break space are rejected · case 03
'1 234,50' from a locale-aware formatter fails to parse.
French amounts grouped with a narrow no-break space are rejected · case 04
'1 234,50' from a locale-aware formatter fails to parse.
French amounts grouped with a narrow no-break space are rejected · case 05
'1 234,50' from a locale-aware formatter fails to parse.
Negative minor amounts are split with floor division · case 01
-150 cents renders as '$-2.50'.
Negative minor amounts are split with floor division · case 02
-150 cents renders as '$-2.50'.
Negative minor amounts are split with floor division · case 03
-150 cents renders as '$-2.50'.
Negative minor amounts are split with floor division · case 04
-150 cents renders as '$-2.50'.
Negative minor amounts are split with floor division · case 05
-150 cents renders as '$-2.50'.
The minus sign is placed between the currency symbol and the digits · case 01
Refunds render as '$-1.50' instead of '-$1.50'.
The minus sign is placed between the currency symbol and the digits · case 02
Refunds render as '$-1.50' instead of '-$1.50'.
The minus sign is placed between the currency symbol and the digits · case 03
Refunds render as '$-1.50' instead of '-$1.50'.
The minus sign is placed between the currency symbol and the digits · case 04
Refunds render as '$-1.50' instead of '-$1.50'.
The minus sign is placed between the currency symbol and the digits · case 05
Refunds render as '$-1.50' instead of '-$1.50'.
Digit groups are cut from the left · case 01
1234 dollars renders as '$123,4.00'.
Digit groups are cut from the left · case 02
1234 dollars renders as '$123,4.00'.
Digit groups are cut from the left · case 03
1234 dollars renders as '$123,4.00'.
Digit groups are cut from the left · case 04
1234 dollars renders as '$123,4.00'.
Digit groups are cut from the left · case 05
1234 dollars renders as '$123,4.00'.
A zero-decimal currency is printed with a decimal separator · case 01
Yen amounts render as '¥1,234,567.0'.
A zero-decimal currency is printed with a decimal separator · case 02
Yen amounts render as '¥1,234,567.0'.
A zero-decimal currency is printed with a decimal separator · case 03
Yen amounts render as '¥1,234,567.0'.
A zero-decimal currency is printed with a decimal separator · case 04
Yen amounts render as '¥1,234,567.0'.
A zero-decimal currency is printed with a decimal separator · case 05
Yen amounts render as '¥1,234,567.0'.
The minor-unit fraction is not zero-padded on the left · case 01
105 cents renders as '$1.5'.
The minor-unit fraction is not zero-padded on the left · case 02
105 cents renders as '$1.5'.
The minor-unit fraction is not zero-padded on the left · case 03
105 cents renders as '$1.5'.
The minor-unit fraction is not zero-padded on the left · case 04
105 cents renders as '$1.5'.
The minor-unit fraction is not zero-padded on the left · case 05
105 cents renders as '$1.5'.
A USD holiday on the day before spot delays the value date · case 01
EURUSD traded before a USD-only holiday settles a day late.
A USD holiday on the day before spot delays the value date · case 02
EURUSD traded before a USD-only holiday settles a day late.
A USD holiday on the day before spot delays the value date · case 03
EURUSD traded before a USD-only holiday settles a day late.
A USD holiday on the day before spot delays the value date · case 04
EURUSD traded before a USD-only holiday settles a day late.
A USD holiday on the day before spot delays the value date · case 05
EURUSD traded before a USD-only holiday settles a day late.
The value date may fall on a USD holiday · case 01
EURUSD spot is set on a US holiday when dollars cannot settle.
The value date may fall on a USD holiday · case 02
EURUSD spot is set on a US holiday when dollars cannot settle.
The value date may fall on a USD holiday · case 03
EURUSD spot is set on a US holiday when dollars cannot settle.
The value date may fall on a USD holiday · case 04
EURUSD spot is set on a US holiday when dollars cannot settle.
The value date may fall on a USD holiday · case 05
EURUSD spot is set on a US holiday when dollars cannot settle.
USDCAD is settled T+2 like other pairs · case 01
USDCAD trades settle a business day late.
USDCAD is settled T+2 like other pairs · case 02
USDCAD trades settle a business day late.
USDCAD is settled T+2 like other pairs · case 03
USDCAD trades settle a business day late.
USDCAD is settled T+2 like other pairs · case 04
USDCAD trades settle a business day late.
USDCAD is settled T+2 like other pairs · case 05
USDCAD trades settle a business day late.
Spot is computed as two calendar days and then rolled forward · case 01
A Thursday trade settles on Monday only by accident; a Friday trade settles Monday instead of Tuesday.
Spot is computed as two calendar days and then rolled forward · case 02
A Thursday trade settles on Monday only by accident; a Friday trade settles Monday instead of Tuesday.
Spot is computed as two calendar days and then rolled forward · case 03
A Thursday trade settles on Monday only by accident; a Friday trade settles Monday instead of Tuesday.
Spot is computed as two calendar days and then rolled forward · case 04
A Thursday trade settles on Monday only by accident; a Friday trade settles Monday instead of Tuesday.
Spot is computed as two calendar days and then rolled forward · case 05
A Thursday trade settles on Monday only by accident; a Friday trade settles Monday instead of Tuesday.
The card amount is computed from the unrounded offered rate · case 01
The receipt shows a rate that does not reproduce the charged card amount.
The card amount is computed from the unrounded offered rate · case 02
The receipt shows a rate that does not reproduce the charged card amount.
The card amount is computed from the unrounded offered rate · case 03
The receipt shows a rate that does not reproduce the charged card amount.
The card amount is computed from the unrounded offered rate · case 04
The receipt shows a rate that does not reproduce the charged card amount.
The card amount is computed from the unrounded offered rate · case 05
The receipt shows a rate that does not reproduce the charged card amount.
The disclosed markup is measured against the offered rate · case 01
A 3% markup is disclosed as 2.92%.
The disclosed markup is measured against the offered rate · case 02
A 3% markup is disclosed as 2.92%.
The disclosed markup is measured against the offered rate · case 03
A 3% markup is disclosed as 2.92%.
The disclosed markup is measured against the offered rate · case 04
A 3% markup is disclosed as 2.92%.
The disclosed markup is measured against the offered rate · case 05
A 3% markup is disclosed as 2.92%.
The disclosed markup is rounded to nearest and can understate · case 01
A markup of 3.504% is disclosed as 3.50%.
The disclosed markup is rounded to nearest and can understate · case 02
A markup of 3.504% is disclosed as 3.50%.
The disclosed markup is rounded to nearest and can understate · case 03
A markup of 3.504% is disclosed as 3.50%.
The disclosed markup is rounded to nearest and can understate · case 04
A markup of 3.504% is disclosed as 3.50%.
The disclosed markup is rounded to nearest and can understate · case 05
A markup of 3.504% is disclosed as 3.50%.
Each micro-payment is floored independently without carrying the remainder · case 01
Three postings of 0.4 units each convert to zero in total instead of one unit.
Each micro-payment is floored independently without carrying the remainder · case 02
Three postings of 0.4 units each convert to zero in total instead of one unit.
Each micro-payment is floored independently without carrying the remainder · case 03
Three postings of 0.4 units each convert to zero in total instead of one unit.
Each micro-payment is floored independently without carrying the remainder · case 04
Three postings of 0.4 units each convert to zero in total instead of one unit.
Each micro-payment is floored independently without carrying the remainder · case 05
Three postings of 0.4 units each convert to zero in total instead of one unit.
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 ↗