{"abstract":"A worker finishing six straight days last period can be rostered for more days immediately.","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":"Treating any carry-in as a single day still undercounts longer streaks.","family":"w2-shift-rostering-labor-rules-consecutive-days-and-fortnight-rest-streak-carry-in","id":"FA-93986","implementations":{"attempt":{"sha256":"9d55cc60eef4e6e7433d29ff299d50ec94cc328ed8a0121c85903bdde361df62","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(pattern, carry_in):\n    out = []\n    run = 1 if carry_in else 0\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: streak carry in 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: streak carry in 2', ['WWWWWOWWWLWLOWLWWW', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3], ['streak', 4]]),\n  ('partial repair guard 3', ['WWLLWWWLOWWWWWLWOW', 5],\n   [['streak', 1], ['rest14', 0], ['rest14', 1], ['rest14', 2]]),\n  ('boundary control 4', ['WWWWWWOWWWWWWOW', 0], []),\n  ('boundary control 5', ['WWWWWWWO', 0], [['streak', 6]]),\n  ('normal control 6', ['WLLWWLLLWWWOOWLWWO', 5], []), ('normal control 7', ['WWOWWWOWWLWWWW', 0], []),\n  ('normal control 8', ['WWWWLWWWWLWOOWWWWW', 3], [['streak', 3]])],\n [('regression: streak carry in 1', ['WWLWWWWLWOOLWW', 5], [['streak', 1]]),\n  ('regression variant: streak carry in 2', ['WWWWWWWWWWWWOOWOWWOWWWWWWWWW', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3], ['streak', 4], ['streak', 5], ['streak', 6], ['streak', 7],\n    ['streak', 8], ['streak', 9], ['streak', 10], ['streak', 11], ['streak', 25], ['streak', 26],\n    ['streak', 27]]),\n  ('partial repair guard 3', ['WOWWWWWWLOWLWWW', 6], [['streak', 0]]),\n  ('boundary control 4', ['WWWLWWWWWWWOWWWO', 0], [['streak', 10], ['rest14', 0], ['rest14', 1]]),\n  ('boundary control 5', ['WWWWWWOWWWWWWL', 0], [['rest14', 0]]),\n  ('normal control 6', ['LOWWOWWWWWWWLW', 0], [['streak', 11]]),\n  ('normal control 7', ['LWWWWWWWWLWWWL', 3], [['streak', 7], ['streak', 8], ['rest14', 0]]),\n  ('normal control 8', ['LLWLOLWWOWWWOWWWWW', 0], [])],\n [('regression: streak carry in 1', ['WWWWOWWWOLOWOOWLWWWWW', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3]]),\n  ('regression variant: streak carry in 2', ['WWWWWWLOWWWWOOLWWW', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3], ['streak', 4], ['streak', 5]]),\n  ('partial repair guard 3', ['WWWWWWWWWWWWOOWOWWOWWWWWWWWW', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3], ['streak', 4], ['streak', 5], ['streak', 6], ['streak', 7],\n    ['streak', 8], ['streak', 9], ['streak', 10], ['streak', 11], ['streak', 25], ['streak', 26],\n    ['streak', 27]]),\n  ('boundary control 4', ['WWOWWWWWW', 3], []), ('boundary control 5', ['WWWWWWO', 0], []),\n  ('normal control 6', ['LWLWWOWOWWWLWW', 1], []),\n  ('normal control 7', ['OOOWWWWWWWWOWWL', 1], [['streak', 9], ['streak', 10]]),\n  ('normal control 8', ['OWWWWWWLWOWLWW', 1], [])],\n [('regression: streak carry in 1', ['WOWWWWWWWWOWWWWWWWWOWWWWWWLW', 6],\n   [['streak', 0], ['streak', 8], ['streak', 9], ['streak', 17], ['streak', 18], ['rest14', 2], ['rest14', 3],\n    ['rest14', 4], ['rest14', 5], ['rest14', 11], ['rest14', 12], ['rest14', 13], ['rest14', 14]]),\n  ('regression variant: streak carry in 2', ['WWWWOOWWOWOWWOLWWLWWW', 3], [['streak', 3]]),\n  ('partial repair guard 3', ['WWWWLWWWWLWOOWWWWW', 3], [['streak', 3]]),\n  ('boundary control 4', ['OWWWWWWOWWWWWW', 0], []), ('boundary control 5', ['WWWWWWOWWWWWWOW', 0], []),\n  ('normal control 6', ['WWWWWWWWWLOWOL', 0], [['streak', 6], ['streak', 7], ['streak', 8]]),\n  ('normal control 7', ['WWWWLWLLWWWOWOWWLWWWW', 6],\n   [['streak', 0], ['streak', 1], ['streak', 2], ['streak', 3]]),\n  ('normal control 8', ['WWWLWWOOWOLWWW', 1], [])],\n [('regression: streak carry in 1', ['WWWWWWWLWLWWWO', 1], [['streak', 5], ['streak', 6], ['rest14', 0]]),\n  ('regression variant: streak carry in 2', ['WLOWWWWWWWWWWLWWWWWOWOLWWWWW', 6],\n   [['streak', 0], ['streak', 9], ['streak', 10], ['streak', 11], ['streak', 12], ['rest14', 0],\n    ['rest14', 1], ['rest14', 2], ['rest14', 3], ['rest14', 4], ['rest14', 5], ['rest14', 6],\n    ['rest14', 7]]),\n  ('partial repair guard 3', ['WWWWWWWWWLWWLWW', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3], ['streak', 4], ['streak', 5], ['streak', 6], ['streak', 7],\n    ['streak', 8], ['rest14', 0], ['rest14', 1]]),\n  ('boundary control 4', ['WWWWWWWO', 0], [['streak', 6]]),\n  ('boundary control 5', ['WWWLWWWWWWWOWWWO', 0], [['streak', 10], ['rest14', 0], ['rest14', 1]]),\n  ('normal control 6', ['WOWWWWWWWWWOWWWWWW', 5],\n   [['streak', 8], ['streak', 9], ['streak', 10], ['rest14', 2], ['rest14', 3], ['rest14', 4]]),\n  ('normal control 7', ['WWWWWOWWWLWLOWLWWW', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3], ['streak', 4]]),\n  ('normal control 8', ['WWWWWWWWLWWWWWW', 0], [['streak', 6], ['streak', 7], ['rest14', 0], ['rest14', 1]])]]\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":"29fd0bb8fa4e00302b15c83c39dae54dd735ffdd92b2f1b6525ffb4bc5a9adc9","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(pattern, carry_in):\n    out = []\n    run = 0\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: streak carry in 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: streak carry in 2', ['WWWWWOWWWLWLOWLWWW', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3], ['streak', 4]]),\n  ('partial repair guard 3', ['WWLLWWWLOWWWWWLWOW', 5],\n   [['streak', 1], ['rest14', 0], ['rest14', 1], ['rest14', 2]]),\n  ('boundary control 4', ['WWWWWWOWWWWWWOW', 0], []),\n  ('boundary control 5', ['WWWWWWWO', 0], [['streak', 6]]),\n  ('normal control 6', ['WLLWWLLLWWWOOWLWWO', 5], []), ('normal control 7', ['WWOWWWOWWLWWWW', 0], []),\n  ('normal control 8', ['WWWWLWWWWLWOOWWWWW', 3], [['streak', 3]])],\n [('regression: streak carry in 1', ['WWLWWWWLWOOLWW', 5], [['streak', 1]]),\n  ('regression variant: streak carry in 2', ['WWWWWWWWWWWWOOWOWWOWWWWWWWWW', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3], ['streak', 4], ['streak', 5], ['streak', 6], ['streak', 7],\n    ['streak', 8], ['streak', 9], ['streak', 10], ['streak', 11], ['streak', 25], ['streak', 26],\n    ['streak', 27]]),\n  ('partial repair guard 3', ['WOWWWWWWLOWLWWW', 6], [['streak', 0]]),\n  ('boundary control 4', ['WWWLWWWWWWWOWWWO', 0], [['streak', 10], ['rest14', 0], ['rest14', 1]]),\n  ('boundary control 5', ['WWWWWWOWWWWWWL', 0], [['rest14', 0]]),\n  ('normal control 6', ['LOWWOWWWWWWWLW', 0], [['streak', 11]]),\n  ('normal control 7', ['LWWWWWWWWLWWWL', 3], [['streak', 7], ['streak', 8], ['rest14', 0]]),\n  ('normal control 8', ['LLWLOLWWOWWWOWWWWW', 0], [])],\n [('regression: streak carry in 1', ['WWWWOWWWOLOWOOWLWWWWW', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3]]),\n  ('regression variant: streak carry in 2', ['WWWWWWLOWWWWOOLWWW', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3], ['streak', 4], ['streak', 5]]),\n  ('partial repair guard 3', ['WWWWWWWWWWWWOOWOWWOWWWWWWWWW', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3], ['streak', 4], ['streak', 5], ['streak', 6], ['streak', 7],\n    ['streak', 8], ['streak', 9], ['streak', 10], ['streak', 11], ['streak', 25], ['streak', 26],\n    ['streak', 27]]),\n  ('boundary control 4', ['WWOWWWWWW', 3], []), ('boundary control 5', ['WWWWWWO', 0], []),\n  ('normal control 6', ['LWLWWOWOWWWLWW', 1], []),\n  ('normal control 7', ['OOOWWWWWWWWOWWL', 1], [['streak', 9], ['streak', 10]]),\n  ('normal control 8', ['OWWWWWWLWOWLWW', 1], [])],\n [('regression: streak carry in 1', ['WOWWWWWWWWOWWWWWWWWOWWWWWWLW', 6],\n   [['streak', 0], ['streak', 8], ['streak', 9], ['streak', 17], ['streak', 18], ['rest14', 2], ['rest14', 3],\n    ['rest14', 4], ['rest14', 5], ['rest14', 11], ['rest14', 12], ['rest14', 13], ['rest14', 14]]),\n  ('regression variant: streak carry in 2', ['WWWWOOWWOWOWWOLWWLWWW', 3], [['streak', 3]]),\n  ('partial repair guard 3', ['WWWWLWWWWLWOOWWWWW', 3], [['streak', 3]]),\n  ('boundary control 4', ['OWWWWWWOWWWWWW', 0], []), ('boundary control 5', ['WWWWWWOWWWWWWOW', 0], []),\n  ('normal control 6', ['WWWWWWWWWLOWOL', 0], [['streak', 6], ['streak', 7], ['streak', 8]]),\n  ('normal control 7', ['WWWWLWLLWWWOWOWWLWWWW', 6],\n   [['streak', 0], ['streak', 1], ['streak', 2], ['streak', 3]]),\n  ('normal control 8', ['WWWLWWOOWOLWWW', 1], [])],\n [('regression: streak carry in 1', ['WWWWWWWLWLWWWO', 1], [['streak', 5], ['streak', 6], ['rest14', 0]]),\n  ('regression variant: streak carry in 2', ['WLOWWWWWWWWWWLWWWWWOWOLWWWWW', 6],\n   [['streak', 0], ['streak', 9], ['streak', 10], ['streak', 11], ['streak', 12], ['rest14', 0],\n    ['rest14', 1], ['rest14', 2], ['rest14', 3], ['rest14', 4], ['rest14', 5], ['rest14', 6],\n    ['rest14', 7]]),\n  ('partial repair guard 3', ['WWWWWWWWWLWWLWW', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3], ['streak', 4], ['streak', 5], ['streak', 6], ['streak', 7],\n    ['streak', 8], ['rest14', 0], ['rest14', 1]]),\n  ('boundary control 4', ['WWWWWWWO', 0], [['streak', 6]]),\n  ('boundary control 5', ['WWWLWWWWWWWOWWWO', 0], [['streak', 10], ['rest14', 0], ['rest14', 1]]),\n  ('normal control 6', ['WOWWWWWWWWWOWWWWWW', 5],\n   [['streak', 8], ['streak', 9], ['streak', 10], ['rest14', 2], ['rest14', 3], ['rest14', 4]]),\n  ('normal control 7', ['WWWWWOWWWLWLOWLWWW', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3], ['streak', 4]]),\n  ('normal control 8', ['WWWWWWWWLWWWWWW', 0], [['streak', 6], ['streak', 7], ['rest14', 0], ['rest14', 1]])]]\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-streak-carry-in","generated_at":"2026-09-29T14:52:00.121397+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 streak counter starts at zero instead of the carried-in count.","sha256":"e1ce64ffce0549869a198d79dac3741d4e9bf29066cc286b25e695924552bbd6","title":"Consecutive-day streak ignores days worked before the roster period · 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":41.356,"exit_code":1,"observations":[{"actual":[["streak",11],["streak",12],["streak",13],["streak",14],["streak",15],["streak",16],["rest14",0],["rest14",1],["rest14",2],["rest14",3],["rest14",4],["rest14",5]],"check":"regression: streak carry in 1","expected":[["streak",1],["streak",2],["streak",3],["streak",11],["streak",12],["streak",13],["streak",14],["streak",15],["streak",16],["rest14",0],["rest14",1],["rest14",2],["rest14",3],["rest14",4],["rest14",5]],"passed":false},{"actual":[],"check":"regression variant: streak carry in 2","expected":[["streak",1],["streak",2],["streak",3],["streak",4]],"passed":false},{"actual":[["rest14",0],["rest14",1],["rest14",2]],"check":"partial repair guard 3","expected":[["streak",1],["rest14",0],["rest14",1],["rest14",2]],"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":[],"check":"normal control 7","expected":[],"passed":true},{"actual":[],"check":"normal control 8","expected":[["streak",3]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: streak carry in 1\", \"actual\": [[\"streak\", 11], [\"streak\", 12], [\"streak\", 13], [\"streak\", 14], [\"streak\", 15], [\"streak\", 16], [\"rest14\", 0], [\"rest14\", 1], [\"rest14\", 2], [\"rest14\", 3], [\"rest14\", 4], [\"rest14\", 5]], \"expected\": [[\"streak\", 1], [\"streak\", 2], [\"streak\", 3], [\"streak\", 11], [\"streak\", 12], [\"streak\", 13], [\"streak\", 14], [\"streak\", 15], [\"streak\", 16], [\"rest14\", 0], [\"rest14\", 1], [\"rest14\", 2], [\"rest14\", 3], [\"rest14\", 4], [\"rest14\", 5]], \"passed\": false}, {\"check\": \"regression variant: streak carry in 2\", \"actual\": [], \"expected\": [[\"streak\", 1], [\"streak\", 2], [\"streak\", 3], [\"streak\", 4]], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [[\"rest14\", 0], [\"rest14\", 1], [\"rest14\", 2]], \"expected\": [[\"streak\", 1], [\"rest14\", 0], [\"rest14\", 1], [\"rest14\", 2]], \"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\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": [], \"expected\": [[\"streak\", 3]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.323,"exit_code":1,"observations":[{"actual":[["streak",11],["streak",12],["streak",13],["streak",14],["streak",15],["streak",16],["rest14",0],["rest14",1],["rest14",2],["rest14",3],["rest14",4],["rest14",5]],"check":"regression: streak carry in 1","expected":[["streak",1],["streak",2],["streak",3],["streak",11],["streak",12],["streak",13],["streak",14],["streak",15],["streak",16],["rest14",0],["rest14",1],["rest14",2],["rest14",3],["rest14",4],["rest14",5]],"passed":false},{"actual":[],"check":"regression variant: streak carry in 2","expected":[["streak",1],["streak",2],["streak",3],["streak",4]],"passed":false},{"actual":[["rest14",0],["rest14",1],["rest14",2]],"check":"partial repair guard 3","expected":[["streak",1],["rest14",0],["rest14",1],["rest14",2]],"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":[],"check":"normal control 7","expected":[],"passed":true},{"actual":[],"check":"normal control 8","expected":[["streak",3]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: streak carry in 1\", \"actual\": [[\"streak\", 11], [\"streak\", 12], [\"streak\", 13], [\"streak\", 14], [\"streak\", 15], [\"streak\", 16], [\"rest14\", 0], [\"rest14\", 1], [\"rest14\", 2], [\"rest14\", 3], [\"rest14\", 4], [\"rest14\", 5]], \"expected\": [[\"streak\", 1], [\"streak\", 2], [\"streak\", 3], [\"streak\", 11], [\"streak\", 12], [\"streak\", 13], [\"streak\", 14], [\"streak\", 15], [\"streak\", 16], [\"rest14\", 0], [\"rest14\", 1], [\"rest14\", 2], [\"rest14\", 3], [\"rest14\", 4], [\"rest14\", 5]], \"passed\": false}, {\"check\": \"regression variant: streak carry in 2\", \"actual\": [], \"expected\": [[\"streak\", 1], [\"streak\", 2], [\"streak\", 3], [\"streak\", 4]], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [[\"rest14\", 0], [\"rest14\", 1], [\"rest14\", 2]], \"expected\": [[\"streak\", 1], [\"rest14\", 0], [\"rest14\", 1], [\"rest14\", 2]], \"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\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": [], \"expected\": [[\"streak\", 3]], \"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."}}