{"abstract":"Windows containing leave but no rostered days off pass the rest check.","category":"Shift rostering labor rules","checks":8,"contract":"A day pattern (W worked, O rostered off, L leave) and the count of consecutive worked days immediately before it. Any worked day that makes the streak exceed six is a streak violation; O or L ends a streak. Every 14-day window fully inside the pattern (each start index) needs at least two O days; leave does not count as a rostered day off. Return [kind, index] rows: streaks in day order, then windows.","contract_signature":"pattern, carry_in","evaluation_group":"w2-shift-rostering-labor-rules-consecutive-days-and-fortnight-rest","failed_approach":"Requiring more than two O days rejects compliant windows with exactly two days off.","family":"w2-shift-rostering-labor-rules-consecutive-days-and-fortnight-rest-leave-counted-as-rest","id":"FA-94006","implementations":{"attempt":{"sha256":"529d8323b257c6324f7eb332c235317927b34db7ce04898e643b7a9c002c6f6a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(pattern, carry_in):\n    out = []\n    run = carry_in\n    for i, c in enumerate(pattern):\n        if c == 'W':\n            run += 1\n            if run > 6:\n                out.append(['streak', i])\n        else:\n            run = 0\n    for i in range(len(pattern) - 13):\n        if pattern[i:i + 14].count('O') <= 2:\n            out.append(['rest14', i])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: leave counted as rest 1', ['WWWWWWOWWWWWWL', 0], [['rest14', 0]]),\n  ('regression variant: leave counted as rest 2', ['WWLWLWWWOWWWWLWWWW', 0],\n   [['rest14', 0], ['rest14', 1], ['rest14', 2], ['rest14', 3], ['rest14', 4]]),\n  ('partial repair guard 3', ['LLWWWWLWWWWWWOWOWW', 0], [['rest14', 0], ['rest14', 1]]),\n  ('boundary control 4', ['WWWWWWOWWWWWWOW', 0], []),\n  ('boundary control 5', ['WWWWWWWO', 0], [['streak', 6]]), ('normal control 6', ['WWOWLWWWWWLOWW', 0], []),\n  ('normal control 7', ['WLWWWWOWWWWWLLWWLWWWW', 6],\n   [['streak', 0], ['rest14', 0], ['rest14', 1], ['rest14', 2], ['rest14', 3], ['rest14', 4], ['rest14', 5],\n    ['rest14', 6], ['rest14', 7]]),\n  ('normal control 8', ['OWWLLWWWWWWOWWWWLWWOL', 6],\n   [['rest14', 1], ['rest14', 2], ['rest14', 3], ['rest14', 4], ['rest14', 5]])],\n [('regression: leave counted as rest 1', ['WWWLWWWWWWWOWWWO', 0],\n   [['streak', 10], ['rest14', 0], ['rest14', 1]]),\n  ('regression variant: leave counted as rest 2', ['WWWWWWWLWWOWWWWOOWWWWLLWWWWW', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3], ['streak', 4], ['streak', 5], ['streak', 6], ['rest14', 0],\n    ['rest14', 1]]),\n  ('partial repair guard 3', ['OWWLOWWWWLOWWOWLWWWOW', 1], []),\n  ('boundary control 4', ['WWWWWWOWWWWWWL', 0], [['rest14', 0]]),\n  ('normal control 5', ['LWOWLWWWWWWWWWWOWWLWWLWWWWWW', 3],\n   [['streak', 11], ['streak', 12], ['streak', 13], ['streak', 14], ['rest14', 0], ['rest14', 1],\n    ['rest14', 3], ['rest14', 4], ['rest14', 5], ['rest14', 6], ['rest14', 7], ['rest14', 8], ['rest14', 9],\n    ['rest14', 10], ['rest14', 11], ['rest14', 12], ['rest14', 13], ['rest14', 14]]),\n  ('normal control 6', ['WLLWWLWWWL', 6], [['streak', 0]]), ('normal control 7', ['WWOLWWOWOL', 0], []),\n  ('normal control 8', ['OOWWWOWWWWOWLWWOWWOWW', 5], [])],\n [('regression: leave counted as rest 1', ['WWOWLOWWLWWWWWWWWW', 3],\n   [['streak', 15], ['streak', 16], ['streak', 17], ['rest14', 3], ['rest14', 4]]),\n  ('regression variant: leave counted as rest 2', ['WLLOWWWOWWWWWWWWLWWWW', 0],\n   [['streak', 14], ['streak', 15], ['rest14', 4], ['rest14', 5], ['rest14', 6], ['rest14', 7]]),\n  ('partial repair guard 3', ['WLOWWWWLWLWOWWWOLW', 3], []), ('boundary control 4', ['WWOWWWWWW', 3], []),\n  ('boundary control 5', ['WWWWWWO', 0], []),\n  ('normal control 6', ['WWWWWWWLOWLOWW', 1], [['streak', 5], ['streak', 6]]),\n  ('normal control 7', ['WWWOOWWWLWWWWWWWWW', 1],\n   [['streak', 15], ['streak', 16], ['streak', 17], ['rest14', 4]]),\n  ('normal control 8', ['WWWOOWWWOWWWWW', 0], [])],\n [('regression: leave counted as rest 1', ['LLWWWWLWWWWWWOWOWW', 0], [['rest14', 0], ['rest14', 1]]),\n  ('regression variant: leave counted as rest 2', ['WWWWWWOOOWWWLWWWWWWOLLWWWOWW', 0],\n   [['rest14', 9], ['rest14', 10], ['rest14', 11]]),\n  ('partial repair guard 3', ['WWWWWWWLWWOWWWWOOWWWWLLWWWWW', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3], ['streak', 4], ['streak', 5], ['streak', 6], ['rest14', 0],\n    ['rest14', 1]]),\n  ('boundary control 4', ['OWWWWWWOWWWWWW', 0], []), ('boundary control 5', ['WWWWWWOWWWWWWOW', 0], []),\n  ('normal control 6', ['OOWWWOWWWWOWLWWOWWOWW', 5], []),\n  ('normal control 7', ['WOWWWWWWWWOLWOWWWW', 0], [['streak', 8], ['streak', 9]]),\n  ('normal control 8', ['OWWWWWWLWOWLWW', 1], [])],\n [('regression: leave counted as rest 1', ['WWWWLWWWWWWWWWWWWOLOL', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3], ['streak', 11], ['streak', 12], ['streak', 13],\n    ['streak', 14], ['streak', 15], ['streak', 16], ['rest14', 0], ['rest14', 1], ['rest14', 2],\n    ['rest14', 3], ['rest14', 4], ['rest14', 5]]),\n  ('regression variant: leave counted as rest 2', ['WWWOWWWWWWWWWWLOLW', 0],\n   [['streak', 10], ['streak', 11], ['streak', 12], ['streak', 13], ['rest14', 0], ['rest14', 1],\n    ['rest14', 4]]),\n  ('partial repair guard 3', ['WWWWWOWWWLWLOWLWWW', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3], ['streak', 4]]),\n  ('boundary control 4', ['WWWWWWWO', 0], [['streak', 6]]),\n  ('boundary control 5', ['WWWLWWWWWWWOWWWO', 0], [['streak', 10], ['rest14', 0], ['rest14', 1]]),\n  ('normal control 6', ['WWWWWWWWWLWWLOWWOLWWWWLWWOWW', 0],\n   [['streak', 6], ['streak', 7], ['streak', 8], ['rest14', 0], ['rest14', 1], ['rest14', 2]]),\n  ('normal control 7', ['WWLWWWWWOW', 0], []),\n  ('normal control 8', ['WWWWWWLWWWLLWW', 1], [['streak', 5], ['rest14', 0]])]]\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":"be4f069a58e45cc04a5b253b63e0cfe356c8889381a9f1afc50ab7a39c0c2d77","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(pattern, carry_in):\n    out = []\n    run = carry_in\n    for i, c in enumerate(pattern):\n        if c == 'W':\n            run += 1\n            if run > 6:\n                out.append(['streak', i])\n        else:\n            run = 0\n    for i in range(len(pattern) - 13):\n        if pattern[i:i + 14].count('W') > 12:\n            out.append(['rest14', i])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: leave counted as rest 1', ['WWWWWWOWWWWWWL', 0], [['rest14', 0]]),\n  ('regression variant: leave counted as rest 2', ['WWLWLWWWOWWWWLWWWW', 0],\n   [['rest14', 0], ['rest14', 1], ['rest14', 2], ['rest14', 3], ['rest14', 4]]),\n  ('partial repair guard 3', ['LLWWWWLWWWWWWOWOWW', 0], [['rest14', 0], ['rest14', 1]]),\n  ('boundary control 4', ['WWWWWWOWWWWWWOW', 0], []),\n  ('boundary control 5', ['WWWWWWWO', 0], [['streak', 6]]), ('normal control 6', ['WWOWLWWWWWLOWW', 0], []),\n  ('normal control 7', ['WLWWWWOWWWWWLLWWLWWWW', 6],\n   [['streak', 0], ['rest14', 0], ['rest14', 1], ['rest14', 2], ['rest14', 3], ['rest14', 4], ['rest14', 5],\n    ['rest14', 6], ['rest14', 7]]),\n  ('normal control 8', ['OWWLLWWWWWWOWWWWLWWOL', 6],\n   [['rest14', 1], ['rest14', 2], ['rest14', 3], ['rest14', 4], ['rest14', 5]])],\n [('regression: leave counted as rest 1', ['WWWLWWWWWWWOWWWO', 0],\n   [['streak', 10], ['rest14', 0], ['rest14', 1]]),\n  ('regression variant: leave counted as rest 2', ['WWWWWWWLWWOWWWWOOWWWWLLWWWWW', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3], ['streak', 4], ['streak', 5], ['streak', 6], ['rest14', 0],\n    ['rest14', 1]]),\n  ('partial repair guard 3', ['OWWLOWWWWLOWWOWLWWWOW', 1], []),\n  ('boundary control 4', ['WWWWWWOWWWWWWL', 0], [['rest14', 0]]),\n  ('normal control 5', ['LWOWLWWWWWWWWWWOWWLWWLWWWWWW', 3],\n   [['streak', 11], ['streak', 12], ['streak', 13], ['streak', 14], ['rest14', 0], ['rest14', 1],\n    ['rest14', 3], ['rest14', 4], ['rest14', 5], ['rest14', 6], ['rest14', 7], ['rest14', 8], ['rest14', 9],\n    ['rest14', 10], ['rest14', 11], ['rest14', 12], ['rest14', 13], ['rest14', 14]]),\n  ('normal control 6', ['WLLWWLWWWL', 6], [['streak', 0]]), ('normal control 7', ['WWOLWWOWOL', 0], []),\n  ('normal control 8', ['OOWWWOWWWWOWLWWOWWOWW', 5], [])],\n [('regression: leave counted as rest 1', ['WWOWLOWWLWWWWWWWWW', 3],\n   [['streak', 15], ['streak', 16], ['streak', 17], ['rest14', 3], ['rest14', 4]]),\n  ('regression variant: leave counted as rest 2', ['WLLOWWWOWWWWWWWWLWWWW', 0],\n   [['streak', 14], ['streak', 15], ['rest14', 4], ['rest14', 5], ['rest14', 6], ['rest14', 7]]),\n  ('partial repair guard 3', ['WLOWWWWLWLWOWWWOLW', 3], []), ('boundary control 4', ['WWOWWWWWW', 3], []),\n  ('boundary control 5', ['WWWWWWO', 0], []),\n  ('normal control 6', ['WWWWWWWLOWLOWW', 1], [['streak', 5], ['streak', 6]]),\n  ('normal control 7', ['WWWOOWWWLWWWWWWWWW', 1],\n   [['streak', 15], ['streak', 16], ['streak', 17], ['rest14', 4]]),\n  ('normal control 8', ['WWWOOWWWOWWWWW', 0], [])],\n [('regression: leave counted as rest 1', ['LLWWWWLWWWWWWOWOWW', 0], [['rest14', 0], ['rest14', 1]]),\n  ('regression variant: leave counted as rest 2', ['WWWWWWOOOWWWLWWWWWWOLLWWWOWW', 0],\n   [['rest14', 9], ['rest14', 10], ['rest14', 11]]),\n  ('partial repair guard 3', ['WWWWWWWLWWOWWWWOOWWWWLLWWWWW', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3], ['streak', 4], ['streak', 5], ['streak', 6], ['rest14', 0],\n    ['rest14', 1]]),\n  ('boundary control 4', ['OWWWWWWOWWWWWW', 0], []), ('boundary control 5', ['WWWWWWOWWWWWWOW', 0], []),\n  ('normal control 6', ['OOWWWOWWWWOWLWWOWWOWW', 5], []),\n  ('normal control 7', ['WOWWWWWWWWOLWOWWWW', 0], [['streak', 8], ['streak', 9]]),\n  ('normal control 8', ['OWWWWWWLWOWLWW', 1], [])],\n [('regression: leave counted as rest 1', ['WWWWLWWWWWWWWWWWWOLOL', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3], ['streak', 11], ['streak', 12], ['streak', 13],\n    ['streak', 14], ['streak', 15], ['streak', 16], ['rest14', 0], ['rest14', 1], ['rest14', 2],\n    ['rest14', 3], ['rest14', 4], ['rest14', 5]]),\n  ('regression variant: leave counted as rest 2', ['WWWOWWWWWWWWWWLOLW', 0],\n   [['streak', 10], ['streak', 11], ['streak', 12], ['streak', 13], ['rest14', 0], ['rest14', 1],\n    ['rest14', 4]]),\n  ('partial repair guard 3', ['WWWWWOWWWLWLOWLWWW', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3], ['streak', 4]]),\n  ('boundary control 4', ['WWWWWWWO', 0], [['streak', 6]]),\n  ('boundary control 5', ['WWWLWWWWWWWOWWWO', 0], [['streak', 10], ['rest14', 0], ['rest14', 1]]),\n  ('normal control 6', ['WWWWWWWWWLWWLOWWOLWWWWLWWOWW', 0],\n   [['streak', 6], ['streak', 7], ['streak', 8], ['rest14', 0], ['rest14', 1], ['rest14', 2]]),\n  ('normal control 7', ['WWLWWWWWOW', 0], []),\n  ('normal control 8', ['WWWWWWLWWWLLWW', 1], [['streak', 5], ['rest14', 0]])]]\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-consecutive-days-and-fortnight-rest-leave-counted-as-rest","generated_at":"2026-09-29T14:52:00.294661+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Consecutive-day limits and fortnightly day-off minimums are standard roster labor rules.","root_cause":"The rest check counts every non-worked day, including leave, as a day off.","sha256":"2c6466d4f810ed3bd180a94a9aec1e71290529b6506292778e8332d776a9e6a7","title":"Leave days satisfy the fortnightly day-off minimum · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":39.583,"exit_code":1,"observations":[{"actual":[["rest14",0]],"check":"regression: leave counted as rest 1","expected":[["rest14",0]],"passed":true},{"actual":[["rest14",0],["rest14",1],["rest14",2],["rest14",3],["rest14",4]],"check":"regression variant: leave counted as rest 2","expected":[["rest14",0],["rest14",1],["rest14",2],["rest14",3],["rest14",4]],"passed":true},{"actual":[["rest14",0],["rest14",1],["rest14",2],["rest14",3],["rest14",4]],"check":"partial repair guard 3","expected":[["rest14",0],["rest14",1]],"passed":false},{"actual":[["rest14",0],["rest14",1]],"check":"boundary control 4","expected":[],"passed":false},{"actual":[["streak",6]],"check":"boundary control 5","expected":[["streak",6]],"passed":true},{"actual":[["rest14",0]],"check":"normal control 6","expected":[],"passed":false},{"actual":[["streak",0],["rest14",0],["rest14",1],["rest14",2],["rest14",3],["rest14",4],["rest14",5],["rest14",6],["rest14",7]],"check":"normal control 7","expected":[["streak",0],["rest14",0],["rest14",1],["rest14",2],["rest14",3],["rest14",4],["rest14",5],["rest14",6],["rest14",7]],"passed":true},{"actual":[["rest14",0],["rest14",1],["rest14",2],["rest14",3],["rest14",4],["rest14",5],["rest14",6],["rest14",7]],"check":"normal control 8","expected":[["rest14",1],["rest14",2],["rest14",3],["rest14",4],["rest14",5]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: leave counted as rest 1\", \"actual\": [[\"rest14\", 0]], \"expected\": [[\"rest14\", 0]], \"passed\": true}, {\"check\": \"regression variant: leave counted as rest 2\", \"actual\": [[\"rest14\", 0], [\"rest14\", 1], [\"rest14\", 2], [\"rest14\", 3], [\"rest14\", 4]], \"expected\": [[\"rest14\", 0], [\"rest14\", 1], [\"rest14\", 2], [\"rest14\", 3], [\"rest14\", 4]], \"passed\": true}, {\"check\": \"partial repair guard 3\", \"actual\": [[\"rest14\", 0], [\"rest14\", 1], [\"rest14\", 2], [\"rest14\", 3], [\"rest14\", 4]], \"expected\": [[\"rest14\", 0], [\"rest14\", 1]], \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": [[\"rest14\", 0], [\"rest14\", 1]], \"expected\": [], \"passed\": false}, {\"check\": \"boundary control 5\", \"actual\": [[\"streak\", 6]], \"expected\": [[\"streak\", 6]], \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": [[\"rest14\", 0]], \"expected\": [], \"passed\": false}, {\"check\": \"normal control 7\", \"actual\": [[\"streak\", 0], [\"rest14\", 0], [\"rest14\", 1], [\"rest14\", 2], [\"rest14\", 3], [\"rest14\", 4], [\"rest14\", 5], [\"rest14\", 6], [\"rest14\", 7]], \"expected\": [[\"streak\", 0], [\"rest14\", 0], [\"rest14\", 1], [\"rest14\", 2], [\"rest14\", 3], [\"rest14\", 4], [\"rest14\", 5], [\"rest14\", 6], [\"rest14\", 7]], \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": [[\"rest14\", 0], [\"rest14\", 1], [\"rest14\", 2], [\"rest14\", 3], [\"rest14\", 4], [\"rest14\", 5], [\"rest14\", 6], [\"rest14\", 7]], \"expected\": [[\"rest14\", 1], [\"rest14\", 2], [\"rest14\", 3], [\"rest14\", 4], [\"rest14\", 5]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.131,"exit_code":1,"observations":[{"actual":[],"check":"regression: leave counted as rest 1","expected":[["rest14",0]],"passed":false},{"actual":[],"check":"regression variant: leave counted as rest 2","expected":[["rest14",0],["rest14",1],["rest14",2],["rest14",3],["rest14",4]],"passed":false},{"actual":[],"check":"partial repair guard 3","expected":[["rest14",0],["rest14",1]],"passed":false},{"actual":[],"check":"boundary control 4","expected":[],"passed":true},{"actual":[["streak",6]],"check":"boundary control 5","expected":[["streak",6]],"passed":true},{"actual":[],"check":"normal control 6","expected":[],"passed":true},{"actual":[["streak",0]],"check":"normal control 7","expected":[["streak",0],["rest14",0],["rest14",1],["rest14",2],["rest14",3],["rest14",4],["rest14",5],["rest14",6],["rest14",7]],"passed":false},{"actual":[],"check":"normal control 8","expected":[["rest14",1],["rest14",2],["rest14",3],["rest14",4],["rest14",5]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: leave counted as rest 1\", \"actual\": [], \"expected\": [[\"rest14\", 0]], \"passed\": false}, {\"check\": \"regression variant: leave counted as rest 2\", \"actual\": [], \"expected\": [[\"rest14\", 0], [\"rest14\", 1], [\"rest14\", 2], [\"rest14\", 3], [\"rest14\", 4]], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [], \"expected\": [[\"rest14\", 0], [\"rest14\", 1]], \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"boundary control 5\", \"actual\": [[\"streak\", 6]], \"expected\": [[\"streak\", 6]], \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": [[\"streak\", 0]], \"expected\": [[\"streak\", 0], [\"rest14\", 0], [\"rest14\", 1], [\"rest14\", 2], [\"rest14\", 3], [\"rest14\", 4], [\"rest14\", 5], [\"rest14\", 6], [\"rest14\", 7]], \"passed\": false}, {\"check\": \"normal control 8\", \"actual\": [], \"expected\": [[\"rest14\", 1], [\"rest14\", 2], [\"rest14\", 3], [\"rest14\", 4], [\"rest14\", 5]], \"passed\": false}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}