{"abstract":"A rest shortfall in the last fortnight of the roster is not reported.","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.","evaluation_group":"w2-shift-rostering-labor-rules-consecutive-days-and-fortnight-rest","failed_approach":"Stepping by whole weeks checks only calendar fortnights, missing rolling windows.","family":"w2-shift-rostering-labor-rules-consecutive-days-and-fortnight-rest-fortnight-window-count","id":"FA-93996","implementations":{"attempt":{"sha256":"a778227dd5bf8fff6a1c4b9bf866f29acb11977082745db7847a524a144512b5","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(0, len(pattern) - 13, 7):\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: fortnight window count 1', ['WWWWWWOWWWWWWL', 0], [['rest14', 0]]),\n  ('regression variant: fortnight window count 2', ['WOLWWWOWWWWWWWWWWW', 0],\n   [['streak', 13], ['streak', 14], ['streak', 15], ['streak', 16], ['streak', 17], ['rest14', 2],\n    ['rest14', 3], ['rest14', 4]]),\n  ('partial repair guard 3', ['WWOWWLWWWLLOWWWWWWWWLLLWWWWW', 0],\n   [['streak', 18], ['streak', 19], ['rest14', 3], ['rest14', 4], ['rest14', 5], ['rest14', 6], ['rest14', 7],\n    ['rest14', 8], ['rest14', 9], ['rest14', 10], ['rest14', 11], ['rest14', 12], ['rest14', 13],\n    ['rest14', 14]]),\n  ('boundary control 4', ['WWWWWWOWWWWWWOW', 0], []),\n  ('boundary control 5', ['WWWWWWWO', 0], [['streak', 6]]), ('normal control 6', ['OOWWWWWOWOWWWW', 3], []),\n  ('normal control 7', ['WLWWWOWWOOWWLWWLLW', 6], [['streak', 0]]),\n  ('normal control 8', ['LWLLWWWOWOLOWOWWWW', 3], [])],\n [('regression: fortnight window count 1', ['WWOWLOWWLWWWWWWWWW', 3],\n   [['streak', 15], ['streak', 16], ['streak', 17], ['rest14', 3], ['rest14', 4]]),\n  ('regression variant: fortnight window count 2', ['WOWWLOWLWWWWWWWLWWLWOWLLWWWW', 1],\n   [['streak', 14], ['rest14', 2], ['rest14', 3], ['rest14', 4], ['rest14', 5], ['rest14', 6], ['rest14', 7],\n    ['rest14', 8], ['rest14', 9], ['rest14', 10], ['rest14', 11], ['rest14', 12], ['rest14', 13],\n    ['rest14', 14]]),\n  ('partial repair guard 3', ['WWLLWWWLOWWWWWLWOW', 5],\n   [['streak', 1], ['rest14', 0], ['rest14', 1], ['rest14', 2]]),\n  ('boundary control 4', ['WWWLWWWWWWWOWWWO', 0], [['streak', 10], ['rest14', 0], ['rest14', 1]]),\n  ('boundary control 5', ['WWWWWWOWWWWWWL', 0], [['rest14', 0]]),\n  ('normal control 6', ['WWWWLOOWWWWWWLWLWWLWW', 1], [['rest14', 6], ['rest14', 7]]),\n  ('normal control 7', ['WOWWLWWLWWLWWWWWWWLWWWWWWWWW', 1],\n   [['streak', 17], ['streak', 25], ['streak', 26], ['streak', 27], ['rest14', 0], ['rest14', 1],\n    ['rest14', 2], ['rest14', 3], ['rest14', 4], ['rest14', 5], ['rest14', 6], ['rest14', 7], ['rest14', 8],\n    ['rest14', 9], ['rest14', 10], ['rest14', 11], ['rest14', 12], ['rest14', 13], ['rest14', 14]]),\n  ('normal control 8', ['WWWWWWWWOOLLLLL', 3],\n   [['streak', 3], ['streak', 4], ['streak', 5], ['streak', 6], ['streak', 7]])],\n [('regression: fortnight window count 1', ['OWWWWWWWWWLWOWL', 6],\n   [['streak', 7], ['streak', 8], ['streak', 9], ['rest14', 1]]),\n  ('regression variant: fortnight window count 2', ['LWWWWWWWOWWWLL', 3], [['streak', 7], ['rest14', 0]]),\n  ('partial repair guard 3', ['WWWLWLWWWWWWWWWWWWWWW', 3],\n   [['streak', 12], ['streak', 13], ['streak', 14], ['streak', 15], ['streak', 16], ['streak', 17],\n    ['streak', 18], ['streak', 19], ['streak', 20], ['rest14', 0], ['rest14', 1], ['rest14', 2],\n    ['rest14', 3], ['rest14', 4], ['rest14', 5], ['rest14', 6], ['rest14', 7]]),\n  ('boundary control 4', ['WWOWWWWWW', 3], []), ('boundary control 5', ['WWWWWWO', 0], []),\n  ('normal control 6', ['WWWWWOWWWLWLOWLWWW', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3], ['streak', 4]]),\n  ('normal control 7', ['WOWWOWWWWW', 0], []), ('normal control 8', ['LOWWOWOLLOWOWWWOWOLWW', 6], [])],\n [('regression: fortnight window count 1', ['LLWWLLWWWWWWLL', 1], [['rest14', 0]]),\n  ('regression variant: fortnight window count 2', ['WWWOWWWWWWWWWWLOLW', 0],\n   [['streak', 10], ['streak', 11], ['streak', 12], ['streak', 13], ['rest14', 0], ['rest14', 1],\n    ['rest14', 4]]),\n  ('partial repair guard 3', ['WWWOOWWWLWWWWWWWWW', 1],\n   [['streak', 15], ['streak', 16], ['streak', 17], ['rest14', 4]]),\n  ('boundary control 4', ['OWWWWWWOWWWWWW', 0], []), ('boundary control 5', ['WWWWWWOWWWWWWOW', 0], []),\n  ('normal control 6', ['WWWWWLWWWWWLLWWWOWOWWWWWWWOW', 6],\n   [['streak', 0], ['streak', 1], ['streak', 2], ['streak', 3], ['streak', 4], ['streak', 25], ['rest14', 0],\n    ['rest14', 1], ['rest14', 2], ['rest14', 3], ['rest14', 4]]),\n  ('normal control 7', ['WWWWWWWWLWWWWWO', 3],\n   [['streak', 3], ['streak', 4], ['streak', 5], ['streak', 6], ['streak', 7], ['rest14', 0], ['rest14', 1]]),\n  ('normal control 8', ['WWWWOOWWOWOWWOLWWLWWW', 3], [['streak', 3]])],\n [('regression: fortnight window count 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: fortnight window count 2', ['WWWWLOOWWWWWWLWLWWLWW', 1],\n   [['rest14', 6], ['rest14', 7]]),\n  ('partial repair guard 3', ['OWOWWWWWWWWWOWWWWL', 0],\n   [['streak', 9], ['streak', 10], ['streak', 11], ['rest14', 3], ['rest14', 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', ['WOOWLOWWWWLOWLWWWWWWWOWWOLLW', 3], [['streak', 20], ['rest14', 6], ['rest14', 7]]),\n  ('normal control 7', ['LWLLLWWLWWWWOWOLWWWWO', 3], [['rest14', 0]]),\n  ('normal control 8', ['LWWWWOWWWWWWWWWWWW', 0],\n   [['streak', 12], ['streak', 13], ['streak', 14], ['streak', 15], ['streak', 16], ['streak', 17],\n    ['rest14', 0], ['rest14', 1], ['rest14', 2], ['rest14', 3], ['rest14', 4]])]]\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":"e1718eebe9cd74d1fc080ff846a2a99e6780f91380984d45a7b3317cd7fc0a41","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) - 14):\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: fortnight window count 1', ['WWWWWWOWWWWWWL', 0], [['rest14', 0]]),\n  ('regression variant: fortnight window count 2', ['WOLWWWOWWWWWWWWWWW', 0],\n   [['streak', 13], ['streak', 14], ['streak', 15], ['streak', 16], ['streak', 17], ['rest14', 2],\n    ['rest14', 3], ['rest14', 4]]),\n  ('partial repair guard 3', ['WWOWWLWWWLLOWWWWWWWWLLLWWWWW', 0],\n   [['streak', 18], ['streak', 19], ['rest14', 3], ['rest14', 4], ['rest14', 5], ['rest14', 6], ['rest14', 7],\n    ['rest14', 8], ['rest14', 9], ['rest14', 10], ['rest14', 11], ['rest14', 12], ['rest14', 13],\n    ['rest14', 14]]),\n  ('boundary control 4', ['WWWWWWOWWWWWWOW', 0], []),\n  ('boundary control 5', ['WWWWWWWO', 0], [['streak', 6]]), ('normal control 6', ['OOWWWWWOWOWWWW', 3], []),\n  ('normal control 7', ['WLWWWOWWOOWWLWWLLW', 6], [['streak', 0]]),\n  ('normal control 8', ['LWLLWWWOWOLOWOWWWW', 3], [])],\n [('regression: fortnight window count 1', ['WWOWLOWWLWWWWWWWWW', 3],\n   [['streak', 15], ['streak', 16], ['streak', 17], ['rest14', 3], ['rest14', 4]]),\n  ('regression variant: fortnight window count 2', ['WOWWLOWLWWWWWWWLWWLWOWLLWWWW', 1],\n   [['streak', 14], ['rest14', 2], ['rest14', 3], ['rest14', 4], ['rest14', 5], ['rest14', 6], ['rest14', 7],\n    ['rest14', 8], ['rest14', 9], ['rest14', 10], ['rest14', 11], ['rest14', 12], ['rest14', 13],\n    ['rest14', 14]]),\n  ('partial repair guard 3', ['WWLLWWWLOWWWWWLWOW', 5],\n   [['streak', 1], ['rest14', 0], ['rest14', 1], ['rest14', 2]]),\n  ('boundary control 4', ['WWWLWWWWWWWOWWWO', 0], [['streak', 10], ['rest14', 0], ['rest14', 1]]),\n  ('boundary control 5', ['WWWWWWOWWWWWWL', 0], [['rest14', 0]]),\n  ('normal control 6', ['WWWWLOOWWWWWWLWLWWLWW', 1], [['rest14', 6], ['rest14', 7]]),\n  ('normal control 7', ['WOWWLWWLWWLWWWWWWWLWWWWWWWWW', 1],\n   [['streak', 17], ['streak', 25], ['streak', 26], ['streak', 27], ['rest14', 0], ['rest14', 1],\n    ['rest14', 2], ['rest14', 3], ['rest14', 4], ['rest14', 5], ['rest14', 6], ['rest14', 7], ['rest14', 8],\n    ['rest14', 9], ['rest14', 10], ['rest14', 11], ['rest14', 12], ['rest14', 13], ['rest14', 14]]),\n  ('normal control 8', ['WWWWWWWWOOLLLLL', 3],\n   [['streak', 3], ['streak', 4], ['streak', 5], ['streak', 6], ['streak', 7]])],\n [('regression: fortnight window count 1', ['OWWWWWWWWWLWOWL', 6],\n   [['streak', 7], ['streak', 8], ['streak', 9], ['rest14', 1]]),\n  ('regression variant: fortnight window count 2', ['LWWWWWWWOWWWLL', 3], [['streak', 7], ['rest14', 0]]),\n  ('partial repair guard 3', ['WWWLWLWWWWWWWWWWWWWWW', 3],\n   [['streak', 12], ['streak', 13], ['streak', 14], ['streak', 15], ['streak', 16], ['streak', 17],\n    ['streak', 18], ['streak', 19], ['streak', 20], ['rest14', 0], ['rest14', 1], ['rest14', 2],\n    ['rest14', 3], ['rest14', 4], ['rest14', 5], ['rest14', 6], ['rest14', 7]]),\n  ('boundary control 4', ['WWOWWWWWW', 3], []), ('boundary control 5', ['WWWWWWO', 0], []),\n  ('normal control 6', ['WWWWWOWWWLWLOWLWWW', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3], ['streak', 4]]),\n  ('normal control 7', ['WOWWOWWWWW', 0], []), ('normal control 8', ['LOWWOWOLLOWOWWWOWOLWW', 6], [])],\n [('regression: fortnight window count 1', ['LLWWLLWWWWWWLL', 1], [['rest14', 0]]),\n  ('regression variant: fortnight window count 2', ['WWWOWWWWWWWWWWLOLW', 0],\n   [['streak', 10], ['streak', 11], ['streak', 12], ['streak', 13], ['rest14', 0], ['rest14', 1],\n    ['rest14', 4]]),\n  ('partial repair guard 3', ['WWWOOWWWLWWWWWWWWW', 1],\n   [['streak', 15], ['streak', 16], ['streak', 17], ['rest14', 4]]),\n  ('boundary control 4', ['OWWWWWWOWWWWWW', 0], []), ('boundary control 5', ['WWWWWWOWWWWWWOW', 0], []),\n  ('normal control 6', ['WWWWWLWWWWWLLWWWOWOWWWWWWWOW', 6],\n   [['streak', 0], ['streak', 1], ['streak', 2], ['streak', 3], ['streak', 4], ['streak', 25], ['rest14', 0],\n    ['rest14', 1], ['rest14', 2], ['rest14', 3], ['rest14', 4]]),\n  ('normal control 7', ['WWWWWWWWLWWWWWO', 3],\n   [['streak', 3], ['streak', 4], ['streak', 5], ['streak', 6], ['streak', 7], ['rest14', 0], ['rest14', 1]]),\n  ('normal control 8', ['WWWWOOWWOWOWWOLWWLWWW', 3], [['streak', 3]])],\n [('regression: fortnight window count 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: fortnight window count 2', ['WWWWLOOWWWWWWLWLWWLWW', 1],\n   [['rest14', 6], ['rest14', 7]]),\n  ('partial repair guard 3', ['OWOWWWWWWWWWOWWWWL', 0],\n   [['streak', 9], ['streak', 10], ['streak', 11], ['rest14', 3], ['rest14', 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', ['WOOWLOWWWWLOWLWWWWWWWOWWOLLW', 3], [['streak', 20], ['rest14', 6], ['rest14', 7]]),\n  ('normal control 7', ['LWLLLWWLWWWWOWOLWWWWO', 3], [['rest14', 0]]),\n  ('normal control 8', ['LWWWWOWWWWWWWWWWWW', 0],\n   [['streak', 12], ['streak', 13], ['streak', 14], ['streak', 15], ['streak', 16], ['streak', 17],\n    ['rest14', 0], ['rest14', 1], ['rest14', 2], ['rest14', 3], ['rest14', 4]])]]\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":"1af271f98769722baf3ed0374c4291bafb7d2180c741e97be03b6a8cbb3c54f6","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: fortnight window count 1', ['WWWWWWOWWWWWWL', 0], [['rest14', 0]]),\n  ('regression variant: fortnight window count 2', ['WOLWWWOWWWWWWWWWWW', 0],\n   [['streak', 13], ['streak', 14], ['streak', 15], ['streak', 16], ['streak', 17], ['rest14', 2],\n    ['rest14', 3], ['rest14', 4]]),\n  ('partial repair guard 3', ['WWOWWLWWWLLOWWWWWWWWLLLWWWWW', 0],\n   [['streak', 18], ['streak', 19], ['rest14', 3], ['rest14', 4], ['rest14', 5], ['rest14', 6], ['rest14', 7],\n    ['rest14', 8], ['rest14', 9], ['rest14', 10], ['rest14', 11], ['rest14', 12], ['rest14', 13],\n    ['rest14', 14]]),\n  ('boundary control 4', ['WWWWWWOWWWWWWOW', 0], []),\n  ('boundary control 5', ['WWWWWWWO', 0], [['streak', 6]]), ('normal control 6', ['OOWWWWWOWOWWWW', 3], []),\n  ('normal control 7', ['WLWWWOWWOOWWLWWLLW', 6], [['streak', 0]]),\n  ('normal control 8', ['LWLLWWWOWOLOWOWWWW', 3], [])],\n [('regression: fortnight window count 1', ['WWOWLOWWLWWWWWWWWW', 3],\n   [['streak', 15], ['streak', 16], ['streak', 17], ['rest14', 3], ['rest14', 4]]),\n  ('regression variant: fortnight window count 2', ['WOWWLOWLWWWWWWWLWWLWOWLLWWWW', 1],\n   [['streak', 14], ['rest14', 2], ['rest14', 3], ['rest14', 4], ['rest14', 5], ['rest14', 6], ['rest14', 7],\n    ['rest14', 8], ['rest14', 9], ['rest14', 10], ['rest14', 11], ['rest14', 12], ['rest14', 13],\n    ['rest14', 14]]),\n  ('partial repair guard 3', ['WWLLWWWLOWWWWWLWOW', 5],\n   [['streak', 1], ['rest14', 0], ['rest14', 1], ['rest14', 2]]),\n  ('boundary control 4', ['WWWLWWWWWWWOWWWO', 0], [['streak', 10], ['rest14', 0], ['rest14', 1]]),\n  ('boundary control 5', ['WWWWWWOWWWWWWL', 0], [['rest14', 0]]),\n  ('normal control 6', ['WWWWLOOWWWWWWLWLWWLWW', 1], [['rest14', 6], ['rest14', 7]]),\n  ('normal control 7', ['WOWWLWWLWWLWWWWWWWLWWWWWWWWW', 1],\n   [['streak', 17], ['streak', 25], ['streak', 26], ['streak', 27], ['rest14', 0], ['rest14', 1],\n    ['rest14', 2], ['rest14', 3], ['rest14', 4], ['rest14', 5], ['rest14', 6], ['rest14', 7], ['rest14', 8],\n    ['rest14', 9], ['rest14', 10], ['rest14', 11], ['rest14', 12], ['rest14', 13], ['rest14', 14]]),\n  ('normal control 8', ['WWWWWWWWOOLLLLL', 3],\n   [['streak', 3], ['streak', 4], ['streak', 5], ['streak', 6], ['streak', 7]])],\n [('regression: fortnight window count 1', ['OWWWWWWWWWLWOWL', 6],\n   [['streak', 7], ['streak', 8], ['streak', 9], ['rest14', 1]]),\n  ('regression variant: fortnight window count 2', ['LWWWWWWWOWWWLL', 3], [['streak', 7], ['rest14', 0]]),\n  ('partial repair guard 3', ['WWWLWLWWWWWWWWWWWWWWW', 3],\n   [['streak', 12], ['streak', 13], ['streak', 14], ['streak', 15], ['streak', 16], ['streak', 17],\n    ['streak', 18], ['streak', 19], ['streak', 20], ['rest14', 0], ['rest14', 1], ['rest14', 2],\n    ['rest14', 3], ['rest14', 4], ['rest14', 5], ['rest14', 6], ['rest14', 7]]),\n  ('boundary control 4', ['WWOWWWWWW', 3], []), ('boundary control 5', ['WWWWWWO', 0], []),\n  ('normal control 6', ['WWWWWOWWWLWLOWLWWW', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3], ['streak', 4]]),\n  ('normal control 7', ['WOWWOWWWWW', 0], []), ('normal control 8', ['LOWWOWOLLOWOWWWOWOLWW', 6], [])],\n [('regression: fortnight window count 1', ['LLWWLLWWWWWWLL', 1], [['rest14', 0]]),\n  ('regression variant: fortnight window count 2', ['WWWOWWWWWWWWWWLOLW', 0],\n   [['streak', 10], ['streak', 11], ['streak', 12], ['streak', 13], ['rest14', 0], ['rest14', 1],\n    ['rest14', 4]]),\n  ('partial repair guard 3', ['WWWOOWWWLWWWWWWWWW', 1],\n   [['streak', 15], ['streak', 16], ['streak', 17], ['rest14', 4]]),\n  ('boundary control 4', ['OWWWWWWOWWWWWW', 0], []), ('boundary control 5', ['WWWWWWOWWWWWWOW', 0], []),\n  ('normal control 6', ['WWWWWLWWWWWLLWWWOWOWWWWWWWOW', 6],\n   [['streak', 0], ['streak', 1], ['streak', 2], ['streak', 3], ['streak', 4], ['streak', 25], ['rest14', 0],\n    ['rest14', 1], ['rest14', 2], ['rest14', 3], ['rest14', 4]]),\n  ('normal control 7', ['WWWWWWWWLWWWWWO', 3],\n   [['streak', 3], ['streak', 4], ['streak', 5], ['streak', 6], ['streak', 7], ['rest14', 0], ['rest14', 1]]),\n  ('normal control 8', ['WWWWOOWWOWOWWOLWWLWWW', 3], [['streak', 3]])],\n [('regression: fortnight window count 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: fortnight window count 2', ['WWWWLOOWWWWWWLWLWWLWW', 1],\n   [['rest14', 6], ['rest14', 7]]),\n  ('partial repair guard 3', ['OWOWWWWWWWWWOWWWWL', 0],\n   [['streak', 9], ['streak', 10], ['streak', 11], ['rest14', 3], ['rest14', 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', ['WOOWLOWWWWLOWLWWWWWWWOWWOLLW', 3], [['streak', 20], ['rest14', 6], ['rest14', 7]]),\n  ('normal control 7', ['LWLLLWWLWWWWOWOLWWWWO', 3], [['rest14', 0]]),\n  ('normal control 8', ['LWWWWOWWWWWWWWWWWW', 0],\n   [['streak', 12], ['streak', 13], ['streak', 14], ['streak', 15], ['streak', 16], ['streak', 17],\n    ['rest14', 0], ['rest14', 1], ['rest14', 2], ['rest14', 3], ['rest14', 4]])]]\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-fortnight-window-count","generated_at":"2026-09-29T14:52:00.216981+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.","repair":"Check every window start from 0 through len(pattern) - 14.","root_cause":"The rolling window loop stops one start index early.","sha256":"9d1935e1ea1df51932b6a74f87c5a1bf300df157d6f63f3e4e97a6d30c288b56","title":"Final fourteen-day window never checked · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.721,"exit_code":1,"observations":[{"actual":[["rest14",0]],"check":"regression: fortnight window count 1","expected":[["rest14",0]],"passed":true},{"actual":[["streak",13],["streak",14],["streak",15],["streak",16],["streak",17]],"check":"regression variant: fortnight window count 2","expected":[["streak",13],["streak",14],["streak",15],["streak",16],["streak",17],["rest14",2],["rest14",3],["rest14",4]],"passed":false},{"actual":[["streak",18],["streak",19],["rest14",7],["rest14",14]],"check":"partial repair guard 3","expected":[["streak",18],["streak",19],["rest14",3],["rest14",4],["rest14",5],["rest14",6],["rest14",7],["rest14",8],["rest14",9],["rest14",10],["rest14",11],["rest14",12],["rest14",13],["rest14",14]],"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]],"passed":true},{"actual":[],"check":"normal control 8","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: fortnight window count 1\", \"actual\": [[\"rest14\", 0]], \"expected\": [[\"rest14\", 0]], \"passed\": true}, {\"check\": \"regression variant: fortnight window count 2\", \"actual\": [[\"streak\", 13], [\"streak\", 14], [\"streak\", 15], [\"streak\", 16], [\"streak\", 17]], \"expected\": [[\"streak\", 13], [\"streak\", 14], [\"streak\", 15], [\"streak\", 16], [\"streak\", 17], [\"rest14\", 2], [\"rest14\", 3], [\"rest14\", 4]], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [[\"streak\", 18], [\"streak\", 19], [\"rest14\", 7], [\"rest14\", 14]], \"expected\": [[\"streak\", 18], [\"streak\", 19], [\"rest14\", 3], [\"rest14\", 4], [\"rest14\", 5], [\"rest14\", 6], [\"rest14\", 7], [\"rest14\", 8], [\"rest14\", 9], [\"rest14\", 10], [\"rest14\", 11], [\"rest14\", 12], [\"rest14\", 13], [\"rest14\", 14]], \"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]], \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.429,"exit_code":1,"observations":[{"actual":[],"check":"regression: fortnight window count 1","expected":[["rest14",0]],"passed":false},{"actual":[["streak",13],["streak",14],["streak",15],["streak",16],["streak",17],["rest14",2],["rest14",3]],"check":"regression variant: fortnight window count 2","expected":[["streak",13],["streak",14],["streak",15],["streak",16],["streak",17],["rest14",2],["rest14",3],["rest14",4]],"passed":false},{"actual":[["streak",18],["streak",19],["rest14",3],["rest14",4],["rest14",5],["rest14",6],["rest14",7],["rest14",8],["rest14",9],["rest14",10],["rest14",11],["rest14",12],["rest14",13]],"check":"partial repair guard 3","expected":[["streak",18],["streak",19],["rest14",3],["rest14",4],["rest14",5],["rest14",6],["rest14",7],["rest14",8],["rest14",9],["rest14",10],["rest14",11],["rest14",12],["rest14",13],["rest14",14]],"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]],"passed":true},{"actual":[],"check":"normal control 8","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: fortnight window count 1\", \"actual\": [], \"expected\": [[\"rest14\", 0]], \"passed\": false}, {\"check\": \"regression variant: fortnight window count 2\", \"actual\": [[\"streak\", 13], [\"streak\", 14], [\"streak\", 15], [\"streak\", 16], [\"streak\", 17], [\"rest14\", 2], [\"rest14\", 3]], \"expected\": [[\"streak\", 13], [\"streak\", 14], [\"streak\", 15], [\"streak\", 16], [\"streak\", 17], [\"rest14\", 2], [\"rest14\", 3], [\"rest14\", 4]], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [[\"streak\", 18], [\"streak\", 19], [\"rest14\", 3], [\"rest14\", 4], [\"rest14\", 5], [\"rest14\", 6], [\"rest14\", 7], [\"rest14\", 8], [\"rest14\", 9], [\"rest14\", 10], [\"rest14\", 11], [\"rest14\", 12], [\"rest14\", 13]], \"expected\": [[\"streak\", 18], [\"streak\", 19], [\"rest14\", 3], [\"rest14\", 4], [\"rest14\", 5], [\"rest14\", 6], [\"rest14\", 7], [\"rest14\", 8], [\"rest14\", 9], [\"rest14\", 10], [\"rest14\", 11], [\"rest14\", 12], [\"rest14\", 13], [\"rest14\", 14]], \"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]], \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.846,"exit_code":0,"observations":[{"actual":[["rest14",0]],"check":"regression: fortnight window count 1","expected":[["rest14",0]],"passed":true},{"actual":[["streak",13],["streak",14],["streak",15],["streak",16],["streak",17],["rest14",2],["rest14",3],["rest14",4]],"check":"regression variant: fortnight window count 2","expected":[["streak",13],["streak",14],["streak",15],["streak",16],["streak",17],["rest14",2],["rest14",3],["rest14",4]],"passed":true},{"actual":[["streak",18],["streak",19],["rest14",3],["rest14",4],["rest14",5],["rest14",6],["rest14",7],["rest14",8],["rest14",9],["rest14",10],["rest14",11],["rest14",12],["rest14",13],["rest14",14]],"check":"partial repair guard 3","expected":[["streak",18],["streak",19],["rest14",3],["rest14",4],["rest14",5],["rest14",6],["rest14",7],["rest14",8],["rest14",9],["rest14",10],["rest14",11],["rest14",12],["rest14",13],["rest14",14]],"passed":true},{"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]],"passed":true},{"actual":[],"check":"normal control 8","expected":[],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: fortnight window count 1\", \"actual\": [[\"rest14\", 0]], \"expected\": [[\"rest14\", 0]], \"passed\": true}, {\"check\": \"regression variant: fortnight window count 2\", \"actual\": [[\"streak\", 13], [\"streak\", 14], [\"streak\", 15], [\"streak\", 16], [\"streak\", 17], [\"rest14\", 2], [\"rest14\", 3], [\"rest14\", 4]], \"expected\": [[\"streak\", 13], [\"streak\", 14], [\"streak\", 15], [\"streak\", 16], [\"streak\", 17], [\"rest14\", 2], [\"rest14\", 3], [\"rest14\", 4]], \"passed\": true}, {\"check\": \"partial repair guard 3\", \"actual\": [[\"streak\", 18], [\"streak\", 19], [\"rest14\", 3], [\"rest14\", 4], [\"rest14\", 5], [\"rest14\", 6], [\"rest14\", 7], [\"rest14\", 8], [\"rest14\", 9], [\"rest14\", 10], [\"rest14\", 11], [\"rest14\", 12], [\"rest14\", 13], [\"rest14\", 14]], \"expected\": [[\"streak\", 18], [\"streak\", 19], [\"rest14\", 3], [\"rest14\", 4], [\"rest14\", 5], [\"rest14\", 6], [\"rest14\", 7], [\"rest14\", 8], [\"rest14\", 9], [\"rest14\", 10], [\"rest14\", 11], [\"rest14\", 12], [\"rest14\", 13], [\"rest14\", 14]], \"passed\": true}, {\"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]], \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}