{"abstract":"Minutes worked on a callout are paid both full rate and standby allowance.","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":"Deducting only on weekdays still double pays weekend callouts.","family":"w2-shift-rostering-labor-rules-standby-allowance-standby-callout-deduction","id":"FA-94236","implementations":{"attempt":{"sha256":"dff5d484e2bc5c957accda632dce323959d3d224d6f0332d8583295e063a7528","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 and (t // 1440) % 7 < 5:\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: standby callout deduction 1', [[0, 60], [[0, 30], [15, 45]], 1800], 1500),\n  ('regression variant: standby callout deduction 2', [[8220, 8820], [[8770, 8830]], 3000], 16750),\n  ('partial repair guard 3', [[8640, 8880], [[8620, 8650], [8695, 8725], [8811, 8841]], 3000], 8750),\n  ('boundary control 4', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('boundary control 5', [[7200, 7260], [], 1800], 900),\n  ('normal control 6', [[8220, 9060], [[9009, 9099]], 1800], 14535),\n  ('normal control 7', [[2520, 3960], [[3928, 4018]], 2400], 22373),\n  ('normal control 8', [[5760, 6600], [[5769, 5799], [6053, 6083]], 2400], 12800)],\n [('regression: standby callout deduction 1', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('regression variant: standby callout deduction 2',\n   [[8520, 8760], [[8576, 8696], [8730, 8850], [8520, 8580]], 2400], 12520),\n  ('partial repair guard 3', [[7080, 7320], [[7181, 7241], [7166, 7226]], 2400], 5727),\n  ('boundary control 4', [[0, 60], [], 1800], 600), ('boundary control 5', [[0, 3], [], 30], 1),\n  ('normal control 6', [[4200, 4800], [[4456, 4576], [4414, 4504], [4798, 4828]], 3000], 16867),\n  ('normal control 7', [[6780, 8220], [], 2400], 26000),\n  ('normal control 8', [[3960, 4200], [], 1800], 2400)],\n [('regression: standby callout deduction 1', [[7200, 8640], [[8470, 8590], [8025, 8145]], 2400], 33600),\n  ('regression variant: standby callout deduction 2', [[8220, 8820], [[8187, 8247], [8269, 8299]], 1800],\n   10845),\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', [[9720, 10560], [[9952, 10042]], 2400], 15400),\n  ('normal control 7', [[5640, 6480], [], 1999], 9329),\n  ('normal control 8', [[3900, 4740], [[4707, 4767], [4227, 4317], [4059, 4179]], 3000], 23450)],\n [('regression: standby callout deduction 1', [[0, 240], [[127, 217], [236, 266]], 3000], 8433),\n  ('regression variant: standby callout deduction 2',\n   [[6840, 7680], [[7144, 7264], [6829, 6919], [6824, 6854]], 1999], 16592),\n  ('partial repair guard 3', [[8220, 9060], [[9056, 9146]], 1800], 15240),\n  ('boundary control 4', [[0, 60], [], 1800], 600), ('boundary control 5', [[0, 3], [], 30], 1),\n  ('normal control 6', [[2760, 3600], [[2751, 2871], [3164, 3284]], 1999], 14759),\n  ('normal control 7', [[5640, 7080], [[6495, 6615], [6688, 6748]], 3000], 30000),\n  ('normal control 8', [[2460, 3060], [[2442, 2502], [2640, 2700]], 1999], 9529)],\n [('regression: standby callout deduction 1', [[5340, 5940], [[5348, 5378], [5293, 5353]], 1999], 9073),\n  ('regression variant: standby callout deduction 2', [[8520, 8760], [[8600, 8630], [8558, 8588]], 3000],\n   7500),\n  ('partial repair guard 3', [[9720, 10560], [[9889, 10009]], 3000], 20000),\n  ('boundary control 4', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('boundary control 5', [[7200, 7260], [], 1800], 900),\n  ('normal control 6', [[5760, 6360], [[5953, 6043]], 1999], 8662),\n  ('normal control 7', [[1320, 1920], [[1501, 1621], [1371, 1431], [1314, 1404]], 1800], 10800),\n  ('normal control 8', [[2760, 3600], [[2751, 2871], [3164, 3284]], 1999], 14759)]]\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":"f927cc6383b3558e5bd735175a7566c0f035cb4b8f77f0bf0f1b0495903b3a7c","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        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: standby callout deduction 1', [[0, 60], [[0, 30], [15, 45]], 1800], 1500),\n  ('regression variant: standby callout deduction 2', [[8220, 8820], [[8770, 8830]], 3000], 16750),\n  ('partial repair guard 3', [[8640, 8880], [[8620, 8650], [8695, 8725], [8811, 8841]], 3000], 8750),\n  ('boundary control 4', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('boundary control 5', [[7200, 7260], [], 1800], 900),\n  ('normal control 6', [[8220, 9060], [[9009, 9099]], 1800], 14535),\n  ('normal control 7', [[2520, 3960], [[3928, 4018]], 2400], 22373),\n  ('normal control 8', [[5760, 6600], [[5769, 5799], [6053, 6083]], 2400], 12800)],\n [('regression: standby callout deduction 1', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('regression variant: standby callout deduction 2',\n   [[8520, 8760], [[8576, 8696], [8730, 8850], [8520, 8580]], 2400], 12520),\n  ('partial repair guard 3', [[7080, 7320], [[7181, 7241], [7166, 7226]], 2400], 5727),\n  ('boundary control 4', [[0, 60], [], 1800], 600), ('boundary control 5', [[0, 3], [], 30], 1),\n  ('normal control 6', [[4200, 4800], [[4456, 4576], [4414, 4504], [4798, 4828]], 3000], 16867),\n  ('normal control 7', [[6780, 8220], [], 2400], 26000),\n  ('normal control 8', [[3960, 4200], [], 1800], 2400)],\n [('regression: standby callout deduction 1', [[7200, 8640], [[8470, 8590], [8025, 8145]], 2400], 33600),\n  ('regression variant: standby callout deduction 2', [[8220, 8820], [[8187, 8247], [8269, 8299]], 1800],\n   10845),\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', [[9720, 10560], [[9952, 10042]], 2400], 15400),\n  ('normal control 7', [[5640, 6480], [], 1999], 9329),\n  ('normal control 8', [[3900, 4740], [[4707, 4767], [4227, 4317], [4059, 4179]], 3000], 23450)],\n [('regression: standby callout deduction 1', [[0, 240], [[127, 217], [236, 266]], 3000], 8433),\n  ('regression variant: standby callout deduction 2',\n   [[6840, 7680], [[7144, 7264], [6829, 6919], [6824, 6854]], 1999], 16592),\n  ('partial repair guard 3', [[8220, 9060], [[9056, 9146]], 1800], 15240),\n  ('boundary control 4', [[0, 60], [], 1800], 600), ('boundary control 5', [[0, 3], [], 30], 1),\n  ('normal control 6', [[2760, 3600], [[2751, 2871], [3164, 3284]], 1999], 14759),\n  ('normal control 7', [[5640, 7080], [[6495, 6615], [6688, 6748]], 3000], 30000),\n  ('normal control 8', [[2460, 3060], [[2442, 2502], [2640, 2700]], 1999], 9529)],\n [('regression: standby callout deduction 1', [[5340, 5940], [[5348, 5378], [5293, 5353]], 1999], 9073),\n  ('regression variant: standby callout deduction 2', [[8520, 8760], [[8600, 8630], [8558, 8588]], 3000],\n   7500),\n  ('partial repair guard 3', [[9720, 10560], [[9889, 10009]], 3000], 20000),\n  ('boundary control 4', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('boundary control 5', [[7200, 7260], [], 1800], 900),\n  ('normal control 6', [[5760, 6360], [[5953, 6043]], 1999], 8662),\n  ('normal control 7', [[1320, 1920], [[1501, 1621], [1371, 1431], [1314, 1404]], 1800], 10800),\n  ('normal control 8', [[2760, 3600], [[2751, 2871], [3164, 3284]], 1999], 14759)]]\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":"29f55791c02ddfc12bcdea7ccd40f3182a1a2a52c6756a96a1a3ab8dc3bd6f50","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: standby callout deduction 1', [[0, 60], [[0, 30], [15, 45]], 1800], 1500),\n  ('regression variant: standby callout deduction 2', [[8220, 8820], [[8770, 8830]], 3000], 16750),\n  ('partial repair guard 3', [[8640, 8880], [[8620, 8650], [8695, 8725], [8811, 8841]], 3000], 8750),\n  ('boundary control 4', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('boundary control 5', [[7200, 7260], [], 1800], 900),\n  ('normal control 6', [[8220, 9060], [[9009, 9099]], 1800], 14535),\n  ('normal control 7', [[2520, 3960], [[3928, 4018]], 2400], 22373),\n  ('normal control 8', [[5760, 6600], [[5769, 5799], [6053, 6083]], 2400], 12800)],\n [('regression: standby callout deduction 1', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('regression variant: standby callout deduction 2',\n   [[8520, 8760], [[8576, 8696], [8730, 8850], [8520, 8580]], 2400], 12520),\n  ('partial repair guard 3', [[7080, 7320], [[7181, 7241], [7166, 7226]], 2400], 5727),\n  ('boundary control 4', [[0, 60], [], 1800], 600), ('boundary control 5', [[0, 3], [], 30], 1),\n  ('normal control 6', [[4200, 4800], [[4456, 4576], [4414, 4504], [4798, 4828]], 3000], 16867),\n  ('normal control 7', [[6780, 8220], [], 2400], 26000),\n  ('normal control 8', [[3960, 4200], [], 1800], 2400)],\n [('regression: standby callout deduction 1', [[7200, 8640], [[8470, 8590], [8025, 8145]], 2400], 33600),\n  ('regression variant: standby callout deduction 2', [[8220, 8820], [[8187, 8247], [8269, 8299]], 1800],\n   10845),\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', [[9720, 10560], [[9952, 10042]], 2400], 15400),\n  ('normal control 7', [[5640, 6480], [], 1999], 9329),\n  ('normal control 8', [[3900, 4740], [[4707, 4767], [4227, 4317], [4059, 4179]], 3000], 23450)],\n [('regression: standby callout deduction 1', [[0, 240], [[127, 217], [236, 266]], 3000], 8433),\n  ('regression variant: standby callout deduction 2',\n   [[6840, 7680], [[7144, 7264], [6829, 6919], [6824, 6854]], 1999], 16592),\n  ('partial repair guard 3', [[8220, 9060], [[9056, 9146]], 1800], 15240),\n  ('boundary control 4', [[0, 60], [], 1800], 600), ('boundary control 5', [[0, 3], [], 30], 1),\n  ('normal control 6', [[2760, 3600], [[2751, 2871], [3164, 3284]], 1999], 14759),\n  ('normal control 7', [[5640, 7080], [[6495, 6615], [6688, 6748]], 3000], 30000),\n  ('normal control 8', [[2460, 3060], [[2442, 2502], [2640, 2700]], 1999], 9529)],\n [('regression: standby callout deduction 1', [[5340, 5940], [[5348, 5378], [5293, 5353]], 1999], 9073),\n  ('regression variant: standby callout deduction 2', [[8520, 8760], [[8600, 8630], [8558, 8588]], 3000],\n   7500),\n  ('partial repair guard 3', [[9720, 10560], [[9889, 10009]], 3000], 20000),\n  ('boundary control 4', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('boundary control 5', [[7200, 7260], [], 1800], 900),\n  ('normal control 6', [[5760, 6360], [[5953, 6043]], 1999], 8662),\n  ('normal control 7', [[1320, 1920], [[1501, 1621], [1371, 1431], [1314, 1404]], 1800], 10800),\n  ('normal control 8', [[2760, 3600], [[2751, 2871], [3164, 3284]], 1999], 14759)]]\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-standby-callout-deduction","generated_at":"2026-09-29T14:52:02.577376+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":"Skip standby allowance for any minute covered by a callout.","root_cause":"Standby minutes are not reduced by callout minutes.","sha256":"d3228b0501c53593c160c25179c91df95cdad2949f216d97a2f6279ce95d088e","title":"Callout minutes also earn the standby allowance · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.884,"exit_code":1,"observations":[{"actual":1500,"check":"regression: standby callout deduction 1","expected":1500,"passed":true},{"actual":18000,"check":"regression variant: standby callout deduction 2","expected":16750,"passed":false},{"actual":10500,"check":"partial repair guard 3","expected":8750,"passed":false},{"actual":4267,"check":"boundary control 4","expected":3267,"passed":false},{"actual":900,"check":"boundary control 5","expected":900,"passed":true},{"actual":15300,"check":"normal control 6","expected":14535,"passed":false},{"actual":22373,"check":"normal control 7","expected":22373,"passed":true},{"actual":12800,"check":"normal control 8","expected":12800,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: standby callout deduction 1\", \"actual\": 1500, \"expected\": 1500, \"passed\": true}, {\"check\": \"regression variant: standby callout deduction 2\", \"actual\": 18000, \"expected\": 16750, \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": 10500, \"expected\": 8750, \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": 4267, \"expected\": 3267, \"passed\": false}, {\"check\": \"boundary control 5\", \"actual\": 900, \"expected\": 900, \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": 15300, \"expected\": 14535, \"passed\": false}, {\"check\": \"normal control 7\", \"actual\": 22373, \"expected\": 22373, \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": 12800, \"expected\": 12800, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.234,"exit_code":1,"observations":[{"actual":1950,"check":"regression: standby callout deduction 1","expected":1500,"passed":false},{"actual":18000,"check":"regression variant: standby callout deduction 2","expected":16750,"passed":false},{"actual":10500,"check":"partial repair guard 3","expected":8750,"passed":false},{"actual":4400,"check":"boundary control 4","expected":3267,"passed":false},{"actual":900,"check":"boundary control 5","expected":900,"passed":true},{"actual":15300,"check":"normal control 6","expected":14535,"passed":false},{"actual":22800,"check":"normal control 7","expected":22373,"passed":false},{"actual":13600,"check":"normal control 8","expected":12800,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: standby callout deduction 1\", \"actual\": 1950, \"expected\": 1500, \"passed\": false}, {\"check\": \"regression variant: standby callout deduction 2\", \"actual\": 18000, \"expected\": 16750, \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": 10500, \"expected\": 8750, \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": 4400, \"expected\": 3267, \"passed\": false}, {\"check\": \"boundary control 5\", \"actual\": 900, \"expected\": 900, \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": 15300, \"expected\": 14535, \"passed\": false}, {\"check\": \"normal control 7\", \"actual\": 22800, \"expected\": 22373, \"passed\": false}, {\"check\": \"normal control 8\", \"actual\": 13600, \"expected\": 12800, \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":46.83,"exit_code":0,"observations":[{"actual":1500,"check":"regression: standby callout deduction 1","expected":1500,"passed":true},{"actual":16750,"check":"regression variant: standby callout deduction 2","expected":16750,"passed":true},{"actual":8750,"check":"partial repair guard 3","expected":8750,"passed":true},{"actual":3267,"check":"boundary control 4","expected":3267,"passed":true},{"actual":900,"check":"boundary control 5","expected":900,"passed":true},{"actual":14535,"check":"normal control 6","expected":14535,"passed":true},{"actual":22373,"check":"normal control 7","expected":22373,"passed":true},{"actual":12800,"check":"normal control 8","expected":12800,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: standby callout deduction 1\", \"actual\": 1500, \"expected\": 1500, \"passed\": true}, {\"check\": \"regression variant: standby callout deduction 2\", \"actual\": 16750, \"expected\": 16750, \"passed\": true}, {\"check\": \"partial repair guard 3\", \"actual\": 8750, \"expected\": 8750, \"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\": 14535, \"expected\": 14535, \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": 22373, \"expected\": 22373, \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": 12800, \"expected\": 12800, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}