{"abstract":"A 48-hour period triggered at 10:20 ends at 11:00 two days later.","category":"Legal deadline computation","checks":7,"contract":"Stipulated rule: an hours period begins counting immediately at the triggering event, counts every hour including weekends and holidays, and if it ends on a Saturday, Sunday or listed holiday it continues to the same time on the next day that is none of these.","contract_signature":"start, hours, holidays","evaluation_group":"w2-legal-deadline-computation-hour-period-extension","failed_approach":"The partial repair `s.replace(minute=0)` truncates to the start of the hour, ending the period early.","family":"w2-legal-deadline-computation-hour-period-extension-counting-start","id":"FA-77416","implementations":{"attempt":{"sha256":"9fc5f8843c229d3fa6fdc927af4e15a6fe223cc1647fab23b51fbba684861e3c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime as dt\nimport calendar\nN = 1\nobservations = []\ndef solve(start, hours, holidays):\n    s = dt.datetime.fromisoformat(start)\n    hol = {dt.date.fromisoformat(x) for x in holidays}\n    def closed(day):\n        return day.weekday() >= 5 or day in hol\n    e = s.replace(minute=0) + dt.timedelta(hours=hours)\n    while closed(e.date()):\n        e = e + dt.timedelta(days=1)\n    return e.isoformat(timespec='minutes')\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: ends saturday afternoon',\n   ['2024-03-07T15:00',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-03-11T15:00'),\n  ('mid-hour start',\n   ['2024-03-04T10:20',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-03-06T10:20'),\n  ('36 hours',\n   ['2024-03-04T08:00',\n    36,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-03-05T20:00'),\n  ('ends on holiday',\n   ['2024-01-13T09:30',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-01-16T09:30'),\n  ('weekday end',\n   ['2024-04-01T12:00',\n    24,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-04-02T12:00'),\n  ('14 hours overnight',\n   ['2024-04-02T20:45',\n    14,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-04-03T10:45'),\n  ('ends sunday then holiday',\n   ['2024-05-24T11:00',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-05-28T11:00')],\n [('36 hours',\n   ['2024-03-04T08:00',\n    36,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-03-05T20:00'),\n  ('ends on holiday',\n   ['2024-01-13T09:30',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-01-16T09:30'),\n  ('weekday end',\n   ['2024-04-01T12:00',\n    24,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-04-02T12:00'),\n  ('14 hours overnight',\n   ['2024-04-02T20:45',\n    14,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-04-03T10:45'),\n  ('ends sunday then holiday',\n   ['2024-05-24T11:00',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-05-28T11:00'),\n  ('72 hours from friday',\n   ['2024-06-14T16:10',\n    72,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-06-17T16:10'),\n  ('six hours into saturday',\n   ['2024-06-07T21:00',\n    6,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-06-10T03:00')],\n [('weekday end',\n   ['2024-04-01T12:00',\n    24,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-04-02T12:00'),\n  ('14 hours overnight',\n   ['2024-04-02T20:45',\n    14,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-04-03T10:45'),\n  ('ends sunday then holiday',\n   ['2024-05-24T11:00',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-05-28T11:00'),\n  ('72 hours from friday',\n   ['2024-06-14T16:10',\n    72,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-06-17T16:10'),\n  ('six hours into saturday',\n   ['2024-06-07T21:00',\n    6,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-06-10T03:00'),\n  ('100 hours',\n   ['2024-10-08T07:15',\n    100,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-10-15T11:15'),\n  ('regression: ends saturday afternoon',\n   ['2024-03-07T15:00',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-03-11T15:00')],\n [('ends sunday then holiday',\n   ['2024-05-24T11:00',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-05-28T11:00'),\n  ('72 hours from friday',\n   ['2024-06-14T16:10',\n    72,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-06-17T16:10'),\n  ('six hours into saturday',\n   ['2024-06-07T21:00',\n    6,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-06-10T03:00'),\n  ('100 hours',\n   ['2024-10-08T07:15',\n    100,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-10-15T11:15'),\n  ('regression: ends saturday afternoon',\n   ['2024-03-07T15:00',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-03-11T15:00'),\n  ('mid-hour start',\n   ['2024-03-04T10:20',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-03-06T10:20'),\n  ('36 hours',\n   ['2024-03-04T08:00',\n    36,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-03-05T20:00')],\n [('six hours into saturday',\n   ['2024-06-07T21:00',\n    6,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-06-10T03:00'),\n  ('100 hours',\n   ['2024-10-08T07:15',\n    100,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-10-15T11:15'),\n  ('regression: ends saturday afternoon',\n   ['2024-03-07T15:00',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-03-11T15:00'),\n  ('mid-hour start',\n   ['2024-03-04T10:20',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-03-06T10:20'),\n  ('36 hours',\n   ['2024-03-04T08:00',\n    36,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-03-05T20:00'),\n  ('ends on holiday',\n   ['2024-01-13T09:30',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-01-16T09:30'),\n  ('weekday end',\n   ['2024-04-01T12:00',\n    24,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-04-02T12:00')]]\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":"43635ca7f1a5b9b3ee75fa82bc50e7a21004498a4c8b545370303187d6751b7d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime as dt\nimport calendar\nN = 1\nobservations = []\ndef solve(start, hours, holidays):\n    s = dt.datetime.fromisoformat(start)\n    hol = {dt.date.fromisoformat(x) for x in holidays}\n    def closed(day):\n        return day.weekday() >= 5 or day in hol\n    e = (s.replace(minute=0) + dt.timedelta(hours=1) if s.minute else s) + dt.timedelta(hours=hours)\n    while closed(e.date()):\n        e = e + dt.timedelta(days=1)\n    return e.isoformat(timespec='minutes')\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: ends saturday afternoon',\n   ['2024-03-07T15:00',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-03-11T15:00'),\n  ('mid-hour start',\n   ['2024-03-04T10:20',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-03-06T10:20'),\n  ('36 hours',\n   ['2024-03-04T08:00',\n    36,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-03-05T20:00'),\n  ('ends on holiday',\n   ['2024-01-13T09:30',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-01-16T09:30'),\n  ('weekday end',\n   ['2024-04-01T12:00',\n    24,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-04-02T12:00'),\n  ('14 hours overnight',\n   ['2024-04-02T20:45',\n    14,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-04-03T10:45'),\n  ('ends sunday then holiday',\n   ['2024-05-24T11:00',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-05-28T11:00')],\n [('36 hours',\n   ['2024-03-04T08:00',\n    36,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-03-05T20:00'),\n  ('ends on holiday',\n   ['2024-01-13T09:30',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-01-16T09:30'),\n  ('weekday end',\n   ['2024-04-01T12:00',\n    24,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-04-02T12:00'),\n  ('14 hours overnight',\n   ['2024-04-02T20:45',\n    14,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-04-03T10:45'),\n  ('ends sunday then holiday',\n   ['2024-05-24T11:00',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-05-28T11:00'),\n  ('72 hours from friday',\n   ['2024-06-14T16:10',\n    72,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-06-17T16:10'),\n  ('six hours into saturday',\n   ['2024-06-07T21:00',\n    6,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-06-10T03:00')],\n [('weekday end',\n   ['2024-04-01T12:00',\n    24,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-04-02T12:00'),\n  ('14 hours overnight',\n   ['2024-04-02T20:45',\n    14,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-04-03T10:45'),\n  ('ends sunday then holiday',\n   ['2024-05-24T11:00',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-05-28T11:00'),\n  ('72 hours from friday',\n   ['2024-06-14T16:10',\n    72,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-06-17T16:10'),\n  ('six hours into saturday',\n   ['2024-06-07T21:00',\n    6,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-06-10T03:00'),\n  ('100 hours',\n   ['2024-10-08T07:15',\n    100,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-10-15T11:15'),\n  ('regression: ends saturday afternoon',\n   ['2024-03-07T15:00',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-03-11T15:00')],\n [('ends sunday then holiday',\n   ['2024-05-24T11:00',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-05-28T11:00'),\n  ('72 hours from friday',\n   ['2024-06-14T16:10',\n    72,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-06-17T16:10'),\n  ('six hours into saturday',\n   ['2024-06-07T21:00',\n    6,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-06-10T03:00'),\n  ('100 hours',\n   ['2024-10-08T07:15',\n    100,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-10-15T11:15'),\n  ('regression: ends saturday afternoon',\n   ['2024-03-07T15:00',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-03-11T15:00'),\n  ('mid-hour start',\n   ['2024-03-04T10:20',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-03-06T10:20'),\n  ('36 hours',\n   ['2024-03-04T08:00',\n    36,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-03-05T20:00')],\n [('six hours into saturday',\n   ['2024-06-07T21:00',\n    6,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-06-10T03:00'),\n  ('100 hours',\n   ['2024-10-08T07:15',\n    100,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-10-15T11:15'),\n  ('regression: ends saturday afternoon',\n   ['2024-03-07T15:00',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-03-11T15:00'),\n  ('mid-hour start',\n   ['2024-03-04T10:20',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-03-06T10:20'),\n  ('36 hours',\n   ['2024-03-04T08:00',\n    36,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-03-05T20:00'),\n  ('ends on holiday',\n   ['2024-01-13T09:30',\n    48,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-01-16T09:30'),\n  ('weekday end',\n   ['2024-04-01T12:00',\n    24,\n    ['2024-01-01',\n     '2024-01-15',\n     '2024-02-19',\n     '2024-05-27',\n     '2024-06-19',\n     '2024-07-04',\n     '2024-09-02',\n     '2024-10-14',\n     '2024-11-11',\n     '2024-11-28',\n     '2024-12-25']],\n   '2024-04-02T12:00')]]\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-hour-period-extension-counting-start","generated_at":"2026-09-29T14:49:25.544282+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.","root_cause":"Counting starts at the next whole hour instead of immediately.","sha256":"c199f4eb31b08763299ed5c054a7168eb203e5f2ab2cd70414b975f23c102af4","title":"Hour-denominated periods with next-open-day extension: counting start · 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.379,"exit_code":1,"observations":[{"actual":"2024-03-11T15:00","check":"regression: ends saturday afternoon","expected":"2024-03-11T15:00","passed":true},{"actual":"2024-03-06T10:00","check":"mid-hour start","expected":"2024-03-06T10:20","passed":false},{"actual":"2024-03-05T20:00","check":"36 hours","expected":"2024-03-05T20:00","passed":true},{"actual":"2024-01-16T09:00","check":"ends on holiday","expected":"2024-01-16T09:30","passed":false},{"actual":"2024-04-02T12:00","check":"weekday end","expected":"2024-04-02T12:00","passed":true},{"actual":"2024-04-03T10:00","check":"14 hours overnight","expected":"2024-04-03T10:45","passed":false},{"actual":"2024-05-28T11:00","check":"ends sunday then holiday","expected":"2024-05-28T11:00","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: ends saturday afternoon\", \"actual\": \"2024-03-11T15:00\", \"expected\": \"2024-03-11T15:00\", \"passed\": true}, {\"check\": \"mid-hour start\", \"actual\": \"2024-03-06T10:00\", \"expected\": \"2024-03-06T10:20\", \"passed\": false}, {\"check\": \"36 hours\", \"actual\": \"2024-03-05T20:00\", \"expected\": \"2024-03-05T20:00\", \"passed\": true}, {\"check\": \"ends on holiday\", \"actual\": \"2024-01-16T09:00\", \"expected\": \"2024-01-16T09:30\", \"passed\": false}, {\"check\": \"weekday end\", \"actual\": \"2024-04-02T12:00\", \"expected\": \"2024-04-02T12:00\", \"passed\": true}, {\"check\": \"14 hours overnight\", \"actual\": \"2024-04-03T10:00\", \"expected\": \"2024-04-03T10:45\", \"passed\": false}, {\"check\": \"ends sunday then holiday\", \"actual\": \"2024-05-28T11:00\", \"expected\": \"2024-05-28T11:00\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.296,"exit_code":1,"observations":[{"actual":"2024-03-11T15:00","check":"regression: ends saturday afternoon","expected":"2024-03-11T15:00","passed":true},{"actual":"2024-03-06T11:00","check":"mid-hour start","expected":"2024-03-06T10:20","passed":false},{"actual":"2024-03-05T20:00","check":"36 hours","expected":"2024-03-05T20:00","passed":true},{"actual":"2024-01-16T10:00","check":"ends on holiday","expected":"2024-01-16T09:30","passed":false},{"actual":"2024-04-02T12:00","check":"weekday end","expected":"2024-04-02T12:00","passed":true},{"actual":"2024-04-03T11:00","check":"14 hours overnight","expected":"2024-04-03T10:45","passed":false},{"actual":"2024-05-28T11:00","check":"ends sunday then holiday","expected":"2024-05-28T11:00","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: ends saturday afternoon\", \"actual\": \"2024-03-11T15:00\", \"expected\": \"2024-03-11T15:00\", \"passed\": true}, {\"check\": \"mid-hour start\", \"actual\": \"2024-03-06T11:00\", \"expected\": \"2024-03-06T10:20\", \"passed\": false}, {\"check\": \"36 hours\", \"actual\": \"2024-03-05T20:00\", \"expected\": \"2024-03-05T20:00\", \"passed\": true}, {\"check\": \"ends on holiday\", \"actual\": \"2024-01-16T10:00\", \"expected\": \"2024-01-16T09:30\", \"passed\": false}, {\"check\": \"weekday end\", \"actual\": \"2024-04-02T12:00\", \"expected\": \"2024-04-02T12:00\", \"passed\": true}, {\"check\": \"14 hours overnight\", \"actual\": \"2024-04-03T11:00\", \"expected\": \"2024-04-03T10:45\", \"passed\": false}, {\"check\": \"ends sunday then holiday\", \"actual\": \"2024-05-28T11:00\", \"expected\": \"2024-05-28T11:00\", \"passed\": true}], \"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."}}