{"abstract":"Routings entitled to a mileage deduction are surcharged more heavily.","category":"Airline fare rule evaluation","checks":10,"contract":"Input {'tpm':[segment miles],'tpd':deduction miles,'mpm'}. Total = sum(TPM) - TPD. Total <= MPM -> ['M',0]; else the smallest band b in 5,10,15,20,25 with total <= MPM*(1+b/100) -> ['bM', b]; beyond 25% -> 'ERR_EXCEEDS'. Comparisons are exact integer arithmetic.","contract_signature":"x","evaluation_group":"w2-airline-fare-rules-excess-mileage-bands","failed_approach":"Ignoring the deduction surcharges routings that should fit within MPM.","family":"w2-airline-fare-rules-excess-mileage-bands-tpd-sign","id":"FA-66516","implementations":{"attempt":{"sha256":"29e6fcce902e81442fab9cf98e55c81c5e33de8e41c9662def983c20b59e666e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    total = sum(x['tpm'])\n    mpm = x['mpm']\n    if total * 100 <= mpm * 100: return ['M', 0]\n    for pct in (5, 10, 15, 20, 25):\n        if total * 100 <= mpm * (100 + pct):\n            return ['%dM' % pct, pct]\n    return 'ERR_EXCEEDS'\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['within MPM', {'tpm': [1200, 801], 'tpd': 0, 'mpm': 2100}, ['M', 0]], ['exactly MPM', {'tpm': [1000, 1100], 'tpd': 0, 'mpm': 2100}, ['M', 0]], ['exactly 5 percent over', {'tpm': [1100, 1105], 'tpd': 0, 'mpm': 2100}, ['5M', 5]], ['just over 5 percent', {'tpm': [1100, 1107], 'tpd': 0, 'mpm': 2100}, ['10M', 10]], ['deduction brings within', {'tpm': [1500, 900], 'tpd': 251, 'mpm': 2200}, ['M', 0]], ['beyond 25 percent', {'tpm': [2000, 1210], 'tpd': 0, 'mpm': 2500}, 'ERR_EXCEEDS'], ['ratio rounds down to band', {'tpm': [5256], 'tpd': 0, 'mpm': 5000}, ['10M', 10]], ['sampled case 1', {'tpm': [2492, 2156], 'tpd': 0, 'mpm': 4150}, ['15M', 15]], ['sampled case 2', {'tpm': [3592, 2721], 'tpd': 0, 'mpm': 5598}, ['15M', 15]], ['sampled case 3', {'tpm': [402, 360], 'tpd': 73, 'mpm': 652}, ['10M', 10]]], [['within MPM', {'tpm': [1200, 802], 'tpd': 0, 'mpm': 2100}, ['M', 0]], ['exactly MPM', {'tpm': [1000, 1100], 'tpd': 0, 'mpm': 2100}, ['M', 0]], ['exactly 5 percent over', {'tpm': [1100, 1105], 'tpd': 0, 'mpm': 2100}, ['5M', 5]], ['just over 5 percent', {'tpm': [1100, 1108], 'tpd': 0, 'mpm': 2100}, ['10M', 10]], ['deduction brings within', {'tpm': [1500, 900], 'tpd': 252, 'mpm': 2200}, ['M', 0]], ['beyond 25 percent', {'tpm': [2000, 1220], 'tpd': 0, 'mpm': 2500}, 'ERR_EXCEEDS'], ['ratio rounds down to band', {'tpm': [5257], 'tpd': 0, 'mpm': 5000}, ['10M', 10]], ['sampled case 1', {'tpm': [4525, 5148], 'tpd': 0, 'mpm': 7940}, ['25M', 25]], ['sampled case 2', {'tpm': [3880, 3908], 'tpd': 293, 'mpm': 7743}, ['M', 0]], ['sampled case 3', {'tpm': [3404, 3171], 'tpd': 0, 'mpm': 5451}, ['25M', 25]]], [['within MPM', {'tpm': [1200, 803], 'tpd': 0, 'mpm': 2100}, ['M', 0]], ['exactly MPM', {'tpm': [1000, 1100], 'tpd': 0, 'mpm': 2100}, ['M', 0]], ['exactly 5 percent over', {'tpm': [1100, 1105], 'tpd': 0, 'mpm': 2100}, ['5M', 5]], ['just over 5 percent', {'tpm': [1100, 1109], 'tpd': 0, 'mpm': 2100}, ['10M', 10]], ['deduction brings within', {'tpm': [1500, 900], 'tpd': 253, 'mpm': 2200}, ['M', 0]], ['beyond 25 percent', {'tpm': [2000, 1230], 'tpd': 0, 'mpm': 2500}, 'ERR_EXCEEDS'], ['ratio rounds down to band', {'tpm': [5258], 'tpd': 0, 'mpm': 5000}, ['10M', 10]], ['sampled case 1', {'tpm': [2696, 2449], 'tpd': 42, 'mpm': 4715}, ['10M', 10]], ['sampled case 2', {'tpm': [193], 'tpd': 0, 'mpm': 8525}, ['M', 0]], ['sampled case 3', {'tpm': [1557, 1285], 'tpd': 0, 'mpm': 2456}, ['20M', 20]]], [['within MPM', {'tpm': [1200, 804], 'tpd': 0, 'mpm': 2100}, ['M', 0]], ['exactly MPM', {'tpm': [1000, 1100], 'tpd': 0, 'mpm': 2100}, ['M', 0]], ['exactly 5 percent over', {'tpm': [1100, 1105], 'tpd': 0, 'mpm': 2100}, ['5M', 5]], ['just over 5 percent', {'tpm': [1100, 1110], 'tpd': 0, 'mpm': 2100}, ['10M', 10]], ['deduction brings within', {'tpm': [1500, 900], 'tpd': 254, 'mpm': 2200}, ['M', 0]], ['beyond 25 percent', {'tpm': [2000, 1240], 'tpd': 0, 'mpm': 2500}, 'ERR_EXCEEDS'], ['ratio rounds down to band', {'tpm': [5259], 'tpd': 0, 'mpm': 5000}, ['10M', 10]], ['sampled case 1', {'tpm': [1579, 2622], 'tpd': 0, 'mpm': 1172}, 'ERR_EXCEEDS'], ['sampled case 2', {'tpm': [3163, 3734], 'tpd': 278, 'mpm': 3722}, 'ERR_EXCEEDS'], ['sampled case 3', {'tpm': [607], 'tpd': 0, 'mpm': 5975}, ['M', 0]]], [['within MPM', {'tpm': [1200, 805], 'tpd': 0, 'mpm': 2100}, ['M', 0]], ['exactly MPM', {'tpm': [1000, 1100], 'tpd': 0, 'mpm': 2100}, ['M', 0]], ['exactly 5 percent over', {'tpm': [1100, 1105], 'tpd': 0, 'mpm': 2100}, ['5M', 5]], ['just over 5 percent', {'tpm': [1100, 1111], 'tpd': 0, 'mpm': 2100}, ['10M', 10]], ['deduction brings within', {'tpm': [1500, 900], 'tpd': 255, 'mpm': 2200}, ['M', 0]], ['beyond 25 percent', {'tpm': [2000, 1250], 'tpd': 0, 'mpm': 2500}, 'ERR_EXCEEDS'], ['ratio rounds down to band', {'tpm': [5260], 'tpd': 0, 'mpm': 5000}, ['10M', 10]], ['sampled case 1', {'tpm': [1024], 'tpd': 298, 'mpm': 6290}, ['M', 0]], ['sampled case 2', {'tpm': [1754, 1180], 'tpd': 0, 'mpm': 872}, 'ERR_EXCEEDS'], ['sampled case 3', {'tpm': [3753, 4785], 'tpd': 130, 'mpm': 7546}, ['15M', 15]]]]\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":"4fc129cf644d74d91353c89cf613568b26f88d7c9e95433a1491307a44c0103b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    total = sum(x['tpm']) + x['tpd']\n    mpm = x['mpm']\n    if total * 100 <= mpm * 100: return ['M', 0]\n    for pct in (5, 10, 15, 20, 25):\n        if total * 100 <= mpm * (100 + pct):\n            return ['%dM' % pct, pct]\n    return 'ERR_EXCEEDS'\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['within MPM', {'tpm': [1200, 801], 'tpd': 0, 'mpm': 2100}, ['M', 0]], ['exactly MPM', {'tpm': [1000, 1100], 'tpd': 0, 'mpm': 2100}, ['M', 0]], ['exactly 5 percent over', {'tpm': [1100, 1105], 'tpd': 0, 'mpm': 2100}, ['5M', 5]], ['just over 5 percent', {'tpm': [1100, 1107], 'tpd': 0, 'mpm': 2100}, ['10M', 10]], ['deduction brings within', {'tpm': [1500, 900], 'tpd': 251, 'mpm': 2200}, ['M', 0]], ['beyond 25 percent', {'tpm': [2000, 1210], 'tpd': 0, 'mpm': 2500}, 'ERR_EXCEEDS'], ['ratio rounds down to band', {'tpm': [5256], 'tpd': 0, 'mpm': 5000}, ['10M', 10]], ['sampled case 1', {'tpm': [2492, 2156], 'tpd': 0, 'mpm': 4150}, ['15M', 15]], ['sampled case 2', {'tpm': [3592, 2721], 'tpd': 0, 'mpm': 5598}, ['15M', 15]], ['sampled case 3', {'tpm': [402, 360], 'tpd': 73, 'mpm': 652}, ['10M', 10]]], [['within MPM', {'tpm': [1200, 802], 'tpd': 0, 'mpm': 2100}, ['M', 0]], ['exactly MPM', {'tpm': [1000, 1100], 'tpd': 0, 'mpm': 2100}, ['M', 0]], ['exactly 5 percent over', {'tpm': [1100, 1105], 'tpd': 0, 'mpm': 2100}, ['5M', 5]], ['just over 5 percent', {'tpm': [1100, 1108], 'tpd': 0, 'mpm': 2100}, ['10M', 10]], ['deduction brings within', {'tpm': [1500, 900], 'tpd': 252, 'mpm': 2200}, ['M', 0]], ['beyond 25 percent', {'tpm': [2000, 1220], 'tpd': 0, 'mpm': 2500}, 'ERR_EXCEEDS'], ['ratio rounds down to band', {'tpm': [5257], 'tpd': 0, 'mpm': 5000}, ['10M', 10]], ['sampled case 1', {'tpm': [4525, 5148], 'tpd': 0, 'mpm': 7940}, ['25M', 25]], ['sampled case 2', {'tpm': [3880, 3908], 'tpd': 293, 'mpm': 7743}, ['M', 0]], ['sampled case 3', {'tpm': [3404, 3171], 'tpd': 0, 'mpm': 5451}, ['25M', 25]]], [['within MPM', {'tpm': [1200, 803], 'tpd': 0, 'mpm': 2100}, ['M', 0]], ['exactly MPM', {'tpm': [1000, 1100], 'tpd': 0, 'mpm': 2100}, ['M', 0]], ['exactly 5 percent over', {'tpm': [1100, 1105], 'tpd': 0, 'mpm': 2100}, ['5M', 5]], ['just over 5 percent', {'tpm': [1100, 1109], 'tpd': 0, 'mpm': 2100}, ['10M', 10]], ['deduction brings within', {'tpm': [1500, 900], 'tpd': 253, 'mpm': 2200}, ['M', 0]], ['beyond 25 percent', {'tpm': [2000, 1230], 'tpd': 0, 'mpm': 2500}, 'ERR_EXCEEDS'], ['ratio rounds down to band', {'tpm': [5258], 'tpd': 0, 'mpm': 5000}, ['10M', 10]], ['sampled case 1', {'tpm': [2696, 2449], 'tpd': 42, 'mpm': 4715}, ['10M', 10]], ['sampled case 2', {'tpm': [193], 'tpd': 0, 'mpm': 8525}, ['M', 0]], ['sampled case 3', {'tpm': [1557, 1285], 'tpd': 0, 'mpm': 2456}, ['20M', 20]]], [['within MPM', {'tpm': [1200, 804], 'tpd': 0, 'mpm': 2100}, ['M', 0]], ['exactly MPM', {'tpm': [1000, 1100], 'tpd': 0, 'mpm': 2100}, ['M', 0]], ['exactly 5 percent over', {'tpm': [1100, 1105], 'tpd': 0, 'mpm': 2100}, ['5M', 5]], ['just over 5 percent', {'tpm': [1100, 1110], 'tpd': 0, 'mpm': 2100}, ['10M', 10]], ['deduction brings within', {'tpm': [1500, 900], 'tpd': 254, 'mpm': 2200}, ['M', 0]], ['beyond 25 percent', {'tpm': [2000, 1240], 'tpd': 0, 'mpm': 2500}, 'ERR_EXCEEDS'], ['ratio rounds down to band', {'tpm': [5259], 'tpd': 0, 'mpm': 5000}, ['10M', 10]], ['sampled case 1', {'tpm': [1579, 2622], 'tpd': 0, 'mpm': 1172}, 'ERR_EXCEEDS'], ['sampled case 2', {'tpm': [3163, 3734], 'tpd': 278, 'mpm': 3722}, 'ERR_EXCEEDS'], ['sampled case 3', {'tpm': [607], 'tpd': 0, 'mpm': 5975}, ['M', 0]]], [['within MPM', {'tpm': [1200, 805], 'tpd': 0, 'mpm': 2100}, ['M', 0]], ['exactly MPM', {'tpm': [1000, 1100], 'tpd': 0, 'mpm': 2100}, ['M', 0]], ['exactly 5 percent over', {'tpm': [1100, 1105], 'tpd': 0, 'mpm': 2100}, ['5M', 5]], ['just over 5 percent', {'tpm': [1100, 1111], 'tpd': 0, 'mpm': 2100}, ['10M', 10]], ['deduction brings within', {'tpm': [1500, 900], 'tpd': 255, 'mpm': 2200}, ['M', 0]], ['beyond 25 percent', {'tpm': [2000, 1250], 'tpd': 0, 'mpm': 2500}, 'ERR_EXCEEDS'], ['ratio rounds down to band', {'tpm': [5260], 'tpd': 0, 'mpm': 5000}, ['10M', 10]], ['sampled case 1', {'tpm': [1024], 'tpd': 298, 'mpm': 6290}, ['M', 0]], ['sampled case 2', {'tpm': [1754, 1180], 'tpd': 0, 'mpm': 872}, 'ERR_EXCEEDS'], ['sampled case 3', {'tpm': [3753, 4785], 'tpd': 130, 'mpm': 7546}, ['15M', 15]]]]\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-excess-mileage-bands-tpd-sign","generated_at":"2026-09-29T14:47:44.393090+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"The mileage system surcharges fares in 5% bands when the ticketed routing exceeds the maximum permitted mileage.","root_cause":"The TPD is added to the TPM total instead of subtracted.","sha256":"b26e53d77f6400edcdabd20ffdd09814820244beed91d2e3faa3fcb63d48a286","title":"Ticketed point deduction added to mileage · 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":41.902,"exit_code":1,"observations":[{"actual":["M",0],"check":"within MPM","expected":["M",0],"passed":true},{"actual":["M",0],"check":"exactly MPM","expected":["M",0],"passed":true},{"actual":["5M",5],"check":"exactly 5 percent over","expected":["5M",5],"passed":true},{"actual":["10M",10],"check":"just over 5 percent","expected":["10M",10],"passed":true},{"actual":["10M",10],"check":"deduction brings within","expected":["M",0],"passed":false},{"actual":"ERR_EXCEEDS","check":"beyond 25 percent","expected":"ERR_EXCEEDS","passed":true},{"actual":["10M",10],"check":"ratio rounds down to band","expected":["10M",10],"passed":true},{"actual":["15M",15],"check":"sampled case 1","expected":["15M",15],"passed":true},{"actual":["15M",15],"check":"sampled case 2","expected":["15M",15],"passed":true},{"actual":["20M",20],"check":"sampled case 3","expected":["10M",10],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"within MPM\", \"actual\": [\"M\", 0], \"expected\": [\"M\", 0], \"passed\": true}, {\"check\": \"exactly MPM\", \"actual\": [\"M\", 0], \"expected\": [\"M\", 0], \"passed\": true}, {\"check\": \"exactly 5 percent over\", \"actual\": [\"5M\", 5], \"expected\": [\"5M\", 5], \"passed\": true}, {\"check\": \"just over 5 percent\", \"actual\": [\"10M\", 10], \"expected\": [\"10M\", 10], \"passed\": true}, {\"check\": \"deduction brings within\", \"actual\": [\"10M\", 10], \"expected\": [\"M\", 0], \"passed\": false}, {\"check\": \"beyond 25 percent\", \"actual\": \"ERR_EXCEEDS\", \"expected\": \"ERR_EXCEEDS\", \"passed\": true}, {\"check\": \"ratio rounds down to band\", \"actual\": [\"10M\", 10], \"expected\": [\"10M\", 10], \"passed\": true}, {\"check\": \"sampled case 1\", \"actual\": [\"15M\", 15], \"expected\": [\"15M\", 15], \"passed\": true}, {\"check\": \"sampled case 2\", \"actual\": [\"15M\", 15], \"expected\": [\"15M\", 15], \"passed\": true}, {\"check\": \"sampled case 3\", \"actual\": [\"20M\", 20], \"expected\": [\"10M\", 10], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.045,"exit_code":1,"observations":[{"actual":["M",0],"check":"within MPM","expected":["M",0],"passed":true},{"actual":["M",0],"check":"exactly MPM","expected":["M",0],"passed":true},{"actual":["5M",5],"check":"exactly 5 percent over","expected":["5M",5],"passed":true},{"actual":["10M",10],"check":"just over 5 percent","expected":["10M",10],"passed":true},{"actual":["25M",25],"check":"deduction brings within","expected":["M",0],"passed":false},{"actual":"ERR_EXCEEDS","check":"beyond 25 percent","expected":"ERR_EXCEEDS","passed":true},{"actual":["10M",10],"check":"ratio rounds down to band","expected":["10M",10],"passed":true},{"actual":["15M",15],"check":"sampled case 1","expected":["15M",15],"passed":true},{"actual":["15M",15],"check":"sampled case 2","expected":["15M",15],"passed":true},{"actual":"ERR_EXCEEDS","check":"sampled case 3","expected":["10M",10],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"within MPM\", \"actual\": [\"M\", 0], \"expected\": [\"M\", 0], \"passed\": true}, {\"check\": \"exactly MPM\", \"actual\": [\"M\", 0], \"expected\": [\"M\", 0], \"passed\": true}, {\"check\": \"exactly 5 percent over\", \"actual\": [\"5M\", 5], \"expected\": [\"5M\", 5], \"passed\": true}, {\"check\": \"just over 5 percent\", \"actual\": [\"10M\", 10], \"expected\": [\"10M\", 10], \"passed\": true}, {\"check\": \"deduction brings within\", \"actual\": [\"25M\", 25], \"expected\": [\"M\", 0], \"passed\": false}, {\"check\": \"beyond 25 percent\", \"actual\": \"ERR_EXCEEDS\", \"expected\": \"ERR_EXCEEDS\", \"passed\": true}, {\"check\": \"ratio rounds down to band\", \"actual\": [\"10M\", 10], \"expected\": [\"10M\", 10], \"passed\": true}, {\"check\": \"sampled case 1\", \"actual\": [\"15M\", 15], \"expected\": [\"15M\", 15], \"passed\": true}, {\"check\": \"sampled case 2\", \"actual\": [\"15M\", 15], \"expected\": [\"15M\", 15], \"passed\": true}, {\"check\": \"sampled case 3\", \"actual\": \"ERR_EXCEEDS\", \"expected\": [\"10M\", 10], \"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."}}