{"abstract":"Monday standby is paid at the weekend rate and Saturday at the weekday rate.","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":"Classifying all minutes by the standby start day misprices standby that crosses into the weekend.","family":"w2-shift-rostering-labor-rules-standby-allowance-weekend-standby-day","id":"FA-94241","implementations":{"attempt":{"sha256":"178ab0e7b2f05d4a7b97215c66a6cd136605624fe87b80f36dcce6b5c08bd258","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 (s0 // 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: weekend standby day 1', [[0, 60], [], 1800], 600),\n  ('regression variant: weekend standby day 2', [[9660, 10260], [], 2400], 10800),\n  ('partial repair guard 3', [[9720, 11160], [], 3000], 27000),\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', [[9660, 9900], [], 2400], 4800),\n  ('normal control 8', [[1080, 1320], [[1128, 1248], [1263, 1323]], 2400], 8040)],\n [('regression: weekend standby day 1', [[0, 60], [[0, 30], [15, 45]], 1800], 1500),\n  ('regression variant: weekend standby day 2', [[8520, 9120], [[8907, 9027], [8591, 8711]], 1999], 13993),\n  ('partial repair guard 3', [[6780, 8220], [], 2400], 26000),\n  ('boundary control 4', [[0, 60], [], 1800], 600), ('boundary control 5', [[0, 3], [], 30], 1),\n  ('normal control 6', [[7080, 7320], [[7181, 7241], [7166, 7226]], 2400], 5727),\n  ('normal control 7', [[9720, 9960], [], 3000], 6000),\n  ('normal control 8', [[7080, 7320], [[7306, 7366], [7148, 7268]], 3000], 11083)],\n [('regression: weekend standby day 1', [[7200, 7260], [], 1800], 900),\n  ('regression variant: weekend standby day 2', [[1320, 2760], [[2547, 2637]], 2400], 21600),\n  ('partial repair guard 3', [[7080, 7320], [[7235, 7295], [7196, 7316], [7251, 7281]], 1800], 4820),\n  ('boundary control 4', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('normal control 5', [[8280, 8880], [[8248, 8368]], 1999], 12527),\n  ('normal control 6', [[2880, 4320], [[3310, 3340], [2947, 3007]], 3000], 27000),\n  ('normal control 7', [[4200, 4800], [], 1800], 6000),\n  ('normal control 8', [[8220, 9660], [], 3000], 36000)],\n [('regression: weekend standby day 1', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('regression variant: weekend standby day 2', [[8220, 9060], [[9056, 9146]], 1800], 15240),\n  ('partial repair guard 3', [[6780, 7620], [[7367, 7457], [7321, 7381]], 1999], 13926),\n  ('boundary control 4', [[0, 60], [], 1800], 600), ('boundary control 5', [[0, 3], [], 30], 1),\n  ('normal control 6', [[2460, 3300], [[3157, 3217]], 1999], 10661),\n  ('normal control 7', [[5340, 5940], [], 2400], 8000),\n  ('normal control 8', [[5400, 6240], [], 1800], 8400)],\n [('regression: weekend standby day 1', [[7200, 8640], [[8470, 8590], [8025, 8145]], 2400], 33600),\n  ('regression variant: weekend standby day 2', [[7200, 8040], [], 3000], 21000),\n  ('partial repair guard 3', [[7080, 7680], [], 3000], 14000),\n  ('boundary control 4', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('boundary control 5', [[7200, 7260], [], 1800], 900),\n  ('normal control 6', [[9660, 11100], [[10811, 10901], [11009, 11099], [9752, 9842]], 1800], 21450),\n  ('normal control 7', [[1080, 2520], [[1687, 1717]], 3000], 25000),\n  ('normal control 8', [[8520, 9360], [[8580, 8640], [8559, 8649]], 1800], 13950)]]\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":"6605313e844dbe96652997d62319221ac49f6b401f6360e7fc5ea3a38b1870c6","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 not in (0, 6) 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: weekend standby day 1', [[0, 60], [], 1800], 600),\n  ('regression variant: weekend standby day 2', [[9660, 10260], [], 2400], 10800),\n  ('partial repair guard 3', [[9720, 11160], [], 3000], 27000),\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', [[9660, 9900], [], 2400], 4800),\n  ('normal control 8', [[1080, 1320], [[1128, 1248], [1263, 1323]], 2400], 8040)],\n [('regression: weekend standby day 1', [[0, 60], [[0, 30], [15, 45]], 1800], 1500),\n  ('regression variant: weekend standby day 2', [[8520, 9120], [[8907, 9027], [8591, 8711]], 1999], 13993),\n  ('partial repair guard 3', [[6780, 8220], [], 2400], 26000),\n  ('boundary control 4', [[0, 60], [], 1800], 600), ('boundary control 5', [[0, 3], [], 30], 1),\n  ('normal control 6', [[7080, 7320], [[7181, 7241], [7166, 7226]], 2400], 5727),\n  ('normal control 7', [[9720, 9960], [], 3000], 6000),\n  ('normal control 8', [[7080, 7320], [[7306, 7366], [7148, 7268]], 3000], 11083)],\n [('regression: weekend standby day 1', [[7200, 7260], [], 1800], 900),\n  ('regression variant: weekend standby day 2', [[1320, 2760], [[2547, 2637]], 2400], 21600),\n  ('partial repair guard 3', [[7080, 7320], [[7235, 7295], [7196, 7316], [7251, 7281]], 1800], 4820),\n  ('boundary control 4', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('normal control 5', [[8280, 8880], [[8248, 8368]], 1999], 12527),\n  ('normal control 6', [[2880, 4320], [[3310, 3340], [2947, 3007]], 3000], 27000),\n  ('normal control 7', [[4200, 4800], [], 1800], 6000),\n  ('normal control 8', [[8220, 9660], [], 3000], 36000)],\n [('regression: weekend standby day 1', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('regression variant: weekend standby day 2', [[8220, 9060], [[9056, 9146]], 1800], 15240),\n  ('partial repair guard 3', [[6780, 7620], [[7367, 7457], [7321, 7381]], 1999], 13926),\n  ('boundary control 4', [[0, 60], [], 1800], 600), ('boundary control 5', [[0, 3], [], 30], 1),\n  ('normal control 6', [[2460, 3300], [[3157, 3217]], 1999], 10661),\n  ('normal control 7', [[5340, 5940], [], 2400], 8000),\n  ('normal control 8', [[5400, 6240], [], 1800], 8400)],\n [('regression: weekend standby day 1', [[7200, 8640], [[8470, 8590], [8025, 8145]], 2400], 33600),\n  ('regression variant: weekend standby day 2', [[7200, 8040], [], 3000], 21000),\n  ('partial repair guard 3', [[7080, 7680], [], 3000], 14000),\n  ('boundary control 4', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('boundary control 5', [[7200, 7260], [], 1800], 900),\n  ('normal control 6', [[9660, 11100], [[10811, 10901], [11009, 11099], [9752, 9842]], 1800], 21450),\n  ('normal control 7', [[1080, 2520], [[1687, 1717]], 3000], 25000),\n  ('normal control 8', [[8520, 9360], [[8580, 8640], [8559, 8649]], 1800], 13950)]]\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":"030dd8a4eaa42f02db5cbf8e4ce5765d3dfee307459b2262cdcec7245bedaca4","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: weekend standby day 1', [[0, 60], [], 1800], 600),\n  ('regression variant: weekend standby day 2', [[9660, 10260], [], 2400], 10800),\n  ('partial repair guard 3', [[9720, 11160], [], 3000], 27000),\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', [[9660, 9900], [], 2400], 4800),\n  ('normal control 8', [[1080, 1320], [[1128, 1248], [1263, 1323]], 2400], 8040)],\n [('regression: weekend standby day 1', [[0, 60], [[0, 30], [15, 45]], 1800], 1500),\n  ('regression variant: weekend standby day 2', [[8520, 9120], [[8907, 9027], [8591, 8711]], 1999], 13993),\n  ('partial repair guard 3', [[6780, 8220], [], 2400], 26000),\n  ('boundary control 4', [[0, 60], [], 1800], 600), ('boundary control 5', [[0, 3], [], 30], 1),\n  ('normal control 6', [[7080, 7320], [[7181, 7241], [7166, 7226]], 2400], 5727),\n  ('normal control 7', [[9720, 9960], [], 3000], 6000),\n  ('normal control 8', [[7080, 7320], [[7306, 7366], [7148, 7268]], 3000], 11083)],\n [('regression: weekend standby day 1', [[7200, 7260], [], 1800], 900),\n  ('regression variant: weekend standby day 2', [[1320, 2760], [[2547, 2637]], 2400], 21600),\n  ('partial repair guard 3', [[7080, 7320], [[7235, 7295], [7196, 7316], [7251, 7281]], 1800], 4820),\n  ('boundary control 4', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('normal control 5', [[8280, 8880], [[8248, 8368]], 1999], 12527),\n  ('normal control 6', [[2880, 4320], [[3310, 3340], [2947, 3007]], 3000], 27000),\n  ('normal control 7', [[4200, 4800], [], 1800], 6000),\n  ('normal control 8', [[8220, 9660], [], 3000], 36000)],\n [('regression: weekend standby day 1', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('regression variant: weekend standby day 2', [[8220, 9060], [[9056, 9146]], 1800], 15240),\n  ('partial repair guard 3', [[6780, 7620], [[7367, 7457], [7321, 7381]], 1999], 13926),\n  ('boundary control 4', [[0, 60], [], 1800], 600), ('boundary control 5', [[0, 3], [], 30], 1),\n  ('normal control 6', [[2460, 3300], [[3157, 3217]], 1999], 10661),\n  ('normal control 7', [[5340, 5940], [], 2400], 8000),\n  ('normal control 8', [[5400, 6240], [], 1800], 8400)],\n [('regression: weekend standby day 1', [[7200, 8640], [[8470, 8590], [8025, 8145]], 2400], 33600),\n  ('regression variant: weekend standby day 2', [[7200, 8040], [], 3000], 21000),\n  ('partial repair guard 3', [[7080, 7680], [], 3000], 14000),\n  ('boundary control 4', [[7140, 7260], [[7190, 7250]], 2400], 3267),\n  ('boundary control 5', [[7200, 7260], [], 1800], 900),\n  ('normal control 6', [[9660, 11100], [[10811, 10901], [11009, 11099], [9752, 9842]], 1800], 21450),\n  ('normal control 7', [[1080, 2520], [[1687, 1717]], 3000], 25000),\n  ('normal control 8', [[8520, 9360], [[8580, 8640], [8559, 8649]], 1800], 13950)]]\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-weekend-standby-day","generated_at":"2026-09-29T14:52:02.580092+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":"Monday is day 0; days 5 and 6 are the weekend.","root_cause":"Day numbers are interpreted with Sunday as day 0.","sha256":"fb1e2ff5ff6c0afb5d21233e63291c889b85e4ea9aad08015044d4235716707a","title":"Weekend standby rate uses a Sunday-first week · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.028,"exit_code":1,"observations":[{"actual":600,"check":"regression: weekend standby day 1","expected":600,"passed":true},{"actual":12000,"check":"regression variant: weekend standby day 2","expected":10800,"passed":false},{"actual":36000,"check":"partial repair guard 3","expected":27000,"passed":false},{"actual":3200,"check":"boundary control 4","expected":3267,"passed":false},{"actual":900,"check":"boundary control 5","expected":900,"passed":true},{"actual":18600,"check":"normal control 6","expected":15400,"passed":false},{"actual":4800,"check":"normal control 7","expected":4800,"passed":true},{"actual":8040,"check":"normal control 8","expected":8040,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: weekend standby day 1\", \"actual\": 600, \"expected\": 600, \"passed\": true}, {\"check\": \"regression variant: weekend standby day 2\", \"actual\": 12000, \"expected\": 10800, \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": 36000, \"expected\": 27000, \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": 3200, \"expected\": 3267, \"passed\": false}, {\"check\": \"boundary control 5\", \"actual\": 900, \"expected\": 900, \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": 18600, \"expected\": 15400, \"passed\": false}, {\"check\": \"normal control 7\", \"actual\": 4800, \"expected\": 4800, \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": 8040, \"expected\": 8040, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.409,"exit_code":1,"observations":[{"actual":900,"check":"regression: weekend standby day 1","expected":600,"passed":false},{"actual":12000,"check":"regression variant: weekend standby day 2","expected":10800,"passed":false},{"actual":36000,"check":"partial repair guard 3","expected":27000,"passed":false},{"actual":3200,"check":"boundary control 4","expected":3267,"passed":false},{"actual":600,"check":"boundary control 5","expected":900,"passed":false},{"actual":18600,"check":"normal control 6","expected":15400,"passed":false},{"actual":4800,"check":"normal control 7","expected":4800,"passed":true},{"actual":8460,"check":"normal control 8","expected":8040,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: weekend standby day 1\", \"actual\": 900, \"expected\": 600, \"passed\": false}, {\"check\": \"regression variant: weekend standby day 2\", \"actual\": 12000, \"expected\": 10800, \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": 36000, \"expected\": 27000, \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": 3200, \"expected\": 3267, \"passed\": false}, {\"check\": \"boundary control 5\", \"actual\": 600, \"expected\": 900, \"passed\": false}, {\"check\": \"normal control 6\", \"actual\": 18600, \"expected\": 15400, \"passed\": false}, {\"check\": \"normal control 7\", \"actual\": 4800, \"expected\": 4800, \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": 8460, \"expected\": 8040, \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":49.499,"exit_code":0,"observations":[{"actual":600,"check":"regression: weekend standby day 1","expected":600,"passed":true},{"actual":10800,"check":"regression variant: weekend standby day 2","expected":10800,"passed":true},{"actual":27000,"check":"partial repair guard 3","expected":27000,"passed":true},{"actual":3267,"check":"boundary control 4","expected":3267,"passed":true},{"actual":900,"check":"boundary control 5","expected":900,"passed":true},{"actual":15400,"check":"normal control 6","expected":15400,"passed":true},{"actual":4800,"check":"normal control 7","expected":4800,"passed":true},{"actual":8040,"check":"normal control 8","expected":8040,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: weekend standby day 1\", \"actual\": 600, \"expected\": 600, \"passed\": true}, {\"check\": \"regression variant: weekend standby day 2\", \"actual\": 10800, \"expected\": 10800, \"passed\": true}, {\"check\": \"partial repair guard 3\", \"actual\": 27000, \"expected\": 27000, \"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\": 15400, \"expected\": 15400, \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": 4800, \"expected\": 4800, \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": 8040, \"expected\": 8040, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}