{"abstract":"Crosses built from EURUSD or GBPUSD drift in the fourth significant digit.","category":"Currency rounding and FX conversion","checks":7,"contract":"solve(quotes, target): quotes maps six-letter pairs to rates (QUOTE units per BASE unit). For currency c, units per USD are: 1 for USD; quotes['USD'+c] if present (authoritative when both orientations exist); else 1/quotes[c+'USD']; else unknown. The target BBBQQQ rate = (QQQ per USD)/(BBB per USD), rounded half-even to 6 decimals and returned as a string; an unknown leg returns 'ERR:no-quote'.","contract_signature":"quotes, target","evaluation_group":"w2-currency_rounding_and_fx_conversion-usd-quote-convention-cross","failed_approach":"Rounding the inverted leg to eight decimals still perturbs the sixth decimal of large crosses.","family":"w2-currency_rounding_and_fx_conversion-usd-quote-convention-cross-inverse-leg-precision","id":"FA-62266","implementations":{"attempt":{"sha256":"0298320b4aa7779368a6b32884eeb9be413b6405f15a1e11d7586778b7d06beb","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom decimal import Decimal, ROUND_HALF_EVEN, ROUND_HALF_UP, ROUND_FLOOR, ROUND_CEILING, ROUND_DOWN, ROUND_UP, ROUND_HALF_DOWN\nN = 1\nobservations = []\ndef solve(quotes, target):\n    def per_usd(c):\n        if c == 'USD': return Decimal(1)\n        if 'USD' + c in quotes: return Decimal(quotes['USD' + c])\n        if c + 'USD' in quotes: return (1 / Decimal(quotes[c + 'USD'])).quantize(Decimal('0.00000001'))\n        return None\n    b, q = target[:3], target[3:]\n    pb, pq = per_usd(b), per_usd(q)\n    if pb is None or pq is None: return 'ERR:no-quote'\n    return format((pq / pb).quantize(Decimal('0.000001'), rounding=ROUND_HALF_EVEN), 'f')\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('regression inverse-leg-precision 1',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'EURJPY'),\n   '164.009395'),\n  ('regression inverse-leg-precision 2',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'GBPEUR'),\n   '1.167513'),\n  ('partial repair guard 2',\n   ({'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612', 'USDCAD': '1.3577'}, 'GBPCAD'),\n   '1.717490'),\n  ('control: direct usd base',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'USDJPY'),\n   '151.370000'),\n  ('control: usd quote',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'JPYUSD'),\n   '0.006606'),\n  ('control: missing leg',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'EURSEK'),\n   'ERR:no-quote'),\n  ('control: franc aussie',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'CHFAUD'),\n   '1.718443')],\n [('regression inverse-leg-precision 1',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'CHFAUD'),\n   '1.718443'),\n  ('regression inverse-leg-precision 2',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'USDEUR'),\n   '0.922935'),\n  ('partial repair guard 1',\n   ({'USDJPY': '151.37', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612', 'USDCAD': '1.3577'}, 'GBPJPY'),\n   '191.483050'),\n  ('partial repair guard 2',\n   ({'USDJPY': '151.37',\n     'EURUSD': '1.0835',\n     'GBPUSD': '1.2650',\n     'AUDUSD': '0.6612',\n     'USDCAD': '1.3577',\n     'USDEUR': '0.9231'},\n    'GBPCAD'),\n   '1.717490'),\n  ('control: usd quote',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'JPYUSD'),\n   '0.006606'),\n  ('control: missing leg',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'EURSEK'),\n   'ERR:no-quote'),\n  ('control: both orientations',\n   ({'USDJPY': '151.37',\n     'EURUSD': '1.0835',\n     'GBPUSD': '1.2650',\n     'USDCHF': '0.8801',\n     'AUDUSD': '0.6612',\n     'USDEUR': '0.9231'},\n    'EURCHF'),\n   '0.953418'),\n  ('control: euro yen',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'EURJPY'),\n   '164.009395')],\n [('regression inverse-leg-precision 1',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'USDCHF': '0.8801', 'AUDUSD': '0.6612', 'USDEUR': '0.9231'}, 'AUDCHF'),\n   '0.581922'),\n  ('regression inverse-leg-precision 2',\n   ({'EURUSD': '1.0835',\n     'GBPUSD': '1.2650',\n     'USDCHF': '0.8801',\n     'AUDUSD': '0.6612',\n     'USDCAD': '1.3577',\n     'JPYUSD': '0.006610'},\n    'CHFGBP'),\n   '0.898209'),\n  ('partial repair guard 1',\n   ({'USDJPY': '151.37',\n     'EURUSD': '1.0835',\n     'GBPUSD': '1.2650',\n     'USDCHF': '0.8801',\n     'USDCAD': '1.3577',\n     'JPYUSD': '0.006610'},\n    'GBPJPY'),\n   '191.483050'),\n  ('partial repair guard 2',\n   ({'USDJPY': '151.37',\n     'EURUSD': '1.0835',\n     'GBPUSD': '1.2650',\n     'USDCHF': '0.8801',\n     'AUDUSD': '0.6612',\n     'USDCAD': '1.3577',\n     'USDEUR': '0.9231'},\n    'GBPJPY'),\n   '191.483050'),\n  ('control: both orientations',\n   ({'USDJPY': '151.37',\n     'EURUSD': '1.0835',\n     'GBPUSD': '1.2650',\n     'USDCHF': '0.8801',\n     'AUDUSD': '0.6612',\n     'USDEUR': '0.9231'},\n    'EURCHF'),\n   '0.953418'),\n  ('control: usd to euro',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'USDEUR'),\n   '0.922935'),\n  ('control: euro yen',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'EURJPY'),\n   '164.009395'),\n  ('control: sterling euro',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'GBPEUR'),\n   '1.167513')],\n [('regression inverse-leg-precision 1',\n   ({'USDJPY': '151.37',\n     'EURUSD': '1.0835',\n     'GBPUSD': '1.2650',\n     'USDCHF': '0.8801',\n     'AUDUSD': '0.6612',\n     'USDCAD': '1.3577'},\n    'EURAUD'),\n   '1.638687'),\n  ('regression inverse-leg-precision 2',\n   ({'USDJPY': '151.37',\n     'EURUSD': '1.0835',\n     'GBPUSD': '1.2650',\n     'USDCHF': '0.8801',\n     'AUDUSD': '0.6612',\n     'USDCAD': '1.3577'},\n    'USDGBP'),\n   '0.790514'),\n  ('partial repair guard 1',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'USDCAD': '1.3577'}, 'EURJPY'),\n   '164.009395'),\n  ('partial repair guard 2',\n   ({'USDJPY': '151.37',\n     'EURUSD': '1.0835',\n     'GBPUSD': '1.2650',\n     'USDCHF': '0.8801',\n     'AUDUSD': '0.6612',\n     'USDEUR': '0.9231'},\n    'GBPCHF'),\n   '1.113326'),\n  ('control: sterling euro',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'GBPEUR'),\n   '1.167513'),\n  ('control: direct usd base',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'USDJPY'),\n   '151.370000'),\n  ('control: usd quote',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'JPYUSD'),\n   '0.006606'),\n  ('control: missing leg',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'EURSEK'),\n   'ERR:no-quote')],\n [('regression inverse-leg-precision 1',\n   ({'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612', 'USDEUR': '0.9231'}, 'EURGBP'), '0.856369'),\n  ('regression inverse-leg-precision 2',\n   ({'USDJPY': '151.37',\n     'EURUSD': '1.0835',\n     'GBPUSD': '1.2650',\n     'USDCHF': '0.8801',\n     'AUDUSD': '0.6612',\n     'USDCAD': '1.3577'},\n    'CADGBP'),\n   '0.582245'),\n  ('partial repair guard 1',\n   ({'USDJPY': '151.37',\n     'EURUSD': '1.0835',\n     'GBPUSD': '1.2650',\n     'USDCHF': '0.8801',\n     'AUDUSD': '0.6612',\n     'USDCAD': '1.3577'},\n    'GBPJPY'),\n   '191.483050'),\n  ('partial repair guard 2',\n   ({'USDJPY': '151.37',\n     'EURUSD': '1.0835',\n     'GBPUSD': '1.2650',\n     'USDCHF': '0.8801',\n     'AUDUSD': '0.6612',\n     'USDCAD': '1.3577'},\n    'EURJPY'),\n   '164.009395'),\n  ('control: missing leg',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'EURSEK'),\n   'ERR:no-quote'),\n  ('control: franc aussie',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'CHFAUD'),\n   '1.718443'),\n  ('control: both orientations',\n   ({'USDJPY': '151.37',\n     'EURUSD': '1.0835',\n     'GBPUSD': '1.2650',\n     'USDCHF': '0.8801',\n     'AUDUSD': '0.6612',\n     'USDEUR': '0.9231'},\n    'EURCHF'),\n   '0.953418'),\n  ('control: usd to euro',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'USDEUR'),\n   '0.922935')]]\nfor label, args, expected in cases[N - 1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"ce14be340e54b2ec1d341142f36fa5b8862327b17635ec1fc0d2ae2237e29214","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom decimal import Decimal, ROUND_HALF_EVEN, ROUND_HALF_UP, ROUND_FLOOR, ROUND_CEILING, ROUND_DOWN, ROUND_UP, ROUND_HALF_DOWN\nN = 1\nobservations = []\ndef solve(quotes, target):\n    def per_usd(c):\n        if c == 'USD': return Decimal(1)\n        if 'USD' + c in quotes: return Decimal(quotes['USD' + c])\n        if c + 'USD' in quotes: return (1 / Decimal(quotes[c + 'USD'])).quantize(Decimal('0.0001'))\n        return None\n    b, q = target[:3], target[3:]\n    pb, pq = per_usd(b), per_usd(q)\n    if pb is None or pq is None: return 'ERR:no-quote'\n    return format((pq / pb).quantize(Decimal('0.000001'), rounding=ROUND_HALF_EVEN), 'f')\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('regression inverse-leg-precision 1',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'EURJPY'),\n   '164.009395'),\n  ('regression inverse-leg-precision 2',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'GBPEUR'),\n   '1.167513'),\n  ('partial repair guard 2',\n   ({'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612', 'USDCAD': '1.3577'}, 'GBPCAD'),\n   '1.717490'),\n  ('control: direct usd base',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'USDJPY'),\n   '151.370000'),\n  ('control: usd quote',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'JPYUSD'),\n   '0.006606'),\n  ('control: missing leg',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'EURSEK'),\n   'ERR:no-quote'),\n  ('control: franc aussie',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'CHFAUD'),\n   '1.718443')],\n [('regression inverse-leg-precision 1',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'CHFAUD'),\n   '1.718443'),\n  ('regression inverse-leg-precision 2',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'USDEUR'),\n   '0.922935'),\n  ('partial repair guard 1',\n   ({'USDJPY': '151.37', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612', 'USDCAD': '1.3577'}, 'GBPJPY'),\n   '191.483050'),\n  ('partial repair guard 2',\n   ({'USDJPY': '151.37',\n     'EURUSD': '1.0835',\n     'GBPUSD': '1.2650',\n     'AUDUSD': '0.6612',\n     'USDCAD': '1.3577',\n     'USDEUR': '0.9231'},\n    'GBPCAD'),\n   '1.717490'),\n  ('control: usd quote',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'JPYUSD'),\n   '0.006606'),\n  ('control: missing leg',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'EURSEK'),\n   'ERR:no-quote'),\n  ('control: both orientations',\n   ({'USDJPY': '151.37',\n     'EURUSD': '1.0835',\n     'GBPUSD': '1.2650',\n     'USDCHF': '0.8801',\n     'AUDUSD': '0.6612',\n     'USDEUR': '0.9231'},\n    'EURCHF'),\n   '0.953418'),\n  ('control: euro yen',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'EURJPY'),\n   '164.009395')],\n [('regression inverse-leg-precision 1',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'USDCHF': '0.8801', 'AUDUSD': '0.6612', 'USDEUR': '0.9231'}, 'AUDCHF'),\n   '0.581922'),\n  ('regression inverse-leg-precision 2',\n   ({'EURUSD': '1.0835',\n     'GBPUSD': '1.2650',\n     'USDCHF': '0.8801',\n     'AUDUSD': '0.6612',\n     'USDCAD': '1.3577',\n     'JPYUSD': '0.006610'},\n    'CHFGBP'),\n   '0.898209'),\n  ('partial repair guard 1',\n   ({'USDJPY': '151.37',\n     'EURUSD': '1.0835',\n     'GBPUSD': '1.2650',\n     'USDCHF': '0.8801',\n     'USDCAD': '1.3577',\n     'JPYUSD': '0.006610'},\n    'GBPJPY'),\n   '191.483050'),\n  ('partial repair guard 2',\n   ({'USDJPY': '151.37',\n     'EURUSD': '1.0835',\n     'GBPUSD': '1.2650',\n     'USDCHF': '0.8801',\n     'AUDUSD': '0.6612',\n     'USDCAD': '1.3577',\n     'USDEUR': '0.9231'},\n    'GBPJPY'),\n   '191.483050'),\n  ('control: both orientations',\n   ({'USDJPY': '151.37',\n     'EURUSD': '1.0835',\n     'GBPUSD': '1.2650',\n     'USDCHF': '0.8801',\n     'AUDUSD': '0.6612',\n     'USDEUR': '0.9231'},\n    'EURCHF'),\n   '0.953418'),\n  ('control: usd to euro',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'USDEUR'),\n   '0.922935'),\n  ('control: euro yen',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'EURJPY'),\n   '164.009395'),\n  ('control: sterling euro',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'GBPEUR'),\n   '1.167513')],\n [('regression inverse-leg-precision 1',\n   ({'USDJPY': '151.37',\n     'EURUSD': '1.0835',\n     'GBPUSD': '1.2650',\n     'USDCHF': '0.8801',\n     'AUDUSD': '0.6612',\n     'USDCAD': '1.3577'},\n    'EURAUD'),\n   '1.638687'),\n  ('regression inverse-leg-precision 2',\n   ({'USDJPY': '151.37',\n     'EURUSD': '1.0835',\n     'GBPUSD': '1.2650',\n     'USDCHF': '0.8801',\n     'AUDUSD': '0.6612',\n     'USDCAD': '1.3577'},\n    'USDGBP'),\n   '0.790514'),\n  ('partial repair guard 1',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'USDCAD': '1.3577'}, 'EURJPY'),\n   '164.009395'),\n  ('partial repair guard 2',\n   ({'USDJPY': '151.37',\n     'EURUSD': '1.0835',\n     'GBPUSD': '1.2650',\n     'USDCHF': '0.8801',\n     'AUDUSD': '0.6612',\n     'USDEUR': '0.9231'},\n    'GBPCHF'),\n   '1.113326'),\n  ('control: sterling euro',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'GBPEUR'),\n   '1.167513'),\n  ('control: direct usd base',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'USDJPY'),\n   '151.370000'),\n  ('control: usd quote',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'JPYUSD'),\n   '0.006606'),\n  ('control: missing leg',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'EURSEK'),\n   'ERR:no-quote')],\n [('regression inverse-leg-precision 1',\n   ({'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612', 'USDEUR': '0.9231'}, 'EURGBP'), '0.856369'),\n  ('regression inverse-leg-precision 2',\n   ({'USDJPY': '151.37',\n     'EURUSD': '1.0835',\n     'GBPUSD': '1.2650',\n     'USDCHF': '0.8801',\n     'AUDUSD': '0.6612',\n     'USDCAD': '1.3577'},\n    'CADGBP'),\n   '0.582245'),\n  ('partial repair guard 1',\n   ({'USDJPY': '151.37',\n     'EURUSD': '1.0835',\n     'GBPUSD': '1.2650',\n     'USDCHF': '0.8801',\n     'AUDUSD': '0.6612',\n     'USDCAD': '1.3577'},\n    'GBPJPY'),\n   '191.483050'),\n  ('partial repair guard 2',\n   ({'USDJPY': '151.37',\n     'EURUSD': '1.0835',\n     'GBPUSD': '1.2650',\n     'USDCHF': '0.8801',\n     'AUDUSD': '0.6612',\n     'USDCAD': '1.3577'},\n    'EURJPY'),\n   '164.009395'),\n  ('control: missing leg',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'EURSEK'),\n   'ERR:no-quote'),\n  ('control: franc aussie',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'CHFAUD'),\n   '1.718443'),\n  ('control: both orientations',\n   ({'USDJPY': '151.37',\n     'EURUSD': '1.0835',\n     'GBPUSD': '1.2650',\n     'USDCHF': '0.8801',\n     'AUDUSD': '0.6612',\n     'USDEUR': '0.9231'},\n    'EURCHF'),\n   '0.953418'),\n  ('control: usd to euro',\n   ({'USDJPY': '151.37', 'EURUSD': '1.0835', 'GBPUSD': '1.2650', 'USDCHF': '0.8801', 'AUDUSD': '0.6612'}, 'USDEUR'),\n   '0.922935')]]\nfor label, args, expected in cases[N - 1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"A deterministic, bounded teaching model with a stipulated toy contract; it makes no claim of conformance to any real regulation, standard, or institution's rules. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-currency_rounding_and_fx_conversion-usd-quote-convention-cross-inverse-leg-precision","generated_at":"2026-09-29T14:47:03.015314+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Currency amounts must be rounded at the right stage and in the right unit, or ledgers, quotes and settlements drift by minor units.","root_cause":"1/quote is quantized to 0.0001 before being used as a leg.","sha256":"f0a1a3e19789ae41ffb7968a52cecc174a457f08876568f2db036f429167f4a4","title":"Inverted USD legs are rounded to four decimals · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":43.157,"exit_code":1,"observations":[{"actual":"164.009396","check":"regression inverse-leg-precision 1","expected":"164.009395","passed":false},{"actual":"1.167513","check":"regression inverse-leg-precision 2","expected":"1.167513","passed":true},{"actual":"1.717491","check":"partial repair guard 2","expected":"1.717490","passed":false},{"actual":"151.370000","check":"control: direct usd base","expected":"151.370000","passed":true},{"actual":"0.006606","check":"control: usd quote","expected":"0.006606","passed":true},{"actual":"ERR:no-quote","check":"control: missing leg","expected":"ERR:no-quote","passed":true},{"actual":"1.718443","check":"control: franc aussie","expected":"1.718443","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression inverse-leg-precision 1\", \"actual\": \"164.009396\", \"expected\": \"164.009395\", \"passed\": false}, {\"check\": \"regression inverse-leg-precision 2\", \"actual\": \"1.167513\", \"expected\": \"1.167513\", \"passed\": true}, {\"check\": \"partial repair guard 2\", \"actual\": \"1.717491\", \"expected\": \"1.717490\", \"passed\": false}, {\"check\": \"control: direct usd base\", \"actual\": \"151.370000\", \"expected\": \"151.370000\", \"passed\": true}, {\"check\": \"control: usd quote\", \"actual\": \"0.006606\", \"expected\": \"0.006606\", \"passed\": true}, {\"check\": \"control: missing leg\", \"actual\": \"ERR:no-quote\", \"expected\": \"ERR:no-quote\", \"passed\": true}, {\"check\": \"control: franc aussie\", \"actual\": \"1.718443\", \"expected\": \"1.718443\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.467,"exit_code":1,"observations":[{"actual":"164.015603","check":"regression inverse-leg-precision 1","expected":"164.009395","passed":false},{"actual":"1.167489","check":"regression inverse-leg-precision 2","expected":"1.167513","passed":false},{"actual":"1.717521","check":"partial repair guard 2","expected":"1.717490","passed":false},{"actual":"151.370000","check":"control: direct usd base","expected":"151.370000","passed":true},{"actual":"0.006606","check":"control: usd quote","expected":"0.006606","passed":true},{"actual":"ERR:no-quote","check":"control: missing leg","expected":"ERR:no-quote","passed":true},{"actual":"1.718441","check":"control: franc aussie","expected":"1.718443","passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression inverse-leg-precision 1\", \"actual\": \"164.015603\", \"expected\": \"164.009395\", \"passed\": false}, {\"check\": \"regression inverse-leg-precision 2\", \"actual\": \"1.167489\", \"expected\": \"1.167513\", \"passed\": false}, {\"check\": \"partial repair guard 2\", \"actual\": \"1.717521\", \"expected\": \"1.717490\", \"passed\": false}, {\"check\": \"control: direct usd base\", \"actual\": \"151.370000\", \"expected\": \"151.370000\", \"passed\": true}, {\"check\": \"control: usd quote\", \"actual\": \"0.006606\", \"expected\": \"0.006606\", \"passed\": true}, {\"check\": \"control: missing leg\", \"actual\": \"ERR:no-quote\", \"expected\": \"ERR:no-quote\", \"passed\": true}, {\"check\": \"control: franc aussie\", \"actual\": \"1.718441\", \"expected\": \"1.718443\", \"passed\": false}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}