FA-77161 / Calendar recurrence rules / Open access
Monthly BYDAY restricted by BYMONTHDAY (Friday the 13th): empty filter · case 01
A rule with only BYMONTHDAY produces no instances.
ROOT CAUSE
An empty BYDAY list is treated as matching no weekday.
VERIFIED REPAIR
At the empty filter decision use `not wanted or d.weekday() in wanted`, leaving the other decision sites of the model unchanged.
Unsuccessful approach: The partial repair `wanted is None or d.weekday() in wanted` tests for None, but an empty list is not None.
Case contract
FREQ=MONTHLY with BYDAY weekday codes (MO..SU) and BYMONTHDAY values (negative counts from month end). When both are present a day must satisfy both; an empty list imposes no restriction. Days are examined from dtstart forward. Return the first count ISO dates (search bounded to 50 years).
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, byday, bymonthday, count):
start = dt.date.fromisoformat(dtstart)
wanted = [['MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU'].index(w) for w in byday]
out = []
d = start
while len(out) < count and d.year < start.year + 50:
dim = calendar.monthrange(d.year, d.month)[1]
day_ok = d.weekday() in wanted
mday_ok = not bymonthday or (d.day in bymonthday or d.day - dim - 1 in bymonthday)
if day_ok and mday_ok:
out.append(d.isoformat())
d += dt.timedelta(days=1)
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: friday the 13th',
['2024-01-01', ['FR'], [13], 3],
['2024-09-13', '2024-12-13', '2025-06-13']),
('last sunday via -1..-7',
['2024-01-01', ['SU'], [-1, -2, -3, -4, -5, -6, -7], 3],
['2024-01-28', '2024-02-25', '2024-03-31']),
('only bymonthday',
['2024-01-10', [], [1, 15], 4],
['2024-01-15', '2024-02-01', '2024-02-15', '2024-03-01']),
('only byday',
['2024-01-01', ['SA', 'SU'], [], 4],
['2024-01-06', '2024-01-07', '2024-01-13', '2024-01-14']),
('last day monday', ['2024-01-01', ['MO'], [-1], 2], ['2024-09-30', '2025-03-31']),
('first monday via 1..7',
['2024-02-01', ['MO'], [1, 2, 3, 4, 5, 6, 7], 3],
['2024-02-05', '2024-03-04', '2024-04-01']),
('sunday first of month', ['2024-01-01', ['SU'], [1], 2], ['2024-09-01', '2024-12-01'])],
[('only bymonthday',
['2024-01-10', [], [1, 15], 4],
['2024-01-15', '2024-02-01', '2024-02-15', '2024-03-01']),
('only byday',
['2024-01-01', ['SA', 'SU'], [], 4],
['2024-01-06', '2024-01-07', '2024-01-13', '2024-01-14']),
('last day monday', ['2024-01-01', ['MO'], [-1], 2], ['2024-09-30', '2025-03-31']),
('first monday via 1..7',
['2024-02-01', ['MO'], [1, 2, 3, 4, 5, 6, 7], 3],
['2024-02-05', '2024-03-04', '2024-04-01']),
('sunday first of month', ['2024-01-01', ['SU'], [1], 2], ['2024-09-01', '2024-12-01']),
('tuesday 29th', ['2024-01-01', ['TU'], [29], 3], ['2024-10-29', '2025-04-29', '2025-07-29']),
('weekday 15th',
['2024-03-01', ['MO', 'TU', 'WE', 'TH', 'FR'], [15], 4],
['2024-03-15', '2024-04-15', '2024-05-15', '2024-07-15'])],
[('last day monday', ['2024-01-01', ['MO'], [-1], 2], ['2024-09-30', '2025-03-31']),
('first monday via 1..7',
['2024-02-01', ['MO'], [1, 2, 3, 4, 5, 6, 7], 3],
['2024-02-05', '2024-03-04', '2024-04-01']),
('sunday first of month', ['2024-01-01', ['SU'], [1], 2], ['2024-09-01', '2024-12-01']),
('tuesday 29th', ['2024-01-01', ['TU'], [29], 3], ['2024-10-29', '2025-04-29', '2025-07-29']),
('weekday 15th',
['2024-03-01', ['MO', 'TU', 'WE', 'TH', 'FR'], [15], 4],
['2024-03-15', '2024-04-15', '2024-05-15', '2024-07-15']),
('thursday the 13th', ['2025-01-01', ['TH'], [13], 2], ['2025-02-13', '2025-03-13']),
('regression: friday the 13th',
['2024-01-01', ['FR'], [13], 3],
['2024-09-13', '2024-12-13', '2025-06-13']),
('only bymonthday',
['2024-01-10', [], [1, 15], 4],
['2024-01-15', '2024-02-01', '2024-02-15', '2024-03-01'])],
[('sunday first of month', ['2024-01-01', ['SU'], [1], 2], ['2024-09-01', '2024-12-01']),
('tuesday 29th', ['2024-01-01', ['TU'], [29], 3], ['2024-10-29', '2025-04-29', '2025-07-29']),
('weekday 15th',
['2024-03-01', ['MO', 'TU', 'WE', 'TH', 'FR'], [15], 4],
['2024-03-15', '2024-04-15', '2024-05-15', '2024-07-15']),
('thursday the 13th', ['2025-01-01', ['TH'], [13], 2], ['2025-02-13', '2025-03-13']),
('regression: friday the 13th',
['2024-01-01', ['FR'], [13], 3],
['2024-09-13', '2024-12-13', '2025-06-13']),
('last sunday via -1..-7',
['2024-01-01', ['SU'], [-1, -2, -3, -4, -5, -6, -7], 3],
['2024-01-28', '2024-02-25', '2024-03-31']),
('only bymonthday',
['2024-01-10', [], [1, 15], 4],
['2024-01-15', '2024-02-01', '2024-02-15', '2024-03-01'])],
[('weekday 15th',
['2024-03-01', ['MO', 'TU', 'WE', 'TH', 'FR'], [15], 4],
['2024-03-15', '2024-04-15', '2024-05-15', '2024-07-15']),
('thursday the 13th', ['2025-01-01', ['TH'], [13], 2], ['2025-02-13', '2025-03-13']),
('regression: friday the 13th',
['2024-01-01', ['FR'], [13], 3],
['2024-09-13', '2024-12-13', '2025-06-13']),
('last sunday via -1..-7',
['2024-01-01', ['SU'], [-1, -2, -3, -4, -5, -6, -7], 3],
['2024-01-28', '2024-02-25', '2024-03-31']),
('only bymonthday',
['2024-01-10', [], [1, 15], 4],
['2024-01-15', '2024-02-01', '2024-02-15', '2024-03-01']),
('only byday',
['2024-01-01', ['SA', 'SU'], [], 4],
['2024-01-06', '2024-01-07', '2024-01-13', '2024-01-14']),
('last day monday', ['2024-01-01', ['MO'], [-1], 2], ['2024-09-30', '2025-03-31'])]]
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: friday the 13th | ['2024-09-13', '2024-12-13', '2025-06-13'] | ['2024-09-13', '2024-12-13', '2025-06-13'] | Passed |
| last sunday via -1..-7 | ['2024-01-28', '2024-02-25', '2024-03-31'] | ['2024-01-28', '2024-02-25', '2024-03-31'] | Passed |
| only bymonthday | [] | ['2024-01-15', '2024-02-01', '2024-02-15', '2024-03-01'] | Failed |
| only byday | ['2024-01-06', '2024-01-07', '2024-01-13', '2024-01-14'] | ['2024-01-06', '2024-01-07', '2024-01-13', '2024-01-14'] | Passed |
| last day monday | ['2024-09-30', '2025-03-31'] | ['2024-09-30', '2025-03-31'] | Passed |
| first monday via 1..7 | ['2024-02-05', '2024-03-04', '2024-04-01'] | ['2024-02-05', '2024-03-04', '2024-04-01'] | Passed |
| sunday first of month | ['2024-09-01', '2024-12-01'] | ['2024-09-01', '2024-12-01'] | Passed |
SHA-256 / 46ce01f49962e7573b7379a6c80e6fafd2d1379c0ec44915e4dfff839b653828
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, byday, bymonthday, count):
start = dt.date.fromisoformat(dtstart)
wanted = [['MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU'].index(w) for w in byday]
out = []
d = start
while len(out) < count and d.year < start.year + 50:
dim = calendar.monthrange(d.year, d.month)[1]
day_ok = wanted is None or d.weekday() in wanted
mday_ok = not bymonthday or (d.day in bymonthday or d.day - dim - 1 in bymonthday)
if day_ok and mday_ok:
out.append(d.isoformat())
d += dt.timedelta(days=1)
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: friday the 13th',
['2024-01-01', ['FR'], [13], 3],
['2024-09-13', '2024-12-13', '2025-06-13']),
('last sunday via -1..-7',
['2024-01-01', ['SU'], [-1, -2, -3, -4, -5, -6, -7], 3],
['2024-01-28', '2024-02-25', '2024-03-31']),
('only bymonthday',
['2024-01-10', [], [1, 15], 4],
['2024-01-15', '2024-02-01', '2024-02-15', '2024-03-01']),
('only byday',
['2024-01-01', ['SA', 'SU'], [], 4],
['2024-01-06', '2024-01-07', '2024-01-13', '2024-01-14']),
('last day monday', ['2024-01-01', ['MO'], [-1], 2], ['2024-09-30', '2025-03-31']),
('first monday via 1..7',
['2024-02-01', ['MO'], [1, 2, 3, 4, 5, 6, 7], 3],
['2024-02-05', '2024-03-04', '2024-04-01']),
('sunday first of month', ['2024-01-01', ['SU'], [1], 2], ['2024-09-01', '2024-12-01'])],
[('only bymonthday',
['2024-01-10', [], [1, 15], 4],
['2024-01-15', '2024-02-01', '2024-02-15', '2024-03-01']),
('only byday',
['2024-01-01', ['SA', 'SU'], [], 4],
['2024-01-06', '2024-01-07', '2024-01-13', '2024-01-14']),
('last day monday', ['2024-01-01', ['MO'], [-1], 2], ['2024-09-30', '2025-03-31']),
('first monday via 1..7',
['2024-02-01', ['MO'], [1, 2, 3, 4, 5, 6, 7], 3],
['2024-02-05', '2024-03-04', '2024-04-01']),
('sunday first of month', ['2024-01-01', ['SU'], [1], 2], ['2024-09-01', '2024-12-01']),
('tuesday 29th', ['2024-01-01', ['TU'], [29], 3], ['2024-10-29', '2025-04-29', '2025-07-29']),
('weekday 15th',
['2024-03-01', ['MO', 'TU', 'WE', 'TH', 'FR'], [15], 4],
['2024-03-15', '2024-04-15', '2024-05-15', '2024-07-15'])],
[('last day monday', ['2024-01-01', ['MO'], [-1], 2], ['2024-09-30', '2025-03-31']),
('first monday via 1..7',
['2024-02-01', ['MO'], [1, 2, 3, 4, 5, 6, 7], 3],
['2024-02-05', '2024-03-04', '2024-04-01']),
('sunday first of month', ['2024-01-01', ['SU'], [1], 2], ['2024-09-01', '2024-12-01']),
('tuesday 29th', ['2024-01-01', ['TU'], [29], 3], ['2024-10-29', '2025-04-29', '2025-07-29']),
('weekday 15th',
['2024-03-01', ['MO', 'TU', 'WE', 'TH', 'FR'], [15], 4],
['2024-03-15', '2024-04-15', '2024-05-15', '2024-07-15']),
('thursday the 13th', ['2025-01-01', ['TH'], [13], 2], ['2025-02-13', '2025-03-13']),
('regression: friday the 13th',
['2024-01-01', ['FR'], [13], 3],
['2024-09-13', '2024-12-13', '2025-06-13']),
('only bymonthday',
['2024-01-10', [], [1, 15], 4],
['2024-01-15', '2024-02-01', '2024-02-15', '2024-03-01'])],
[('sunday first of month', ['2024-01-01', ['SU'], [1], 2], ['2024-09-01', '2024-12-01']),
('tuesday 29th', ['2024-01-01', ['TU'], [29], 3], ['2024-10-29', '2025-04-29', '2025-07-29']),
('weekday 15th',
['2024-03-01', ['MO', 'TU', 'WE', 'TH', 'FR'], [15], 4],
['2024-03-15', '2024-04-15', '2024-05-15', '2024-07-15']),
('thursday the 13th', ['2025-01-01', ['TH'], [13], 2], ['2025-02-13', '2025-03-13']),
('regression: friday the 13th',
['2024-01-01', ['FR'], [13], 3],
['2024-09-13', '2024-12-13', '2025-06-13']),
('last sunday via -1..-7',
['2024-01-01', ['SU'], [-1, -2, -3, -4, -5, -6, -7], 3],
['2024-01-28', '2024-02-25', '2024-03-31']),
('only bymonthday',
['2024-01-10', [], [1, 15], 4],
['2024-01-15', '2024-02-01', '2024-02-15', '2024-03-01'])],
[('weekday 15th',
['2024-03-01', ['MO', 'TU', 'WE', 'TH', 'FR'], [15], 4],
['2024-03-15', '2024-04-15', '2024-05-15', '2024-07-15']),
('thursday the 13th', ['2025-01-01', ['TH'], [13], 2], ['2025-02-13', '2025-03-13']),
('regression: friday the 13th',
['2024-01-01', ['FR'], [13], 3],
['2024-09-13', '2024-12-13', '2025-06-13']),
('last sunday via -1..-7',
['2024-01-01', ['SU'], [-1, -2, -3, -4, -5, -6, -7], 3],
['2024-01-28', '2024-02-25', '2024-03-31']),
('only bymonthday',
['2024-01-10', [], [1, 15], 4],
['2024-01-15', '2024-02-01', '2024-02-15', '2024-03-01']),
('only byday',
['2024-01-01', ['SA', 'SU'], [], 4],
['2024-01-06', '2024-01-07', '2024-01-13', '2024-01-14']),
('last day monday', ['2024-01-01', ['MO'], [-1], 2], ['2024-09-30', '2025-03-31'])]]
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: friday the 13th | ['2024-09-13', '2024-12-13', '2025-06-13'] | ['2024-09-13', '2024-12-13', '2025-06-13'] | Passed |
| last sunday via -1..-7 | ['2024-01-28', '2024-02-25', '2024-03-31'] | ['2024-01-28', '2024-02-25', '2024-03-31'] | Passed |
| only bymonthday | [] | ['2024-01-15', '2024-02-01', '2024-02-15', '2024-03-01'] | Failed |
| only byday | ['2024-01-06', '2024-01-07', '2024-01-13', '2024-01-14'] | ['2024-01-06', '2024-01-07', '2024-01-13', '2024-01-14'] | Passed |
| last day monday | ['2024-09-30', '2025-03-31'] | ['2024-09-30', '2025-03-31'] | Passed |
| first monday via 1..7 | ['2024-02-05', '2024-03-04', '2024-04-01'] | ['2024-02-05', '2024-03-04', '2024-04-01'] | Passed |
| sunday first of month | ['2024-09-01', '2024-12-01'] | ['2024-09-01', '2024-12-01'] | Passed |
SHA-256 / 6799a3477cb511504ea260e89f4ca555df707ed27633d9fa797eb6810500251f
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, byday, bymonthday, count):
start = dt.date.fromisoformat(dtstart)
wanted = [['MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU'].index(w) for w in byday]
out = []
d = start
while len(out) < count and d.year < start.year + 50:
dim = calendar.monthrange(d.year, d.month)[1]
day_ok = not wanted or d.weekday() in wanted
mday_ok = not bymonthday or (d.day in bymonthday or d.day - dim - 1 in bymonthday)
if day_ok and mday_ok:
out.append(d.isoformat())
d += dt.timedelta(days=1)
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: friday the 13th',
['2024-01-01', ['FR'], [13], 3],
['2024-09-13', '2024-12-13', '2025-06-13']),
('last sunday via -1..-7',
['2024-01-01', ['SU'], [-1, -2, -3, -4, -5, -6, -7], 3],
['2024-01-28', '2024-02-25', '2024-03-31']),
('only bymonthday',
['2024-01-10', [], [1, 15], 4],
['2024-01-15', '2024-02-01', '2024-02-15', '2024-03-01']),
('only byday',
['2024-01-01', ['SA', 'SU'], [], 4],
['2024-01-06', '2024-01-07', '2024-01-13', '2024-01-14']),
('last day monday', ['2024-01-01', ['MO'], [-1], 2], ['2024-09-30', '2025-03-31']),
('first monday via 1..7',
['2024-02-01', ['MO'], [1, 2, 3, 4, 5, 6, 7], 3],
['2024-02-05', '2024-03-04', '2024-04-01']),
('sunday first of month', ['2024-01-01', ['SU'], [1], 2], ['2024-09-01', '2024-12-01'])],
[('only bymonthday',
['2024-01-10', [], [1, 15], 4],
['2024-01-15', '2024-02-01', '2024-02-15', '2024-03-01']),
('only byday',
['2024-01-01', ['SA', 'SU'], [], 4],
['2024-01-06', '2024-01-07', '2024-01-13', '2024-01-14']),
('last day monday', ['2024-01-01', ['MO'], [-1], 2], ['2024-09-30', '2025-03-31']),
('first monday via 1..7',
['2024-02-01', ['MO'], [1, 2, 3, 4, 5, 6, 7], 3],
['2024-02-05', '2024-03-04', '2024-04-01']),
('sunday first of month', ['2024-01-01', ['SU'], [1], 2], ['2024-09-01', '2024-12-01']),
('tuesday 29th', ['2024-01-01', ['TU'], [29], 3], ['2024-10-29', '2025-04-29', '2025-07-29']),
('weekday 15th',
['2024-03-01', ['MO', 'TU', 'WE', 'TH', 'FR'], [15], 4],
['2024-03-15', '2024-04-15', '2024-05-15', '2024-07-15'])],
[('last day monday', ['2024-01-01', ['MO'], [-1], 2], ['2024-09-30', '2025-03-31']),
('first monday via 1..7',
['2024-02-01', ['MO'], [1, 2, 3, 4, 5, 6, 7], 3],
['2024-02-05', '2024-03-04', '2024-04-01']),
('sunday first of month', ['2024-01-01', ['SU'], [1], 2], ['2024-09-01', '2024-12-01']),
('tuesday 29th', ['2024-01-01', ['TU'], [29], 3], ['2024-10-29', '2025-04-29', '2025-07-29']),
('weekday 15th',
['2024-03-01', ['MO', 'TU', 'WE', 'TH', 'FR'], [15], 4],
['2024-03-15', '2024-04-15', '2024-05-15', '2024-07-15']),
('thursday the 13th', ['2025-01-01', ['TH'], [13], 2], ['2025-02-13', '2025-03-13']),
('regression: friday the 13th',
['2024-01-01', ['FR'], [13], 3],
['2024-09-13', '2024-12-13', '2025-06-13']),
('only bymonthday',
['2024-01-10', [], [1, 15], 4],
['2024-01-15', '2024-02-01', '2024-02-15', '2024-03-01'])],
[('sunday first of month', ['2024-01-01', ['SU'], [1], 2], ['2024-09-01', '2024-12-01']),
('tuesday 29th', ['2024-01-01', ['TU'], [29], 3], ['2024-10-29', '2025-04-29', '2025-07-29']),
('weekday 15th',
['2024-03-01', ['MO', 'TU', 'WE', 'TH', 'FR'], [15], 4],
['2024-03-15', '2024-04-15', '2024-05-15', '2024-07-15']),
('thursday the 13th', ['2025-01-01', ['TH'], [13], 2], ['2025-02-13', '2025-03-13']),
('regression: friday the 13th',
['2024-01-01', ['FR'], [13], 3],
['2024-09-13', '2024-12-13', '2025-06-13']),
('last sunday via -1..-7',
['2024-01-01', ['SU'], [-1, -2, -3, -4, -5, -6, -7], 3],
['2024-01-28', '2024-02-25', '2024-03-31']),
('only bymonthday',
['2024-01-10', [], [1, 15], 4],
['2024-01-15', '2024-02-01', '2024-02-15', '2024-03-01'])],
[('weekday 15th',
['2024-03-01', ['MO', 'TU', 'WE', 'TH', 'FR'], [15], 4],
['2024-03-15', '2024-04-15', '2024-05-15', '2024-07-15']),
('thursday the 13th', ['2025-01-01', ['TH'], [13], 2], ['2025-02-13', '2025-03-13']),
('regression: friday the 13th',
['2024-01-01', ['FR'], [13], 3],
['2024-09-13', '2024-12-13', '2025-06-13']),
('last sunday via -1..-7',
['2024-01-01', ['SU'], [-1, -2, -3, -4, -5, -6, -7], 3],
['2024-01-28', '2024-02-25', '2024-03-31']),
('only bymonthday',
['2024-01-10', [], [1, 15], 4],
['2024-01-15', '2024-02-01', '2024-02-15', '2024-03-01']),
('only byday',
['2024-01-01', ['SA', 'SU'], [], 4],
['2024-01-06', '2024-01-07', '2024-01-13', '2024-01-14']),
('last day monday', ['2024-01-01', ['MO'], [-1], 2], ['2024-09-30', '2025-03-31'])]]
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: friday the 13th | ['2024-09-13', '2024-12-13', '2025-06-13'] | ['2024-09-13', '2024-12-13', '2025-06-13'] | Passed |
| last sunday via -1..-7 | ['2024-01-28', '2024-02-25', '2024-03-31'] | ['2024-01-28', '2024-02-25', '2024-03-31'] | Passed |
| only bymonthday | ['2024-01-15', '2024-02-01', '2024-02-15', '2024-03-01'] | ['2024-01-15', '2024-02-01', '2024-02-15', '2024-03-01'] | Passed |
| only byday | ['2024-01-06', '2024-01-07', '2024-01-13', '2024-01-14'] | ['2024-01-06', '2024-01-07', '2024-01-13', '2024-01-14'] | Passed |
| last day monday | ['2024-09-30', '2025-03-31'] | ['2024-09-30', '2025-03-31'] | Passed |
| first monday via 1..7 | ['2024-02-05', '2024-03-04', '2024-04-01'] | ['2024-02-05', '2024-03-04', '2024-04-01'] | Passed |
| sunday first of month | ['2024-09-01', '2024-12-01'] | ['2024-09-01', '2024-12-01'] | Passed |
SHA-256 / e409d812e32b15b0e5c732714ced8bdf9a660478ae23b6c0795c4f35aa4558b5
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:23.025863+00:00.
Case digest / e6ec649cea40b6bc87d69ed40df8150194eaecf1740a3c16bc035556a3f87855