{"abstract":"Non-members pay 2.0x during a 2.5x surge.","category":"Ride-hailing fare and surge pricing","checks":7,"contract":"Membership is active if the flag is set and today is on or before the expiry day. Active members have surge capped at 2.0x (20 tenths) and, when the (capped) surge is at most 1.5x, get 10% off the surged fare (floored); fees are never discounted. Return the amount due in cents.","contract_signature":"fare, member, now","evaluation_group":"w2-ride-hailing-fare-surge-membership-benefits","failed_approach":"Also capping extreme surges for everyone still gives non-members the benefit.","family":"w2-ride-hailing-fare-surge-membership-benefits-member-only-surge-cap","id":"FA-85791","implementations":{"attempt":{"sha256":"6a80d44a70cb5599f142d17f66e0940ea4008965bfee382878b8329ad3b005e1","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(fare, member, now):\n    active = member['active'] and now <= member['expires']\n    surge = fare['surge']\n    if active or fare['surge'] > 25:\n        surge = min(surge, 20)\n    surged = (fare['core'] * surge * 2 + 10) // 20\n    disc = 0\n    if active and surge <= 15:\n        disc = surged // 10\n    return surged - disc + fare['fees']\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: member-only surge cap',\n   [{'core': 2555, 'fees': 250, 'surge': 25}, {'active': False, 'expires': 100}, 100], 6638),\n  ('partial repair probe: member-only surge cap',\n   [{'core': 999, 'fees': 245, 'surge': 30}, {'active': False, 'expires': 100}, 101], 3242),\n  ('second regression', [{'core': 1234, 'fees': 199, 'surge': 30}, {'active': True, 'expires': 100}, 101],\n   3901),\n  ('normal control 1', [{'core': 999, 'fees': 199, 'surge': 30}, {'active': True, 'expires': 100}, 100],\n   2197),\n  ('normal control 2', [{'core': 999, 'fees': 199, 'surge': 12}, {'active': True, 'expires': 100}, 100],\n   1279),\n  ('normal control 3', [{'core': 1234, 'fees': 0, 'surge': 30}, {'active': True, 'expires': 100}, 100], 2468),\n  ('normal control 4', [{'core': 1000, 'fees': 0, 'surge': 17}, {'active': True, 'expires': 100}, 101],\n   1700)],\n [('regression: member-only surge cap',\n   [{'core': 1234, 'fees': 245, 'surge': 30}, {'active': True, 'expires': 100}, 101], 3947),\n  ('partial repair probe: member-only surge cap',\n   [{'core': 1234, 'fees': 199, 'surge': 30}, {'active': True, 'expires': 100}, 101], 3901),\n  ('second regression', [{'core': 1000, 'fees': 245, 'surge': 25}, {'active': False, 'expires': 100}, 99],\n   2745),\n  ('normal control 1', [{'core': 999, 'fees': 0, 'surge': 17}, {'active': True, 'expires': 100}, 99], 1698),\n  ('normal control 2', [{'core': 1234, 'fees': 0, 'surge': 10}, {'active': True, 'expires': 100}, 99], 1111),\n  ('normal control 3', [{'core': 1234, 'fees': 0, 'surge': 30}, {'active': True, 'expires': 100}, 100], 2468),\n  ('normal control 4', [{'core': 999, 'fees': 199, 'surge': 17}, {'active': True, 'expires': 100}, 100],\n   1897)],\n [('regression: member-only surge cap',\n   [{'core': 1000, 'fees': 199, 'surge': 25}, {'active': True, 'expires': 100}, 101], 2699),\n  ('partial repair probe: member-only surge cap',\n   [{'core': 1000, 'fees': 199, 'surge': 30}, {'active': True, 'expires': 100}, 101], 3199),\n  ('second regression', [{'core': 999, 'fees': 250, 'surge': 25}, {'active': False, 'expires': 100}, 100],\n   2748),\n  ('normal control 1', [{'core': 1000, 'fees': 250, 'surge': 10}, {'active': False, 'expires': 100}, 100],\n   1250),\n  ('normal control 2', [{'core': 1000, 'fees': 250, 'surge': 20}, {'active': True, 'expires': 100}, 101],\n   2250),\n  ('normal control 3', [{'core': 1234, 'fees': 0, 'surge': 30}, {'active': True, 'expires': 100}, 100], 2468),\n  ('normal control 4', [{'core': 999, 'fees': 245, 'surge': 17}, {'active': True, 'expires': 100}, 99],\n   1943)],\n [('regression: member-only surge cap',\n   [{'core': 1000, 'fees': 250, 'surge': 30}, {'active': False, 'expires': 100}, 99], 3250),\n  ('partial repair probe: member-only surge cap',\n   [{'core': 999, 'fees': 199, 'surge': 30}, {'active': False, 'expires': 100}, 99], 3196),\n  ('second regression', [{'core': 1000, 'fees': 199, 'surge': 30}, {'active': True, 'expires': 100}, 101],\n   3199),\n  ('normal control 1', [{'core': 999, 'fees': 245, 'surge': 25}, {'active': True, 'expires': 100}, 100],\n   2243),\n  ('normal control 2', [{'core': 1234, 'fees': 245, 'surge': 17}, {'active': True, 'expires': 100}, 101],\n   2343),\n  ('normal control 3', [{'core': 1000, 'fees': 0, 'surge': 10}, {'active': True, 'expires': 100}, 100], 900),\n  ('normal control 4', [{'core': 1000, 'fees': 199, 'surge': 15}, {'active': True, 'expires': 100}, 100],\n   1549)],\n [('regression: member-only surge cap',\n   [{'core': 1234, 'fees': 245, 'surge': 25}, {'active': False, 'expires': 100}, 100], 3330),\n  ('partial repair probe: member-only surge cap',\n   [{'core': 1234, 'fees': 199, 'surge': 30}, {'active': False, 'expires': 100}, 100], 3901),\n  ('second regression', [{'core': 2555, 'fees': 0, 'surge': 25}, {'active': False, 'expires': 100}, 100],\n   6388),\n  ('normal control 1', [{'core': 1234, 'fees': 250, 'surge': 17}, {'active': True, 'expires': 100}, 100],\n   2348),\n  ('normal control 2', [{'core': 999, 'fees': 199, 'surge': 17}, {'active': True, 'expires': 100}, 100],\n   1897),\n  ('normal control 3', [{'core': 1234, 'fees': 250, 'surge': 12}, {'active': True, 'expires': 100}, 100],\n   1583),\n  ('normal control 4', [{'core': 2555, 'fees': 245, 'surge': 15}, {'active': True, 'expires': 100}, 101],\n   4078)]]\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":"89ea0f70a15e2c1f3552da1dea9a7c8fe171ef582b71609345ef4678a92fc02b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(fare, member, now):\n    active = member['active'] and now <= member['expires']\n    surge = fare['surge']\n    surge = min(surge, 20)\n    surged = (fare['core'] * surge * 2 + 10) // 20\n    disc = 0\n    if active and surge <= 15:\n        disc = surged // 10\n    return surged - disc + fare['fees']\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: member-only surge cap',\n   [{'core': 2555, 'fees': 250, 'surge': 25}, {'active': False, 'expires': 100}, 100], 6638),\n  ('partial repair probe: member-only surge cap',\n   [{'core': 999, 'fees': 245, 'surge': 30}, {'active': False, 'expires': 100}, 101], 3242),\n  ('second regression', [{'core': 1234, 'fees': 199, 'surge': 30}, {'active': True, 'expires': 100}, 101],\n   3901),\n  ('normal control 1', [{'core': 999, 'fees': 199, 'surge': 30}, {'active': True, 'expires': 100}, 100],\n   2197),\n  ('normal control 2', [{'core': 999, 'fees': 199, 'surge': 12}, {'active': True, 'expires': 100}, 100],\n   1279),\n  ('normal control 3', [{'core': 1234, 'fees': 0, 'surge': 30}, {'active': True, 'expires': 100}, 100], 2468),\n  ('normal control 4', [{'core': 1000, 'fees': 0, 'surge': 17}, {'active': True, 'expires': 100}, 101],\n   1700)],\n [('regression: member-only surge cap',\n   [{'core': 1234, 'fees': 245, 'surge': 30}, {'active': True, 'expires': 100}, 101], 3947),\n  ('partial repair probe: member-only surge cap',\n   [{'core': 1234, 'fees': 199, 'surge': 30}, {'active': True, 'expires': 100}, 101], 3901),\n  ('second regression', [{'core': 1000, 'fees': 245, 'surge': 25}, {'active': False, 'expires': 100}, 99],\n   2745),\n  ('normal control 1', [{'core': 999, 'fees': 0, 'surge': 17}, {'active': True, 'expires': 100}, 99], 1698),\n  ('normal control 2', [{'core': 1234, 'fees': 0, 'surge': 10}, {'active': True, 'expires': 100}, 99], 1111),\n  ('normal control 3', [{'core': 1234, 'fees': 0, 'surge': 30}, {'active': True, 'expires': 100}, 100], 2468),\n  ('normal control 4', [{'core': 999, 'fees': 199, 'surge': 17}, {'active': True, 'expires': 100}, 100],\n   1897)],\n [('regression: member-only surge cap',\n   [{'core': 1000, 'fees': 199, 'surge': 25}, {'active': True, 'expires': 100}, 101], 2699),\n  ('partial repair probe: member-only surge cap',\n   [{'core': 1000, 'fees': 199, 'surge': 30}, {'active': True, 'expires': 100}, 101], 3199),\n  ('second regression', [{'core': 999, 'fees': 250, 'surge': 25}, {'active': False, 'expires': 100}, 100],\n   2748),\n  ('normal control 1', [{'core': 1000, 'fees': 250, 'surge': 10}, {'active': False, 'expires': 100}, 100],\n   1250),\n  ('normal control 2', [{'core': 1000, 'fees': 250, 'surge': 20}, {'active': True, 'expires': 100}, 101],\n   2250),\n  ('normal control 3', [{'core': 1234, 'fees': 0, 'surge': 30}, {'active': True, 'expires': 100}, 100], 2468),\n  ('normal control 4', [{'core': 999, 'fees': 245, 'surge': 17}, {'active': True, 'expires': 100}, 99],\n   1943)],\n [('regression: member-only surge cap',\n   [{'core': 1000, 'fees': 250, 'surge': 30}, {'active': False, 'expires': 100}, 99], 3250),\n  ('partial repair probe: member-only surge cap',\n   [{'core': 999, 'fees': 199, 'surge': 30}, {'active': False, 'expires': 100}, 99], 3196),\n  ('second regression', [{'core': 1000, 'fees': 199, 'surge': 30}, {'active': True, 'expires': 100}, 101],\n   3199),\n  ('normal control 1', [{'core': 999, 'fees': 245, 'surge': 25}, {'active': True, 'expires': 100}, 100],\n   2243),\n  ('normal control 2', [{'core': 1234, 'fees': 245, 'surge': 17}, {'active': True, 'expires': 100}, 101],\n   2343),\n  ('normal control 3', [{'core': 1000, 'fees': 0, 'surge': 10}, {'active': True, 'expires': 100}, 100], 900),\n  ('normal control 4', [{'core': 1000, 'fees': 199, 'surge': 15}, {'active': True, 'expires': 100}, 100],\n   1549)],\n [('regression: member-only surge cap',\n   [{'core': 1234, 'fees': 245, 'surge': 25}, {'active': False, 'expires': 100}, 100], 3330),\n  ('partial repair probe: member-only surge cap',\n   [{'core': 1234, 'fees': 199, 'surge': 30}, {'active': False, 'expires': 100}, 100], 3901),\n  ('second regression', [{'core': 2555, 'fees': 0, 'surge': 25}, {'active': False, 'expires': 100}, 100],\n   6388),\n  ('normal control 1', [{'core': 1234, 'fees': 250, 'surge': 17}, {'active': True, 'expires': 100}, 100],\n   2348),\n  ('normal control 2', [{'core': 999, 'fees': 199, 'surge': 17}, {'active': True, 'expires': 100}, 100],\n   1897),\n  ('normal control 3', [{'core': 1234, 'fees': 250, 'surge': 12}, {'active': True, 'expires': 100}, 100],\n   1583),\n  ('normal control 4', [{'core': 2555, 'fees': 245, 'surge': 15}, {'active': True, 'expires': 100}, 101],\n   4078)]]\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-membership-benefits-member-only-surge-cap","generated_at":"2026-09-29T14:50:43.644514+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 member surge cap is applied unconditionally.","sha256":"74756da44f097f441cdb9f2b5ef5dce8583698fc8ed868d866eee5455d57e9a4","title":"Surge cap applied to non-members · 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":38.618,"exit_code":1,"observations":[{"actual":6638,"check":"regression: member-only surge cap","expected":6638,"passed":true},{"actual":2243,"check":"partial repair probe: member-only surge cap","expected":3242,"passed":false},{"actual":2667,"check":"second regression","expected":3901,"passed":false},{"actual":2197,"check":"normal control 1","expected":2197,"passed":true},{"actual":1279,"check":"normal control 2","expected":1279,"passed":true},{"actual":2468,"check":"normal control 3","expected":2468,"passed":true},{"actual":1700,"check":"normal control 4","expected":1700,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: member-only surge cap\", \"actual\": 6638, \"expected\": 6638, \"passed\": true}, {\"check\": \"partial repair probe: member-only surge cap\", \"actual\": 2243, \"expected\": 3242, \"passed\": false}, {\"check\": \"second regression\", \"actual\": 2667, \"expected\": 3901, \"passed\": false}, {\"check\": \"normal control 1\", \"actual\": 2197, \"expected\": 2197, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 1279, \"expected\": 1279, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": 2468, \"expected\": 2468, \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": 1700, \"expected\": 1700, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.532,"exit_code":1,"observations":[{"actual":5360,"check":"regression: member-only surge cap","expected":6638,"passed":false},{"actual":2243,"check":"partial repair probe: member-only surge cap","expected":3242,"passed":false},{"actual":2667,"check":"second regression","expected":3901,"passed":false},{"actual":2197,"check":"normal control 1","expected":2197,"passed":true},{"actual":1279,"check":"normal control 2","expected":1279,"passed":true},{"actual":2468,"check":"normal control 3","expected":2468,"passed":true},{"actual":1700,"check":"normal control 4","expected":1700,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: member-only surge cap\", \"actual\": 5360, \"expected\": 6638, \"passed\": false}, {\"check\": \"partial repair probe: member-only surge cap\", \"actual\": 2243, \"expected\": 3242, \"passed\": false}, {\"check\": \"second regression\", \"actual\": 2667, \"expected\": 3901, \"passed\": false}, {\"check\": \"normal control 1\", \"actual\": 2197, \"expected\": 2197, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 1279, \"expected\": 1279, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": 2468, \"expected\": 2468, \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": 1700, \"expected\": 1700, \"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."}}