{"abstract":"Legal six-day runs are flagged.","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":"Raising the limit to seven hides genuine seventh-day violations.","family":"w2-shift-rostering-labor-rules-consecutive-days-and-fortnight-rest-streak-limit-boundary","id":"FA-93991","implementations":{"attempt":{"sha256":"cd68790d27dcffffa0c94095d825a9fa6947a662b35498589b70cacec3f569be","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 > 7:\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 limit boundary 1', ['WWWWWWO', 0], []),\n  ('regression variant: streak limit boundary 2', ['OWWWWWWWWWLWOWL', 6],\n   [['streak', 7], ['streak', 8], ['streak', 9], ['rest14', 1]]),\n  ('partial repair guard 3', ['WOLWWOWLWWOOWLWWOOLOWWWWWWWW', 0], [['streak', 26], ['streak', 27]]),\n  ('boundary control 4', ['WWWWWWOWWWWWWOW', 0], []),\n  ('boundary control 5', ['WWWWWWWO', 0], [['streak', 6]]),\n  ('normal control 6', ['WWWWLWWLLLWLWOWOWW', 3], [['streak', 3], ['rest14', 0], ['rest14', 1]]),\n  ('normal control 7', ['WWWWWWOOOOOOWLWWWL', 0], []),\n  ('normal control 8', ['WWWWWWWOWWWWLWOWOWWWW', 3],\n   [['streak', 3], ['streak', 4], ['streak', 5], ['streak', 6], ['rest14', 0]])],\n [('regression: streak limit boundary 1', ['WWWWWWWO', 0], [['streak', 6]]),\n  ('regression variant: streak limit boundary 2', ['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  ('partial repair guard 3', ['WWWWWWWLWLWWWO', 1], [['streak', 5], ['streak', 6], ['rest14', 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', ['OWOOWWWOWWWLLWWWWLOWWOOWWWLW', 0], [['rest14', 4]]),\n  ('normal control 7', ['WLOLOOWLWWWWWW', 3], []), ('normal control 8', ['WOOOWLLWOWWWWO', 1], [])],\n [('regression: streak limit boundary 1', ['WWOWWWWWW', 3], []),\n  ('regression variant: streak limit boundary 2', ['WWWWLWWOLW', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3]]),\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', ['WWWWWWO', 0], []),\n  ('normal control 5', ['WWOWWWWLWWWLWWW', 1], [['rest14', 0], ['rest14', 1]]),\n  ('normal control 6', ['WWWLWWWWWWWWWWWWLWWWW', 6],\n   [['streak', 0], ['streak', 1], ['streak', 2], ['streak', 10], ['streak', 11], ['streak', 12],\n    ['streak', 13], ['streak', 14], ['streak', 15], ['rest14', 0], ['rest14', 1], ['rest14', 2],\n    ['rest14', 3], ['rest14', 4], ['rest14', 5], ['rest14', 6], ['rest14', 7]]),\n  ('normal control 7', ['WWWWLWOOWWOWWWL', 0], []), ('normal control 8', ['WWWLWWOWOWOWLWW', 0], [])],\n [('regression: streak limit boundary 1', ['WWWWWWOWWWWWWOW', 0], []),\n  ('regression variant: streak limit boundary 2', ['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  ('partial repair guard 3', ['WWWOWWWWWWLWLLWOWWWWWLWWWWWL', 6],\n   [['streak', 0], ['streak', 1], ['streak', 2], ['rest14', 0], ['rest14', 1], ['rest14', 4], ['rest14', 5],\n    ['rest14', 6], ['rest14', 7], ['rest14', 8], ['rest14', 9], ['rest14', 10], ['rest14', 11],\n    ['rest14', 12], ['rest14', 13], ['rest14', 14]]),\n  ('boundary control 4', ['OWWWWWWOWWWWWW', 0], []),\n  ('normal control 5', ['WWWOWWWWWWWWWWLOLW', 0],\n   [['streak', 10], ['streak', 11], ['streak', 12], ['streak', 13], ['rest14', 0], ['rest14', 1],\n    ['rest14', 4]]),\n  ('normal control 6', ['WWOWOWOWLWWOWW', 0], []), ('normal control 7', ['OWOLWWWWLLWOLL', 6], []),\n  ('normal control 8', ['OWWWLWWLWWWLWWOWWOWWL', 0],\n   [['rest14', 0], ['rest14', 1], ['rest14', 2], ['rest14', 3]])],\n [('regression: streak limit boundary 1', ['WWWWWWOWWWWWWL', 0], [['rest14', 0]]),\n  ('regression variant: streak limit boundary 2', ['WOWWWWWWLOWLWWW', 6], [['streak', 0]]),\n  ('partial repair guard 3', ['WWWWWWWWWWWWLOWWWOWWW', 6],\n   [['streak', 0], ['streak', 1], ['streak', 2], ['streak', 3], ['streak', 4], ['streak', 5], ['streak', 6],\n    ['streak', 7], ['streak', 8], ['streak', 9], ['streak', 10], ['streak', 11], ['rest14', 0], ['rest14', 1],\n    ['rest14', 2], ['rest14', 3]]),\n  ('boundary control 4', ['WWWWWWWO', 0], [['streak', 6]]),\n  ('boundary control 5', ['WWWLWWWWWWWOWWWO', 0], [['streak', 10], ['rest14', 0], ['rest14', 1]]),\n  ('normal control 6', ['WWOWOWWWWWWWLLOWOO', 6], [['streak', 0], ['streak', 1], ['streak', 11]]),\n  ('normal control 7', ['OWWWWWWWWWLWOWL', 6], [['streak', 7], ['streak', 8], ['streak', 9], ['rest14', 1]]),\n  ('normal control 8', ['OWWWWOOWWWWOWWWWOWWWO', 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":"08d106a13a220e47a7f65f7b2d899e40b4e8c4679e0232d123428502a965d211","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: streak limit boundary 1', ['WWWWWWO', 0], []),\n  ('regression variant: streak limit boundary 2', ['OWWWWWWWWWLWOWL', 6],\n   [['streak', 7], ['streak', 8], ['streak', 9], ['rest14', 1]]),\n  ('partial repair guard 3', ['WOLWWOWLWWOOWLWWOOLOWWWWWWWW', 0], [['streak', 26], ['streak', 27]]),\n  ('boundary control 4', ['WWWWWWOWWWWWWOW', 0], []),\n  ('boundary control 5', ['WWWWWWWO', 0], [['streak', 6]]),\n  ('normal control 6', ['WWWWLWWLLLWLWOWOWW', 3], [['streak', 3], ['rest14', 0], ['rest14', 1]]),\n  ('normal control 7', ['WWWWWWOOOOOOWLWWWL', 0], []),\n  ('normal control 8', ['WWWWWWWOWWWWLWOWOWWWW', 3],\n   [['streak', 3], ['streak', 4], ['streak', 5], ['streak', 6], ['rest14', 0]])],\n [('regression: streak limit boundary 1', ['WWWWWWWO', 0], [['streak', 6]]),\n  ('regression variant: streak limit boundary 2', ['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  ('partial repair guard 3', ['WWWWWWWLWLWWWO', 1], [['streak', 5], ['streak', 6], ['rest14', 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', ['OWOOWWWOWWWLLWWWWLOWWOOWWWLW', 0], [['rest14', 4]]),\n  ('normal control 7', ['WLOLOOWLWWWWWW', 3], []), ('normal control 8', ['WOOOWLLWOWWWWO', 1], [])],\n [('regression: streak limit boundary 1', ['WWOWWWWWW', 3], []),\n  ('regression variant: streak limit boundary 2', ['WWWWLWWOLW', 5],\n   [['streak', 1], ['streak', 2], ['streak', 3]]),\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', ['WWWWWWO', 0], []),\n  ('normal control 5', ['WWOWWWWLWWWLWWW', 1], [['rest14', 0], ['rest14', 1]]),\n  ('normal control 6', ['WWWLWWWWWWWWWWWWLWWWW', 6],\n   [['streak', 0], ['streak', 1], ['streak', 2], ['streak', 10], ['streak', 11], ['streak', 12],\n    ['streak', 13], ['streak', 14], ['streak', 15], ['rest14', 0], ['rest14', 1], ['rest14', 2],\n    ['rest14', 3], ['rest14', 4], ['rest14', 5], ['rest14', 6], ['rest14', 7]]),\n  ('normal control 7', ['WWWWLWOOWWOWWWL', 0], []), ('normal control 8', ['WWWLWWOWOWOWLWW', 0], [])],\n [('regression: streak limit boundary 1', ['WWWWWWOWWWWWWOW', 0], []),\n  ('regression variant: streak limit boundary 2', ['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  ('partial repair guard 3', ['WWWOWWWWWWLWLLWOWWWWWLWWWWWL', 6],\n   [['streak', 0], ['streak', 1], ['streak', 2], ['rest14', 0], ['rest14', 1], ['rest14', 4], ['rest14', 5],\n    ['rest14', 6], ['rest14', 7], ['rest14', 8], ['rest14', 9], ['rest14', 10], ['rest14', 11],\n    ['rest14', 12], ['rest14', 13], ['rest14', 14]]),\n  ('boundary control 4', ['OWWWWWWOWWWWWW', 0], []),\n  ('normal control 5', ['WWWOWWWWWWWWWWLOLW', 0],\n   [['streak', 10], ['streak', 11], ['streak', 12], ['streak', 13], ['rest14', 0], ['rest14', 1],\n    ['rest14', 4]]),\n  ('normal control 6', ['WWOWOWOWLWWOWW', 0], []), ('normal control 7', ['OWOLWWWWLLWOLL', 6], []),\n  ('normal control 8', ['OWWWLWWLWWWLWWOWWOWWL', 0],\n   [['rest14', 0], ['rest14', 1], ['rest14', 2], ['rest14', 3]])],\n [('regression: streak limit boundary 1', ['WWWWWWOWWWWWWL', 0], [['rest14', 0]]),\n  ('regression variant: streak limit boundary 2', ['WOWWWWWWLOWLWWW', 6], [['streak', 0]]),\n  ('partial repair guard 3', ['WWWWWWWWWWWWLOWWWOWWW', 6],\n   [['streak', 0], ['streak', 1], ['streak', 2], ['streak', 3], ['streak', 4], ['streak', 5], ['streak', 6],\n    ['streak', 7], ['streak', 8], ['streak', 9], ['streak', 10], ['streak', 11], ['rest14', 0], ['rest14', 1],\n    ['rest14', 2], ['rest14', 3]]),\n  ('boundary control 4', ['WWWWWWWO', 0], [['streak', 6]]),\n  ('boundary control 5', ['WWWLWWWWWWWOWWWO', 0], [['streak', 10], ['rest14', 0], ['rest14', 1]]),\n  ('normal control 6', ['WWOWOWWWWWWWLLOWOO', 6], [['streak', 0], ['streak', 1], ['streak', 11]]),\n  ('normal control 7', ['OWWWWWWWWWLWOWL', 6], [['streak', 7], ['streak', 8], ['streak', 9], ['rest14', 1]]),\n  ('normal control 8', ['OWWWWOOWWWWOWWWWOWWWO', 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-streak-limit-boundary","generated_at":"2026-09-29T14:52:00.171387+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 limit comparison is inclusive at six.","sha256":"4cd9b46da48ffba617e82c3270a0a761c150b7a241ae0237ddef835c374b7ae4","title":"Sixth consecutive day reported as a streak violation · 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.882,"exit_code":1,"observations":[{"actual":[],"check":"regression: streak limit boundary 1","expected":[],"passed":true},{"actual":[["streak",8],["streak",9],["rest14",1]],"check":"regression variant: streak limit boundary 2","expected":[["streak",7],["streak",8],["streak",9],["rest14",1]],"passed":false},{"actual":[["streak",27]],"check":"partial repair guard 3","expected":[["streak",26],["streak",27]],"passed":false},{"actual":[],"check":"boundary control 4","expected":[],"passed":true},{"actual":[],"check":"boundary control 5","expected":[["streak",6]],"passed":false},{"actual":[["rest14",0],["rest14",1]],"check":"normal control 6","expected":[["streak",3],["rest14",0],["rest14",1]],"passed":false},{"actual":[],"check":"normal control 7","expected":[],"passed":true},{"actual":[["streak",4],["streak",5],["streak",6],["rest14",0]],"check":"normal control 8","expected":[["streak",3],["streak",4],["streak",5],["streak",6],["rest14",0]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: streak limit boundary 1\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"regression variant: streak limit boundary 2\", \"actual\": [[\"streak\", 8], [\"streak\", 9], [\"rest14\", 1]], \"expected\": [[\"streak\", 7], [\"streak\", 8], [\"streak\", 9], [\"rest14\", 1]], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [[\"streak\", 27]], \"expected\": [[\"streak\", 26], [\"streak\", 27]], \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"boundary control 5\", \"actual\": [], \"expected\": [[\"streak\", 6]], \"passed\": false}, {\"check\": \"normal control 6\", \"actual\": [[\"rest14\", 0], [\"rest14\", 1]], \"expected\": [[\"streak\", 3], [\"rest14\", 0], [\"rest14\", 1]], \"passed\": false}, {\"check\": \"normal control 7\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": [[\"streak\", 4], [\"streak\", 5], [\"streak\", 6], [\"rest14\", 0]], \"expected\": [[\"streak\", 3], [\"streak\", 4], [\"streak\", 5], [\"streak\", 6], [\"rest14\", 0]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.712,"exit_code":1,"observations":[{"actual":[["streak",5]],"check":"regression: streak limit boundary 1","expected":[],"passed":false},{"actual":[["streak",6],["streak",7],["streak",8],["streak",9],["rest14",1]],"check":"regression variant: streak limit boundary 2","expected":[["streak",7],["streak",8],["streak",9],["rest14",1]],"passed":false},{"actual":[["streak",25],["streak",26],["streak",27]],"check":"partial repair guard 3","expected":[["streak",26],["streak",27]],"passed":false},{"actual":[["streak",5],["streak",12]],"check":"boundary control 4","expected":[],"passed":false},{"actual":[["streak",5],["streak",6]],"check":"boundary control 5","expected":[["streak",6]],"passed":false},{"actual":[["streak",2],["streak",3],["rest14",0],["rest14",1]],"check":"normal control 6","expected":[["streak",3],["rest14",0],["rest14",1]],"passed":false},{"actual":[["streak",5]],"check":"normal control 7","expected":[],"passed":false},{"actual":[["streak",2],["streak",3],["streak",4],["streak",5],["streak",6],["rest14",0]],"check":"normal control 8","expected":[["streak",3],["streak",4],["streak",5],["streak",6],["rest14",0]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: streak limit boundary 1\", \"actual\": [[\"streak\", 5]], \"expected\": [], \"passed\": false}, {\"check\": \"regression variant: streak limit boundary 2\", \"actual\": [[\"streak\", 6], [\"streak\", 7], [\"streak\", 8], [\"streak\", 9], [\"rest14\", 1]], \"expected\": [[\"streak\", 7], [\"streak\", 8], [\"streak\", 9], [\"rest14\", 1]], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [[\"streak\", 25], [\"streak\", 26], [\"streak\", 27]], \"expected\": [[\"streak\", 26], [\"streak\", 27]], \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": [[\"streak\", 5], [\"streak\", 12]], \"expected\": [], \"passed\": false}, {\"check\": \"boundary control 5\", \"actual\": [[\"streak\", 5], [\"streak\", 6]], \"expected\": [[\"streak\", 6]], \"passed\": false}, {\"check\": \"normal control 6\", \"actual\": [[\"streak\", 2], [\"streak\", 3], [\"rest14\", 0], [\"rest14\", 1]], \"expected\": [[\"streak\", 3], [\"rest14\", 0], [\"rest14\", 1]], \"passed\": false}, {\"check\": \"normal control 7\", \"actual\": [[\"streak\", 5]], \"expected\": [], \"passed\": false}, {\"check\": \"normal control 8\", \"actual\": [[\"streak\", 2], [\"streak\", 3], [\"streak\", 4], [\"streak\", 5], [\"streak\", 6], [\"rest14\", 0]], \"expected\": [[\"streak\", 3], [\"streak\", 4], [\"streak\", 5], [\"streak\", 6], [\"rest14\", 0]], \"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."}}