{"abstract":"A two-year period ending across a leap day expires one day early.","category":"Legal deadline computation","checks":7,"contract":"Stipulated: the claim accrues on the later of injury and discovery. The base deadline is the anniversary of accrual after years (a February 29 anniversary in a common year becomes February 28). Tolling intervals [start, end] are inclusive of both days, days before accrual do not count, and overlapping intervals count each day once; the tolled day count is added to the base deadline. A repose deadline of repose_years from the injury (same anniversary rule, never tolled) caps the result.","evaluation_group":"w2-legal-deadline-computation-limitations-tolling-repose","failed_approach":"The partial repair `dt.date(y, 3, 1) if (d.month, d.day) == (2, 29) and not calendar.isleap(y) else dt.date(y, d.month, d.day)` handles leap days but moves a February 29 anniversary to March 1 instead of February 28.","family":"w2-legal-deadline-computation-limitations-tolling-repose-anniversary-clamp","id":"FA-77476","implementations":{"attempt":{"sha256":"dd697c438bcb8310eba5a3b5f24889ccb67ee2ef19952c8149ab0f6808159d89","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime as dt\nimport calendar\nN = 1\nobservations = []\ndef solve(injury, discovery, years, tolls, repose_years):\n    inj = dt.date.fromisoformat(injury)\n    disc = dt.date.fromisoformat(discovery)\n    accrual = max(inj, disc)\n    def add_years(d, n):\n        y = d.year + n\n        return dt.date(y, 3, 1) if (d.month, d.day) == (2, 29) and not calendar.isleap(y) else dt.date(y, d.month, d.day)\n    base = add_years(accrual, years)\n    covered = set()\n    total = 0\n    for a, b in tolls:\n        a = dt.date.fromisoformat(a)\n        b = dt.date.fromisoformat(b)\n        a = max(a, accrual)\n        span = max(0, (b - a).days + 1)\n        total += span\n        for i in range(span):\n            covered.add(a + dt.timedelta(days=i))\n    tolled = len(covered)\n    extended = base + dt.timedelta(days=tolled)\n    repose = add_years(inj, repose_years)\n    return (min(extended, repose)).isoformat()\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: discovery then overlapping tolls',\n   ['2018-03-10', '2019-06-01', 2, [['2019-07-01', '2019-07-10'], ['2019-07-05', '2019-07-20']], 10],\n   '2021-06-21'),\n  ('leap day accrual', ['2020-02-29', '2020-02-29', 3, [], 10], '2023-02-28'),\n  ('leap crossing two years', ['2023-03-01', '2023-03-01', 2, [], 10], '2025-03-01'),\n  ('toll before discovery',\n   ['2015-01-10', '2016-05-05', 3, [['2015-06-01', '2015-12-31'], ['2017-01-01', '2017-01-01']], 10],\n   '2019-05-06'),\n  ('one day toll', ['2021-04-04', '2021-04-04', 1, [['2021-05-05', '2021-05-05']], 5], '2022-04-05'),\n  ('repose caps', ['2010-01-15', '2019-06-01', 3, [['2020-01-01', '2020-06-30']], 10], '2020-01-15'),\n  ('repose with tolling beyond',\n   ['2014-07-01', '2015-07-01', 7, [['2016-01-01', '2016-03-31']], 8],\n   '2022-07-01')],\n [('leap crossing two years', ['2023-03-01', '2023-03-01', 2, [], 10], '2025-03-01'),\n  ('toll before discovery',\n   ['2015-01-10', '2016-05-05', 3, [['2015-06-01', '2015-12-31'], ['2017-01-01', '2017-01-01']], 10],\n   '2019-05-06'),\n  ('one day toll', ['2021-04-04', '2021-04-04', 1, [['2021-05-05', '2021-05-05']], 5], '2022-04-05'),\n  ('repose caps', ['2010-01-15', '2019-06-01', 3, [['2020-01-01', '2020-06-30']], 10], '2020-01-15'),\n  ('repose with tolling beyond',\n   ['2014-07-01', '2015-07-01', 7, [['2016-01-01', '2016-03-31']], 8],\n   '2022-07-01'),\n  ('toll straddles accrual',\n   ['2019-01-01', '2019-02-01', 1, [['2019-01-20', '2019-02-10']], 4],\n   '2020-02-11'),\n  ('three overlapping tolls',\n   ['2022-05-05',\n    '2022-05-05',\n    2,\n    [['2022-06-01', '2022-06-30'], ['2022-06-15', '2022-07-15'], ['2022-07-10', '2022-07-12']],\n    6],\n   '2024-06-19'),\n  ('leap day accrual', ['2020-02-29', '2020-02-29', 3, [], 10], '2023-02-28')],\n [('one day toll', ['2021-04-04', '2021-04-04', 1, [['2021-05-05', '2021-05-05']], 5], '2022-04-05'),\n  ('repose caps', ['2010-01-15', '2019-06-01', 3, [['2020-01-01', '2020-06-30']], 10], '2020-01-15'),\n  ('repose with tolling beyond',\n   ['2014-07-01', '2015-07-01', 7, [['2016-01-01', '2016-03-31']], 8],\n   '2022-07-01'),\n  ('toll straddles accrual',\n   ['2019-01-01', '2019-02-01', 1, [['2019-01-20', '2019-02-10']], 4],\n   '2020-02-11'),\n  ('three overlapping tolls',\n   ['2022-05-05',\n    '2022-05-05',\n    2,\n    [['2022-06-01', '2022-06-30'], ['2022-06-15', '2022-07-15'], ['2022-07-10', '2022-07-12']],\n    6],\n   '2024-06-19'),\n  ('discovery earlier than injury input', ['2021-09-09', '2021-08-01', 2, [], 4], '2023-09-09'),\n  ('toll wholly before injury',\n   ['2020-10-10', '2020-10-10', 1, [['2019-01-01', '2019-02-01']], 3],\n   '2021-10-10'),\n  ('leap day accrual', ['2020-02-29', '2020-02-29', 3, [], 10], '2023-02-28')],\n [('repose with tolling beyond',\n   ['2014-07-01', '2015-07-01', 7, [['2016-01-01', '2016-03-31']], 8],\n   '2022-07-01'),\n  ('toll straddles accrual',\n   ['2019-01-01', '2019-02-01', 1, [['2019-01-20', '2019-02-10']], 4],\n   '2020-02-11'),\n  ('three overlapping tolls',\n   ['2022-05-05',\n    '2022-05-05',\n    2,\n    [['2022-06-01', '2022-06-30'], ['2022-06-15', '2022-07-15'], ['2022-07-10', '2022-07-12']],\n    6],\n   '2024-06-19'),\n  ('discovery earlier than injury input', ['2021-09-09', '2021-08-01', 2, [], 4], '2023-09-09'),\n  ('toll wholly before injury',\n   ['2020-10-10', '2020-10-10', 1, [['2019-01-01', '2019-02-01']], 3],\n   '2021-10-10'),\n  ('regression: discovery then overlapping tolls',\n   ['2018-03-10', '2019-06-01', 2, [['2019-07-01', '2019-07-10'], ['2019-07-05', '2019-07-20']], 10],\n   '2021-06-21'),\n  ('leap day accrual', ['2020-02-29', '2020-02-29', 3, [], 10], '2023-02-28')],\n [('three overlapping tolls',\n   ['2022-05-05',\n    '2022-05-05',\n    2,\n    [['2022-06-01', '2022-06-30'], ['2022-06-15', '2022-07-15'], ['2022-07-10', '2022-07-12']],\n    6],\n   '2024-06-19'),\n  ('discovery earlier than injury input', ['2021-09-09', '2021-08-01', 2, [], 4], '2023-09-09'),\n  ('toll wholly before injury',\n   ['2020-10-10', '2020-10-10', 1, [['2019-01-01', '2019-02-01']], 3],\n   '2021-10-10'),\n  ('regression: discovery then overlapping tolls',\n   ['2018-03-10', '2019-06-01', 2, [['2019-07-01', '2019-07-10'], ['2019-07-05', '2019-07-20']], 10],\n   '2021-06-21'),\n  ('leap day accrual', ['2020-02-29', '2020-02-29', 3, [], 10], '2023-02-28'),\n  ('leap crossing two years', ['2023-03-01', '2023-03-01', 2, [], 10], '2025-03-01'),\n  ('toll before discovery',\n   ['2015-01-10', '2016-05-05', 3, [['2015-06-01', '2015-12-31'], ['2017-01-01', '2017-01-01']], 10],\n   '2019-05-06')]]\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":"2fbe5d29e0809de6c132cb5d97377f0053ccb3e403f2890edd6293d2535c1c44","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime as dt\nimport calendar\nN = 1\nobservations = []\ndef solve(injury, discovery, years, tolls, repose_years):\n    inj = dt.date.fromisoformat(injury)\n    disc = dt.date.fromisoformat(discovery)\n    accrual = max(inj, disc)\n    def add_years(d, n):\n        y = d.year + n\n        return d + dt.timedelta(days=365 * n)\n    base = add_years(accrual, years)\n    covered = set()\n    total = 0\n    for a, b in tolls:\n        a = dt.date.fromisoformat(a)\n        b = dt.date.fromisoformat(b)\n        a = max(a, accrual)\n        span = max(0, (b - a).days + 1)\n        total += span\n        for i in range(span):\n            covered.add(a + dt.timedelta(days=i))\n    tolled = len(covered)\n    extended = base + dt.timedelta(days=tolled)\n    repose = add_years(inj, repose_years)\n    return (min(extended, repose)).isoformat()\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: discovery then overlapping tolls',\n   ['2018-03-10', '2019-06-01', 2, [['2019-07-01', '2019-07-10'], ['2019-07-05', '2019-07-20']], 10],\n   '2021-06-21'),\n  ('leap day accrual', ['2020-02-29', '2020-02-29', 3, [], 10], '2023-02-28'),\n  ('leap crossing two years', ['2023-03-01', '2023-03-01', 2, [], 10], '2025-03-01'),\n  ('toll before discovery',\n   ['2015-01-10', '2016-05-05', 3, [['2015-06-01', '2015-12-31'], ['2017-01-01', '2017-01-01']], 10],\n   '2019-05-06'),\n  ('one day toll', ['2021-04-04', '2021-04-04', 1, [['2021-05-05', '2021-05-05']], 5], '2022-04-05'),\n  ('repose caps', ['2010-01-15', '2019-06-01', 3, [['2020-01-01', '2020-06-30']], 10], '2020-01-15'),\n  ('repose with tolling beyond',\n   ['2014-07-01', '2015-07-01', 7, [['2016-01-01', '2016-03-31']], 8],\n   '2022-07-01')],\n [('leap crossing two years', ['2023-03-01', '2023-03-01', 2, [], 10], '2025-03-01'),\n  ('toll before discovery',\n   ['2015-01-10', '2016-05-05', 3, [['2015-06-01', '2015-12-31'], ['2017-01-01', '2017-01-01']], 10],\n   '2019-05-06'),\n  ('one day toll', ['2021-04-04', '2021-04-04', 1, [['2021-05-05', '2021-05-05']], 5], '2022-04-05'),\n  ('repose caps', ['2010-01-15', '2019-06-01', 3, [['2020-01-01', '2020-06-30']], 10], '2020-01-15'),\n  ('repose with tolling beyond',\n   ['2014-07-01', '2015-07-01', 7, [['2016-01-01', '2016-03-31']], 8],\n   '2022-07-01'),\n  ('toll straddles accrual',\n   ['2019-01-01', '2019-02-01', 1, [['2019-01-20', '2019-02-10']], 4],\n   '2020-02-11'),\n  ('three overlapping tolls',\n   ['2022-05-05',\n    '2022-05-05',\n    2,\n    [['2022-06-01', '2022-06-30'], ['2022-06-15', '2022-07-15'], ['2022-07-10', '2022-07-12']],\n    6],\n   '2024-06-19'),\n  ('leap day accrual', ['2020-02-29', '2020-02-29', 3, [], 10], '2023-02-28')],\n [('one day toll', ['2021-04-04', '2021-04-04', 1, [['2021-05-05', '2021-05-05']], 5], '2022-04-05'),\n  ('repose caps', ['2010-01-15', '2019-06-01', 3, [['2020-01-01', '2020-06-30']], 10], '2020-01-15'),\n  ('repose with tolling beyond',\n   ['2014-07-01', '2015-07-01', 7, [['2016-01-01', '2016-03-31']], 8],\n   '2022-07-01'),\n  ('toll straddles accrual',\n   ['2019-01-01', '2019-02-01', 1, [['2019-01-20', '2019-02-10']], 4],\n   '2020-02-11'),\n  ('three overlapping tolls',\n   ['2022-05-05',\n    '2022-05-05',\n    2,\n    [['2022-06-01', '2022-06-30'], ['2022-06-15', '2022-07-15'], ['2022-07-10', '2022-07-12']],\n    6],\n   '2024-06-19'),\n  ('discovery earlier than injury input', ['2021-09-09', '2021-08-01', 2, [], 4], '2023-09-09'),\n  ('toll wholly before injury',\n   ['2020-10-10', '2020-10-10', 1, [['2019-01-01', '2019-02-01']], 3],\n   '2021-10-10'),\n  ('leap day accrual', ['2020-02-29', '2020-02-29', 3, [], 10], '2023-02-28')],\n [('repose with tolling beyond',\n   ['2014-07-01', '2015-07-01', 7, [['2016-01-01', '2016-03-31']], 8],\n   '2022-07-01'),\n  ('toll straddles accrual',\n   ['2019-01-01', '2019-02-01', 1, [['2019-01-20', '2019-02-10']], 4],\n   '2020-02-11'),\n  ('three overlapping tolls',\n   ['2022-05-05',\n    '2022-05-05',\n    2,\n    [['2022-06-01', '2022-06-30'], ['2022-06-15', '2022-07-15'], ['2022-07-10', '2022-07-12']],\n    6],\n   '2024-06-19'),\n  ('discovery earlier than injury input', ['2021-09-09', '2021-08-01', 2, [], 4], '2023-09-09'),\n  ('toll wholly before injury',\n   ['2020-10-10', '2020-10-10', 1, [['2019-01-01', '2019-02-01']], 3],\n   '2021-10-10'),\n  ('regression: discovery then overlapping tolls',\n   ['2018-03-10', '2019-06-01', 2, [['2019-07-01', '2019-07-10'], ['2019-07-05', '2019-07-20']], 10],\n   '2021-06-21'),\n  ('leap day accrual', ['2020-02-29', '2020-02-29', 3, [], 10], '2023-02-28')],\n [('three overlapping tolls',\n   ['2022-05-05',\n    '2022-05-05',\n    2,\n    [['2022-06-01', '2022-06-30'], ['2022-06-15', '2022-07-15'], ['2022-07-10', '2022-07-12']],\n    6],\n   '2024-06-19'),\n  ('discovery earlier than injury input', ['2021-09-09', '2021-08-01', 2, [], 4], '2023-09-09'),\n  ('toll wholly before injury',\n   ['2020-10-10', '2020-10-10', 1, [['2019-01-01', '2019-02-01']], 3],\n   '2021-10-10'),\n  ('regression: discovery then overlapping tolls',\n   ['2018-03-10', '2019-06-01', 2, [['2019-07-01', '2019-07-10'], ['2019-07-05', '2019-07-20']], 10],\n   '2021-06-21'),\n  ('leap day accrual', ['2020-02-29', '2020-02-29', 3, [], 10], '2023-02-28'),\n  ('leap crossing two years', ['2023-03-01', '2023-03-01', 2, [], 10], '2025-03-01'),\n  ('toll before discovery',\n   ['2015-01-10', '2016-05-05', 3, [['2015-06-01', '2015-12-31'], ['2017-01-01', '2017-01-01']], 10],\n   '2019-05-06')]]\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":"05a285d47ff49cd0ac501eb65be28bc08f474a857e0049b397e312a6e313b59d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime as dt\nimport calendar\nN = 1\nobservations = []\ndef solve(injury, discovery, years, tolls, repose_years):\n    inj = dt.date.fromisoformat(injury)\n    disc = dt.date.fromisoformat(discovery)\n    accrual = max(inj, disc)\n    def add_years(d, n):\n        y = d.year + n\n        return dt.date(y, d.month, min(d.day, calendar.monthrange(y, d.month)[1]))\n    base = add_years(accrual, years)\n    covered = set()\n    total = 0\n    for a, b in tolls:\n        a = dt.date.fromisoformat(a)\n        b = dt.date.fromisoformat(b)\n        a = max(a, accrual)\n        span = max(0, (b - a).days + 1)\n        total += span\n        for i in range(span):\n            covered.add(a + dt.timedelta(days=i))\n    tolled = len(covered)\n    extended = base + dt.timedelta(days=tolled)\n    repose = add_years(inj, repose_years)\n    return (min(extended, repose)).isoformat()\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: discovery then overlapping tolls',\n   ['2018-03-10', '2019-06-01', 2, [['2019-07-01', '2019-07-10'], ['2019-07-05', '2019-07-20']], 10],\n   '2021-06-21'),\n  ('leap day accrual', ['2020-02-29', '2020-02-29', 3, [], 10], '2023-02-28'),\n  ('leap crossing two years', ['2023-03-01', '2023-03-01', 2, [], 10], '2025-03-01'),\n  ('toll before discovery',\n   ['2015-01-10', '2016-05-05', 3, [['2015-06-01', '2015-12-31'], ['2017-01-01', '2017-01-01']], 10],\n   '2019-05-06'),\n  ('one day toll', ['2021-04-04', '2021-04-04', 1, [['2021-05-05', '2021-05-05']], 5], '2022-04-05'),\n  ('repose caps', ['2010-01-15', '2019-06-01', 3, [['2020-01-01', '2020-06-30']], 10], '2020-01-15'),\n  ('repose with tolling beyond',\n   ['2014-07-01', '2015-07-01', 7, [['2016-01-01', '2016-03-31']], 8],\n   '2022-07-01')],\n [('leap crossing two years', ['2023-03-01', '2023-03-01', 2, [], 10], '2025-03-01'),\n  ('toll before discovery',\n   ['2015-01-10', '2016-05-05', 3, [['2015-06-01', '2015-12-31'], ['2017-01-01', '2017-01-01']], 10],\n   '2019-05-06'),\n  ('one day toll', ['2021-04-04', '2021-04-04', 1, [['2021-05-05', '2021-05-05']], 5], '2022-04-05'),\n  ('repose caps', ['2010-01-15', '2019-06-01', 3, [['2020-01-01', '2020-06-30']], 10], '2020-01-15'),\n  ('repose with tolling beyond',\n   ['2014-07-01', '2015-07-01', 7, [['2016-01-01', '2016-03-31']], 8],\n   '2022-07-01'),\n  ('toll straddles accrual',\n   ['2019-01-01', '2019-02-01', 1, [['2019-01-20', '2019-02-10']], 4],\n   '2020-02-11'),\n  ('three overlapping tolls',\n   ['2022-05-05',\n    '2022-05-05',\n    2,\n    [['2022-06-01', '2022-06-30'], ['2022-06-15', '2022-07-15'], ['2022-07-10', '2022-07-12']],\n    6],\n   '2024-06-19'),\n  ('leap day accrual', ['2020-02-29', '2020-02-29', 3, [], 10], '2023-02-28')],\n [('one day toll', ['2021-04-04', '2021-04-04', 1, [['2021-05-05', '2021-05-05']], 5], '2022-04-05'),\n  ('repose caps', ['2010-01-15', '2019-06-01', 3, [['2020-01-01', '2020-06-30']], 10], '2020-01-15'),\n  ('repose with tolling beyond',\n   ['2014-07-01', '2015-07-01', 7, [['2016-01-01', '2016-03-31']], 8],\n   '2022-07-01'),\n  ('toll straddles accrual',\n   ['2019-01-01', '2019-02-01', 1, [['2019-01-20', '2019-02-10']], 4],\n   '2020-02-11'),\n  ('three overlapping tolls',\n   ['2022-05-05',\n    '2022-05-05',\n    2,\n    [['2022-06-01', '2022-06-30'], ['2022-06-15', '2022-07-15'], ['2022-07-10', '2022-07-12']],\n    6],\n   '2024-06-19'),\n  ('discovery earlier than injury input', ['2021-09-09', '2021-08-01', 2, [], 4], '2023-09-09'),\n  ('toll wholly before injury',\n   ['2020-10-10', '2020-10-10', 1, [['2019-01-01', '2019-02-01']], 3],\n   '2021-10-10'),\n  ('leap day accrual', ['2020-02-29', '2020-02-29', 3, [], 10], '2023-02-28')],\n [('repose with tolling beyond',\n   ['2014-07-01', '2015-07-01', 7, [['2016-01-01', '2016-03-31']], 8],\n   '2022-07-01'),\n  ('toll straddles accrual',\n   ['2019-01-01', '2019-02-01', 1, [['2019-01-20', '2019-02-10']], 4],\n   '2020-02-11'),\n  ('three overlapping tolls',\n   ['2022-05-05',\n    '2022-05-05',\n    2,\n    [['2022-06-01', '2022-06-30'], ['2022-06-15', '2022-07-15'], ['2022-07-10', '2022-07-12']],\n    6],\n   '2024-06-19'),\n  ('discovery earlier than injury input', ['2021-09-09', '2021-08-01', 2, [], 4], '2023-09-09'),\n  ('toll wholly before injury',\n   ['2020-10-10', '2020-10-10', 1, [['2019-01-01', '2019-02-01']], 3],\n   '2021-10-10'),\n  ('regression: discovery then overlapping tolls',\n   ['2018-03-10', '2019-06-01', 2, [['2019-07-01', '2019-07-10'], ['2019-07-05', '2019-07-20']], 10],\n   '2021-06-21'),\n  ('leap day accrual', ['2020-02-29', '2020-02-29', 3, [], 10], '2023-02-28')],\n [('three overlapping tolls',\n   ['2022-05-05',\n    '2022-05-05',\n    2,\n    [['2022-06-01', '2022-06-30'], ['2022-06-15', '2022-07-15'], ['2022-07-10', '2022-07-12']],\n    6],\n   '2024-06-19'),\n  ('discovery earlier than injury input', ['2021-09-09', '2021-08-01', 2, [], 4], '2023-09-09'),\n  ('toll wholly before injury',\n   ['2020-10-10', '2020-10-10', 1, [['2019-01-01', '2019-02-01']], 3],\n   '2021-10-10'),\n  ('regression: discovery then overlapping tolls',\n   ['2018-03-10', '2019-06-01', 2, [['2019-07-01', '2019-07-10'], ['2019-07-05', '2019-07-20']], 10],\n   '2021-06-21'),\n  ('leap day accrual', ['2020-02-29', '2020-02-29', 3, [], 10], '2023-02-28'),\n  ('leap crossing two years', ['2023-03-01', '2023-03-01', 2, [], 10], '2025-03-01'),\n  ('toll before discovery',\n   ['2015-01-10', '2016-05-05', 3, [['2015-06-01', '2015-12-31'], ['2017-01-01', '2017-01-01']], 10],\n   '2019-05-06')]]\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-limitations-tolling-repose-anniversary-clamp","generated_at":"2026-09-29T14:49:25.850694+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 anniversary clamp decision use `dt.date(y, d.month, min(d.day, calendar.monthrange(y, d.month)[1]))`, leaving the other decision sites of the model unchanged.","root_cause":"Years are added as 365-day blocks, ignoring leap days.","sha256":"2a6835109a8ae6665b9e6e17a61e71d5d1a502809aae3b93bffaaae49446b5b1","title":"Limitations period with discovery accrual, tolling and repose cap: anniversary clamp · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.383,"exit_code":1,"observations":[{"actual":"2021-06-21","check":"regression: discovery then overlapping tolls","expected":"2021-06-21","passed":true},{"actual":"2023-03-01","check":"leap day accrual","expected":"2023-02-28","passed":false},{"actual":"2025-03-01","check":"leap crossing two years","expected":"2025-03-01","passed":true},{"actual":"2019-05-06","check":"toll before discovery","expected":"2019-05-06","passed":true},{"actual":"2022-04-05","check":"one day toll","expected":"2022-04-05","passed":true},{"actual":"2020-01-15","check":"repose caps","expected":"2020-01-15","passed":true},{"actual":"2022-07-01","check":"repose with tolling beyond","expected":"2022-07-01","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: discovery then overlapping tolls\", \"actual\": \"2021-06-21\", \"expected\": \"2021-06-21\", \"passed\": true}, {\"check\": \"leap day accrual\", \"actual\": \"2023-03-01\", \"expected\": \"2023-02-28\", \"passed\": false}, {\"check\": \"leap crossing two years\", \"actual\": \"2025-03-01\", \"expected\": \"2025-03-01\", \"passed\": true}, {\"check\": \"toll before discovery\", \"actual\": \"2019-05-06\", \"expected\": \"2019-05-06\", \"passed\": true}, {\"check\": \"one day toll\", \"actual\": \"2022-04-05\", \"expected\": \"2022-04-05\", \"passed\": true}, {\"check\": \"repose caps\", \"actual\": \"2020-01-15\", \"expected\": \"2020-01-15\", \"passed\": true}, {\"check\": \"repose with tolling beyond\", \"actual\": \"2022-07-01\", \"expected\": \"2022-07-01\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.138,"exit_code":1,"observations":[{"actual":"2021-06-20","check":"regression: discovery then overlapping tolls","expected":"2021-06-21","passed":false},{"actual":"2023-02-28","check":"leap day accrual","expected":"2023-02-28","passed":true},{"actual":"2025-02-28","check":"leap crossing two years","expected":"2025-03-01","passed":false},{"actual":"2019-05-06","check":"toll before discovery","expected":"2019-05-06","passed":true},{"actual":"2022-04-05","check":"one day toll","expected":"2022-04-05","passed":true},{"actual":"2020-01-13","check":"repose caps","expected":"2020-01-15","passed":false},{"actual":"2022-06-29","check":"repose with tolling beyond","expected":"2022-07-01","passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: discovery then overlapping tolls\", \"actual\": \"2021-06-20\", \"expected\": \"2021-06-21\", \"passed\": false}, {\"check\": \"leap day accrual\", \"actual\": \"2023-02-28\", \"expected\": \"2023-02-28\", \"passed\": true}, {\"check\": \"leap crossing two years\", \"actual\": \"2025-02-28\", \"expected\": \"2025-03-01\", \"passed\": false}, {\"check\": \"toll before discovery\", \"actual\": \"2019-05-06\", \"expected\": \"2019-05-06\", \"passed\": true}, {\"check\": \"one day toll\", \"actual\": \"2022-04-05\", \"expected\": \"2022-04-05\", \"passed\": true}, {\"check\": \"repose caps\", \"actual\": \"2020-01-13\", \"expected\": \"2020-01-15\", \"passed\": false}, {\"check\": \"repose with tolling beyond\", \"actual\": \"2022-06-29\", \"expected\": \"2022-07-01\", \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.707,"exit_code":0,"observations":[{"actual":"2021-06-21","check":"regression: discovery then overlapping tolls","expected":"2021-06-21","passed":true},{"actual":"2023-02-28","check":"leap day accrual","expected":"2023-02-28","passed":true},{"actual":"2025-03-01","check":"leap crossing two years","expected":"2025-03-01","passed":true},{"actual":"2019-05-06","check":"toll before discovery","expected":"2019-05-06","passed":true},{"actual":"2022-04-05","check":"one day toll","expected":"2022-04-05","passed":true},{"actual":"2020-01-15","check":"repose caps","expected":"2020-01-15","passed":true},{"actual":"2022-07-01","check":"repose with tolling beyond","expected":"2022-07-01","passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: discovery then overlapping tolls\", \"actual\": \"2021-06-21\", \"expected\": \"2021-06-21\", \"passed\": true}, {\"check\": \"leap day accrual\", \"actual\": \"2023-02-28\", \"expected\": \"2023-02-28\", \"passed\": true}, {\"check\": \"leap crossing two years\", \"actual\": \"2025-03-01\", \"expected\": \"2025-03-01\", \"passed\": true}, {\"check\": \"toll before discovery\", \"actual\": \"2019-05-06\", \"expected\": \"2019-05-06\", \"passed\": true}, {\"check\": \"one day toll\", \"actual\": \"2022-04-05\", \"expected\": \"2022-04-05\", \"passed\": true}, {\"check\": \"repose caps\", \"actual\": \"2020-01-15\", \"expected\": \"2020-01-15\", \"passed\": true}, {\"check\": \"repose with tolling beyond\", \"actual\": \"2022-07-01\", \"expected\": \"2022-07-01\", \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}