{"abstract":"The split occurrence appears in both the head and the tail.","category":"Calendar recurrence rules","checks":7,"contract":"A daily-interval series (dtstart, interval, and either count or until). Editing from 0-based occurrence k splits it: the head keeps occurrences 0..k-1 (count k, or until = its last retained occurrence date) and the tail starts at the original date of occurrence k with new_interval and the remaining count (or the original until). k <= 0 makes the head None; a split at or past the end makes the tail None. Return {\"head\": [dtstart, count, until] or None, \"tail\": [start, interval, count, until] or None}.","evaluation_group":"w2-calendar-recurrence-rules-this-and-following-split","failed_approach":"The partial repair `k - 1` drops the last occurrence that should stay in the head.","family":"w2-calendar-recurrence-rules-this-and-following-split-head-count","id":"FA-77031","implementations":{"attempt":{"sha256":"0f874a5726367344673eb3cfe54d5f80678658d36fbca130c0bc4a369418f57e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime as dt\nimport calendar\nN = 1\nobservations = []\ndef solve(dtstart, interval, count, until, k, new_interval):\n    start = dt.date.fromisoformat(dtstart)\n    until_d = dt.date.fromisoformat(until) if until else None\n    tail_start = start + dt.timedelta(days=k * interval)\n    if (count is not None and k >= count) or (until_d is not None and tail_start > until_d):\n        tail = None\n    else:\n        tail = [tail_start.isoformat(), new_interval, count - k if count is not None else None, until]\n    if k <= 0:\n        head = None\n    elif count is not None:\n        head = [dtstart, k - 1, None]\n    else:\n        head = [dtstart, None, (start + dt.timedelta(days=(k - 1) * interval)).isoformat()]\n    return {'head': head, 'tail': tail}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: count series split at 3',\n   ['2024-01-01', 2, 10, None, 3, 7],\n   {'head': ['2024-01-01', 3, None], 'tail': ['2024-01-07', 7, 7, None]}),\n  ('until series split at 2',\n   ['2024-01-01', 3, None, '2024-02-01', 2, 1],\n   {'head': ['2024-01-01', None, '2024-01-04'], 'tail': ['2024-01-07', 1, None, '2024-02-01']}),\n  ('split at first occurrence',\n   ['2024-01-01', 1, 5, None, 0, 2],\n   {'head': None, 'tail': ['2024-01-01', 2, 5, None]}),\n  ('until split at first',\n   ['2024-03-01', 7, None, '2024-06-01', 0, 14],\n   {'head': None, 'tail': ['2024-03-01', 14, None, '2024-06-01']}),\n  ('split exactly at count',\n   ['2024-01-01', 1, 4, None, 4, 2],\n   {'head': ['2024-01-01', 4, None], 'tail': None}),\n  ('split past until',\n   ['2024-01-01', 5, None, '2024-01-20', 5, 2],\n   {'head': ['2024-01-01', None, '2024-01-21'], 'tail': None}),\n  ('split at last until occurrence',\n   ['2024-01-01', 5, None, '2024-01-21', 4, 1],\n   {'head': ['2024-01-01', None, '2024-01-16'], 'tail': ['2024-01-21', 1, None, '2024-01-21']})],\n [('split at first occurrence',\n   ['2024-01-01', 1, 5, None, 0, 2],\n   {'head': None, 'tail': ['2024-01-01', 2, 5, None]}),\n  ('until split at first',\n   ['2024-03-01', 7, None, '2024-06-01', 0, 14],\n   {'head': None, 'tail': ['2024-03-01', 14, None, '2024-06-01']}),\n  ('split exactly at count',\n   ['2024-01-01', 1, 4, None, 4, 2],\n   {'head': ['2024-01-01', 4, None], 'tail': None}),\n  ('split past until',\n   ['2024-01-01', 5, None, '2024-01-20', 5, 2],\n   {'head': ['2024-01-01', None, '2024-01-21'], 'tail': None}),\n  ('split at last until occurrence',\n   ['2024-01-01', 5, None, '2024-01-21', 4, 1],\n   {'head': ['2024-01-01', None, '2024-01-16'], 'tail': ['2024-01-21', 1, None, '2024-01-21']}),\n  ('count split near end',\n   ['2024-05-10', 1, 6, None, 5, 3],\n   {'head': ['2024-05-10', 5, None], 'tail': ['2024-05-15', 3, 1, None]}),\n  ('until split mid',\n   ['2024-05-10', 4, None, '2024-07-01', 6, 2],\n   {'head': ['2024-05-10', None, '2024-05-30'], 'tail': ['2024-06-03', 2, None, '2024-07-01']})],\n [('split exactly at count',\n   ['2024-01-01', 1, 4, None, 4, 2],\n   {'head': ['2024-01-01', 4, None], 'tail': None}),\n  ('split past until',\n   ['2024-01-01', 5, None, '2024-01-20', 5, 2],\n   {'head': ['2024-01-01', None, '2024-01-21'], 'tail': None}),\n  ('split at last until occurrence',\n   ['2024-01-01', 5, None, '2024-01-21', 4, 1],\n   {'head': ['2024-01-01', None, '2024-01-16'], 'tail': ['2024-01-21', 1, None, '2024-01-21']}),\n  ('count split near end',\n   ['2024-05-10', 1, 6, None, 5, 3],\n   {'head': ['2024-05-10', 5, None], 'tail': ['2024-05-15', 3, 1, None]}),\n  ('until split mid',\n   ['2024-05-10', 4, None, '2024-07-01', 6, 2],\n   {'head': ['2024-05-10', None, '2024-05-30'], 'tail': ['2024-06-03', 2, None, '2024-07-01']}),\n  ('interval 1 count split',\n   ['2024-12-30', 1, 8, None, 2, 1],\n   {'head': ['2024-12-30', 2, None], 'tail': ['2025-01-01', 1, 6, None]}),\n  ('split beyond count', ['2024-01-01', 1, 3, None, 7, 2], {'head': ['2024-01-01', 7, None], 'tail': None})],\n [('split at last until occurrence',\n   ['2024-01-01', 5, None, '2024-01-21', 4, 1],\n   {'head': ['2024-01-01', None, '2024-01-16'], 'tail': ['2024-01-21', 1, None, '2024-01-21']}),\n  ('count split near end',\n   ['2024-05-10', 1, 6, None, 5, 3],\n   {'head': ['2024-05-10', 5, None], 'tail': ['2024-05-15', 3, 1, None]}),\n  ('until split mid',\n   ['2024-05-10', 4, None, '2024-07-01', 6, 2],\n   {'head': ['2024-05-10', None, '2024-05-30'], 'tail': ['2024-06-03', 2, None, '2024-07-01']}),\n  ('interval 1 count split',\n   ['2024-12-30', 1, 8, None, 2, 1],\n   {'head': ['2024-12-30', 2, None], 'tail': ['2025-01-01', 1, 6, None]}),\n  ('split beyond count', ['2024-01-01', 1, 3, None, 7, 2], {'head': ['2024-01-01', 7, None], 'tail': None}),\n  ('regression: count series split at 3',\n   ['2024-01-01', 2, 10, None, 3, 7],\n   {'head': ['2024-01-01', 3, None], 'tail': ['2024-01-07', 7, 7, None]}),\n  ('until series split at 2',\n   ['2024-01-01', 3, None, '2024-02-01', 2, 1],\n   {'head': ['2024-01-01', None, '2024-01-04'], 'tail': ['2024-01-07', 1, None, '2024-02-01']})],\n [('until split mid',\n   ['2024-05-10', 4, None, '2024-07-01', 6, 2],\n   {'head': ['2024-05-10', None, '2024-05-30'], 'tail': ['2024-06-03', 2, None, '2024-07-01']}),\n  ('interval 1 count split',\n   ['2024-12-30', 1, 8, None, 2, 1],\n   {'head': ['2024-12-30', 2, None], 'tail': ['2025-01-01', 1, 6, None]}),\n  ('split beyond count', ['2024-01-01', 1, 3, None, 7, 2], {'head': ['2024-01-01', 7, None], 'tail': None}),\n  ('regression: count series split at 3',\n   ['2024-01-01', 2, 10, None, 3, 7],\n   {'head': ['2024-01-01', 3, None], 'tail': ['2024-01-07', 7, 7, None]}),\n  ('until series split at 2',\n   ['2024-01-01', 3, None, '2024-02-01', 2, 1],\n   {'head': ['2024-01-01', None, '2024-01-04'], 'tail': ['2024-01-07', 1, None, '2024-02-01']}),\n  ('split at first occurrence',\n   ['2024-01-01', 1, 5, None, 0, 2],\n   {'head': None, 'tail': ['2024-01-01', 2, 5, None]}),\n  ('until split at first',\n   ['2024-03-01', 7, None, '2024-06-01', 0, 14],\n   {'head': None, 'tail': ['2024-03-01', 14, None, '2024-06-01']})]]\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":"4520532809ede1281b3d1f2487597cfaafd00efbf148d62dc91812ef84290d57","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime as dt\nimport calendar\nN = 1\nobservations = []\ndef solve(dtstart, interval, count, until, k, new_interval):\n    start = dt.date.fromisoformat(dtstart)\n    until_d = dt.date.fromisoformat(until) if until else None\n    tail_start = start + dt.timedelta(days=k * interval)\n    if (count is not None and k >= count) or (until_d is not None and tail_start > until_d):\n        tail = None\n    else:\n        tail = [tail_start.isoformat(), new_interval, count - k if count is not None else None, until]\n    if k <= 0:\n        head = None\n    elif count is not None:\n        head = [dtstart, k + 1, None]\n    else:\n        head = [dtstart, None, (start + dt.timedelta(days=(k - 1) * interval)).isoformat()]\n    return {'head': head, 'tail': tail}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: count series split at 3',\n   ['2024-01-01', 2, 10, None, 3, 7],\n   {'head': ['2024-01-01', 3, None], 'tail': ['2024-01-07', 7, 7, None]}),\n  ('until series split at 2',\n   ['2024-01-01', 3, None, '2024-02-01', 2, 1],\n   {'head': ['2024-01-01', None, '2024-01-04'], 'tail': ['2024-01-07', 1, None, '2024-02-01']}),\n  ('split at first occurrence',\n   ['2024-01-01', 1, 5, None, 0, 2],\n   {'head': None, 'tail': ['2024-01-01', 2, 5, None]}),\n  ('until split at first',\n   ['2024-03-01', 7, None, '2024-06-01', 0, 14],\n   {'head': None, 'tail': ['2024-03-01', 14, None, '2024-06-01']}),\n  ('split exactly at count',\n   ['2024-01-01', 1, 4, None, 4, 2],\n   {'head': ['2024-01-01', 4, None], 'tail': None}),\n  ('split past until',\n   ['2024-01-01', 5, None, '2024-01-20', 5, 2],\n   {'head': ['2024-01-01', None, '2024-01-21'], 'tail': None}),\n  ('split at last until occurrence',\n   ['2024-01-01', 5, None, '2024-01-21', 4, 1],\n   {'head': ['2024-01-01', None, '2024-01-16'], 'tail': ['2024-01-21', 1, None, '2024-01-21']})],\n [('split at first occurrence',\n   ['2024-01-01', 1, 5, None, 0, 2],\n   {'head': None, 'tail': ['2024-01-01', 2, 5, None]}),\n  ('until split at first',\n   ['2024-03-01', 7, None, '2024-06-01', 0, 14],\n   {'head': None, 'tail': ['2024-03-01', 14, None, '2024-06-01']}),\n  ('split exactly at count',\n   ['2024-01-01', 1, 4, None, 4, 2],\n   {'head': ['2024-01-01', 4, None], 'tail': None}),\n  ('split past until',\n   ['2024-01-01', 5, None, '2024-01-20', 5, 2],\n   {'head': ['2024-01-01', None, '2024-01-21'], 'tail': None}),\n  ('split at last until occurrence',\n   ['2024-01-01', 5, None, '2024-01-21', 4, 1],\n   {'head': ['2024-01-01', None, '2024-01-16'], 'tail': ['2024-01-21', 1, None, '2024-01-21']}),\n  ('count split near end',\n   ['2024-05-10', 1, 6, None, 5, 3],\n   {'head': ['2024-05-10', 5, None], 'tail': ['2024-05-15', 3, 1, None]}),\n  ('until split mid',\n   ['2024-05-10', 4, None, '2024-07-01', 6, 2],\n   {'head': ['2024-05-10', None, '2024-05-30'], 'tail': ['2024-06-03', 2, None, '2024-07-01']})],\n [('split exactly at count',\n   ['2024-01-01', 1, 4, None, 4, 2],\n   {'head': ['2024-01-01', 4, None], 'tail': None}),\n  ('split past until',\n   ['2024-01-01', 5, None, '2024-01-20', 5, 2],\n   {'head': ['2024-01-01', None, '2024-01-21'], 'tail': None}),\n  ('split at last until occurrence',\n   ['2024-01-01', 5, None, '2024-01-21', 4, 1],\n   {'head': ['2024-01-01', None, '2024-01-16'], 'tail': ['2024-01-21', 1, None, '2024-01-21']}),\n  ('count split near end',\n   ['2024-05-10', 1, 6, None, 5, 3],\n   {'head': ['2024-05-10', 5, None], 'tail': ['2024-05-15', 3, 1, None]}),\n  ('until split mid',\n   ['2024-05-10', 4, None, '2024-07-01', 6, 2],\n   {'head': ['2024-05-10', None, '2024-05-30'], 'tail': ['2024-06-03', 2, None, '2024-07-01']}),\n  ('interval 1 count split',\n   ['2024-12-30', 1, 8, None, 2, 1],\n   {'head': ['2024-12-30', 2, None], 'tail': ['2025-01-01', 1, 6, None]}),\n  ('split beyond count', ['2024-01-01', 1, 3, None, 7, 2], {'head': ['2024-01-01', 7, None], 'tail': None})],\n [('split at last until occurrence',\n   ['2024-01-01', 5, None, '2024-01-21', 4, 1],\n   {'head': ['2024-01-01', None, '2024-01-16'], 'tail': ['2024-01-21', 1, None, '2024-01-21']}),\n  ('count split near end',\n   ['2024-05-10', 1, 6, None, 5, 3],\n   {'head': ['2024-05-10', 5, None], 'tail': ['2024-05-15', 3, 1, None]}),\n  ('until split mid',\n   ['2024-05-10', 4, None, '2024-07-01', 6, 2],\n   {'head': ['2024-05-10', None, '2024-05-30'], 'tail': ['2024-06-03', 2, None, '2024-07-01']}),\n  ('interval 1 count split',\n   ['2024-12-30', 1, 8, None, 2, 1],\n   {'head': ['2024-12-30', 2, None], 'tail': ['2025-01-01', 1, 6, None]}),\n  ('split beyond count', ['2024-01-01', 1, 3, None, 7, 2], {'head': ['2024-01-01', 7, None], 'tail': None}),\n  ('regression: count series split at 3',\n   ['2024-01-01', 2, 10, None, 3, 7],\n   {'head': ['2024-01-01', 3, None], 'tail': ['2024-01-07', 7, 7, None]}),\n  ('until series split at 2',\n   ['2024-01-01', 3, None, '2024-02-01', 2, 1],\n   {'head': ['2024-01-01', None, '2024-01-04'], 'tail': ['2024-01-07', 1, None, '2024-02-01']})],\n [('until split mid',\n   ['2024-05-10', 4, None, '2024-07-01', 6, 2],\n   {'head': ['2024-05-10', None, '2024-05-30'], 'tail': ['2024-06-03', 2, None, '2024-07-01']}),\n  ('interval 1 count split',\n   ['2024-12-30', 1, 8, None, 2, 1],\n   {'head': ['2024-12-30', 2, None], 'tail': ['2025-01-01', 1, 6, None]}),\n  ('split beyond count', ['2024-01-01', 1, 3, None, 7, 2], {'head': ['2024-01-01', 7, None], 'tail': None}),\n  ('regression: count series split at 3',\n   ['2024-01-01', 2, 10, None, 3, 7],\n   {'head': ['2024-01-01', 3, None], 'tail': ['2024-01-07', 7, 7, None]}),\n  ('until series split at 2',\n   ['2024-01-01', 3, None, '2024-02-01', 2, 1],\n   {'head': ['2024-01-01', None, '2024-01-04'], 'tail': ['2024-01-07', 1, None, '2024-02-01']}),\n  ('split at first occurrence',\n   ['2024-01-01', 1, 5, None, 0, 2],\n   {'head': None, 'tail': ['2024-01-01', 2, 5, None]}),\n  ('until split at first',\n   ['2024-03-01', 7, None, '2024-06-01', 0, 14],\n   {'head': None, 'tail': ['2024-03-01', 14, None, '2024-06-01']})]]\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":"a31cc8a12282fe18fc93629b6ffef78fbe8addce38bf7d59ab4591b74027d69d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime as dt\nimport calendar\nN = 1\nobservations = []\ndef solve(dtstart, interval, count, until, k, new_interval):\n    start = dt.date.fromisoformat(dtstart)\n    until_d = dt.date.fromisoformat(until) if until else None\n    tail_start = start + dt.timedelta(days=k * interval)\n    if (count is not None and k >= count) or (until_d is not None and tail_start > until_d):\n        tail = None\n    else:\n        tail = [tail_start.isoformat(), new_interval, count - k if count is not None else None, until]\n    if k <= 0:\n        head = None\n    elif count is not None:\n        head = [dtstart, k, None]\n    else:\n        head = [dtstart, None, (start + dt.timedelta(days=(k - 1) * interval)).isoformat()]\n    return {'head': head, 'tail': tail}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: count series split at 3',\n   ['2024-01-01', 2, 10, None, 3, 7],\n   {'head': ['2024-01-01', 3, None], 'tail': ['2024-01-07', 7, 7, None]}),\n  ('until series split at 2',\n   ['2024-01-01', 3, None, '2024-02-01', 2, 1],\n   {'head': ['2024-01-01', None, '2024-01-04'], 'tail': ['2024-01-07', 1, None, '2024-02-01']}),\n  ('split at first occurrence',\n   ['2024-01-01', 1, 5, None, 0, 2],\n   {'head': None, 'tail': ['2024-01-01', 2, 5, None]}),\n  ('until split at first',\n   ['2024-03-01', 7, None, '2024-06-01', 0, 14],\n   {'head': None, 'tail': ['2024-03-01', 14, None, '2024-06-01']}),\n  ('split exactly at count',\n   ['2024-01-01', 1, 4, None, 4, 2],\n   {'head': ['2024-01-01', 4, None], 'tail': None}),\n  ('split past until',\n   ['2024-01-01', 5, None, '2024-01-20', 5, 2],\n   {'head': ['2024-01-01', None, '2024-01-21'], 'tail': None}),\n  ('split at last until occurrence',\n   ['2024-01-01', 5, None, '2024-01-21', 4, 1],\n   {'head': ['2024-01-01', None, '2024-01-16'], 'tail': ['2024-01-21', 1, None, '2024-01-21']})],\n [('split at first occurrence',\n   ['2024-01-01', 1, 5, None, 0, 2],\n   {'head': None, 'tail': ['2024-01-01', 2, 5, None]}),\n  ('until split at first',\n   ['2024-03-01', 7, None, '2024-06-01', 0, 14],\n   {'head': None, 'tail': ['2024-03-01', 14, None, '2024-06-01']}),\n  ('split exactly at count',\n   ['2024-01-01', 1, 4, None, 4, 2],\n   {'head': ['2024-01-01', 4, None], 'tail': None}),\n  ('split past until',\n   ['2024-01-01', 5, None, '2024-01-20', 5, 2],\n   {'head': ['2024-01-01', None, '2024-01-21'], 'tail': None}),\n  ('split at last until occurrence',\n   ['2024-01-01', 5, None, '2024-01-21', 4, 1],\n   {'head': ['2024-01-01', None, '2024-01-16'], 'tail': ['2024-01-21', 1, None, '2024-01-21']}),\n  ('count split near end',\n   ['2024-05-10', 1, 6, None, 5, 3],\n   {'head': ['2024-05-10', 5, None], 'tail': ['2024-05-15', 3, 1, None]}),\n  ('until split mid',\n   ['2024-05-10', 4, None, '2024-07-01', 6, 2],\n   {'head': ['2024-05-10', None, '2024-05-30'], 'tail': ['2024-06-03', 2, None, '2024-07-01']})],\n [('split exactly at count',\n   ['2024-01-01', 1, 4, None, 4, 2],\n   {'head': ['2024-01-01', 4, None], 'tail': None}),\n  ('split past until',\n   ['2024-01-01', 5, None, '2024-01-20', 5, 2],\n   {'head': ['2024-01-01', None, '2024-01-21'], 'tail': None}),\n  ('split at last until occurrence',\n   ['2024-01-01', 5, None, '2024-01-21', 4, 1],\n   {'head': ['2024-01-01', None, '2024-01-16'], 'tail': ['2024-01-21', 1, None, '2024-01-21']}),\n  ('count split near end',\n   ['2024-05-10', 1, 6, None, 5, 3],\n   {'head': ['2024-05-10', 5, None], 'tail': ['2024-05-15', 3, 1, None]}),\n  ('until split mid',\n   ['2024-05-10', 4, None, '2024-07-01', 6, 2],\n   {'head': ['2024-05-10', None, '2024-05-30'], 'tail': ['2024-06-03', 2, None, '2024-07-01']}),\n  ('interval 1 count split',\n   ['2024-12-30', 1, 8, None, 2, 1],\n   {'head': ['2024-12-30', 2, None], 'tail': ['2025-01-01', 1, 6, None]}),\n  ('split beyond count', ['2024-01-01', 1, 3, None, 7, 2], {'head': ['2024-01-01', 7, None], 'tail': None})],\n [('split at last until occurrence',\n   ['2024-01-01', 5, None, '2024-01-21', 4, 1],\n   {'head': ['2024-01-01', None, '2024-01-16'], 'tail': ['2024-01-21', 1, None, '2024-01-21']}),\n  ('count split near end',\n   ['2024-05-10', 1, 6, None, 5, 3],\n   {'head': ['2024-05-10', 5, None], 'tail': ['2024-05-15', 3, 1, None]}),\n  ('until split mid',\n   ['2024-05-10', 4, None, '2024-07-01', 6, 2],\n   {'head': ['2024-05-10', None, '2024-05-30'], 'tail': ['2024-06-03', 2, None, '2024-07-01']}),\n  ('interval 1 count split',\n   ['2024-12-30', 1, 8, None, 2, 1],\n   {'head': ['2024-12-30', 2, None], 'tail': ['2025-01-01', 1, 6, None]}),\n  ('split beyond count', ['2024-01-01', 1, 3, None, 7, 2], {'head': ['2024-01-01', 7, None], 'tail': None}),\n  ('regression: count series split at 3',\n   ['2024-01-01', 2, 10, None, 3, 7],\n   {'head': ['2024-01-01', 3, None], 'tail': ['2024-01-07', 7, 7, None]}),\n  ('until series split at 2',\n   ['2024-01-01', 3, None, '2024-02-01', 2, 1],\n   {'head': ['2024-01-01', None, '2024-01-04'], 'tail': ['2024-01-07', 1, None, '2024-02-01']})],\n [('until split mid',\n   ['2024-05-10', 4, None, '2024-07-01', 6, 2],\n   {'head': ['2024-05-10', None, '2024-05-30'], 'tail': ['2024-06-03', 2, None, '2024-07-01']}),\n  ('interval 1 count split',\n   ['2024-12-30', 1, 8, None, 2, 1],\n   {'head': ['2024-12-30', 2, None], 'tail': ['2025-01-01', 1, 6, None]}),\n  ('split beyond count', ['2024-01-01', 1, 3, None, 7, 2], {'head': ['2024-01-01', 7, None], 'tail': None}),\n  ('regression: count series split at 3',\n   ['2024-01-01', 2, 10, None, 3, 7],\n   {'head': ['2024-01-01', 3, None], 'tail': ['2024-01-07', 7, 7, None]}),\n  ('until series split at 2',\n   ['2024-01-01', 3, None, '2024-02-01', 2, 1],\n   {'head': ['2024-01-01', None, '2024-01-04'], 'tail': ['2024-01-07', 1, None, '2024-02-01']}),\n  ('split at first occurrence',\n   ['2024-01-01', 1, 5, None, 0, 2],\n   {'head': None, 'tail': ['2024-01-01', 2, 5, None]}),\n  ('until split at first',\n   ['2024-03-01', 7, None, '2024-06-01', 0, 14],\n   {'head': None, 'tail': ['2024-03-01', 14, None, '2024-06-01']})]]\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, bounded recurrence-expansion model evaluated offline on explicit fixtures; it is not a complete iCalendar implementation and makes no claim of standards conformance. 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-calendar-recurrence-rules-this-and-following-split-head-count","generated_at":"2026-09-29T14:49:21.806230+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Recurring calendar series are expanded into concrete instances for display, reminders and conflict checks.","repair":"At the head count decision use `k`, leaving the other decision sites of the model unchanged.","root_cause":"The head keeps k+1 occurrences, including the one moved to the tail.","sha256":"4df844542c5266363234e081208b6eccf6db025517f436706736c9ffdd443f8a","title":"Splitting a series for a this-and-following edit: head count · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":42.942,"exit_code":1,"observations":[{"actual":{"head":["2024-01-01",2,null],"tail":["2024-01-07",7,7,null]},"check":"regression: count series split at 3","expected":{"head":["2024-01-01",3,null],"tail":["2024-01-07",7,7,null]},"passed":false},{"actual":{"head":["2024-01-01",null,"2024-01-04"],"tail":["2024-01-07",1,null,"2024-02-01"]},"check":"until series split at 2","expected":{"head":["2024-01-01",null,"2024-01-04"],"tail":["2024-01-07",1,null,"2024-02-01"]},"passed":true},{"actual":{"head":null,"tail":["2024-01-01",2,5,null]},"check":"split at first occurrence","expected":{"head":null,"tail":["2024-01-01",2,5,null]},"passed":true},{"actual":{"head":null,"tail":["2024-03-01",14,null,"2024-06-01"]},"check":"until split at first","expected":{"head":null,"tail":["2024-03-01",14,null,"2024-06-01"]},"passed":true},{"actual":{"head":["2024-01-01",3,null],"tail":null},"check":"split exactly at count","expected":{"head":["2024-01-01",4,null],"tail":null},"passed":false},{"actual":{"head":["2024-01-01",null,"2024-01-21"],"tail":null},"check":"split past until","expected":{"head":["2024-01-01",null,"2024-01-21"],"tail":null},"passed":true},{"actual":{"head":["2024-01-01",null,"2024-01-16"],"tail":["2024-01-21",1,null,"2024-01-21"]},"check":"split at last until occurrence","expected":{"head":["2024-01-01",null,"2024-01-16"],"tail":["2024-01-21",1,null,"2024-01-21"]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: count series split at 3\", \"actual\": {\"head\": [\"2024-01-01\", 2, null], \"tail\": [\"2024-01-07\", 7, 7, null]}, \"expected\": {\"head\": [\"2024-01-01\", 3, null], \"tail\": [\"2024-01-07\", 7, 7, null]}, \"passed\": false}, {\"check\": \"until series split at 2\", \"actual\": {\"head\": [\"2024-01-01\", null, \"2024-01-04\"], \"tail\": [\"2024-01-07\", 1, null, \"2024-02-01\"]}, \"expected\": {\"head\": [\"2024-01-01\", null, \"2024-01-04\"], \"tail\": [\"2024-01-07\", 1, null, \"2024-02-01\"]}, \"passed\": true}, {\"check\": \"split at first occurrence\", \"actual\": {\"head\": null, \"tail\": [\"2024-01-01\", 2, 5, null]}, \"expected\": {\"head\": null, \"tail\": [\"2024-01-01\", 2, 5, null]}, \"passed\": true}, {\"check\": \"until split at first\", \"actual\": {\"head\": null, \"tail\": [\"2024-03-01\", 14, null, \"2024-06-01\"]}, \"expected\": {\"head\": null, \"tail\": [\"2024-03-01\", 14, null, \"2024-06-01\"]}, \"passed\": true}, {\"check\": \"split exactly at count\", \"actual\": {\"head\": [\"2024-01-01\", 3, null], \"tail\": null}, \"expected\": {\"head\": [\"2024-01-01\", 4, null], \"tail\": null}, \"passed\": false}, {\"check\": \"split past until\", \"actual\": {\"head\": [\"2024-01-01\", null, \"2024-01-21\"], \"tail\": null}, \"expected\": {\"head\": [\"2024-01-01\", null, \"2024-01-21\"], \"tail\": null}, \"passed\": true}, {\"check\": \"split at last until occurrence\", \"actual\": {\"head\": [\"2024-01-01\", null, \"2024-01-16\"], \"tail\": [\"2024-01-21\", 1, null, \"2024-01-21\"]}, \"expected\": {\"head\": [\"2024-01-01\", null, \"2024-01-16\"], \"tail\": [\"2024-01-21\", 1, null, \"2024-01-21\"]}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.302,"exit_code":1,"observations":[{"actual":{"head":["2024-01-01",4,null],"tail":["2024-01-07",7,7,null]},"check":"regression: count series split at 3","expected":{"head":["2024-01-01",3,null],"tail":["2024-01-07",7,7,null]},"passed":false},{"actual":{"head":["2024-01-01",null,"2024-01-04"],"tail":["2024-01-07",1,null,"2024-02-01"]},"check":"until series split at 2","expected":{"head":["2024-01-01",null,"2024-01-04"],"tail":["2024-01-07",1,null,"2024-02-01"]},"passed":true},{"actual":{"head":null,"tail":["2024-01-01",2,5,null]},"check":"split at first occurrence","expected":{"head":null,"tail":["2024-01-01",2,5,null]},"passed":true},{"actual":{"head":null,"tail":["2024-03-01",14,null,"2024-06-01"]},"check":"until split at first","expected":{"head":null,"tail":["2024-03-01",14,null,"2024-06-01"]},"passed":true},{"actual":{"head":["2024-01-01",5,null],"tail":null},"check":"split exactly at count","expected":{"head":["2024-01-01",4,null],"tail":null},"passed":false},{"actual":{"head":["2024-01-01",null,"2024-01-21"],"tail":null},"check":"split past until","expected":{"head":["2024-01-01",null,"2024-01-21"],"tail":null},"passed":true},{"actual":{"head":["2024-01-01",null,"2024-01-16"],"tail":["2024-01-21",1,null,"2024-01-21"]},"check":"split at last until occurrence","expected":{"head":["2024-01-01",null,"2024-01-16"],"tail":["2024-01-21",1,null,"2024-01-21"]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: count series split at 3\", \"actual\": {\"head\": [\"2024-01-01\", 4, null], \"tail\": [\"2024-01-07\", 7, 7, null]}, \"expected\": {\"head\": [\"2024-01-01\", 3, null], \"tail\": [\"2024-01-07\", 7, 7, null]}, \"passed\": false}, {\"check\": \"until series split at 2\", \"actual\": {\"head\": [\"2024-01-01\", null, \"2024-01-04\"], \"tail\": [\"2024-01-07\", 1, null, \"2024-02-01\"]}, \"expected\": {\"head\": [\"2024-01-01\", null, \"2024-01-04\"], \"tail\": [\"2024-01-07\", 1, null, \"2024-02-01\"]}, \"passed\": true}, {\"check\": \"split at first occurrence\", \"actual\": {\"head\": null, \"tail\": [\"2024-01-01\", 2, 5, null]}, \"expected\": {\"head\": null, \"tail\": [\"2024-01-01\", 2, 5, null]}, \"passed\": true}, {\"check\": \"until split at first\", \"actual\": {\"head\": null, \"tail\": [\"2024-03-01\", 14, null, \"2024-06-01\"]}, \"expected\": {\"head\": null, \"tail\": [\"2024-03-01\", 14, null, \"2024-06-01\"]}, \"passed\": true}, {\"check\": \"split exactly at count\", \"actual\": {\"head\": [\"2024-01-01\", 5, null], \"tail\": null}, \"expected\": {\"head\": [\"2024-01-01\", 4, null], \"tail\": null}, \"passed\": false}, {\"check\": \"split past until\", \"actual\": {\"head\": [\"2024-01-01\", null, \"2024-01-21\"], \"tail\": null}, \"expected\": {\"head\": [\"2024-01-01\", null, \"2024-01-21\"], \"tail\": null}, \"passed\": true}, {\"check\": \"split at last until occurrence\", \"actual\": {\"head\": [\"2024-01-01\", null, \"2024-01-16\"], \"tail\": [\"2024-01-21\", 1, null, \"2024-01-21\"]}, \"expected\": {\"head\": [\"2024-01-01\", null, \"2024-01-16\"], \"tail\": [\"2024-01-21\", 1, null, \"2024-01-21\"]}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.801,"exit_code":0,"observations":[{"actual":{"head":["2024-01-01",3,null],"tail":["2024-01-07",7,7,null]},"check":"regression: count series split at 3","expected":{"head":["2024-01-01",3,null],"tail":["2024-01-07",7,7,null]},"passed":true},{"actual":{"head":["2024-01-01",null,"2024-01-04"],"tail":["2024-01-07",1,null,"2024-02-01"]},"check":"until series split at 2","expected":{"head":["2024-01-01",null,"2024-01-04"],"tail":["2024-01-07",1,null,"2024-02-01"]},"passed":true},{"actual":{"head":null,"tail":["2024-01-01",2,5,null]},"check":"split at first occurrence","expected":{"head":null,"tail":["2024-01-01",2,5,null]},"passed":true},{"actual":{"head":null,"tail":["2024-03-01",14,null,"2024-06-01"]},"check":"until split at first","expected":{"head":null,"tail":["2024-03-01",14,null,"2024-06-01"]},"passed":true},{"actual":{"head":["2024-01-01",4,null],"tail":null},"check":"split exactly at count","expected":{"head":["2024-01-01",4,null],"tail":null},"passed":true},{"actual":{"head":["2024-01-01",null,"2024-01-21"],"tail":null},"check":"split past until","expected":{"head":["2024-01-01",null,"2024-01-21"],"tail":null},"passed":true},{"actual":{"head":["2024-01-01",null,"2024-01-16"],"tail":["2024-01-21",1,null,"2024-01-21"]},"check":"split at last until occurrence","expected":{"head":["2024-01-01",null,"2024-01-16"],"tail":["2024-01-21",1,null,"2024-01-21"]},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: count series split at 3\", \"actual\": {\"head\": [\"2024-01-01\", 3, null], \"tail\": [\"2024-01-07\", 7, 7, null]}, \"expected\": {\"head\": [\"2024-01-01\", 3, null], \"tail\": [\"2024-01-07\", 7, 7, null]}, \"passed\": true}, {\"check\": \"until series split at 2\", \"actual\": {\"head\": [\"2024-01-01\", null, \"2024-01-04\"], \"tail\": [\"2024-01-07\", 1, null, \"2024-02-01\"]}, \"expected\": {\"head\": [\"2024-01-01\", null, \"2024-01-04\"], \"tail\": [\"2024-01-07\", 1, null, \"2024-02-01\"]}, \"passed\": true}, {\"check\": \"split at first occurrence\", \"actual\": {\"head\": null, \"tail\": [\"2024-01-01\", 2, 5, null]}, \"expected\": {\"head\": null, \"tail\": [\"2024-01-01\", 2, 5, null]}, \"passed\": true}, {\"check\": \"until split at first\", \"actual\": {\"head\": null, \"tail\": [\"2024-03-01\", 14, null, \"2024-06-01\"]}, \"expected\": {\"head\": null, \"tail\": [\"2024-03-01\", 14, null, \"2024-06-01\"]}, \"passed\": true}, {\"check\": \"split exactly at count\", \"actual\": {\"head\": [\"2024-01-01\", 4, null], \"tail\": null}, \"expected\": {\"head\": [\"2024-01-01\", 4, null], \"tail\": null}, \"passed\": true}, {\"check\": \"split past until\", \"actual\": {\"head\": [\"2024-01-01\", null, \"2024-01-21\"], \"tail\": null}, \"expected\": {\"head\": [\"2024-01-01\", null, \"2024-01-21\"], \"tail\": null}, \"passed\": true}, {\"check\": \"split at last until occurrence\", \"actual\": {\"head\": [\"2024-01-01\", null, \"2024-01-16\"], \"tail\": [\"2024-01-21\", 1, null, \"2024-01-21\"]}, \"expected\": {\"head\": [\"2024-01-01\", null, \"2024-01-16\"], \"tail\": [\"2024-01-21\", 1, null, \"2024-01-21\"]}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}