{"abstract":"Demand-responsive meter rate adjustment returns a wrong result when the mean occupancy is truncated.","category":"Toll and parking fee computation","checks":8,"contract":"Input {rate, occupancy: hourly percentages, hi, lo, step, min_rate, max_rate, min_samples}. With fewer than min_samples samples the rate is unchanged. Otherwise the exact mean occupancy above hi raises the rate by step, below lo lowers it by step; the result is always clamped to [min_rate, max_rate].","evaluation_group":"w2-toll_and_parking_fee_computation-demand-meter-rate","failed_approach":"Rounding a mean of 79.5 up to 80 or 80.5 down (banker ties) still misclassifies blocks.","family":"w2-toll_and_parking_fee_computation-demand-meter-rate-mean","id":"FA-68756","implementations":{"attempt":{"sha256":"80c70aafa0437792a47f2ae171c3fbd555d805ef69b6a071c3fa5726211355a8","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    occ = x['occupancy']\n    if len(occ) < x['min_samples']:\n        return x['rate']\n    avg = round(sum(occ) / len(occ))\n    r = x['rate']\n    if avg > x['hi']:\n        r += x['step']\n    elif avg < x['lo']:\n        r -= x['step']\n    return max(x['min_rate'], min(x['max_rate'], r))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[({'rate': 500, 'occupancy': [40, 81, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 3}, 500), ({'rate': 575, 'occupancy': [], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 600, 'min_samples': 3}, 575), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 300, 'occupancy': [60, 60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 325, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 350), ({'rate': 300, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 375, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 400), ({'rate': 575, 'occupancy': [60, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 550)], [({'rate': 300, 'occupancy': [], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 700, 'min_samples': 3}, 300), ({'rate': 725, 'occupancy': [], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 725), ({'rate': 325, 'occupancy': [81, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 350), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 200, 'occupancy': [81, 80, 59, 60, 60, 86], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 200), ({'rate': 300, 'occupancy': [60, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 275), ({'rate': 300, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 75, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 100)], [({'rate': 300, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 800, 'occupancy': [70, 70, 70], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 600), ({'rate': 150, 'occupancy': [81, 80, 81, 80, 80, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 200), ({'rate': 300, 'occupancy': [60, 60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 375, 'occupancy': [59, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 350), ({'rate': 350, 'occupancy': [81, 80, 80, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 3}, 400), ({'rate': 500, 'occupancy': [59, 60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 450)], [({'rate': 425, 'occupancy': [81, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 475), ({'rate': 450, 'occupancy': [81, 94, 81, 67, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 475), ({'rate': 300, 'occupancy': [60, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 275), ({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 175, 'occupancy': [], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 175), ({'rate': 225, 'occupancy': [80, 80, 81, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 700, 'min_samples': 3}, 250), ({'rate': 800, 'occupancy': [70, 70, 70], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 600), ({'rate': 125, 'occupancy': [59, 60, 60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 3}, 100)], [({'rate': 500, 'occupancy': [81, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 525), ({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 150, 'occupancy': [81, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 200), ({'rate': 275, 'occupancy': [59, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 250), ({'rate': 650, 'occupancy': [80, 80, 81, 81], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 700), ({'rate': 475, 'occupancy': [60, 80, 81], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 475), ({'rate': 300, 'occupancy': [60, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 275)]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check('fee oracle' + ' %d' % i, 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":"deab423ef85d9fa7f9766b45a392b22f39bf0175e35a3c08d26ebc16df4ae150","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    occ = x['occupancy']\n    if len(occ) < x['min_samples']:\n        return x['rate']\n    avg = sum(occ) // len(occ)\n    r = x['rate']\n    if avg > x['hi']:\n        r += x['step']\n    elif avg < x['lo']:\n        r -= x['step']\n    return max(x['min_rate'], min(x['max_rate'], r))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[({'rate': 500, 'occupancy': [40, 81, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 3}, 500), ({'rate': 575, 'occupancy': [], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 600, 'min_samples': 3}, 575), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 300, 'occupancy': [60, 60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 325, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 350), ({'rate': 300, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 375, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 400), ({'rate': 575, 'occupancy': [60, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 550)], [({'rate': 300, 'occupancy': [], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 700, 'min_samples': 3}, 300), ({'rate': 725, 'occupancy': [], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 725), ({'rate': 325, 'occupancy': [81, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 350), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 200, 'occupancy': [81, 80, 59, 60, 60, 86], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 200), ({'rate': 300, 'occupancy': [60, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 275), ({'rate': 300, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 75, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 100)], [({'rate': 300, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 800, 'occupancy': [70, 70, 70], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 600), ({'rate': 150, 'occupancy': [81, 80, 81, 80, 80, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 200), ({'rate': 300, 'occupancy': [60, 60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 375, 'occupancy': [59, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 350), ({'rate': 350, 'occupancy': [81, 80, 80, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 3}, 400), ({'rate': 500, 'occupancy': [59, 60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 450)], [({'rate': 425, 'occupancy': [81, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 475), ({'rate': 450, 'occupancy': [81, 94, 81, 67, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 475), ({'rate': 300, 'occupancy': [60, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 275), ({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 175, 'occupancy': [], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 175), ({'rate': 225, 'occupancy': [80, 80, 81, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 700, 'min_samples': 3}, 250), ({'rate': 800, 'occupancy': [70, 70, 70], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 600), ({'rate': 125, 'occupancy': [59, 60, 60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 3}, 100)], [({'rate': 500, 'occupancy': [81, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 525), ({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 150, 'occupancy': [81, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 200), ({'rate': 275, 'occupancy': [59, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 250), ({'rate': 650, 'occupancy': [80, 80, 81, 81], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 700), ({'rate': 475, 'occupancy': [60, 80, 81], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 475), ({'rate': 300, 'occupancy': [60, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 275)]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check('fee oracle' + ' %d' % i, 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":"062be17109a2ae98151fecdc9838d026c9a2a6eb82b89136da734afd44783fe7","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    occ = x['occupancy']\n    if len(occ) < x['min_samples']:\n        return x['rate']\n    avg = Fraction(sum(occ), len(occ))\n    r = x['rate']\n    if avg > x['hi']:\n        r += x['step']\n    elif avg < x['lo']:\n        r -= x['step']\n    return max(x['min_rate'], min(x['max_rate'], r))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[({'rate': 500, 'occupancy': [40, 81, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 3}, 500), ({'rate': 575, 'occupancy': [], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 600, 'min_samples': 3}, 575), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 300, 'occupancy': [60, 60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 325, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 350), ({'rate': 300, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 375, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 400), ({'rate': 575, 'occupancy': [60, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 550)], [({'rate': 300, 'occupancy': [], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 700, 'min_samples': 3}, 300), ({'rate': 725, 'occupancy': [], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 725), ({'rate': 325, 'occupancy': [81, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 350), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 200, 'occupancy': [81, 80, 59, 60, 60, 86], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 200), ({'rate': 300, 'occupancy': [60, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 275), ({'rate': 300, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 75, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 100)], [({'rate': 300, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 800, 'occupancy': [70, 70, 70], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 600), ({'rate': 150, 'occupancy': [81, 80, 81, 80, 80, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 200), ({'rate': 300, 'occupancy': [60, 60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 375, 'occupancy': [59, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 350), ({'rate': 350, 'occupancy': [81, 80, 80, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 3}, 400), ({'rate': 500, 'occupancy': [59, 60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 450)], [({'rate': 425, 'occupancy': [81, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 475), ({'rate': 450, 'occupancy': [81, 94, 81, 67, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 475), ({'rate': 300, 'occupancy': [60, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 275), ({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 175, 'occupancy': [], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 175), ({'rate': 225, 'occupancy': [80, 80, 81, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 700, 'min_samples': 3}, 250), ({'rate': 800, 'occupancy': [70, 70, 70], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 600), ({'rate': 125, 'occupancy': [59, 60, 60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 3}, 100)], [({'rate': 500, 'occupancy': [81, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 525), ({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 150, 'occupancy': [81, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 200), ({'rate': 275, 'occupancy': [59, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 250), ({'rate': 650, 'occupancy': [80, 80, 81, 81], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 700), ({'rate': 475, 'occupancy': [60, 80, 81], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 475), ({'rate': 300, 'occupancy': [60, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 275)]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check('fee oracle' + ' %d' % i, 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 toy model with a stipulated contract; it makes no claim of conformance to any agency manual or standard. 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-toll_and_parking_fee_computation-demand-meter-rate-mean","generated_at":"2026-09-29T14:48:05.195995+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Fee engines bill customers in integer cents; a wrong boundary, rounding stage or cap scope silently over- or under-charges.","repair":"Restore the mean occupancy rule so that the step reads `Fraction(sum(occ), len(occ))`.","root_cause":"A mean of 80.5 percent truncates to 80 and fails to raise the rate.","sha256":"82b7531221a7c1363f0161f437c6c76ed5715d80928b1b9b91bdcf523a4b3a8d","title":"Demand-responsive meter rate adjustment: the mean occupancy is truncated · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":47.19,"exit_code":1,"observations":[{"actual":500,"check":"fee oracle 0","expected":500,"passed":true},{"actual":575,"check":"fee oracle 1","expected":575,"passed":true},{"actual":300,"check":"fee oracle 2","expected":300,"passed":true},{"actual":300,"check":"fee oracle 3","expected":300,"passed":true},{"actual":325,"check":"fee oracle 4","expected":350,"passed":false},{"actual":300,"check":"fee oracle 5","expected":325,"passed":false},{"actual":375,"check":"fee oracle 6","expected":400,"passed":false},{"actual":575,"check":"fee oracle 7","expected":550,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fee oracle 0\", \"actual\": 500, \"expected\": 500, \"passed\": true}, {\"check\": \"fee oracle 1\", \"actual\": 575, \"expected\": 575, \"passed\": true}, {\"check\": \"fee oracle 2\", \"actual\": 300, \"expected\": 300, \"passed\": true}, {\"check\": \"fee oracle 3\", \"actual\": 300, \"expected\": 300, \"passed\": true}, {\"check\": \"fee oracle 4\", \"actual\": 325, \"expected\": 350, \"passed\": false}, {\"check\": \"fee oracle 5\", \"actual\": 300, \"expected\": 325, \"passed\": false}, {\"check\": \"fee oracle 6\", \"actual\": 375, \"expected\": 400, \"passed\": false}, {\"check\": \"fee oracle 7\", \"actual\": 575, \"expected\": 550, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":44.636,"exit_code":1,"observations":[{"actual":500,"check":"fee oracle 0","expected":500,"passed":true},{"actual":575,"check":"fee oracle 1","expected":575,"passed":true},{"actual":300,"check":"fee oracle 2","expected":300,"passed":true},{"actual":300,"check":"fee oracle 3","expected":300,"passed":true},{"actual":325,"check":"fee oracle 4","expected":350,"passed":false},{"actual":300,"check":"fee oracle 5","expected":325,"passed":false},{"actual":375,"check":"fee oracle 6","expected":400,"passed":false},{"actual":550,"check":"fee oracle 7","expected":550,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fee oracle 0\", \"actual\": 500, \"expected\": 500, \"passed\": true}, {\"check\": \"fee oracle 1\", \"actual\": 575, \"expected\": 575, \"passed\": true}, {\"check\": \"fee oracle 2\", \"actual\": 300, \"expected\": 300, \"passed\": true}, {\"check\": \"fee oracle 3\", \"actual\": 300, \"expected\": 300, \"passed\": true}, {\"check\": \"fee oracle 4\", \"actual\": 325, \"expected\": 350, \"passed\": false}, {\"check\": \"fee oracle 5\", \"actual\": 300, \"expected\": 325, \"passed\": false}, {\"check\": \"fee oracle 6\", \"actual\": 375, \"expected\": 400, \"passed\": false}, {\"check\": \"fee oracle 7\", \"actual\": 550, \"expected\": 550, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":44.558,"exit_code":0,"observations":[{"actual":500,"check":"fee oracle 0","expected":500,"passed":true},{"actual":575,"check":"fee oracle 1","expected":575,"passed":true},{"actual":300,"check":"fee oracle 2","expected":300,"passed":true},{"actual":300,"check":"fee oracle 3","expected":300,"passed":true},{"actual":350,"check":"fee oracle 4","expected":350,"passed":true},{"actual":325,"check":"fee oracle 5","expected":325,"passed":true},{"actual":400,"check":"fee oracle 6","expected":400,"passed":true},{"actual":550,"check":"fee oracle 7","expected":550,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fee oracle 0\", \"actual\": 500, \"expected\": 500, \"passed\": true}, {\"check\": \"fee oracle 1\", \"actual\": 575, \"expected\": 575, \"passed\": true}, {\"check\": \"fee oracle 2\", \"actual\": 300, \"expected\": 300, \"passed\": true}, {\"check\": \"fee oracle 3\", \"actual\": 300, \"expected\": 300, \"passed\": true}, {\"check\": \"fee oracle 4\", \"actual\": 350, \"expected\": 350, \"passed\": true}, {\"check\": \"fee oracle 5\", \"actual\": 325, \"expected\": 325, \"passed\": true}, {\"check\": \"fee oracle 6\", \"actual\": 400, \"expected\": 400, \"passed\": true}, {\"check\": \"fee oracle 7\", \"actual\": 550, \"expected\": 550, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}