{"abstract":"Two overlapping callout records pay the shared minutes at full rate twice.","category":"Shift rostering labor rules","checks":8,"contract":"Standby window [start, end], callout intervals and hourly rate in cents; minutes from Monday 00:00. Callout minutes (union of callouts, inside or outside standby) pay full rate. Standby minutes not in a callout pay a third of rate on weekdays and half on Saturday/Sunday (days 5-6). Return total cents, computed exactly and rounded half up once.","evaluation_group":"w2-shift-rostering-labor-rules-standby-allowance","failed_approach":"Paying the span from first callout start to last end also pays the idle gaps between callouts.","family":"w2-shift-rostering-labor-rules-standby-allowance-overlapping-callouts","id":"FA-94231","implementations":{"attempt":{"sha256":"823013e16fdc75085d54c11882744d84538c43cdb4d083e40b79346be6feaae4","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(standby, callouts, rate):\n    s0, e0 = standby\n    busy = set()\n    for s, e in callouts:\n        busy.update(range(s, e))\n    units = 0\n    for t in range(s0, e0):\n        if t in busy:\n            continue\n        units += 20 if (t // 1440) % 7 < 5 else 30\n    units += 60 * (max((e for s, e in callouts), default=0) - min((s for s, e in callouts), default=0))\n    return (units * rate + 1800) // 3600\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: overlapping callouts 1', [[0, 60], [[0, 30], [15, 45]], 1800], 1500),\n  ('regression variant: overlapping callouts 2',\n   [[4200, 4800], [[4456, 4576], [4414, 4504], [4798, 4828]], 3000], 16867),\n  ('partial repair guard 3', [[5400, 5640], [[5640, 5760], [5348, 5468]], 1999], 9906),\n  ('boundary control 4', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('boundary control 5', [[7200, 7260], [], 1800], 900),\n  ('normal control 6', [[1080, 1920], [[1692, 1752], [1402, 1492]], 1800], 11400),\n  ('normal control 7', [[2520, 3960], [[3928, 4018]], 2400], 22373),\n  ('normal control 8', [[1440, 2880], [[2512, 2542], [2250, 2310]], 1800], 16200)],\n [('regression: overlapping callouts 1', [[5340, 5940], [[5348, 5378], [5293, 5353]], 1999], 9073),\n  ('regression variant: overlapping callouts 2',\n   [[2760, 3600], [[2911, 2971], [3430, 3520], [2914, 3034]], 1800], 12660),\n  ('partial repair guard 3', [[8220, 8820], [[8187, 8247], [8269, 8299]], 1800], 10845),\n  ('boundary control 4', [[0, 60], [], 1800], 600), ('boundary control 5', [[0, 3], [], 30], 1),\n  ('normal control 6', [[6840, 8280], [], 1999], 21989),\n  ('normal control 7', [[5760, 6360], [[5953, 6043]], 1999], 8662),\n  ('normal control 8', [[2520, 3360], [[3252, 3282], [3025, 3145], [3101, 3191]], 3000], 20533)],\n [('regression: overlapping callouts 1', [[8640, 8880], [[8660, 8750], [8748, 8838]], 1800], 6270),\n  ('regression variant: overlapping callouts 2',\n   [[3900, 4140], [[4088, 4178], [4121, 4181], [3949, 4039]], 2400], 8627),\n  ('partial repair guard 3', [[6840, 7680], [[7144, 7264], [6829, 6919], [6824, 6854]], 1999], 16592),\n  ('boundary control 4', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('boundary control 5', [[7200, 7260], [], 1800], 900),\n  ('normal control 6', [[6780, 7620], [[7470, 7560], [6740, 6830], [6903, 6963]], 1999], 16936),\n  ('normal control 7', [[5340, 6180], [[5289, 5409], [5942, 6002], [5458, 5548]], 3000], 23850),\n  ('normal control 8', [[5640, 6240], [[5947, 6007], [5613, 5733], [5788, 5908]], 2400], 16360)],\n [('regression: overlapping callouts 1', [[5760, 6000], [[5788, 5908], [5761, 5791]], 1800], 5340),\n  ('regression variant: overlapping callouts 2',\n   [[2520, 3120], [[2929, 3049], [2501, 2561], [2522, 2612]], 1800], 10810),\n  ('partial repair guard 3', [[8520, 8760], [[8600, 8630], [8558, 8588]], 3000], 7500),\n  ('boundary control 4', [[0, 60], [], 1800], 600), ('boundary control 5', [[0, 3], [], 30], 1),\n  ('normal control 6', [[2520, 3120], [[3112, 3232], [2573, 2663]], 2400], 15093),\n  ('normal control 7', [[7200, 8640], [[8288, 8348], [7751, 7871]], 1999], 26987),\n  ('normal control 8', [[2760, 3600], [[2814, 2904]], 2400], 13600)],\n [('regression: overlapping callouts 1', [[8520, 8760], [[8576, 8696], [8730, 8850], [8520, 8580]], 2400],\n   12520),\n  ('regression variant: overlapping callouts 2',\n   [[5760, 6000], [[5737, 5797], [5741, 5801], [5873, 5933]], 2400], 6813),\n  ('partial repair guard 3', [[6780, 7620], [[7592, 7712], [6879, 6999], [7600, 7660]], 3000], 26800),\n  ('boundary control 4', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('boundary control 5', [[7200, 7260], [], 1800], 900),\n  ('normal control 6', [[1320, 1560], [[1512, 1602], [1410, 1470]], 1800], 5820),\n  ('normal control 7', [[2760, 3000], [[2993, 3083]], 1800], 5030),\n  ('normal control 8', [[8220, 9060], [], 1999], 13993)]]\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":"0f6ce2ca3435a01a49b6f9caffbb808c2c3b66e5f5b1551bb9322c02c514668b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(standby, callouts, rate):\n    s0, e0 = standby\n    busy = set()\n    for s, e in callouts:\n        busy.update(range(s, e))\n    units = 0\n    for t in range(s0, e0):\n        if t in busy:\n            continue\n        units += 20 if (t // 1440) % 7 < 5 else 30\n    units += 60 * sum(e - s for s, e in callouts)\n    return (units * rate + 1800) // 3600\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: overlapping callouts 1', [[0, 60], [[0, 30], [15, 45]], 1800], 1500),\n  ('regression variant: overlapping callouts 2',\n   [[4200, 4800], [[4456, 4576], [4414, 4504], [4798, 4828]], 3000], 16867),\n  ('partial repair guard 3', [[5400, 5640], [[5640, 5760], [5348, 5468]], 1999], 9906),\n  ('boundary control 4', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('boundary control 5', [[7200, 7260], [], 1800], 900),\n  ('normal control 6', [[1080, 1920], [[1692, 1752], [1402, 1492]], 1800], 11400),\n  ('normal control 7', [[2520, 3960], [[3928, 4018]], 2400], 22373),\n  ('normal control 8', [[1440, 2880], [[2512, 2542], [2250, 2310]], 1800], 16200)],\n [('regression: overlapping callouts 1', [[5340, 5940], [[5348, 5378], [5293, 5353]], 1999], 9073),\n  ('regression variant: overlapping callouts 2',\n   [[2760, 3600], [[2911, 2971], [3430, 3520], [2914, 3034]], 1800], 12660),\n  ('partial repair guard 3', [[8220, 8820], [[8187, 8247], [8269, 8299]], 1800], 10845),\n  ('boundary control 4', [[0, 60], [], 1800], 600), ('boundary control 5', [[0, 3], [], 30], 1),\n  ('normal control 6', [[6840, 8280], [], 1999], 21989),\n  ('normal control 7', [[5760, 6360], [[5953, 6043]], 1999], 8662),\n  ('normal control 8', [[2520, 3360], [[3252, 3282], [3025, 3145], [3101, 3191]], 3000], 20533)],\n [('regression: overlapping callouts 1', [[8640, 8880], [[8660, 8750], [8748, 8838]], 1800], 6270),\n  ('regression variant: overlapping callouts 2',\n   [[3900, 4140], [[4088, 4178], [4121, 4181], [3949, 4039]], 2400], 8627),\n  ('partial repair guard 3', [[6840, 7680], [[7144, 7264], [6829, 6919], [6824, 6854]], 1999], 16592),\n  ('boundary control 4', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('boundary control 5', [[7200, 7260], [], 1800], 900),\n  ('normal control 6', [[6780, 7620], [[7470, 7560], [6740, 6830], [6903, 6963]], 1999], 16936),\n  ('normal control 7', [[5340, 6180], [[5289, 5409], [5942, 6002], [5458, 5548]], 3000], 23850),\n  ('normal control 8', [[5640, 6240], [[5947, 6007], [5613, 5733], [5788, 5908]], 2400], 16360)],\n [('regression: overlapping callouts 1', [[5760, 6000], [[5788, 5908], [5761, 5791]], 1800], 5340),\n  ('regression variant: overlapping callouts 2',\n   [[2520, 3120], [[2929, 3049], [2501, 2561], [2522, 2612]], 1800], 10810),\n  ('partial repair guard 3', [[8520, 8760], [[8600, 8630], [8558, 8588]], 3000], 7500),\n  ('boundary control 4', [[0, 60], [], 1800], 600), ('boundary control 5', [[0, 3], [], 30], 1),\n  ('normal control 6', [[2520, 3120], [[3112, 3232], [2573, 2663]], 2400], 15093),\n  ('normal control 7', [[7200, 8640], [[8288, 8348], [7751, 7871]], 1999], 26987),\n  ('normal control 8', [[2760, 3600], [[2814, 2904]], 2400], 13600)],\n [('regression: overlapping callouts 1', [[8520, 8760], [[8576, 8696], [8730, 8850], [8520, 8580]], 2400],\n   12520),\n  ('regression variant: overlapping callouts 2',\n   [[5760, 6000], [[5737, 5797], [5741, 5801], [5873, 5933]], 2400], 6813),\n  ('partial repair guard 3', [[6780, 7620], [[7592, 7712], [6879, 6999], [7600, 7660]], 3000], 26800),\n  ('boundary control 4', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('boundary control 5', [[7200, 7260], [], 1800], 900),\n  ('normal control 6', [[1320, 1560], [[1512, 1602], [1410, 1470]], 1800], 5820),\n  ('normal control 7', [[2760, 3000], [[2993, 3083]], 1800], 5030),\n  ('normal control 8', [[8220, 9060], [], 1999], 13993)]]\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":"c4988b55a4e1cd74d4340c121b9a0bc1b9e97c06713a9c570f8ec7196fc04b0e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(standby, callouts, rate):\n    s0, e0 = standby\n    busy = set()\n    for s, e in callouts:\n        busy.update(range(s, e))\n    units = 0\n    for t in range(s0, e0):\n        if t in busy:\n            continue\n        units += 20 if (t // 1440) % 7 < 5 else 30\n    units += 60 * len(busy)\n    return (units * rate + 1800) // 3600\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: overlapping callouts 1', [[0, 60], [[0, 30], [15, 45]], 1800], 1500),\n  ('regression variant: overlapping callouts 2',\n   [[4200, 4800], [[4456, 4576], [4414, 4504], [4798, 4828]], 3000], 16867),\n  ('partial repair guard 3', [[5400, 5640], [[5640, 5760], [5348, 5468]], 1999], 9906),\n  ('boundary control 4', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('boundary control 5', [[7200, 7260], [], 1800], 900),\n  ('normal control 6', [[1080, 1920], [[1692, 1752], [1402, 1492]], 1800], 11400),\n  ('normal control 7', [[2520, 3960], [[3928, 4018]], 2400], 22373),\n  ('normal control 8', [[1440, 2880], [[2512, 2542], [2250, 2310]], 1800], 16200)],\n [('regression: overlapping callouts 1', [[5340, 5940], [[5348, 5378], [5293, 5353]], 1999], 9073),\n  ('regression variant: overlapping callouts 2',\n   [[2760, 3600], [[2911, 2971], [3430, 3520], [2914, 3034]], 1800], 12660),\n  ('partial repair guard 3', [[8220, 8820], [[8187, 8247], [8269, 8299]], 1800], 10845),\n  ('boundary control 4', [[0, 60], [], 1800], 600), ('boundary control 5', [[0, 3], [], 30], 1),\n  ('normal control 6', [[6840, 8280], [], 1999], 21989),\n  ('normal control 7', [[5760, 6360], [[5953, 6043]], 1999], 8662),\n  ('normal control 8', [[2520, 3360], [[3252, 3282], [3025, 3145], [3101, 3191]], 3000], 20533)],\n [('regression: overlapping callouts 1', [[8640, 8880], [[8660, 8750], [8748, 8838]], 1800], 6270),\n  ('regression variant: overlapping callouts 2',\n   [[3900, 4140], [[4088, 4178], [4121, 4181], [3949, 4039]], 2400], 8627),\n  ('partial repair guard 3', [[6840, 7680], [[7144, 7264], [6829, 6919], [6824, 6854]], 1999], 16592),\n  ('boundary control 4', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('boundary control 5', [[7200, 7260], [], 1800], 900),\n  ('normal control 6', [[6780, 7620], [[7470, 7560], [6740, 6830], [6903, 6963]], 1999], 16936),\n  ('normal control 7', [[5340, 6180], [[5289, 5409], [5942, 6002], [5458, 5548]], 3000], 23850),\n  ('normal control 8', [[5640, 6240], [[5947, 6007], [5613, 5733], [5788, 5908]], 2400], 16360)],\n [('regression: overlapping callouts 1', [[5760, 6000], [[5788, 5908], [5761, 5791]], 1800], 5340),\n  ('regression variant: overlapping callouts 2',\n   [[2520, 3120], [[2929, 3049], [2501, 2561], [2522, 2612]], 1800], 10810),\n  ('partial repair guard 3', [[8520, 8760], [[8600, 8630], [8558, 8588]], 3000], 7500),\n  ('boundary control 4', [[0, 60], [], 1800], 600), ('boundary control 5', [[0, 3], [], 30], 1),\n  ('normal control 6', [[2520, 3120], [[3112, 3232], [2573, 2663]], 2400], 15093),\n  ('normal control 7', [[7200, 8640], [[8288, 8348], [7751, 7871]], 1999], 26987),\n  ('normal control 8', [[2760, 3600], [[2814, 2904]], 2400], 13600)],\n [('regression: overlapping callouts 1', [[8520, 8760], [[8576, 8696], [8730, 8850], [8520, 8580]], 2400],\n   12520),\n  ('regression variant: overlapping callouts 2',\n   [[5760, 6000], [[5737, 5797], [5741, 5801], [5873, 5933]], 2400], 6813),\n  ('partial repair guard 3', [[6780, 7620], [[7592, 7712], [6879, 6999], [7600, 7660]], 3000], 26800),\n  ('boundary control 4', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('boundary control 5', [[7200, 7260], [], 1800], 900),\n  ('normal control 6', [[1320, 1560], [[1512, 1602], [1410, 1470]], 1800], 5820),\n  ('normal control 7', [[2760, 3000], [[2993, 3083]], 1800], 5030),\n  ('normal control 8', [[8220, 9060], [], 1999], 13993)]]\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":"Stipulated toy labor rule for a bounded roster model; it is not legal advice and does not claim conformance with any jurisdiction, award, or collective agreement. 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-shift-rostering-labor-rules-standby-allowance-overlapping-callouts","generated_at":"2026-09-29T14:52:02.579205+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"On-call allowances interact with callout pay; double payment and wrong day attribution are common.","repair":"Pay the union of callout minutes once.","root_cause":"Callout minutes are summed per record instead of over their union.","sha256":"d267b87001276fb36f779891f5ced2e5c7a1ec6c9f12dddc4c0953e741668e02","title":"Overlapping callouts paid twice · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.649,"exit_code":1,"observations":[{"actual":1500,"check":"regression: overlapping callouts 1","expected":1500,"passed":true},{"actual":27967,"check":"regression variant: overlapping callouts 2","expected":16867,"passed":false},{"actual":15637,"check":"partial repair guard 3","expected":9906,"passed":false},{"actual":3267,"check":"boundary control 4","expected":3267,"passed":true},{"actual":900,"check":"boundary control 5","expected":900,"passed":true},{"actual":17400,"check":"normal control 6","expected":11400,"passed":false},{"actual":22373,"check":"normal control 7","expected":22373,"passed":true},{"actual":22260,"check":"normal control 8","expected":16200,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: overlapping callouts 1\", \"actual\": 1500, \"expected\": 1500, \"passed\": true}, {\"check\": \"regression variant: overlapping callouts 2\", \"actual\": 27967, \"expected\": 16867, \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": 15637, \"expected\": 9906, \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": 3267, \"expected\": 3267, \"passed\": true}, {\"check\": \"boundary control 5\", \"actual\": 900, \"expected\": 900, \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": 17400, \"expected\": 11400, \"passed\": false}, {\"check\": \"normal control 7\", \"actual\": 22373, \"expected\": 22373, \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": 22260, \"expected\": 16200, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.655,"exit_code":1,"observations":[{"actual":1950,"check":"regression: overlapping callouts 1","expected":1500,"passed":false},{"actual":19267,"check":"regression variant: overlapping callouts 2","expected":16867,"passed":false},{"actual":9906,"check":"partial repair guard 3","expected":9906,"passed":true},{"actual":3267,"check":"boundary control 4","expected":3267,"passed":true},{"actual":900,"check":"boundary control 5","expected":900,"passed":true},{"actual":11400,"check":"normal control 6","expected":11400,"passed":true},{"actual":22373,"check":"normal control 7","expected":22373,"passed":true},{"actual":16200,"check":"normal control 8","expected":16200,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: overlapping callouts 1\", \"actual\": 1950, \"expected\": 1500, \"passed\": false}, {\"check\": \"regression variant: overlapping callouts 2\", \"actual\": 19267, \"expected\": 16867, \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": 9906, \"expected\": 9906, \"passed\": true}, {\"check\": \"boundary control 4\", \"actual\": 3267, \"expected\": 3267, \"passed\": true}, {\"check\": \"boundary control 5\", \"actual\": 900, \"expected\": 900, \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": 11400, \"expected\": 11400, \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": 22373, \"expected\": 22373, \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": 16200, \"expected\": 16200, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":48.485,"exit_code":0,"observations":[{"actual":1500,"check":"regression: overlapping callouts 1","expected":1500,"passed":true},{"actual":16867,"check":"regression variant: overlapping callouts 2","expected":16867,"passed":true},{"actual":9906,"check":"partial repair guard 3","expected":9906,"passed":true},{"actual":3267,"check":"boundary control 4","expected":3267,"passed":true},{"actual":900,"check":"boundary control 5","expected":900,"passed":true},{"actual":11400,"check":"normal control 6","expected":11400,"passed":true},{"actual":22373,"check":"normal control 7","expected":22373,"passed":true},{"actual":16200,"check":"normal control 8","expected":16200,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: overlapping callouts 1\", \"actual\": 1500, \"expected\": 1500, \"passed\": true}, {\"check\": \"regression variant: overlapping callouts 2\", \"actual\": 16867, \"expected\": 16867, \"passed\": true}, {\"check\": \"partial repair guard 3\", \"actual\": 9906, \"expected\": 9906, \"passed\": true}, {\"check\": \"boundary control 4\", \"actual\": 3267, \"expected\": 3267, \"passed\": true}, {\"check\": \"boundary control 5\", \"actual\": 900, \"expected\": 900, \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": 11400, \"expected\": 11400, \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": 22373, \"expected\": 22373, \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": 16200, \"expected\": 16200, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}