{"abstract":"The clock loses a day for every pause because the resume day is not counted.","category":"Legal deadline computation","checks":7,"contract":"Stipulated: a review has days_allowed clock days, counted from the day after start. A pause [stop, resume] stops the clock on the stop day and every day before the resume day; the resume day counts. A pause with resume None is open-ended and starts on its stop day; if the clock would reach a day on or after the earliest open-ended stop before expiring, the result is None. Return the date of the last clock day.","evaluation_group":"w2-legal-deadline-computation-regulatory-stop-clock","failed_approach":"The partial repair `(b - a).days - 1` counts the stop day itself as a clock day.","family":"w2-legal-deadline-computation-regulatory-stop-clock-pause-length","id":"FA-77576","implementations":{"attempt":{"sha256":"5d18d04fe8c8bd3af6d53e1e657f5f6140b25f16db37150d9df00d4e6f8bb9b8","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime as dt\nimport calendar\nN = 1\nobservations = []\ndef solve(start, days_allowed, pauses):\n    st = dt.date.fromisoformat(start)\n    paused = set()\n    open_ended = None\n    for a, b in pauses:\n        a = dt.date.fromisoformat(a)\n        if b is None:\n            open_ended = a if open_ended is None else min(open_ended, a)\n            continue\n        b = dt.date.fromisoformat(b)\n        for i in range((b - a).days - 1):\n            paused.add(a + dt.timedelta(days=i))\n    d = st\n    counted = 0\n    while counted < days_allowed:\n        d += dt.timedelta(days=1)\n        if open_ended is not None and d >= open_ended:\n            return None\n        if d in paused:\n            continue\n        counted += 1\n    return d.isoformat()\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: pause resume day counts', ['2024-01-01', 10, [['2024-01-04', '2024-01-08']]], '2024-01-15'),\n  ('no pauses', ['2024-01-01', 30, []], '2024-01-31'),\n  ('two open-ended stops', ['2024-01-01', 30, [['2024-01-20', None], ['2024-01-10', None]]], None),\n  ('earlier open-ended listed first', ['2024-01-01', 12, [['2024-01-10', None], ['2024-01-20', None]]], None),\n  ('open-ended after expiry', ['2024-01-01', 10, [['2024-01-20', None]]], '2024-01-11'),\n  ('open-ended on last day', ['2024-01-01', 10, [['2024-01-11', None]]], None),\n  ('open-ended the day after', ['2024-01-01', 10, [['2024-01-12', None]]], '2024-01-11')],\n [('two open-ended stops', ['2024-01-01', 30, [['2024-01-20', None], ['2024-01-10', None]]], None),\n  ('earlier open-ended listed first', ['2024-01-01', 12, [['2024-01-10', None], ['2024-01-20', None]]], None),\n  ('open-ended after expiry', ['2024-01-01', 10, [['2024-01-20', None]]], '2024-01-11'),\n  ('open-ended on last day', ['2024-01-01', 10, [['2024-01-11', None]]], None),\n  ('open-ended the day after', ['2024-01-01', 10, [['2024-01-12', None]]], '2024-01-11'),\n  ('overlapping pauses',\n   ['2024-02-01', 15, [['2024-02-05', '2024-02-10'], ['2024-02-08', '2024-02-12']]],\n   '2024-02-23'),\n  ('pause before start', ['2024-03-10', 5, [['2024-03-01', '2024-03-05']]], '2024-03-15')],\n [('open-ended after expiry', ['2024-01-01', 10, [['2024-01-20', None]]], '2024-01-11'),\n  ('open-ended on last day', ['2024-01-01', 10, [['2024-01-11', None]]], None),\n  ('open-ended the day after', ['2024-01-01', 10, [['2024-01-12', None]]], '2024-01-11'),\n  ('overlapping pauses',\n   ['2024-02-01', 15, [['2024-02-05', '2024-02-10'], ['2024-02-08', '2024-02-12']]],\n   '2024-02-23'),\n  ('pause before start', ['2024-03-10', 5, [['2024-03-01', '2024-03-05']]], '2024-03-15'),\n  ('weekday start', ['2024-04-02', 7, []], '2024-04-09'),\n  ('saturday start', ['2024-04-06', 7, [['2024-04-08', '2024-04-09']]], '2024-04-14')],\n [('open-ended the day after', ['2024-01-01', 10, [['2024-01-12', None]]], '2024-01-11'),\n  ('overlapping pauses',\n   ['2024-02-01', 15, [['2024-02-05', '2024-02-10'], ['2024-02-08', '2024-02-12']]],\n   '2024-02-23'),\n  ('pause before start', ['2024-03-10', 5, [['2024-03-01', '2024-03-05']]], '2024-03-15'),\n  ('weekday start', ['2024-04-02', 7, []], '2024-04-09'),\n  ('saturday start', ['2024-04-06', 7, [['2024-04-08', '2024-04-09']]], '2024-04-14'),\n  ('pause then open-ended', ['2024-05-01', 20, [['2024-05-05', '2024-05-15'], ['2024-05-25', None]]], None),\n  ('open-ended pushed by pause',\n   ['2024-06-01', 10, [['2024-06-03', '2024-06-06'], ['2024-06-14', None]]],\n   None)],\n [('pause before start', ['2024-03-10', 5, [['2024-03-01', '2024-03-05']]], '2024-03-15'),\n  ('weekday start', ['2024-04-02', 7, []], '2024-04-09'),\n  ('saturday start', ['2024-04-06', 7, [['2024-04-08', '2024-04-09']]], '2024-04-14'),\n  ('pause then open-ended', ['2024-05-01', 20, [['2024-05-05', '2024-05-15'], ['2024-05-25', None]]], None),\n  ('open-ended pushed by pause',\n   ['2024-06-01', 10, [['2024-06-03', '2024-06-06'], ['2024-06-14', None]]],\n   None),\n  ('regression: pause resume day counts', ['2024-01-01', 10, [['2024-01-04', '2024-01-08']]], '2024-01-15'),\n  ('no pauses', ['2024-01-01', 30, []], '2024-01-31')]]\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":"1a87033fba745888acf680cb8ecbaf6f67f372941f2f31cc756f2902cabd61bb","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime as dt\nimport calendar\nN = 1\nobservations = []\ndef solve(start, days_allowed, pauses):\n    st = dt.date.fromisoformat(start)\n    paused = set()\n    open_ended = None\n    for a, b in pauses:\n        a = dt.date.fromisoformat(a)\n        if b is None:\n            open_ended = a if open_ended is None else min(open_ended, a)\n            continue\n        b = dt.date.fromisoformat(b)\n        for i in range((b - a).days + 1):\n            paused.add(a + dt.timedelta(days=i))\n    d = st\n    counted = 0\n    while counted < days_allowed:\n        d += dt.timedelta(days=1)\n        if open_ended is not None and d >= open_ended:\n            return None\n        if d in paused:\n            continue\n        counted += 1\n    return d.isoformat()\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: pause resume day counts', ['2024-01-01', 10, [['2024-01-04', '2024-01-08']]], '2024-01-15'),\n  ('no pauses', ['2024-01-01', 30, []], '2024-01-31'),\n  ('two open-ended stops', ['2024-01-01', 30, [['2024-01-20', None], ['2024-01-10', None]]], None),\n  ('earlier open-ended listed first', ['2024-01-01', 12, [['2024-01-10', None], ['2024-01-20', None]]], None),\n  ('open-ended after expiry', ['2024-01-01', 10, [['2024-01-20', None]]], '2024-01-11'),\n  ('open-ended on last day', ['2024-01-01', 10, [['2024-01-11', None]]], None),\n  ('open-ended the day after', ['2024-01-01', 10, [['2024-01-12', None]]], '2024-01-11')],\n [('two open-ended stops', ['2024-01-01', 30, [['2024-01-20', None], ['2024-01-10', None]]], None),\n  ('earlier open-ended listed first', ['2024-01-01', 12, [['2024-01-10', None], ['2024-01-20', None]]], None),\n  ('open-ended after expiry', ['2024-01-01', 10, [['2024-01-20', None]]], '2024-01-11'),\n  ('open-ended on last day', ['2024-01-01', 10, [['2024-01-11', None]]], None),\n  ('open-ended the day after', ['2024-01-01', 10, [['2024-01-12', None]]], '2024-01-11'),\n  ('overlapping pauses',\n   ['2024-02-01', 15, [['2024-02-05', '2024-02-10'], ['2024-02-08', '2024-02-12']]],\n   '2024-02-23'),\n  ('pause before start', ['2024-03-10', 5, [['2024-03-01', '2024-03-05']]], '2024-03-15')],\n [('open-ended after expiry', ['2024-01-01', 10, [['2024-01-20', None]]], '2024-01-11'),\n  ('open-ended on last day', ['2024-01-01', 10, [['2024-01-11', None]]], None),\n  ('open-ended the day after', ['2024-01-01', 10, [['2024-01-12', None]]], '2024-01-11'),\n  ('overlapping pauses',\n   ['2024-02-01', 15, [['2024-02-05', '2024-02-10'], ['2024-02-08', '2024-02-12']]],\n   '2024-02-23'),\n  ('pause before start', ['2024-03-10', 5, [['2024-03-01', '2024-03-05']]], '2024-03-15'),\n  ('weekday start', ['2024-04-02', 7, []], '2024-04-09'),\n  ('saturday start', ['2024-04-06', 7, [['2024-04-08', '2024-04-09']]], '2024-04-14')],\n [('open-ended the day after', ['2024-01-01', 10, [['2024-01-12', None]]], '2024-01-11'),\n  ('overlapping pauses',\n   ['2024-02-01', 15, [['2024-02-05', '2024-02-10'], ['2024-02-08', '2024-02-12']]],\n   '2024-02-23'),\n  ('pause before start', ['2024-03-10', 5, [['2024-03-01', '2024-03-05']]], '2024-03-15'),\n  ('weekday start', ['2024-04-02', 7, []], '2024-04-09'),\n  ('saturday start', ['2024-04-06', 7, [['2024-04-08', '2024-04-09']]], '2024-04-14'),\n  ('pause then open-ended', ['2024-05-01', 20, [['2024-05-05', '2024-05-15'], ['2024-05-25', None]]], None),\n  ('open-ended pushed by pause',\n   ['2024-06-01', 10, [['2024-06-03', '2024-06-06'], ['2024-06-14', None]]],\n   None)],\n [('pause before start', ['2024-03-10', 5, [['2024-03-01', '2024-03-05']]], '2024-03-15'),\n  ('weekday start', ['2024-04-02', 7, []], '2024-04-09'),\n  ('saturday start', ['2024-04-06', 7, [['2024-04-08', '2024-04-09']]], '2024-04-14'),\n  ('pause then open-ended', ['2024-05-01', 20, [['2024-05-05', '2024-05-15'], ['2024-05-25', None]]], None),\n  ('open-ended pushed by pause',\n   ['2024-06-01', 10, [['2024-06-03', '2024-06-06'], ['2024-06-14', None]]],\n   None),\n  ('regression: pause resume day counts', ['2024-01-01', 10, [['2024-01-04', '2024-01-08']]], '2024-01-15'),\n  ('no pauses', ['2024-01-01', 30, []], '2024-01-31')]]\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":"1883e514e522c711910e6d8dd8ec4d2fea0c80f39e1b89429d7116c337ef878c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime as dt\nimport calendar\nN = 1\nobservations = []\ndef solve(start, days_allowed, pauses):\n    st = dt.date.fromisoformat(start)\n    paused = set()\n    open_ended = None\n    for a, b in pauses:\n        a = dt.date.fromisoformat(a)\n        if b is None:\n            open_ended = a if open_ended is None else min(open_ended, a)\n            continue\n        b = dt.date.fromisoformat(b)\n        for i in range((b - a).days):\n            paused.add(a + dt.timedelta(days=i))\n    d = st\n    counted = 0\n    while counted < days_allowed:\n        d += dt.timedelta(days=1)\n        if open_ended is not None and d >= open_ended:\n            return None\n        if d in paused:\n            continue\n        counted += 1\n    return d.isoformat()\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: pause resume day counts', ['2024-01-01', 10, [['2024-01-04', '2024-01-08']]], '2024-01-15'),\n  ('no pauses', ['2024-01-01', 30, []], '2024-01-31'),\n  ('two open-ended stops', ['2024-01-01', 30, [['2024-01-20', None], ['2024-01-10', None]]], None),\n  ('earlier open-ended listed first', ['2024-01-01', 12, [['2024-01-10', None], ['2024-01-20', None]]], None),\n  ('open-ended after expiry', ['2024-01-01', 10, [['2024-01-20', None]]], '2024-01-11'),\n  ('open-ended on last day', ['2024-01-01', 10, [['2024-01-11', None]]], None),\n  ('open-ended the day after', ['2024-01-01', 10, [['2024-01-12', None]]], '2024-01-11')],\n [('two open-ended stops', ['2024-01-01', 30, [['2024-01-20', None], ['2024-01-10', None]]], None),\n  ('earlier open-ended listed first', ['2024-01-01', 12, [['2024-01-10', None], ['2024-01-20', None]]], None),\n  ('open-ended after expiry', ['2024-01-01', 10, [['2024-01-20', None]]], '2024-01-11'),\n  ('open-ended on last day', ['2024-01-01', 10, [['2024-01-11', None]]], None),\n  ('open-ended the day after', ['2024-01-01', 10, [['2024-01-12', None]]], '2024-01-11'),\n  ('overlapping pauses',\n   ['2024-02-01', 15, [['2024-02-05', '2024-02-10'], ['2024-02-08', '2024-02-12']]],\n   '2024-02-23'),\n  ('pause before start', ['2024-03-10', 5, [['2024-03-01', '2024-03-05']]], '2024-03-15')],\n [('open-ended after expiry', ['2024-01-01', 10, [['2024-01-20', None]]], '2024-01-11'),\n  ('open-ended on last day', ['2024-01-01', 10, [['2024-01-11', None]]], None),\n  ('open-ended the day after', ['2024-01-01', 10, [['2024-01-12', None]]], '2024-01-11'),\n  ('overlapping pauses',\n   ['2024-02-01', 15, [['2024-02-05', '2024-02-10'], ['2024-02-08', '2024-02-12']]],\n   '2024-02-23'),\n  ('pause before start', ['2024-03-10', 5, [['2024-03-01', '2024-03-05']]], '2024-03-15'),\n  ('weekday start', ['2024-04-02', 7, []], '2024-04-09'),\n  ('saturday start', ['2024-04-06', 7, [['2024-04-08', '2024-04-09']]], '2024-04-14')],\n [('open-ended the day after', ['2024-01-01', 10, [['2024-01-12', None]]], '2024-01-11'),\n  ('overlapping pauses',\n   ['2024-02-01', 15, [['2024-02-05', '2024-02-10'], ['2024-02-08', '2024-02-12']]],\n   '2024-02-23'),\n  ('pause before start', ['2024-03-10', 5, [['2024-03-01', '2024-03-05']]], '2024-03-15'),\n  ('weekday start', ['2024-04-02', 7, []], '2024-04-09'),\n  ('saturday start', ['2024-04-06', 7, [['2024-04-08', '2024-04-09']]], '2024-04-14'),\n  ('pause then open-ended', ['2024-05-01', 20, [['2024-05-05', '2024-05-15'], ['2024-05-25', None]]], None),\n  ('open-ended pushed by pause',\n   ['2024-06-01', 10, [['2024-06-03', '2024-06-06'], ['2024-06-14', None]]],\n   None)],\n [('pause before start', ['2024-03-10', 5, [['2024-03-01', '2024-03-05']]], '2024-03-15'),\n  ('weekday start', ['2024-04-02', 7, []], '2024-04-09'),\n  ('saturday start', ['2024-04-06', 7, [['2024-04-08', '2024-04-09']]], '2024-04-14'),\n  ('pause then open-ended', ['2024-05-01', 20, [['2024-05-05', '2024-05-15'], ['2024-05-25', None]]], None),\n  ('open-ended pushed by pause',\n   ['2024-06-01', 10, [['2024-06-03', '2024-06-06'], ['2024-06-14', None]]],\n   None),\n  ('regression: pause resume day counts', ['2024-01-01', 10, [['2024-01-04', '2024-01-08']]], '2024-01-15'),\n  ('no pauses', ['2024-01-01', 30, []], '2024-01-31')]]\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 deadline rules evaluated offline on explicit fixtures. The contract is inspired by common court-rule structures but is not legal advice and makes no claim to reproduce any jurisdiction's rules. 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-legal-deadline-computation-regulatory-stop-clock-pause-length","generated_at":"2026-09-29T14:49:27.029728+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Docketing systems compute filing and response deadlines from trigger events; a wrong date can forfeit a right.","repair":"At the pause length decision use `(b - a).days`, leaving the other decision sites of the model unchanged.","root_cause":"The resume day is treated as part of the pause.","sha256":"96f9cb3dacb7fca014968e95a4b1313e9882000b480b1bc30af291bc4e851a47","title":"Regulatory review clock with stop-clock pauses: pause length · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":42.767,"exit_code":1,"observations":[{"actual":"2024-01-14","check":"regression: pause resume day counts","expected":"2024-01-15","passed":false},{"actual":"2024-01-31","check":"no pauses","expected":"2024-01-31","passed":true},{"actual":null,"check":"two open-ended stops","expected":null,"passed":true},{"actual":null,"check":"earlier open-ended listed first","expected":null,"passed":true},{"actual":"2024-01-11","check":"open-ended after expiry","expected":"2024-01-11","passed":true},{"actual":null,"check":"open-ended on last day","expected":null,"passed":true},{"actual":"2024-01-11","check":"open-ended the day after","expected":"2024-01-11","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: pause resume day counts\", \"actual\": \"2024-01-14\", \"expected\": \"2024-01-15\", \"passed\": false}, {\"check\": \"no pauses\", \"actual\": \"2024-01-31\", \"expected\": \"2024-01-31\", \"passed\": true}, {\"check\": \"two open-ended stops\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"earlier open-ended listed first\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"open-ended after expiry\", \"actual\": \"2024-01-11\", \"expected\": \"2024-01-11\", \"passed\": true}, {\"check\": \"open-ended on last day\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"open-ended the day after\", \"actual\": \"2024-01-11\", \"expected\": \"2024-01-11\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.331,"exit_code":1,"observations":[{"actual":"2024-01-16","check":"regression: pause resume day counts","expected":"2024-01-15","passed":false},{"actual":"2024-01-31","check":"no pauses","expected":"2024-01-31","passed":true},{"actual":null,"check":"two open-ended stops","expected":null,"passed":true},{"actual":null,"check":"earlier open-ended listed first","expected":null,"passed":true},{"actual":"2024-01-11","check":"open-ended after expiry","expected":"2024-01-11","passed":true},{"actual":null,"check":"open-ended on last day","expected":null,"passed":true},{"actual":"2024-01-11","check":"open-ended the day after","expected":"2024-01-11","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: pause resume day counts\", \"actual\": \"2024-01-16\", \"expected\": \"2024-01-15\", \"passed\": false}, {\"check\": \"no pauses\", \"actual\": \"2024-01-31\", \"expected\": \"2024-01-31\", \"passed\": true}, {\"check\": \"two open-ended stops\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"earlier open-ended listed first\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"open-ended after expiry\", \"actual\": \"2024-01-11\", \"expected\": \"2024-01-11\", \"passed\": true}, {\"check\": \"open-ended on last day\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"open-ended the day after\", \"actual\": \"2024-01-11\", \"expected\": \"2024-01-11\", \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.529,"exit_code":0,"observations":[{"actual":"2024-01-15","check":"regression: pause resume day counts","expected":"2024-01-15","passed":true},{"actual":"2024-01-31","check":"no pauses","expected":"2024-01-31","passed":true},{"actual":null,"check":"two open-ended stops","expected":null,"passed":true},{"actual":null,"check":"earlier open-ended listed first","expected":null,"passed":true},{"actual":"2024-01-11","check":"open-ended after expiry","expected":"2024-01-11","passed":true},{"actual":null,"check":"open-ended on last day","expected":null,"passed":true},{"actual":"2024-01-11","check":"open-ended the day after","expected":"2024-01-11","passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: pause resume day counts\", \"actual\": \"2024-01-15\", \"expected\": \"2024-01-15\", \"passed\": true}, {\"check\": \"no pauses\", \"actual\": \"2024-01-31\", \"expected\": \"2024-01-31\", \"passed\": true}, {\"check\": \"two open-ended stops\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"earlier open-ended listed first\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"open-ended after expiry\", \"actual\": \"2024-01-11\", \"expected\": \"2024-01-11\", \"passed\": true}, {\"check\": \"open-ended on last day\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"open-ended the day after\", \"actual\": \"2024-01-11\", \"expected\": \"2024-01-11\", \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}