FA-76891 / Calendar recurrence rules / Open access
Monthly ordinal BYDAY such as 2TU or -1FR: first offset · case 01
The second Tuesday is computed on the wrong date in months that do not begin on Tuesday.
ROOT CAUSE
The offset from the first of the month to the target weekday is subtracted in the wrong direction.
VERIFIED REPAIR
At the first offset decision use `(weekday - first_wd) % 7`, leaving the other decision sites of the model unchanged.
Unsuccessful approach: The partial repair `abs(weekday - first_wd)` drops the modulo and so goes wrong whenever the first weekday of the month is after the target.
Case contract
FREQ=MONTHLY;BYDAY=<ordinal><weekday>. weekday is 0=Monday..6=Sunday; ordinal 1..5 counts from the start of the month and -1..-5 from the end. A month lacking that occurrence is skipped and does not consume COUNT. Months step by interval from the dtstart month; instances before dtstart are dropped. Return the first count ISO dates.
Why this case matters
Recurring calendar series are expanded into concrete instances for display, reminders and conflict checks.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import datetime as dt
import calendar
N = 1
observations = []
def solve(dtstart, interval, ordinal, weekday, count):
start = dt.date.fromisoformat(dtstart)
out = []
for k in range(600):
if len(out) >= count:
return out
mi = start.month - 1 + k * interval
y, m = start.year + mi // 12, mi % 12 + 1
dim = calendar.monthrange(y, m)[1]
first_wd = dt.date(y, m, 1).weekday()
last_wd = dt.date(y, m, dim).weekday()
if ordinal > 0:
day = 1 + (first_wd - weekday) % 7 + 7 * (ordinal - 1)
else:
day = dim - (last_wd - weekday) % 7 + 7 * (ordinal + 1)
if day < 1 or day > dim:
continue
d = dt.date(y, m, day)
if d < start:
continue
out.append(d.isoformat())
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: second tuesday',
['2024-01-01', 1, 2, 1, 4],
['2024-01-09', '2024-02-13', '2024-03-12', '2024-04-09']),
('last friday', ['2024-01-01', 1, -1, 4, 4], ['2024-01-26', '2024-02-23', '2024-03-29', '2024-04-26']),
('second to last sunday',
['2024-02-01', 1, -2, 6, 4],
['2024-02-18', '2024-03-24', '2024-04-21', '2024-05-19']),
('fifth monday skips months', ['2024-01-01', 1, 5, 0, 3], ['2024-01-29', '2024-04-29', '2024-07-29']),
('fifth-to-last thursday', ['2024-01-01', 1, -5, 3, 3], ['2024-02-01', '2024-05-02', '2024-08-01']),
('interval 2 first saturday',
['2024-11-01', 2, 1, 5, 4],
['2024-11-02', '2025-01-04', '2025-03-01', '2025-05-03']),
('first-month occurrence before dtstart',
['2024-03-20', 1, 1, 2, 3],
['2024-04-03', '2024-05-01', '2024-06-05'])],
[('second to last sunday',
['2024-02-01', 1, -2, 6, 4],
['2024-02-18', '2024-03-24', '2024-04-21', '2024-05-19']),
('fifth monday skips months', ['2024-01-01', 1, 5, 0, 3], ['2024-01-29', '2024-04-29', '2024-07-29']),
('fifth-to-last thursday', ['2024-01-01', 1, -5, 3, 3], ['2024-02-01', '2024-05-02', '2024-08-01']),
('interval 2 first saturday',
['2024-11-01', 2, 1, 5, 4],
['2024-11-02', '2025-01-04', '2025-03-01', '2025-05-03']),
('first-month occurrence before dtstart',
['2024-03-20', 1, 1, 2, 3],
['2024-04-03', '2024-05-01', '2024-06-05']),
('third wednesday quarterly',
['2023-12-01', 3, 3, 2, 4],
['2023-12-20', '2024-03-20', '2024-06-19', '2024-09-18']),
('fourth sunday', ['2025-02-10', 1, 4, 6, 4], ['2025-02-23', '2025-03-23', '2025-04-27', '2025-05-25'])],
[('fifth-to-last thursday', ['2024-01-01', 1, -5, 3, 3], ['2024-02-01', '2024-05-02', '2024-08-01']),
('interval 2 first saturday',
['2024-11-01', 2, 1, 5, 4],
['2024-11-02', '2025-01-04', '2025-03-01', '2025-05-03']),
('first-month occurrence before dtstart',
['2024-03-20', 1, 1, 2, 3],
['2024-04-03', '2024-05-01', '2024-06-05']),
('third wednesday quarterly',
['2023-12-01', 3, 3, 2, 4],
['2023-12-20', '2024-03-20', '2024-06-19', '2024-09-18']),
('fourth sunday', ['2025-02-10', 1, 4, 6, 4], ['2025-02-23', '2025-03-23', '2025-04-27', '2025-05-25']),
('last monday dtstart on it', ['2024-05-27', 1, -1, 0, 3], ['2024-05-27', '2024-06-24', '2024-07-29']),
('count zero', ['2024-01-01', 1, 1, 0, 0], [])],
[('first-month occurrence before dtstart',
['2024-03-20', 1, 1, 2, 3],
['2024-04-03', '2024-05-01', '2024-06-05']),
('third wednesday quarterly',
['2023-12-01', 3, 3, 2, 4],
['2023-12-20', '2024-03-20', '2024-06-19', '2024-09-18']),
('fourth sunday', ['2025-02-10', 1, 4, 6, 4], ['2025-02-23', '2025-03-23', '2025-04-27', '2025-05-25']),
('last monday dtstart on it', ['2024-05-27', 1, -1, 0, 3], ['2024-05-27', '2024-06-24', '2024-07-29']),
('count zero', ['2024-01-01', 1, 1, 0, 0], []),
('fifth friday interval 1',
['2024-02-01', 1, 5, 4, 4],
['2024-03-29', '2024-05-31', '2024-08-30', '2024-11-29']),
('regression: second tuesday',
['2024-01-01', 1, 2, 1, 4],
['2024-01-09', '2024-02-13', '2024-03-12', '2024-04-09'])],
[('fourth sunday', ['2025-02-10', 1, 4, 6, 4], ['2025-02-23', '2025-03-23', '2025-04-27', '2025-05-25']),
('last monday dtstart on it', ['2024-05-27', 1, -1, 0, 3], ['2024-05-27', '2024-06-24', '2024-07-29']),
('count zero', ['2024-01-01', 1, 1, 0, 0], []),
('fifth friday interval 1',
['2024-02-01', 1, 5, 4, 4],
['2024-03-29', '2024-05-31', '2024-08-30', '2024-11-29']),
('regression: second tuesday',
['2024-01-01', 1, 2, 1, 4],
['2024-01-09', '2024-02-13', '2024-03-12', '2024-04-09']),
('last friday', ['2024-01-01', 1, -1, 4, 4], ['2024-01-26', '2024-02-23', '2024-03-29', '2024-04-26']),
('second to last sunday',
['2024-02-01', 1, -2, 6, 4],
['2024-02-18', '2024-03-24', '2024-04-21', '2024-05-19'])]]
for label, args, expected in fixtures[N-1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: second tuesday | ['2024-01-14', '2024-02-10', '2024-03-11', '2024-04-14'] | ['2024-01-09', '2024-02-13', '2024-03-12', '2024-04-09'] | Failed |
| last friday | ['2024-01-26', '2024-02-23', '2024-03-29', '2024-04-26'] | ['2024-01-26', '2024-02-23', '2024-03-29', '2024-04-26'] | Passed |
| second to last sunday | ['2024-02-18', '2024-03-24', '2024-04-21', '2024-05-19'] | ['2024-02-18', '2024-03-24', '2024-04-21', '2024-05-19'] | Passed |
| fifth monday skips months | ['2024-01-29', '2024-04-29', '2024-05-31'] | ['2024-01-29', '2024-04-29', '2024-07-29'] | Failed |
| fifth-to-last thursday | ['2024-02-01', '2024-05-02', '2024-08-01'] | ['2024-02-01', '2024-05-02', '2024-08-01'] | Passed |
| interval 2 first saturday | ['2024-11-07', '2025-01-05', '2025-03-01', '2025-05-06'] | ['2024-11-02', '2025-01-04', '2025-03-01', '2025-05-03'] | Failed |
| first-month occurrence before dtstart | ['2024-04-06', '2024-05-01', '2024-06-04'] | ['2024-04-03', '2024-05-01', '2024-06-05'] | Failed |
SHA-256 / 4c42957ae5f0fdd6fd9e604b24c813f0721e550c0af14e537f0b484e715f25b0
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import datetime as dt
import calendar
N = 1
observations = []
def solve(dtstart, interval, ordinal, weekday, count):
start = dt.date.fromisoformat(dtstart)
out = []
for k in range(600):
if len(out) >= count:
return out
mi = start.month - 1 + k * interval
y, m = start.year + mi // 12, mi % 12 + 1
dim = calendar.monthrange(y, m)[1]
first_wd = dt.date(y, m, 1).weekday()
last_wd = dt.date(y, m, dim).weekday()
if ordinal > 0:
day = 1 + abs(weekday - first_wd) + 7 * (ordinal - 1)
else:
day = dim - (last_wd - weekday) % 7 + 7 * (ordinal + 1)
if day < 1 or day > dim:
continue
d = dt.date(y, m, day)
if d < start:
continue
out.append(d.isoformat())
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: second tuesday',
['2024-01-01', 1, 2, 1, 4],
['2024-01-09', '2024-02-13', '2024-03-12', '2024-04-09']),
('last friday', ['2024-01-01', 1, -1, 4, 4], ['2024-01-26', '2024-02-23', '2024-03-29', '2024-04-26']),
('second to last sunday',
['2024-02-01', 1, -2, 6, 4],
['2024-02-18', '2024-03-24', '2024-04-21', '2024-05-19']),
('fifth monday skips months', ['2024-01-01', 1, 5, 0, 3], ['2024-01-29', '2024-04-29', '2024-07-29']),
('fifth-to-last thursday', ['2024-01-01', 1, -5, 3, 3], ['2024-02-01', '2024-05-02', '2024-08-01']),
('interval 2 first saturday',
['2024-11-01', 2, 1, 5, 4],
['2024-11-02', '2025-01-04', '2025-03-01', '2025-05-03']),
('first-month occurrence before dtstart',
['2024-03-20', 1, 1, 2, 3],
['2024-04-03', '2024-05-01', '2024-06-05'])],
[('second to last sunday',
['2024-02-01', 1, -2, 6, 4],
['2024-02-18', '2024-03-24', '2024-04-21', '2024-05-19']),
('fifth monday skips months', ['2024-01-01', 1, 5, 0, 3], ['2024-01-29', '2024-04-29', '2024-07-29']),
('fifth-to-last thursday', ['2024-01-01', 1, -5, 3, 3], ['2024-02-01', '2024-05-02', '2024-08-01']),
('interval 2 first saturday',
['2024-11-01', 2, 1, 5, 4],
['2024-11-02', '2025-01-04', '2025-03-01', '2025-05-03']),
('first-month occurrence before dtstart',
['2024-03-20', 1, 1, 2, 3],
['2024-04-03', '2024-05-01', '2024-06-05']),
('third wednesday quarterly',
['2023-12-01', 3, 3, 2, 4],
['2023-12-20', '2024-03-20', '2024-06-19', '2024-09-18']),
('fourth sunday', ['2025-02-10', 1, 4, 6, 4], ['2025-02-23', '2025-03-23', '2025-04-27', '2025-05-25'])],
[('fifth-to-last thursday', ['2024-01-01', 1, -5, 3, 3], ['2024-02-01', '2024-05-02', '2024-08-01']),
('interval 2 first saturday',
['2024-11-01', 2, 1, 5, 4],
['2024-11-02', '2025-01-04', '2025-03-01', '2025-05-03']),
('first-month occurrence before dtstart',
['2024-03-20', 1, 1, 2, 3],
['2024-04-03', '2024-05-01', '2024-06-05']),
('third wednesday quarterly',
['2023-12-01', 3, 3, 2, 4],
['2023-12-20', '2024-03-20', '2024-06-19', '2024-09-18']),
('fourth sunday', ['2025-02-10', 1, 4, 6, 4], ['2025-02-23', '2025-03-23', '2025-04-27', '2025-05-25']),
('last monday dtstart on it', ['2024-05-27', 1, -1, 0, 3], ['2024-05-27', '2024-06-24', '2024-07-29']),
('count zero', ['2024-01-01', 1, 1, 0, 0], [])],
[('first-month occurrence before dtstart',
['2024-03-20', 1, 1, 2, 3],
['2024-04-03', '2024-05-01', '2024-06-05']),
('third wednesday quarterly',
['2023-12-01', 3, 3, 2, 4],
['2023-12-20', '2024-03-20', '2024-06-19', '2024-09-18']),
('fourth sunday', ['2025-02-10', 1, 4, 6, 4], ['2025-02-23', '2025-03-23', '2025-04-27', '2025-05-25']),
('last monday dtstart on it', ['2024-05-27', 1, -1, 0, 3], ['2024-05-27', '2024-06-24', '2024-07-29']),
('count zero', ['2024-01-01', 1, 1, 0, 0], []),
('fifth friday interval 1',
['2024-02-01', 1, 5, 4, 4],
['2024-03-29', '2024-05-31', '2024-08-30', '2024-11-29']),
('regression: second tuesday',
['2024-01-01', 1, 2, 1, 4],
['2024-01-09', '2024-02-13', '2024-03-12', '2024-04-09'])],
[('fourth sunday', ['2025-02-10', 1, 4, 6, 4], ['2025-02-23', '2025-03-23', '2025-04-27', '2025-05-25']),
('last monday dtstart on it', ['2024-05-27', 1, -1, 0, 3], ['2024-05-27', '2024-06-24', '2024-07-29']),
('count zero', ['2024-01-01', 1, 1, 0, 0], []),
('fifth friday interval 1',
['2024-02-01', 1, 5, 4, 4],
['2024-03-29', '2024-05-31', '2024-08-30', '2024-11-29']),
('regression: second tuesday',
['2024-01-01', 1, 2, 1, 4],
['2024-01-09', '2024-02-13', '2024-03-12', '2024-04-09']),
('last friday', ['2024-01-01', 1, -1, 4, 4], ['2024-01-26', '2024-02-23', '2024-03-29', '2024-04-26']),
('second to last sunday',
['2024-02-01', 1, -2, 6, 4],
['2024-02-18', '2024-03-24', '2024-04-21', '2024-05-19'])]]
for label, args, expected in fixtures[N-1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: second tuesday | ['2024-01-09', '2024-02-10', '2024-03-11', '2024-04-09'] | ['2024-01-09', '2024-02-13', '2024-03-12', '2024-04-09'] | Failed |
| last friday | ['2024-01-26', '2024-02-23', '2024-03-29', '2024-04-26'] | ['2024-01-26', '2024-02-23', '2024-03-29', '2024-04-26'] | Passed |
| second to last sunday | ['2024-02-18', '2024-03-24', '2024-04-21', '2024-05-19'] | ['2024-02-18', '2024-03-24', '2024-04-21', '2024-05-19'] | Passed |
| fifth monday skips months | ['2024-01-29', '2024-04-29', '2024-05-31'] | ['2024-01-29', '2024-04-29', '2024-07-29'] | Failed |
| fifth-to-last thursday | ['2024-02-01', '2024-05-02', '2024-08-01'] | ['2024-02-01', '2024-05-02', '2024-08-01'] | Passed |
| interval 2 first saturday | ['2024-11-02', '2025-01-04', '2025-03-01', '2025-05-03'] | ['2024-11-02', '2025-01-04', '2025-03-01', '2025-05-03'] | Passed |
| first-month occurrence before dtstart | ['2024-04-03', '2024-05-01', '2024-06-04'] | ['2024-04-03', '2024-05-01', '2024-06-05'] | Failed |
SHA-256 / 617f07b24cfdf5c7669f6ed19c434ca6e81df8ff05c55d1b1c2a6341ca01bcff
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
import datetime as dt
import calendar
N = 1
observations = []
def solve(dtstart, interval, ordinal, weekday, count):
start = dt.date.fromisoformat(dtstart)
out = []
for k in range(600):
if len(out) >= count:
return out
mi = start.month - 1 + k * interval
y, m = start.year + mi // 12, mi % 12 + 1
dim = calendar.monthrange(y, m)[1]
first_wd = dt.date(y, m, 1).weekday()
last_wd = dt.date(y, m, dim).weekday()
if ordinal > 0:
day = 1 + (weekday - first_wd) % 7 + 7 * (ordinal - 1)
else:
day = dim - (last_wd - weekday) % 7 + 7 * (ordinal + 1)
if day < 1 or day > dim:
continue
d = dt.date(y, m, day)
if d < start:
continue
out.append(d.isoformat())
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: second tuesday',
['2024-01-01', 1, 2, 1, 4],
['2024-01-09', '2024-02-13', '2024-03-12', '2024-04-09']),
('last friday', ['2024-01-01', 1, -1, 4, 4], ['2024-01-26', '2024-02-23', '2024-03-29', '2024-04-26']),
('second to last sunday',
['2024-02-01', 1, -2, 6, 4],
['2024-02-18', '2024-03-24', '2024-04-21', '2024-05-19']),
('fifth monday skips months', ['2024-01-01', 1, 5, 0, 3], ['2024-01-29', '2024-04-29', '2024-07-29']),
('fifth-to-last thursday', ['2024-01-01', 1, -5, 3, 3], ['2024-02-01', '2024-05-02', '2024-08-01']),
('interval 2 first saturday',
['2024-11-01', 2, 1, 5, 4],
['2024-11-02', '2025-01-04', '2025-03-01', '2025-05-03']),
('first-month occurrence before dtstart',
['2024-03-20', 1, 1, 2, 3],
['2024-04-03', '2024-05-01', '2024-06-05'])],
[('second to last sunday',
['2024-02-01', 1, -2, 6, 4],
['2024-02-18', '2024-03-24', '2024-04-21', '2024-05-19']),
('fifth monday skips months', ['2024-01-01', 1, 5, 0, 3], ['2024-01-29', '2024-04-29', '2024-07-29']),
('fifth-to-last thursday', ['2024-01-01', 1, -5, 3, 3], ['2024-02-01', '2024-05-02', '2024-08-01']),
('interval 2 first saturday',
['2024-11-01', 2, 1, 5, 4],
['2024-11-02', '2025-01-04', '2025-03-01', '2025-05-03']),
('first-month occurrence before dtstart',
['2024-03-20', 1, 1, 2, 3],
['2024-04-03', '2024-05-01', '2024-06-05']),
('third wednesday quarterly',
['2023-12-01', 3, 3, 2, 4],
['2023-12-20', '2024-03-20', '2024-06-19', '2024-09-18']),
('fourth sunday', ['2025-02-10', 1, 4, 6, 4], ['2025-02-23', '2025-03-23', '2025-04-27', '2025-05-25'])],
[('fifth-to-last thursday', ['2024-01-01', 1, -5, 3, 3], ['2024-02-01', '2024-05-02', '2024-08-01']),
('interval 2 first saturday',
['2024-11-01', 2, 1, 5, 4],
['2024-11-02', '2025-01-04', '2025-03-01', '2025-05-03']),
('first-month occurrence before dtstart',
['2024-03-20', 1, 1, 2, 3],
['2024-04-03', '2024-05-01', '2024-06-05']),
('third wednesday quarterly',
['2023-12-01', 3, 3, 2, 4],
['2023-12-20', '2024-03-20', '2024-06-19', '2024-09-18']),
('fourth sunday', ['2025-02-10', 1, 4, 6, 4], ['2025-02-23', '2025-03-23', '2025-04-27', '2025-05-25']),
('last monday dtstart on it', ['2024-05-27', 1, -1, 0, 3], ['2024-05-27', '2024-06-24', '2024-07-29']),
('count zero', ['2024-01-01', 1, 1, 0, 0], [])],
[('first-month occurrence before dtstart',
['2024-03-20', 1, 1, 2, 3],
['2024-04-03', '2024-05-01', '2024-06-05']),
('third wednesday quarterly',
['2023-12-01', 3, 3, 2, 4],
['2023-12-20', '2024-03-20', '2024-06-19', '2024-09-18']),
('fourth sunday', ['2025-02-10', 1, 4, 6, 4], ['2025-02-23', '2025-03-23', '2025-04-27', '2025-05-25']),
('last monday dtstart on it', ['2024-05-27', 1, -1, 0, 3], ['2024-05-27', '2024-06-24', '2024-07-29']),
('count zero', ['2024-01-01', 1, 1, 0, 0], []),
('fifth friday interval 1',
['2024-02-01', 1, 5, 4, 4],
['2024-03-29', '2024-05-31', '2024-08-30', '2024-11-29']),
('regression: second tuesday',
['2024-01-01', 1, 2, 1, 4],
['2024-01-09', '2024-02-13', '2024-03-12', '2024-04-09'])],
[('fourth sunday', ['2025-02-10', 1, 4, 6, 4], ['2025-02-23', '2025-03-23', '2025-04-27', '2025-05-25']),
('last monday dtstart on it', ['2024-05-27', 1, -1, 0, 3], ['2024-05-27', '2024-06-24', '2024-07-29']),
('count zero', ['2024-01-01', 1, 1, 0, 0], []),
('fifth friday interval 1',
['2024-02-01', 1, 5, 4, 4],
['2024-03-29', '2024-05-31', '2024-08-30', '2024-11-29']),
('regression: second tuesday',
['2024-01-01', 1, 2, 1, 4],
['2024-01-09', '2024-02-13', '2024-03-12', '2024-04-09']),
('last friday', ['2024-01-01', 1, -1, 4, 4], ['2024-01-26', '2024-02-23', '2024-03-29', '2024-04-26']),
('second to last sunday',
['2024-02-01', 1, -2, 6, 4],
['2024-02-18', '2024-03-24', '2024-04-21', '2024-05-19'])]]
for label, args, expected in fixtures[N-1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: second tuesday | ['2024-01-09', '2024-02-13', '2024-03-12', '2024-04-09'] | ['2024-01-09', '2024-02-13', '2024-03-12', '2024-04-09'] | Passed |
| last friday | ['2024-01-26', '2024-02-23', '2024-03-29', '2024-04-26'] | ['2024-01-26', '2024-02-23', '2024-03-29', '2024-04-26'] | Passed |
| second to last sunday | ['2024-02-18', '2024-03-24', '2024-04-21', '2024-05-19'] | ['2024-02-18', '2024-03-24', '2024-04-21', '2024-05-19'] | Passed |
| fifth monday skips months | ['2024-01-29', '2024-04-29', '2024-07-29'] | ['2024-01-29', '2024-04-29', '2024-07-29'] | Passed |
| fifth-to-last thursday | ['2024-02-01', '2024-05-02', '2024-08-01'] | ['2024-02-01', '2024-05-02', '2024-08-01'] | Passed |
| interval 2 first saturday | ['2024-11-02', '2025-01-04', '2025-03-01', '2025-05-03'] | ['2024-11-02', '2025-01-04', '2025-03-01', '2025-05-03'] | Passed |
| first-month occurrence before dtstart | ['2024-04-03', '2024-05-01', '2024-06-05'] | ['2024-04-03', '2024-05-01', '2024-06-05'] | Passed |
SHA-256 / b70d22243522dc8f082b97152d290a819d5dfa2c95838ff8e8075b20b484fd03
Verification & scope
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.
Observations recorded using Python 3.12.14 at 2026-09-29T14:49:20.487951+00:00.
Case digest / e2b1389af5e3fa4f865f535d0c37009a7efb4b2e8f6665edefda2edc822bae3c