{"abstract":"Traffic moving at exactly 5 m/s is billed on the clock.","category":"Ride-hailing fare and surge pricing","checks":7,"contract":"A single-tariff taximeter bills each segment [seconds, meters] by distance when its speed is at least v m/s (meters >= v*seconds, so a zero-duration movement bills distance) and by time otherwise, never both. Charges accumulate exactly (per_km per 1000 m, per_hour per 3600 s) and the total is rounded half up to a cent once, then the flag fall is added.","contract_signature":"segments, rate","evaluation_group":"w2-ride-hailing-fare-surge-taximeter-single-tariff","failed_approach":"Excluding zero-duration segments bills their distance as zero time.","family":"w2-ride-hailing-fare-surge-taximeter-single-tariff-switch-speed-boundary","id":"FA-85771","implementations":{"attempt":{"sha256":"d7b5cb3fe11eb71b574c28b9ed13ebadddb80e6e937fb1d1f98addbbad45f61a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(segments, rate):\n    acc = Fraction(0)\n    for dt, dm in segments:\n        if dm >= rate['v'] * dt and dt > 0:\n            acc += Fraction(dm * rate['per_km'], 1000)\n        else:\n            acc += Fraction(dt * rate['per_hour'], 3600)\n    cents = int(acc * 2 + 1) // 2\n    return rate['flag'] + cents\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: switch speed boundary', [[[10, 50]], {'flag': 390, 'per_hour': 3900, 'per_km': 245, 'v': 5}],\n   402),\n  ('partial repair probe: switch speed boundary',\n   [[[0, 7], [10, 20], [1, 7]], {'flag': 390, 'per_hour': 3600, 'per_km': 245, 'v': 5}], 403),\n  ('second regression',\n   [[[30, 60], [0, 3], [0, 0], [10, 0], [10, 53], [30, 7]],\n    {'flag': 300, 'per_hour': 3900, 'per_km': 245, 'v': 5}],\n   390),\n  ('normal control 1',\n   [[[10, 49], [10, 0], [5, 24], [10, 53], [0, 0]], {'flag': 300, 'per_hour': 3600, 'per_km': 245, 'v': 5}],\n   338),\n  ('normal control 2',\n   [[[1, 11], [30, 330], [0, 0], [30, 149]], {'flag': 300, 'per_hour': 4150, 'per_km': 230, 'v': 5}], 413),\n  ('normal control 3', [[[1, 7], [10, 49]], {'flag': 390, 'per_hour': 3900, 'per_km': 230, 'v': 5}], 402),\n  ('normal control 4', [[[1, 8]], {'flag': 390, 'per_hour': 4150, 'per_km': 245, 'v': 5}], 392)],\n [('regression: switch speed boundary',\n   [[[0, 0], [5, 24], [1, 8], [1, 11], [10, 50]], {'flag': 300, 'per_hour': 3600, 'per_km': 230, 'v': 5}],\n   321),\n  ('partial repair probe: switch speed boundary',\n   [[[30, 150], [10, 0], [30, 153], [0, 7]], {'flag': 390, 'per_hour': 4150, 'per_km': 199, 'v': 5}], 463),\n  ('second regression',\n   [[[30, 7], [30, 149], [10, 50], [10, 49], [5, 7]], {'flag': 390, 'per_hour': 3900, 'per_km': 245, 'v': 5}],\n   484),\n  ('normal control 1', [[[0, 0]], {'flag': 390, 'per_hour': 4150, 'per_km': 230, 'v': 5}], 390),\n  ('normal control 2', [[[30, 149], [10, 53]], {'flag': 390, 'per_hour': 3900, 'per_km': 245, 'v': 5}], 435),\n  ('normal control 3', [[[1, 0], [10, 0]], {'flag': 300, 'per_hour': 3900, 'per_km': 230, 'v': 5}], 312),\n  ('normal control 4', [[[1, 5], [10, 110], [5, 24]], {'flag': 390, 'per_hour': 3900, 'per_km': 199, 'v': 5}],\n   418)],\n [('regression: switch speed boundary',\n   [[[10, 110], [1, 5], [0, 3], [5, 55]], {'flag': 390, 'per_hour': 4150, 'per_km': 199, 'v': 5}], 424),\n  ('partial repair probe: switch speed boundary',\n   [[[30, 7], [10, 0], [0, 0], [30, 153], [30, 0], [0, 7]],\n    {'flag': 300, 'per_hour': 3600, 'per_km': 230, 'v': 5}],\n   407),\n  ('second regression',\n   [[[0, 3], [5, 25], [10, 0], [0, 7], [1, 7]], {'flag': 300, 'per_hour': 3600, 'per_km': 245, 'v': 5}],\n   320),\n  ('normal control 1', [[[30, 149], [0, 0]], {'flag': 390, 'per_hour': 3600, 'per_km': 245, 'v': 5}], 420),\n  ('normal control 2', [[[10, 110], [10, 7]], {'flag': 300, 'per_hour': 3600, 'per_km': 199, 'v': 5}], 332),\n  ('normal control 3', [[[30, 60], [1, 7], [0, 0]], {'flag': 390, 'per_hour': 3900, 'per_km': 199, 'v': 5}],\n   424),\n  ('normal control 4', [[[5, 0], [5, 0], [1, 2]], {'flag': 390, 'per_hour': 4150, 'per_km': 230, 'v': 5}],\n   403)],\n [('regression: switch speed boundary',\n   [[[10, 0], [30, 0], [10, 50], [30, 60], [5, 55], [5, 24]],\n    {'flag': 390, 'per_hour': 3600, 'per_km': 230, 'v': 5}],\n   489),\n  ('partial repair probe: switch speed boundary',\n   [[[0, 7], [30, 149], [10, 7], [30, 60], [0, 0], [30, 149]],\n    {'flag': 390, 'per_hour': 3600, 'per_km': 199, 'v': 5}],\n   491),\n  ('second regression',\n   [[[10, 20], [1, 11], [5, 10], [30, 7], [0, 0], [0, 7]],\n    {'flag': 390, 'per_hour': 4150, 'per_km': 245, 'v': 5}],\n   446),\n  ('normal control 1',\n   [[[1, 5], [1, 8], [5, 25], [5, 10], [0, 0], [10, 20]],\n    {'flag': 390, 'per_hour': 3900, 'per_km': 199, 'v': 5}],\n   414),\n  ('normal control 2',\n   [[[10, 53], [30, 7], [10, 20]], {'flag': 300, 'per_hour': 3600, 'per_km': 245, 'v': 5}], 353),\n  ('normal control 3', [[[10, 0], [30, 0]], {'flag': 390, 'per_hour': 3900, 'per_km': 199, 'v': 5}], 433),\n  ('normal control 4',\n   [[[1, 4], [1, 5], [30, 7], [10, 110]], {'flag': 390, 'per_hour': 3600, 'per_km': 199, 'v': 5}], 444)],\n [('regression: switch speed boundary',\n   [[[1, 5], [10, 110], [10, 50], [1, 7]], {'flag': 300, 'per_hour': 4150, 'per_km': 199, 'v': 5}], 334),\n  ('partial repair probe: switch speed boundary',\n   [[[0, 7]], {'flag': 390, 'per_hour': 3900, 'per_km': 245, 'v': 5}], 392),\n  ('second regression',\n   [[[10, 20], [5, 0], [10, 110], [10, 49], [5, 25]], {'flag': 300, 'per_hour': 3900, 'per_km': 245, 'v': 5}],\n   360),\n  ('normal control 1', [[[10, 53]], {'flag': 390, 'per_hour': 3600, 'per_km': 199, 'v': 5}], 401),\n  ('normal control 2', [[[0, 0], [1, 8], [5, 24]], {'flag': 300, 'per_hour': 3600, 'per_km': 230, 'v': 5}],\n   307),\n  ('normal control 3', [[[10, 110]], {'flag': 300, 'per_hour': 4150, 'per_km': 199, 'v': 5}], 322),\n  ('normal control 4', [[[1, 4], [1, 5]], {'flag': 300, 'per_hour': 3900, 'per_km': 245, 'v': 5}], 302)]]\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":"6153f72e95a37b851a1e588666affeca9d596d8616a3d0c804d8f6af992d0a83","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(segments, rate):\n    acc = Fraction(0)\n    for dt, dm in segments:\n        if dm > rate['v'] * dt:\n            acc += Fraction(dm * rate['per_km'], 1000)\n        else:\n            acc += Fraction(dt * rate['per_hour'], 3600)\n    cents = int(acc * 2 + 1) // 2\n    return rate['flag'] + cents\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: switch speed boundary', [[[10, 50]], {'flag': 390, 'per_hour': 3900, 'per_km': 245, 'v': 5}],\n   402),\n  ('partial repair probe: switch speed boundary',\n   [[[0, 7], [10, 20], [1, 7]], {'flag': 390, 'per_hour': 3600, 'per_km': 245, 'v': 5}], 403),\n  ('second regression',\n   [[[30, 60], [0, 3], [0, 0], [10, 0], [10, 53], [30, 7]],\n    {'flag': 300, 'per_hour': 3900, 'per_km': 245, 'v': 5}],\n   390),\n  ('normal control 1',\n   [[[10, 49], [10, 0], [5, 24], [10, 53], [0, 0]], {'flag': 300, 'per_hour': 3600, 'per_km': 245, 'v': 5}],\n   338),\n  ('normal control 2',\n   [[[1, 11], [30, 330], [0, 0], [30, 149]], {'flag': 300, 'per_hour': 4150, 'per_km': 230, 'v': 5}], 413),\n  ('normal control 3', [[[1, 7], [10, 49]], {'flag': 390, 'per_hour': 3900, 'per_km': 230, 'v': 5}], 402),\n  ('normal control 4', [[[1, 8]], {'flag': 390, 'per_hour': 4150, 'per_km': 245, 'v': 5}], 392)],\n [('regression: switch speed boundary',\n   [[[0, 0], [5, 24], [1, 8], [1, 11], [10, 50]], {'flag': 300, 'per_hour': 3600, 'per_km': 230, 'v': 5}],\n   321),\n  ('partial repair probe: switch speed boundary',\n   [[[30, 150], [10, 0], [30, 153], [0, 7]], {'flag': 390, 'per_hour': 4150, 'per_km': 199, 'v': 5}], 463),\n  ('second regression',\n   [[[30, 7], [30, 149], [10, 50], [10, 49], [5, 7]], {'flag': 390, 'per_hour': 3900, 'per_km': 245, 'v': 5}],\n   484),\n  ('normal control 1', [[[0, 0]], {'flag': 390, 'per_hour': 4150, 'per_km': 230, 'v': 5}], 390),\n  ('normal control 2', [[[30, 149], [10, 53]], {'flag': 390, 'per_hour': 3900, 'per_km': 245, 'v': 5}], 435),\n  ('normal control 3', [[[1, 0], [10, 0]], {'flag': 300, 'per_hour': 3900, 'per_km': 230, 'v': 5}], 312),\n  ('normal control 4', [[[1, 5], [10, 110], [5, 24]], {'flag': 390, 'per_hour': 3900, 'per_km': 199, 'v': 5}],\n   418)],\n [('regression: switch speed boundary',\n   [[[10, 110], [1, 5], [0, 3], [5, 55]], {'flag': 390, 'per_hour': 4150, 'per_km': 199, 'v': 5}], 424),\n  ('partial repair probe: switch speed boundary',\n   [[[30, 7], [10, 0], [0, 0], [30, 153], [30, 0], [0, 7]],\n    {'flag': 300, 'per_hour': 3600, 'per_km': 230, 'v': 5}],\n   407),\n  ('second regression',\n   [[[0, 3], [5, 25], [10, 0], [0, 7], [1, 7]], {'flag': 300, 'per_hour': 3600, 'per_km': 245, 'v': 5}],\n   320),\n  ('normal control 1', [[[30, 149], [0, 0]], {'flag': 390, 'per_hour': 3600, 'per_km': 245, 'v': 5}], 420),\n  ('normal control 2', [[[10, 110], [10, 7]], {'flag': 300, 'per_hour': 3600, 'per_km': 199, 'v': 5}], 332),\n  ('normal control 3', [[[30, 60], [1, 7], [0, 0]], {'flag': 390, 'per_hour': 3900, 'per_km': 199, 'v': 5}],\n   424),\n  ('normal control 4', [[[5, 0], [5, 0], [1, 2]], {'flag': 390, 'per_hour': 4150, 'per_km': 230, 'v': 5}],\n   403)],\n [('regression: switch speed boundary',\n   [[[10, 0], [30, 0], [10, 50], [30, 60], [5, 55], [5, 24]],\n    {'flag': 390, 'per_hour': 3600, 'per_km': 230, 'v': 5}],\n   489),\n  ('partial repair probe: switch speed boundary',\n   [[[0, 7], [30, 149], [10, 7], [30, 60], [0, 0], [30, 149]],\n    {'flag': 390, 'per_hour': 3600, 'per_km': 199, 'v': 5}],\n   491),\n  ('second regression',\n   [[[10, 20], [1, 11], [5, 10], [30, 7], [0, 0], [0, 7]],\n    {'flag': 390, 'per_hour': 4150, 'per_km': 245, 'v': 5}],\n   446),\n  ('normal control 1',\n   [[[1, 5], [1, 8], [5, 25], [5, 10], [0, 0], [10, 20]],\n    {'flag': 390, 'per_hour': 3900, 'per_km': 199, 'v': 5}],\n   414),\n  ('normal control 2',\n   [[[10, 53], [30, 7], [10, 20]], {'flag': 300, 'per_hour': 3600, 'per_km': 245, 'v': 5}], 353),\n  ('normal control 3', [[[10, 0], [30, 0]], {'flag': 390, 'per_hour': 3900, 'per_km': 199, 'v': 5}], 433),\n  ('normal control 4',\n   [[[1, 4], [1, 5], [30, 7], [10, 110]], {'flag': 390, 'per_hour': 3600, 'per_km': 199, 'v': 5}], 444)],\n [('regression: switch speed boundary',\n   [[[1, 5], [10, 110], [10, 50], [1, 7]], {'flag': 300, 'per_hour': 4150, 'per_km': 199, 'v': 5}], 334),\n  ('partial repair probe: switch speed boundary',\n   [[[0, 7]], {'flag': 390, 'per_hour': 3900, 'per_km': 245, 'v': 5}], 392),\n  ('second regression',\n   [[[10, 20], [5, 0], [10, 110], [10, 49], [5, 25]], {'flag': 300, 'per_hour': 3900, 'per_km': 245, 'v': 5}],\n   360),\n  ('normal control 1', [[[10, 53]], {'flag': 390, 'per_hour': 3600, 'per_km': 199, 'v': 5}], 401),\n  ('normal control 2', [[[0, 0], [1, 8], [5, 24]], {'flag': 300, 'per_hour': 3600, 'per_km': 230, 'v': 5}],\n   307),\n  ('normal control 3', [[[10, 110]], {'flag': 300, 'per_hour': 4150, 'per_km': 199, 'v': 5}], 322),\n  ('normal control 4', [[[1, 4], [1, 5]], {'flag': 300, 'per_hour': 3900, 'per_km': 245, 'v': 5}], 302)]]\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 deterministic toy pricing contract stipulated for this example; it does not reproduce the pricing of any real ride-hailing operator or regulator. 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-ride-hailing-fare-surge-taximeter-single-tariff-switch-speed-boundary","generated_at":"2026-09-29T14:50:43.510105+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Ride-hailing prices are computed per trip at scale; ordering, unit and boundary slips become systematic over- or under-charging.","root_cause":"The mode test is strict.","sha256":"8ff2ee142893bc59679de811643f7dc2e47805c014e6c8b40f3709da8f22feca","title":"Segments exactly at the switch speed billed by time · 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":40.93,"exit_code":1,"observations":[{"actual":402,"check":"regression: switch speed boundary","expected":402,"passed":true},{"actual":402,"check":"partial repair probe: switch speed boundary","expected":403,"passed":false},{"actual":389,"check":"second regression","expected":390,"passed":false},{"actual":338,"check":"normal control 1","expected":338,"passed":true},{"actual":413,"check":"normal control 2","expected":413,"passed":true},{"actual":402,"check":"normal control 3","expected":402,"passed":true},{"actual":392,"check":"normal control 4","expected":392,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: switch speed boundary\", \"actual\": 402, \"expected\": 402, \"passed\": true}, {\"check\": \"partial repair probe: switch speed boundary\", \"actual\": 402, \"expected\": 403, \"passed\": false}, {\"check\": \"second regression\", \"actual\": 389, \"expected\": 390, \"passed\": false}, {\"check\": \"normal control 1\", \"actual\": 338, \"expected\": 338, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 413, \"expected\": 413, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": 402, \"expected\": 402, \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": 392, \"expected\": 392, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.418,"exit_code":1,"observations":[{"actual":401,"check":"regression: switch speed boundary","expected":402,"passed":false},{"actual":403,"check":"partial repair probe: switch speed boundary","expected":403,"passed":true},{"actual":390,"check":"second regression","expected":390,"passed":true},{"actual":338,"check":"normal control 1","expected":338,"passed":true},{"actual":413,"check":"normal control 2","expected":413,"passed":true},{"actual":402,"check":"normal control 3","expected":402,"passed":true},{"actual":392,"check":"normal control 4","expected":392,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: switch speed boundary\", \"actual\": 401, \"expected\": 402, \"passed\": false}, {\"check\": \"partial repair probe: switch speed boundary\", \"actual\": 403, \"expected\": 403, \"passed\": true}, {\"check\": \"second regression\", \"actual\": 390, \"expected\": 390, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": 338, \"expected\": 338, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 413, \"expected\": 413, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": 402, \"expected\": 402, \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": 392, \"expected\": 392, \"passed\": true}], \"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."}}