{"abstract":"The repose cap runs from discovery, allowing claims beyond the absolute bar.","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 `disc` measures repose from discovery, which is still not the injury date.","family":"w2-legal-deadline-computation-limitations-tolling-repose-repose-base","id":"FA-77496","implementations":{"attempt":{"sha256":"d76ba8d436450cdac030992eb7eb99968948ab18ac86fe8453631dc40cb455aa","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(disc, 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 [('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 [('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'),\n  ('repose caps', ['2010-01-15', '2019-06-01', 3, [['2020-01-01', '2020-06-30']], 10], '2020-01-15')]]\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":"14c90a8210959f18cd3bd1b8c9aa284e7b46a0b692cebf198f31bd46d9429a92","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(accrual, 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 [('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 [('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'),\n  ('repose caps', ['2010-01-15', '2019-06-01', 3, [['2020-01-01', '2020-06-30']], 10], '2020-01-15')]]\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":"de91718afae6e55da0bfb691f348228e879d40cb87d55da4f550145a5e3c221d","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 [('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 [('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'),\n  ('repose caps', ['2010-01-15', '2019-06-01', 3, [['2020-01-01', '2020-06-30']], 10], '2020-01-15')]]\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-repose-base","generated_at":"2026-09-29T14:49:26.208417+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 repose base decision use `inj`, leaving the other decision sites of the model unchanged.","root_cause":"The repose period is measured from accrual instead of injury.","sha256":"b180ef1d19b6785bfdac67c0bf00d2fc87cdf3c84302b7202c0e8f1418fd5480","title":"Limitations period with discovery accrual, tolling and repose cap: repose base · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.898,"exit_code":1,"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":"2022-11-30","check":"repose caps","expected":"2020-01-15","passed":false},{"actual":"2022-09-30","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-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\": \"2022-11-30\", \"expected\": \"2020-01-15\", \"passed\": false}, {\"check\": \"repose with tolling beyond\", \"actual\": \"2022-09-30\", \"expected\": \"2022-07-01\", \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.704,"exit_code":1,"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":"2022-11-30","check":"repose caps","expected":"2020-01-15","passed":false},{"actual":"2022-09-30","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-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\": \"2022-11-30\", \"expected\": \"2020-01-15\", \"passed\": false}, {\"check\": \"repose with tolling beyond\", \"actual\": \"2022-09-30\", \"expected\": \"2022-07-01\", \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.452,"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"}