{"abstract":"Monday minutes receive the weekend premium and Saturday minutes do not.","category":"Shift rostering labor rules","checks":8,"contract":"Shift [start, end] in minutes from Monday 00:00 and a base rate in cents per hour. Each minute earns base * (100 + pct) / 6000 cents where pct is 10 for 15:00-23:00, 15 for 23:00-07:00, else 0; on Saturday and Sunday (days 5 and 6) pct is the larger of that value and 12 (differentials do not stack). The exact total is rounded half up to a cent once.","evaluation_group":"w2-shift-rostering-labor-rules-shift-differential-pay","failed_approach":"Checking only day 6 still drops Saturday.","family":"w2-shift-rostering-labor-rules-shift-differential-pay-weekend-day-index","id":"FA-94041","implementations":{"attempt":{"sha256":"32db360b8d8a34494d07a9fca7d9ff24e4e309416093f8ebdf53726213823052","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(shift, base):\n    s, e = shift\n    total = 0\n    for t in range(s, e):\n        day = (t // 1440) % 7\n        m = t % 1440\n        pct = 0\n        if 900 <= m < 1380:\n            pct = 10\n        if m >= 1380 or m < 420:\n            pct = 15\n        if day >= 6:\n            pct = max(pct, 12)\n        total += base * (100 + pct)\n    return (total + 3000) // 6000\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: weekend day index 1', [[900, 960], 1800], 1980),\n  ('regression variant: weekend day index 2', [[7140, 7860], 1999], 27346),\n  ('partial repair guard 3', [[7080, 7680], 90], 1028), ('boundary control 4', [[8580, 8700], 2000], 4600),\n  ('normal control 5', [[7560, 7620], 1999], 2299), ('normal control 6', [[2820, 3420], 1800], 20160),\n  ('normal control 7', [[360, 840], 90], 734), ('normal control 8', [[3621, 4018], 2000], 14027)],\n [('regression: weekend day index 1', [[7200, 7800], 2000], 22820),\n  ('regression variant: weekend day index 2', [[900, 1140], 1999], 8796),\n  ('partial repair guard 3', [[8040, 8100], 1999], 2239), ('boundary control 4', [[0, 3], 10], 1),\n  ('boundary control 5', [[8580, 8700], 2000], 4600), ('normal control 6', [[9068, 9123], 1800], 1848),\n  ('normal control 7', [[2820, 3420], 1800], 20160), ('normal control 8', [[3240, 3953], 2150], 26492)],\n [('regression: weekend day index 1', [[1320, 1500], 60], 204),\n  ('regression variant: weekend day index 2', [[7560, 8069], 1999], 19053),\n  ('partial repair guard 3', [[8160, 8760], 60], 677), ('boundary control 4', [[6600, 7260], 2000], 24200),\n  ('boundary control 5', [[0, 3], 10], 1), ('normal control 6', [[4740, 4980], 60], 240),\n  ('normal control 7', [[7140, 7860], 1800], 24624), ('normal control 8', [[3840, 4320], 2000], 17700)],\n [('regression: weekend day index 1', [[480, 960], 1999], 16192),\n  ('regression variant: weekend day index 2', [[7560, 8280], 1999], 26927),\n  ('partial repair guard 3', [[8040, 8280], 90], 403), ('boundary control 4', [[1320, 1500], 60], 204),\n  ('boundary control 5', [[6600, 7260], 2000], 24200), ('normal control 6', [[1320, 1920], 2000], 22600),\n  ('normal control 7', [[5220, 5502], 60], 310), ('normal control 8', [[8313, 8373], 60], 67)],\n [('regression: weekend day index 1', [[7958, 8472], 1999], 19180),\n  ('regression variant: weekend day index 2', [[10020, 10740], 90], 1188),\n  ('partial repair guard 3', [[8160, 8880], 60], 815), ('boundary control 4', [[480, 960], 1999], 16192),\n  ('boundary control 5', [[1320, 1500], 60], 204), ('normal control 6', [[5760, 6000], 2000], 9200),\n  ('normal control 7', [[6660, 6720], 2150], 2365), ('normal control 8', [[4740, 5460], 2000], 24800)]]\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":"9a7528b182f45586f8b1b4ab47df9ec27f77603e720c046f169da16f038f159d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(shift, base):\n    s, e = shift\n    total = 0\n    for t in range(s, e):\n        day = (t // 1440) % 7\n        m = t % 1440\n        pct = 0\n        if 900 <= m < 1380:\n            pct = 10\n        if m >= 1380 or m < 420:\n            pct = 15\n        if day in (0, 6):\n            pct = max(pct, 12)\n        total += base * (100 + pct)\n    return (total + 3000) // 6000\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: weekend day index 1', [[900, 960], 1800], 1980),\n  ('regression variant: weekend day index 2', [[7140, 7860], 1999], 27346),\n  ('partial repair guard 3', [[7080, 7680], 90], 1028), ('boundary control 4', [[8580, 8700], 2000], 4600),\n  ('normal control 5', [[7560, 7620], 1999], 2299), ('normal control 6', [[2820, 3420], 1800], 20160),\n  ('normal control 7', [[360, 840], 90], 734), ('normal control 8', [[3621, 4018], 2000], 14027)],\n [('regression: weekend day index 1', [[7200, 7800], 2000], 22820),\n  ('regression variant: weekend day index 2', [[900, 1140], 1999], 8796),\n  ('partial repair guard 3', [[8040, 8100], 1999], 2239), ('boundary control 4', [[0, 3], 10], 1),\n  ('boundary control 5', [[8580, 8700], 2000], 4600), ('normal control 6', [[9068, 9123], 1800], 1848),\n  ('normal control 7', [[2820, 3420], 1800], 20160), ('normal control 8', [[3240, 3953], 2150], 26492)],\n [('regression: weekend day index 1', [[1320, 1500], 60], 204),\n  ('regression variant: weekend day index 2', [[7560, 8069], 1999], 19053),\n  ('partial repair guard 3', [[8160, 8760], 60], 677), ('boundary control 4', [[6600, 7260], 2000], 24200),\n  ('boundary control 5', [[0, 3], 10], 1), ('normal control 6', [[4740, 4980], 60], 240),\n  ('normal control 7', [[7140, 7860], 1800], 24624), ('normal control 8', [[3840, 4320], 2000], 17700)],\n [('regression: weekend day index 1', [[480, 960], 1999], 16192),\n  ('regression variant: weekend day index 2', [[7560, 8280], 1999], 26927),\n  ('partial repair guard 3', [[8040, 8280], 90], 403), ('boundary control 4', [[1320, 1500], 60], 204),\n  ('boundary control 5', [[6600, 7260], 2000], 24200), ('normal control 6', [[1320, 1920], 2000], 22600),\n  ('normal control 7', [[5220, 5502], 60], 310), ('normal control 8', [[8313, 8373], 60], 67)],\n [('regression: weekend day index 1', [[7958, 8472], 1999], 19180),\n  ('regression variant: weekend day index 2', [[10020, 10740], 90], 1188),\n  ('partial repair guard 3', [[8160, 8880], 60], 815), ('boundary control 4', [[480, 960], 1999], 16192),\n  ('boundary control 5', [[1320, 1500], 60], 204), ('normal control 6', [[5760, 6000], 2000], 9200),\n  ('normal control 7', [[6660, 6720], 2150], 2365), ('normal control 8', [[4740, 5460], 2000], 24800)]]\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":"0261f7a97133271e307c43486966736f096e65a5beb400a795ce817c4f5bac04","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(shift, base):\n    s, e = shift\n    total = 0\n    for t in range(s, e):\n        day = (t // 1440) % 7\n        m = t % 1440\n        pct = 0\n        if 900 <= m < 1380:\n            pct = 10\n        if m >= 1380 or m < 420:\n            pct = 15\n        if day >= 5:\n            pct = max(pct, 12)\n        total += base * (100 + pct)\n    return (total + 3000) // 6000\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: weekend day index 1', [[900, 960], 1800], 1980),\n  ('regression variant: weekend day index 2', [[7140, 7860], 1999], 27346),\n  ('partial repair guard 3', [[7080, 7680], 90], 1028), ('boundary control 4', [[8580, 8700], 2000], 4600),\n  ('normal control 5', [[7560, 7620], 1999], 2299), ('normal control 6', [[2820, 3420], 1800], 20160),\n  ('normal control 7', [[360, 840], 90], 734), ('normal control 8', [[3621, 4018], 2000], 14027)],\n [('regression: weekend day index 1', [[7200, 7800], 2000], 22820),\n  ('regression variant: weekend day index 2', [[900, 1140], 1999], 8796),\n  ('partial repair guard 3', [[8040, 8100], 1999], 2239), ('boundary control 4', [[0, 3], 10], 1),\n  ('boundary control 5', [[8580, 8700], 2000], 4600), ('normal control 6', [[9068, 9123], 1800], 1848),\n  ('normal control 7', [[2820, 3420], 1800], 20160), ('normal control 8', [[3240, 3953], 2150], 26492)],\n [('regression: weekend day index 1', [[1320, 1500], 60], 204),\n  ('regression variant: weekend day index 2', [[7560, 8069], 1999], 19053),\n  ('partial repair guard 3', [[8160, 8760], 60], 677), ('boundary control 4', [[6600, 7260], 2000], 24200),\n  ('boundary control 5', [[0, 3], 10], 1), ('normal control 6', [[4740, 4980], 60], 240),\n  ('normal control 7', [[7140, 7860], 1800], 24624), ('normal control 8', [[3840, 4320], 2000], 17700)],\n [('regression: weekend day index 1', [[480, 960], 1999], 16192),\n  ('regression variant: weekend day index 2', [[7560, 8280], 1999], 26927),\n  ('partial repair guard 3', [[8040, 8280], 90], 403), ('boundary control 4', [[1320, 1500], 60], 204),\n  ('boundary control 5', [[6600, 7260], 2000], 24200), ('normal control 6', [[1320, 1920], 2000], 22600),\n  ('normal control 7', [[5220, 5502], 60], 310), ('normal control 8', [[8313, 8373], 60], 67)],\n [('regression: weekend day index 1', [[7958, 8472], 1999], 19180),\n  ('regression variant: weekend day index 2', [[10020, 10740], 90], 1188),\n  ('partial repair guard 3', [[8160, 8880], 60], 815), ('boundary control 4', [[480, 960], 1999], 16192),\n  ('boundary control 5', [[1320, 1500], 60], 204), ('normal control 6', [[5760, 6000], 2000], 9200),\n  ('normal control 7', [[6660, 6720], 2150], 2365), ('normal control 8', [[4740, 5460], 2000], 24800)]]\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-shift-differential-pay-weekend-day-index","generated_at":"2026-09-29T14:52:00.675395+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Shift differential calculations are where roster data meets payroll; stacking and day attribution errors are common.","repair":"With Monday as day 0, Saturday and Sunday are days 5 and 6.","root_cause":"Day indices are interpreted with Sunday as day 0.","sha256":"666481f8970d112cf8c751a88dc820a9e4901493e1df734009133efafc592b72","title":"Weekend detection assumes 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.694,"exit_code":1,"observations":[{"actual":1980,"check":"regression: weekend day index 1","expected":1980,"passed":true},{"actual":26387,"check":"regression variant: weekend day index 2","expected":27346,"passed":false},{"actual":1017,"check":"partial repair guard 3","expected":1028,"passed":false},{"actual":4600,"check":"boundary control 4","expected":4600,"passed":true},{"actual":2299,"check":"normal control 5","expected":2299,"passed":true},{"actual":20160,"check":"normal control 6","expected":20160,"passed":true},{"actual":734,"check":"normal control 7","expected":734,"passed":true},{"actual":14027,"check":"normal control 8","expected":14027,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: weekend day index 1\", \"actual\": 1980, \"expected\": 1980, \"passed\": true}, {\"check\": \"regression variant: weekend day index 2\", \"actual\": 26387, \"expected\": 27346, \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": 1017, \"expected\": 1028, \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": 4600, \"expected\": 4600, \"passed\": true}, {\"check\": \"normal control 5\", \"actual\": 2299, \"expected\": 2299, \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": 20160, \"expected\": 20160, \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": 734, \"expected\": 734, \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": 14027, \"expected\": 14027, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.4,"exit_code":1,"observations":[{"actual":2016,"check":"regression: weekend day index 1","expected":1980,"passed":false},{"actual":26387,"check":"regression variant: weekend day index 2","expected":27346,"passed":false},{"actual":1017,"check":"partial repair guard 3","expected":1028,"passed":false},{"actual":4600,"check":"boundary control 4","expected":4600,"passed":true},{"actual":2299,"check":"normal control 5","expected":2299,"passed":true},{"actual":20160,"check":"normal control 6","expected":20160,"passed":true},{"actual":809,"check":"normal control 7","expected":734,"passed":false},{"actual":14027,"check":"normal control 8","expected":14027,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: weekend day index 1\", \"actual\": 2016, \"expected\": 1980, \"passed\": false}, {\"check\": \"regression variant: weekend day index 2\", \"actual\": 26387, \"expected\": 27346, \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": 1017, \"expected\": 1028, \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": 4600, \"expected\": 4600, \"passed\": true}, {\"check\": \"normal control 5\", \"actual\": 2299, \"expected\": 2299, \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": 20160, \"expected\": 20160, \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": 809, \"expected\": 734, \"passed\": false}, {\"check\": \"normal control 8\", \"actual\": 14027, \"expected\": 14027, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.675,"exit_code":0,"observations":[{"actual":1980,"check":"regression: weekend day index 1","expected":1980,"passed":true},{"actual":27346,"check":"regression variant: weekend day index 2","expected":27346,"passed":true},{"actual":1028,"check":"partial repair guard 3","expected":1028,"passed":true},{"actual":4600,"check":"boundary control 4","expected":4600,"passed":true},{"actual":2299,"check":"normal control 5","expected":2299,"passed":true},{"actual":20160,"check":"normal control 6","expected":20160,"passed":true},{"actual":734,"check":"normal control 7","expected":734,"passed":true},{"actual":14027,"check":"normal control 8","expected":14027,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: weekend day index 1\", \"actual\": 1980, \"expected\": 1980, \"passed\": true}, {\"check\": \"regression variant: weekend day index 2\", \"actual\": 27346, \"expected\": 27346, \"passed\": true}, {\"check\": \"partial repair guard 3\", \"actual\": 1028, \"expected\": 1028, \"passed\": true}, {\"check\": \"boundary control 4\", \"actual\": 4600, \"expected\": 4600, \"passed\": true}, {\"check\": \"normal control 5\", \"actual\": 2299, \"expected\": 2299, \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": 20160, \"expected\": 20160, \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": 734, \"expected\": 734, \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": 14027, \"expected\": 14027, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}