{"abstract":"An unused ticket refunds its non-refundable carrier-imposed charge.","category":"Airline fare rule evaluation","checks":9,"contract":"Input {'paid' base fare,'cancel_fee','used_fare','status' UNUSED|PARTIAL,'taxes':[[code, amount, refundable, used]]}. Fare portion = paid - cancel fee - (used fare only when PARTIAL), floored at 0 before taxes are added. Taxes are refunded only if refundable and not used. Return refund rounded 2.","evaluation_group":"w2-airline-fare-rules-refund-residual","failed_approach":"Dropping the used check as well also refunds taxes on flown coupons.","family":"w2-airline-fare-rules-refund-residual-unused-nonrefundable","id":"FA-66671","implementations":{"attempt":{"sha256":"6031672cb21890e85b39fd992e4c9d319040b874a806f3026d6a10b32fe52dca","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    paid = x['paid']\n    fare_part = paid - x['cancel_fee']\n    if x['status'] == 'PARTIAL':\n        fare_part -= x['used_fare']\n    fare_part = max(0.0, fare_part)\n    taxes = sum(a for code, a, refundable, used in x['taxes'] if refundable or x['status'] == 'UNUSED')\n    return round(fare_part + taxes, 2)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['unused refundable', {'paid': 481.0, 'cancel_fee': 100.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 37.2, True, False], ['YQ', 80.0, False, False]]}, 418.2], ['partial with used taxes', {'paid': 900.0, 'cancel_fee': 150.0, 'used_fare': 421.0, 'status': 'PARTIAL', 'taxes': [['US', 37.2, True, False], ['XF', 4.5, True, True], ['YQ', 80.0, False, False], ['AY', 5.6, True, True]]}, 366.2], ['fee larger than fare', {'paid': 90.0, 'cancel_fee': 150.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 38.2, True, False]]}, 38.2], ['used portion exceeds paid', {'paid': 300.0, 'cancel_fee': 50.0, 'used_fare': 310.0, 'status': 'PARTIAL', 'taxes': [['US', 18.6, True, False], ['XF', 4.5, True, True]]}, 18.6], ['unused with stale used estimate', {'paid': 650.0, 'cancel_fee': 0.0, 'used_fare': 201.0, 'status': 'UNUSED', 'taxes': [['US', 20.0, True, False]]}, 670.0], ['non-refundable carrier charges', {'paid': 700.0, 'cancel_fee': 75.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['YQ', 120.0, False, False], ['GB', 27.0, True, False]]}, 652.0], ['sampled case 1', {'paid': 386.27, 'cancel_fee': 250.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 51.02, True, False], ['YQ', 5.59, False, False], ['XF', 3.57, True, False], ['DE', 99.09, True, False]]}, 289.95], ['sampled case 2', {'paid': 1007.21, 'cancel_fee': 50.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['XF', 29.38, True, False]]}, 986.59], ['sampled case 3', {'paid': 176.19, 'cancel_fee': 0.0, 'used_fare': 203.14, 'status': 'PARTIAL', 'taxes': [['DE', 94.53, True, True], ['GB', 107.54, False, True], ['XF', 23.26, True, True]]}, 0.0]], [['unused refundable', {'paid': 482.0, 'cancel_fee': 100.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 37.2, True, False], ['YQ', 80.0, False, False]]}, 419.2], ['partial with used taxes', {'paid': 900.0, 'cancel_fee': 150.0, 'used_fare': 422.0, 'status': 'PARTIAL', 'taxes': [['US', 37.2, True, False], ['XF', 4.5, True, True], ['YQ', 80.0, False, False], ['AY', 5.6, True, True]]}, 365.2], ['fee larger than fare', {'paid': 90.0, 'cancel_fee': 150.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 39.2, True, False]]}, 39.2], ['used portion exceeds paid', {'paid': 300.0, 'cancel_fee': 50.0, 'used_fare': 310.0, 'status': 'PARTIAL', 'taxes': [['US', 18.6, True, False], ['XF', 4.5, True, True]]}, 18.6], ['unused with stale used estimate', {'paid': 650.0, 'cancel_fee': 0.0, 'used_fare': 202.0, 'status': 'UNUSED', 'taxes': [['US', 20.0, True, False]]}, 670.0], ['non-refundable carrier charges', {'paid': 700.0, 'cancel_fee': 75.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['YQ', 120.0, False, False], ['GB', 28.0, True, False]]}, 653.0], ['sampled case 1', {'paid': 1076.29, 'cancel_fee': 50.0, 'used_fare': 538.9, 'status': 'PARTIAL', 'taxes': [['YQ', 84.65, True, False], ['XF', 108.03, True, False]]}, 680.07], ['sampled case 2', {'paid': 193.38, 'cancel_fee': 250.0, 'used_fare': 218.71, 'status': 'PARTIAL', 'taxes': [['YQ', 67.48, True, False], ['GB', 86.2, True, False], ['AY', 96.45, True, False]]}, 250.13], ['sampled case 3', {'paid': 640.4, 'cancel_fee': 150.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['AY', 115.97, True, False], ['DE', 57.82, False, False]]}, 606.37]], [['unused refundable', {'paid': 483.0, 'cancel_fee': 100.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 37.2, True, False], ['YQ', 80.0, False, False]]}, 420.2], ['partial with used taxes', {'paid': 900.0, 'cancel_fee': 150.0, 'used_fare': 423.0, 'status': 'PARTIAL', 'taxes': [['US', 37.2, True, False], ['XF', 4.5, True, True], ['YQ', 80.0, False, False], ['AY', 5.6, True, True]]}, 364.2], ['fee larger than fare', {'paid': 90.0, 'cancel_fee': 150.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 40.2, True, False]]}, 40.2], ['used portion exceeds paid', {'paid': 300.0, 'cancel_fee': 50.0, 'used_fare': 310.0, 'status': 'PARTIAL', 'taxes': [['US', 18.6, True, False], ['XF', 4.5, True, True]]}, 18.6], ['unused with stale used estimate', {'paid': 650.0, 'cancel_fee': 0.0, 'used_fare': 203.0, 'status': 'UNUSED', 'taxes': [['US', 20.0, True, False]]}, 670.0], ['non-refundable carrier charges', {'paid': 700.0, 'cancel_fee': 75.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['YQ', 120.0, False, False], ['GB', 29.0, True, False]]}, 654.0], ['sampled case 1', {'paid': 502.45, 'cancel_fee': 100.0, 'used_fare': 464.12, 'status': 'PARTIAL', 'taxes': [['US', 99.3, False, True], ['AY', 85.33, True, True], ['DE', 48.94, True, False]]}, 48.94], ['sampled case 2', {'paid': 638.36, 'cancel_fee': 150.0, 'used_fare': 498.2, 'status': 'PARTIAL', 'taxes': [['GB', 89.81, True, False], ['US', 67.48, False, True]]}, 89.81], ['sampled case 3', {'paid': 311.77, 'cancel_fee': 50.0, 'used_fare': 120.66, 'status': 'PARTIAL', 'taxes': []}, 141.11]], [['unused refundable', {'paid': 484.0, 'cancel_fee': 100.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 37.2, True, False], ['YQ', 80.0, False, False]]}, 421.2], ['partial with used taxes', {'paid': 900.0, 'cancel_fee': 150.0, 'used_fare': 424.0, 'status': 'PARTIAL', 'taxes': [['US', 37.2, True, False], ['XF', 4.5, True, True], ['YQ', 80.0, False, False], ['AY', 5.6, True, True]]}, 363.2], ['fee larger than fare', {'paid': 90.0, 'cancel_fee': 150.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 41.2, True, False]]}, 41.2], ['used portion exceeds paid', {'paid': 300.0, 'cancel_fee': 50.0, 'used_fare': 310.0, 'status': 'PARTIAL', 'taxes': [['US', 18.6, True, False], ['XF', 4.5, True, True]]}, 18.6], ['unused with stale used estimate', {'paid': 650.0, 'cancel_fee': 0.0, 'used_fare': 204.0, 'status': 'UNUSED', 'taxes': [['US', 20.0, True, False]]}, 670.0], ['non-refundable carrier charges', {'paid': 700.0, 'cancel_fee': 75.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['YQ', 120.0, False, False], ['GB', 30.0, True, False]]}, 655.0], ['sampled case 1', {'paid': 716.18, 'cancel_fee': 50.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['YQ', 62.57, True, False], ['US', 60.18, True, False], ['AY', 40.23, True, False]]}, 829.16], ['sampled case 2', {'paid': 304.89, 'cancel_fee': 250.0, 'used_fare': 353.1, 'status': 'PARTIAL', 'taxes': [['DE', 109.57, False, True], ['YQ', 82.61, True, False]]}, 82.61], ['sampled case 3', {'paid': 1425.61, 'cancel_fee': 100.0, 'used_fare': 1346.54, 'status': 'PARTIAL', 'taxes': [['GB', 93.65, True, False], ['AY', 56.1, True, True], ['DE', 105.73, False, False]]}, 93.65]], [['unused refundable', {'paid': 485.0, 'cancel_fee': 100.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 37.2, True, False], ['YQ', 80.0, False, False]]}, 422.2], ['partial with used taxes', {'paid': 900.0, 'cancel_fee': 150.0, 'used_fare': 425.0, 'status': 'PARTIAL', 'taxes': [['US', 37.2, True, False], ['XF', 4.5, True, True], ['YQ', 80.0, False, False], ['AY', 5.6, True, True]]}, 362.2], ['fee larger than fare', {'paid': 90.0, 'cancel_fee': 150.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 42.2, True, False]]}, 42.2], ['used portion exceeds paid', {'paid': 300.0, 'cancel_fee': 50.0, 'used_fare': 310.0, 'status': 'PARTIAL', 'taxes': [['US', 18.6, True, False], ['XF', 4.5, True, True]]}, 18.6], ['unused with stale used estimate', {'paid': 650.0, 'cancel_fee': 0.0, 'used_fare': 205.0, 'status': 'UNUSED', 'taxes': [['US', 20.0, True, False]]}, 670.0], ['non-refundable carrier charges', {'paid': 700.0, 'cancel_fee': 75.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['YQ', 120.0, False, False], ['GB', 31.0, True, False]]}, 656.0], ['sampled case 1', {'paid': 1477.45, 'cancel_fee': 100.0, 'used_fare': 1174.26, 'status': 'PARTIAL', 'taxes': [['AY', 80.91, True, True], ['XF', 91.97, True, False]]}, 295.16], ['sampled case 2', {'paid': 441.62, 'cancel_fee': 50.0, 'used_fare': 285.82, 'status': 'PARTIAL', 'taxes': []}, 105.8], ['sampled case 3', {'paid': 1459.32, 'cancel_fee': 50.0, 'used_fare': 1488.81, 'status': 'PARTIAL', 'taxes': [['YQ', 64.57, False, True]]}, 0.0]]]\nfor label, args, expected in fixtures[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":"dc135aabf0d3936f84e76e9c6b9c2f558fe364454c34b3d88dd253764a14f9fd","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    paid = x['paid']\n    fare_part = paid - x['cancel_fee']\n    if x['status'] == 'PARTIAL':\n        fare_part -= x['used_fare']\n    fare_part = max(0.0, fare_part)\n    taxes = sum(a for code, a, refundable, used in x['taxes'] if (refundable or x['status'] == 'UNUSED') and not used)\n    return round(fare_part + taxes, 2)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['unused refundable', {'paid': 481.0, 'cancel_fee': 100.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 37.2, True, False], ['YQ', 80.0, False, False]]}, 418.2], ['partial with used taxes', {'paid': 900.0, 'cancel_fee': 150.0, 'used_fare': 421.0, 'status': 'PARTIAL', 'taxes': [['US', 37.2, True, False], ['XF', 4.5, True, True], ['YQ', 80.0, False, False], ['AY', 5.6, True, True]]}, 366.2], ['fee larger than fare', {'paid': 90.0, 'cancel_fee': 150.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 38.2, True, False]]}, 38.2], ['used portion exceeds paid', {'paid': 300.0, 'cancel_fee': 50.0, 'used_fare': 310.0, 'status': 'PARTIAL', 'taxes': [['US', 18.6, True, False], ['XF', 4.5, True, True]]}, 18.6], ['unused with stale used estimate', {'paid': 650.0, 'cancel_fee': 0.0, 'used_fare': 201.0, 'status': 'UNUSED', 'taxes': [['US', 20.0, True, False]]}, 670.0], ['non-refundable carrier charges', {'paid': 700.0, 'cancel_fee': 75.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['YQ', 120.0, False, False], ['GB', 27.0, True, False]]}, 652.0], ['sampled case 1', {'paid': 386.27, 'cancel_fee': 250.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 51.02, True, False], ['YQ', 5.59, False, False], ['XF', 3.57, True, False], ['DE', 99.09, True, False]]}, 289.95], ['sampled case 2', {'paid': 1007.21, 'cancel_fee': 50.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['XF', 29.38, True, False]]}, 986.59], ['sampled case 3', {'paid': 176.19, 'cancel_fee': 0.0, 'used_fare': 203.14, 'status': 'PARTIAL', 'taxes': [['DE', 94.53, True, True], ['GB', 107.54, False, True], ['XF', 23.26, True, True]]}, 0.0]], [['unused refundable', {'paid': 482.0, 'cancel_fee': 100.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 37.2, True, False], ['YQ', 80.0, False, False]]}, 419.2], ['partial with used taxes', {'paid': 900.0, 'cancel_fee': 150.0, 'used_fare': 422.0, 'status': 'PARTIAL', 'taxes': [['US', 37.2, True, False], ['XF', 4.5, True, True], ['YQ', 80.0, False, False], ['AY', 5.6, True, True]]}, 365.2], ['fee larger than fare', {'paid': 90.0, 'cancel_fee': 150.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 39.2, True, False]]}, 39.2], ['used portion exceeds paid', {'paid': 300.0, 'cancel_fee': 50.0, 'used_fare': 310.0, 'status': 'PARTIAL', 'taxes': [['US', 18.6, True, False], ['XF', 4.5, True, True]]}, 18.6], ['unused with stale used estimate', {'paid': 650.0, 'cancel_fee': 0.0, 'used_fare': 202.0, 'status': 'UNUSED', 'taxes': [['US', 20.0, True, False]]}, 670.0], ['non-refundable carrier charges', {'paid': 700.0, 'cancel_fee': 75.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['YQ', 120.0, False, False], ['GB', 28.0, True, False]]}, 653.0], ['sampled case 1', {'paid': 1076.29, 'cancel_fee': 50.0, 'used_fare': 538.9, 'status': 'PARTIAL', 'taxes': [['YQ', 84.65, True, False], ['XF', 108.03, True, False]]}, 680.07], ['sampled case 2', {'paid': 193.38, 'cancel_fee': 250.0, 'used_fare': 218.71, 'status': 'PARTIAL', 'taxes': [['YQ', 67.48, True, False], ['GB', 86.2, True, False], ['AY', 96.45, True, False]]}, 250.13], ['sampled case 3', {'paid': 640.4, 'cancel_fee': 150.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['AY', 115.97, True, False], ['DE', 57.82, False, False]]}, 606.37]], [['unused refundable', {'paid': 483.0, 'cancel_fee': 100.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 37.2, True, False], ['YQ', 80.0, False, False]]}, 420.2], ['partial with used taxes', {'paid': 900.0, 'cancel_fee': 150.0, 'used_fare': 423.0, 'status': 'PARTIAL', 'taxes': [['US', 37.2, True, False], ['XF', 4.5, True, True], ['YQ', 80.0, False, False], ['AY', 5.6, True, True]]}, 364.2], ['fee larger than fare', {'paid': 90.0, 'cancel_fee': 150.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 40.2, True, False]]}, 40.2], ['used portion exceeds paid', {'paid': 300.0, 'cancel_fee': 50.0, 'used_fare': 310.0, 'status': 'PARTIAL', 'taxes': [['US', 18.6, True, False], ['XF', 4.5, True, True]]}, 18.6], ['unused with stale used estimate', {'paid': 650.0, 'cancel_fee': 0.0, 'used_fare': 203.0, 'status': 'UNUSED', 'taxes': [['US', 20.0, True, False]]}, 670.0], ['non-refundable carrier charges', {'paid': 700.0, 'cancel_fee': 75.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['YQ', 120.0, False, False], ['GB', 29.0, True, False]]}, 654.0], ['sampled case 1', {'paid': 502.45, 'cancel_fee': 100.0, 'used_fare': 464.12, 'status': 'PARTIAL', 'taxes': [['US', 99.3, False, True], ['AY', 85.33, True, True], ['DE', 48.94, True, False]]}, 48.94], ['sampled case 2', {'paid': 638.36, 'cancel_fee': 150.0, 'used_fare': 498.2, 'status': 'PARTIAL', 'taxes': [['GB', 89.81, True, False], ['US', 67.48, False, True]]}, 89.81], ['sampled case 3', {'paid': 311.77, 'cancel_fee': 50.0, 'used_fare': 120.66, 'status': 'PARTIAL', 'taxes': []}, 141.11]], [['unused refundable', {'paid': 484.0, 'cancel_fee': 100.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 37.2, True, False], ['YQ', 80.0, False, False]]}, 421.2], ['partial with used taxes', {'paid': 900.0, 'cancel_fee': 150.0, 'used_fare': 424.0, 'status': 'PARTIAL', 'taxes': [['US', 37.2, True, False], ['XF', 4.5, True, True], ['YQ', 80.0, False, False], ['AY', 5.6, True, True]]}, 363.2], ['fee larger than fare', {'paid': 90.0, 'cancel_fee': 150.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 41.2, True, False]]}, 41.2], ['used portion exceeds paid', {'paid': 300.0, 'cancel_fee': 50.0, 'used_fare': 310.0, 'status': 'PARTIAL', 'taxes': [['US', 18.6, True, False], ['XF', 4.5, True, True]]}, 18.6], ['unused with stale used estimate', {'paid': 650.0, 'cancel_fee': 0.0, 'used_fare': 204.0, 'status': 'UNUSED', 'taxes': [['US', 20.0, True, False]]}, 670.0], ['non-refundable carrier charges', {'paid': 700.0, 'cancel_fee': 75.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['YQ', 120.0, False, False], ['GB', 30.0, True, False]]}, 655.0], ['sampled case 1', {'paid': 716.18, 'cancel_fee': 50.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['YQ', 62.57, True, False], ['US', 60.18, True, False], ['AY', 40.23, True, False]]}, 829.16], ['sampled case 2', {'paid': 304.89, 'cancel_fee': 250.0, 'used_fare': 353.1, 'status': 'PARTIAL', 'taxes': [['DE', 109.57, False, True], ['YQ', 82.61, True, False]]}, 82.61], ['sampled case 3', {'paid': 1425.61, 'cancel_fee': 100.0, 'used_fare': 1346.54, 'status': 'PARTIAL', 'taxes': [['GB', 93.65, True, False], ['AY', 56.1, True, True], ['DE', 105.73, False, False]]}, 93.65]], [['unused refundable', {'paid': 485.0, 'cancel_fee': 100.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 37.2, True, False], ['YQ', 80.0, False, False]]}, 422.2], ['partial with used taxes', {'paid': 900.0, 'cancel_fee': 150.0, 'used_fare': 425.0, 'status': 'PARTIAL', 'taxes': [['US', 37.2, True, False], ['XF', 4.5, True, True], ['YQ', 80.0, False, False], ['AY', 5.6, True, True]]}, 362.2], ['fee larger than fare', {'paid': 90.0, 'cancel_fee': 150.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 42.2, True, False]]}, 42.2], ['used portion exceeds paid', {'paid': 300.0, 'cancel_fee': 50.0, 'used_fare': 310.0, 'status': 'PARTIAL', 'taxes': [['US', 18.6, True, False], ['XF', 4.5, True, True]]}, 18.6], ['unused with stale used estimate', {'paid': 650.0, 'cancel_fee': 0.0, 'used_fare': 205.0, 'status': 'UNUSED', 'taxes': [['US', 20.0, True, False]]}, 670.0], ['non-refundable carrier charges', {'paid': 700.0, 'cancel_fee': 75.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['YQ', 120.0, False, False], ['GB', 31.0, True, False]]}, 656.0], ['sampled case 1', {'paid': 1477.45, 'cancel_fee': 100.0, 'used_fare': 1174.26, 'status': 'PARTIAL', 'taxes': [['AY', 80.91, True, True], ['XF', 91.97, True, False]]}, 295.16], ['sampled case 2', {'paid': 441.62, 'cancel_fee': 50.0, 'used_fare': 285.82, 'status': 'PARTIAL', 'taxes': []}, 105.8], ['sampled case 3', {'paid': 1459.32, 'cancel_fee': 50.0, 'used_fare': 1488.81, 'status': 'PARTIAL', 'taxes': [['YQ', 64.57, False, True]]}, 0.0]]]\nfor label, args, expected in fixtures[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"},"fixed":{"sha256":"94c095d4077458e51e26581d568d95ccd7f31881600937aa01535af2b5a89d70","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    paid = x['paid']\n    fare_part = paid - x['cancel_fee']\n    if x['status'] == 'PARTIAL':\n        fare_part -= x['used_fare']\n    fare_part = max(0.0, fare_part)\n    taxes = sum(a for code, a, refundable, used in x['taxes'] if refundable and not used)\n    return round(fare_part + taxes, 2)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['unused refundable', {'paid': 481.0, 'cancel_fee': 100.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 37.2, True, False], ['YQ', 80.0, False, False]]}, 418.2], ['partial with used taxes', {'paid': 900.0, 'cancel_fee': 150.0, 'used_fare': 421.0, 'status': 'PARTIAL', 'taxes': [['US', 37.2, True, False], ['XF', 4.5, True, True], ['YQ', 80.0, False, False], ['AY', 5.6, True, True]]}, 366.2], ['fee larger than fare', {'paid': 90.0, 'cancel_fee': 150.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 38.2, True, False]]}, 38.2], ['used portion exceeds paid', {'paid': 300.0, 'cancel_fee': 50.0, 'used_fare': 310.0, 'status': 'PARTIAL', 'taxes': [['US', 18.6, True, False], ['XF', 4.5, True, True]]}, 18.6], ['unused with stale used estimate', {'paid': 650.0, 'cancel_fee': 0.0, 'used_fare': 201.0, 'status': 'UNUSED', 'taxes': [['US', 20.0, True, False]]}, 670.0], ['non-refundable carrier charges', {'paid': 700.0, 'cancel_fee': 75.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['YQ', 120.0, False, False], ['GB', 27.0, True, False]]}, 652.0], ['sampled case 1', {'paid': 386.27, 'cancel_fee': 250.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 51.02, True, False], ['YQ', 5.59, False, False], ['XF', 3.57, True, False], ['DE', 99.09, True, False]]}, 289.95], ['sampled case 2', {'paid': 1007.21, 'cancel_fee': 50.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['XF', 29.38, True, False]]}, 986.59], ['sampled case 3', {'paid': 176.19, 'cancel_fee': 0.0, 'used_fare': 203.14, 'status': 'PARTIAL', 'taxes': [['DE', 94.53, True, True], ['GB', 107.54, False, True], ['XF', 23.26, True, True]]}, 0.0]], [['unused refundable', {'paid': 482.0, 'cancel_fee': 100.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 37.2, True, False], ['YQ', 80.0, False, False]]}, 419.2], ['partial with used taxes', {'paid': 900.0, 'cancel_fee': 150.0, 'used_fare': 422.0, 'status': 'PARTIAL', 'taxes': [['US', 37.2, True, False], ['XF', 4.5, True, True], ['YQ', 80.0, False, False], ['AY', 5.6, True, True]]}, 365.2], ['fee larger than fare', {'paid': 90.0, 'cancel_fee': 150.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 39.2, True, False]]}, 39.2], ['used portion exceeds paid', {'paid': 300.0, 'cancel_fee': 50.0, 'used_fare': 310.0, 'status': 'PARTIAL', 'taxes': [['US', 18.6, True, False], ['XF', 4.5, True, True]]}, 18.6], ['unused with stale used estimate', {'paid': 650.0, 'cancel_fee': 0.0, 'used_fare': 202.0, 'status': 'UNUSED', 'taxes': [['US', 20.0, True, False]]}, 670.0], ['non-refundable carrier charges', {'paid': 700.0, 'cancel_fee': 75.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['YQ', 120.0, False, False], ['GB', 28.0, True, False]]}, 653.0], ['sampled case 1', {'paid': 1076.29, 'cancel_fee': 50.0, 'used_fare': 538.9, 'status': 'PARTIAL', 'taxes': [['YQ', 84.65, True, False], ['XF', 108.03, True, False]]}, 680.07], ['sampled case 2', {'paid': 193.38, 'cancel_fee': 250.0, 'used_fare': 218.71, 'status': 'PARTIAL', 'taxes': [['YQ', 67.48, True, False], ['GB', 86.2, True, False], ['AY', 96.45, True, False]]}, 250.13], ['sampled case 3', {'paid': 640.4, 'cancel_fee': 150.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['AY', 115.97, True, False], ['DE', 57.82, False, False]]}, 606.37]], [['unused refundable', {'paid': 483.0, 'cancel_fee': 100.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 37.2, True, False], ['YQ', 80.0, False, False]]}, 420.2], ['partial with used taxes', {'paid': 900.0, 'cancel_fee': 150.0, 'used_fare': 423.0, 'status': 'PARTIAL', 'taxes': [['US', 37.2, True, False], ['XF', 4.5, True, True], ['YQ', 80.0, False, False], ['AY', 5.6, True, True]]}, 364.2], ['fee larger than fare', {'paid': 90.0, 'cancel_fee': 150.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 40.2, True, False]]}, 40.2], ['used portion exceeds paid', {'paid': 300.0, 'cancel_fee': 50.0, 'used_fare': 310.0, 'status': 'PARTIAL', 'taxes': [['US', 18.6, True, False], ['XF', 4.5, True, True]]}, 18.6], ['unused with stale used estimate', {'paid': 650.0, 'cancel_fee': 0.0, 'used_fare': 203.0, 'status': 'UNUSED', 'taxes': [['US', 20.0, True, False]]}, 670.0], ['non-refundable carrier charges', {'paid': 700.0, 'cancel_fee': 75.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['YQ', 120.0, False, False], ['GB', 29.0, True, False]]}, 654.0], ['sampled case 1', {'paid': 502.45, 'cancel_fee': 100.0, 'used_fare': 464.12, 'status': 'PARTIAL', 'taxes': [['US', 99.3, False, True], ['AY', 85.33, True, True], ['DE', 48.94, True, False]]}, 48.94], ['sampled case 2', {'paid': 638.36, 'cancel_fee': 150.0, 'used_fare': 498.2, 'status': 'PARTIAL', 'taxes': [['GB', 89.81, True, False], ['US', 67.48, False, True]]}, 89.81], ['sampled case 3', {'paid': 311.77, 'cancel_fee': 50.0, 'used_fare': 120.66, 'status': 'PARTIAL', 'taxes': []}, 141.11]], [['unused refundable', {'paid': 484.0, 'cancel_fee': 100.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 37.2, True, False], ['YQ', 80.0, False, False]]}, 421.2], ['partial with used taxes', {'paid': 900.0, 'cancel_fee': 150.0, 'used_fare': 424.0, 'status': 'PARTIAL', 'taxes': [['US', 37.2, True, False], ['XF', 4.5, True, True], ['YQ', 80.0, False, False], ['AY', 5.6, True, True]]}, 363.2], ['fee larger than fare', {'paid': 90.0, 'cancel_fee': 150.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 41.2, True, False]]}, 41.2], ['used portion exceeds paid', {'paid': 300.0, 'cancel_fee': 50.0, 'used_fare': 310.0, 'status': 'PARTIAL', 'taxes': [['US', 18.6, True, False], ['XF', 4.5, True, True]]}, 18.6], ['unused with stale used estimate', {'paid': 650.0, 'cancel_fee': 0.0, 'used_fare': 204.0, 'status': 'UNUSED', 'taxes': [['US', 20.0, True, False]]}, 670.0], ['non-refundable carrier charges', {'paid': 700.0, 'cancel_fee': 75.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['YQ', 120.0, False, False], ['GB', 30.0, True, False]]}, 655.0], ['sampled case 1', {'paid': 716.18, 'cancel_fee': 50.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['YQ', 62.57, True, False], ['US', 60.18, True, False], ['AY', 40.23, True, False]]}, 829.16], ['sampled case 2', {'paid': 304.89, 'cancel_fee': 250.0, 'used_fare': 353.1, 'status': 'PARTIAL', 'taxes': [['DE', 109.57, False, True], ['YQ', 82.61, True, False]]}, 82.61], ['sampled case 3', {'paid': 1425.61, 'cancel_fee': 100.0, 'used_fare': 1346.54, 'status': 'PARTIAL', 'taxes': [['GB', 93.65, True, False], ['AY', 56.1, True, True], ['DE', 105.73, False, False]]}, 93.65]], [['unused refundable', {'paid': 485.0, 'cancel_fee': 100.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 37.2, True, False], ['YQ', 80.0, False, False]]}, 422.2], ['partial with used taxes', {'paid': 900.0, 'cancel_fee': 150.0, 'used_fare': 425.0, 'status': 'PARTIAL', 'taxes': [['US', 37.2, True, False], ['XF', 4.5, True, True], ['YQ', 80.0, False, False], ['AY', 5.6, True, True]]}, 362.2], ['fee larger than fare', {'paid': 90.0, 'cancel_fee': 150.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['US', 42.2, True, False]]}, 42.2], ['used portion exceeds paid', {'paid': 300.0, 'cancel_fee': 50.0, 'used_fare': 310.0, 'status': 'PARTIAL', 'taxes': [['US', 18.6, True, False], ['XF', 4.5, True, True]]}, 18.6], ['unused with stale used estimate', {'paid': 650.0, 'cancel_fee': 0.0, 'used_fare': 205.0, 'status': 'UNUSED', 'taxes': [['US', 20.0, True, False]]}, 670.0], ['non-refundable carrier charges', {'paid': 700.0, 'cancel_fee': 75.0, 'used_fare': 0.0, 'status': 'UNUSED', 'taxes': [['YQ', 120.0, False, False], ['GB', 31.0, True, False]]}, 656.0], ['sampled case 1', {'paid': 1477.45, 'cancel_fee': 100.0, 'used_fare': 1174.26, 'status': 'PARTIAL', 'taxes': [['AY', 80.91, True, True], ['XF', 91.97, True, False]]}, 295.16], ['sampled case 2', {'paid': 441.62, 'cancel_fee': 50.0, 'used_fare': 285.82, 'status': 'PARTIAL', 'taxes': []}, 105.8], ['sampled case 3', {'paid': 1459.32, 'cancel_fee': 50.0, 'used_fare': 1488.81, 'status': 'PARTIAL', 'taxes': [['YQ', 64.57, False, True]]}, 0.0]]]\nfor label, args, expected in fixtures[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 stipulated toy fare-rule contract with invented constants; it is not an ATPCO or carrier tariff implementation and makes no claim of industry-standard conformance. 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-airline-fare-rules-refund-residual-unused-nonrefundable","generated_at":"2026-09-29T14:47:45.954785+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Refund calculation must keep the penalty from consuming refundable taxes and must only deduct usage for partially flown tickets.","repair":"Apply the refundable flag regardless of ticket status.","root_cause":"The refundability flag is bypassed for UNUSED status.","sha256":"c7323e78954c0ac0a70936296932f41869de29180daf9fa41e17999f2dd4ff13","title":"Non-refundable charges refunded on fully unused tickets · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.233,"exit_code":1,"observations":[{"actual":498.2,"check":"unused refundable","expected":418.2,"passed":false},{"actual":376.3,"check":"partial with used taxes","expected":366.2,"passed":false},{"actual":38.2,"check":"fee larger than fare","expected":38.2,"passed":true},{"actual":23.1,"check":"used portion exceeds paid","expected":18.6,"passed":false},{"actual":670.0,"check":"unused with stale used estimate","expected":670.0,"passed":true},{"actual":772.0,"check":"non-refundable carrier charges","expected":652.0,"passed":false},{"actual":295.54,"check":"sampled case 1","expected":289.95,"passed":false},{"actual":986.59,"check":"sampled case 2","expected":986.59,"passed":true},{"actual":117.79,"check":"sampled case 3","expected":0.0,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"unused refundable\", \"actual\": 498.2, \"expected\": 418.2, \"passed\": false}, {\"check\": \"partial with used taxes\", \"actual\": 376.3, \"expected\": 366.2, \"passed\": false}, {\"check\": \"fee larger than fare\", \"actual\": 38.2, \"expected\": 38.2, \"passed\": true}, {\"check\": \"used portion exceeds paid\", \"actual\": 23.1, \"expected\": 18.6, \"passed\": false}, {\"check\": \"unused with stale used estimate\", \"actual\": 670.0, \"expected\": 670.0, \"passed\": true}, {\"check\": \"non-refundable carrier charges\", \"actual\": 772.0, \"expected\": 652.0, \"passed\": false}, {\"check\": \"sampled case 1\", \"actual\": 295.54, \"expected\": 289.95, \"passed\": false}, {\"check\": \"sampled case 2\", \"actual\": 986.59, \"expected\": 986.59, \"passed\": true}, {\"check\": \"sampled case 3\", \"actual\": 117.79, \"expected\": 0.0, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.127,"exit_code":1,"observations":[{"actual":498.2,"check":"unused refundable","expected":418.2,"passed":false},{"actual":366.2,"check":"partial with used taxes","expected":366.2,"passed":true},{"actual":38.2,"check":"fee larger than fare","expected":38.2,"passed":true},{"actual":18.6,"check":"used portion exceeds paid","expected":18.6,"passed":true},{"actual":670.0,"check":"unused with stale used estimate","expected":670.0,"passed":true},{"actual":772.0,"check":"non-refundable carrier charges","expected":652.0,"passed":false},{"actual":295.54,"check":"sampled case 1","expected":289.95,"passed":false},{"actual":986.59,"check":"sampled case 2","expected":986.59,"passed":true},{"actual":0.0,"check":"sampled case 3","expected":0.0,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"unused refundable\", \"actual\": 498.2, \"expected\": 418.2, \"passed\": false}, {\"check\": \"partial with used taxes\", \"actual\": 366.2, \"expected\": 366.2, \"passed\": true}, {\"check\": \"fee larger than fare\", \"actual\": 38.2, \"expected\": 38.2, \"passed\": true}, {\"check\": \"used portion exceeds paid\", \"actual\": 18.6, \"expected\": 18.6, \"passed\": true}, {\"check\": \"unused with stale used estimate\", \"actual\": 670.0, \"expected\": 670.0, \"passed\": true}, {\"check\": \"non-refundable carrier charges\", \"actual\": 772.0, \"expected\": 652.0, \"passed\": false}, {\"check\": \"sampled case 1\", \"actual\": 295.54, \"expected\": 289.95, \"passed\": false}, {\"check\": \"sampled case 2\", \"actual\": 986.59, \"expected\": 986.59, \"passed\": true}, {\"check\": \"sampled case 3\", \"actual\": 0.0, \"expected\": 0.0, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.683,"exit_code":0,"observations":[{"actual":418.2,"check":"unused refundable","expected":418.2,"passed":true},{"actual":366.2,"check":"partial with used taxes","expected":366.2,"passed":true},{"actual":38.2,"check":"fee larger than fare","expected":38.2,"passed":true},{"actual":18.6,"check":"used portion exceeds paid","expected":18.6,"passed":true},{"actual":670.0,"check":"unused with stale used estimate","expected":670.0,"passed":true},{"actual":652.0,"check":"non-refundable carrier charges","expected":652.0,"passed":true},{"actual":289.95,"check":"sampled case 1","expected":289.95,"passed":true},{"actual":986.59,"check":"sampled case 2","expected":986.59,"passed":true},{"actual":0.0,"check":"sampled case 3","expected":0.0,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"unused refundable\", \"actual\": 418.2, \"expected\": 418.2, \"passed\": true}, {\"check\": \"partial with used taxes\", \"actual\": 366.2, \"expected\": 366.2, \"passed\": true}, {\"check\": \"fee larger than fare\", \"actual\": 38.2, \"expected\": 38.2, \"passed\": true}, {\"check\": \"used portion exceeds paid\", \"actual\": 18.6, \"expected\": 18.6, \"passed\": true}, {\"check\": \"unused with stale used estimate\", \"actual\": 670.0, \"expected\": 670.0, \"passed\": true}, {\"check\": \"non-refundable carrier charges\", \"actual\": 652.0, \"expected\": 652.0, \"passed\": true}, {\"check\": \"sampled case 1\", \"actual\": 289.95, \"expected\": 289.95, \"passed\": true}, {\"check\": \"sampled case 2\", \"actual\": 986.59, \"expected\": 986.59, \"passed\": true}, {\"check\": \"sampled case 3\", \"actual\": 0.0, \"expected\": 0.0, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}