{"abstract":"A rule with only BYMINUTE fires at midnight hours instead of the dtstart hour.","category":"Calendar recurrence rules","checks":8,"contract":"FREQ=DAILY. Each day produces the cartesian product of BYHOUR and BYMINUTE in chronological order; a missing BYHOUR defaults to the dtstart hour and a missing BYMINUTE to the dtstart minute. Duplicates in either list are ignored. Times before dtstart are dropped. Return the first count ISO date-times.","contract_signature":"dtstart, byhour, byminute, count","evaluation_group":"w2-calendar-recurrence-rules-daily-byhour-byminute","failed_approach":"The partial repair `first.hour if byminute else 0` only defaults to the dtstart hour when BYMINUTE is present.","family":"w2-calendar-recurrence-rules-daily-byhour-byminute-default-hour","id":"FA-77091","implementations":{"attempt":{"sha256":"80a5d9a10e9e79f19c4f5b724b570e187e29992bf2fb10d902dbe682b686144d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime as dt\nimport calendar\nN = 1\nobservations = []\ndef solve(dtstart, byhour, byminute, count):\n    first = dt.datetime.fromisoformat(dtstart)\n    hours = sorted(set(byhour)) if byhour else [first.hour if byminute else 0]\n    minutes = sorted(set(byminute)) if byminute else [first.minute]\n    out = []\n    for k in range(400):\n        day = first.date() + dt.timedelta(days=k)\n        for h, mi in [(h, mi) for h in hours for mi in minutes]:\n            t = dt.datetime.combine(day, dt.time(h, mi))\n            if t < first:\n                continue\n            if len(out) >= count:\n                return out\n            out.append(t.isoformat(timespec='minutes'))\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: default minute from dtstart',\n   ['2024-01-01T09:30', [9, 17], [], 4],\n   ['2024-01-01T09:30', '2024-01-01T17:30', '2024-01-02T09:30', '2024-01-02T17:30']),\n  ('only byminute',\n   ['2024-01-01T14:10', [], [0, 30], 4],\n   ['2024-01-01T14:30', '2024-01-02T14:00', '2024-01-02T14:30', '2024-01-03T14:00']),\n  ('unsorted duplicate hours',\n   ['2024-01-01T08:00', [17, 9, 17], [15], 4],\n   ['2024-01-01T09:15', '2024-01-01T17:15', '2024-01-02T09:15', '2024-01-02T17:15']),\n  ('product of two lists',\n   ['2024-01-01T00:00', [9, 13], [0, 45], 5],\n   ['2024-01-01T09:00', '2024-01-01T09:45', '2024-01-01T13:00', '2024-01-01T13:45', '2024-01-02T09:00']),\n  ('dtstart after some slots',\n   ['2024-01-02T12:00', [8, 12, 18], [0], 4],\n   ['2024-01-02T12:00', '2024-01-02T18:00', '2024-01-03T08:00', '2024-01-03T12:00']),\n  ('dtstart between minutes',\n   ['2024-01-02T12:20', [12], [0, 20, 40], 4],\n   ['2024-01-02T12:20', '2024-01-02T12:40', '2024-01-03T12:00', '2024-01-03T12:20']),\n  ('three by three',\n   ['2024-03-10T00:00', [6, 12, 18], [5, 10, 50], 7],\n   ['2024-03-10T06:05',\n    '2024-03-10T06:10',\n    '2024-03-10T06:50',\n    '2024-03-10T12:05',\n    '2024-03-10T12:10',\n    '2024-03-10T12:50',\n    '2024-03-10T18:05']),\n  ('no lists',\n   ['2024-02-28T23:45', [], [], 3],\n   ['2024-02-28T23:45', '2024-02-29T23:45', '2024-03-01T23:45'])],\n [('unsorted duplicate hours',\n   ['2024-01-01T08:00', [17, 9, 17], [15], 4],\n   ['2024-01-01T09:15', '2024-01-01T17:15', '2024-01-02T09:15', '2024-01-02T17:15']),\n  ('product of two lists',\n   ['2024-01-01T00:00', [9, 13], [0, 45], 5],\n   ['2024-01-01T09:00', '2024-01-01T09:45', '2024-01-01T13:00', '2024-01-01T13:45', '2024-01-02T09:00']),\n  ('dtstart after some slots',\n   ['2024-01-02T12:00', [8, 12, 18], [0], 4],\n   ['2024-01-02T12:00', '2024-01-02T18:00', '2024-01-03T08:00', '2024-01-03T12:00']),\n  ('dtstart between minutes',\n   ['2024-01-02T12:20', [12], [0, 20, 40], 4],\n   ['2024-01-02T12:20', '2024-01-02T12:40', '2024-01-03T12:00', '2024-01-03T12:20']),\n  ('three by three',\n   ['2024-03-10T00:00', [6, 12, 18], [5, 10, 50], 7],\n   ['2024-03-10T06:05',\n    '2024-03-10T06:10',\n    '2024-03-10T06:50',\n    '2024-03-10T12:05',\n    '2024-03-10T12:10',\n    '2024-03-10T12:50',\n    '2024-03-10T18:05']),\n  ('count zero', ['2024-01-01T09:00', [9], [0], 0], []),\n  ('no lists',\n   ['2024-02-28T23:45', [], [], 3],\n   ['2024-02-28T23:45', '2024-02-29T23:45', '2024-03-01T23:45'])],\n [('dtstart after some slots',\n   ['2024-01-02T12:00', [8, 12, 18], [0], 4],\n   ['2024-01-02T12:00', '2024-01-02T18:00', '2024-01-03T08:00', '2024-01-03T12:00']),\n  ('dtstart between minutes',\n   ['2024-01-02T12:20', [12], [0, 20, 40], 4],\n   ['2024-01-02T12:20', '2024-01-02T12:40', '2024-01-03T12:00', '2024-01-03T12:20']),\n  ('three by three',\n   ['2024-03-10T00:00', [6, 12, 18], [5, 10, 50], 7],\n   ['2024-03-10T06:05',\n    '2024-03-10T06:10',\n    '2024-03-10T06:50',\n    '2024-03-10T12:05',\n    '2024-03-10T12:10',\n    '2024-03-10T12:50',\n    '2024-03-10T18:05']),\n  ('count zero', ['2024-01-01T09:00', [9], [0], 0], []),\n  ('no lists', ['2024-02-28T23:45', [], [], 3], ['2024-02-28T23:45', '2024-02-29T23:45', '2024-03-01T23:45']),\n  ('unsorted minutes',\n   ['2024-02-28T07:00', [7, 8], [50, 10], 5],\n   ['2024-02-28T07:10', '2024-02-28T07:50', '2024-02-28T08:10', '2024-02-28T08:50', '2024-02-29T07:10']),\n  ('late hour only list',\n   ['2024-05-05T22:15', [23, 1], [], 4],\n   ['2024-05-05T23:15', '2024-05-06T01:15', '2024-05-06T23:15', '2024-05-07T01:15'])],\n [('three by three',\n   ['2024-03-10T00:00', [6, 12, 18], [5, 10, 50], 7],\n   ['2024-03-10T06:05',\n    '2024-03-10T06:10',\n    '2024-03-10T06:50',\n    '2024-03-10T12:05',\n    '2024-03-10T12:10',\n    '2024-03-10T12:50',\n    '2024-03-10T18:05']),\n  ('count zero', ['2024-01-01T09:00', [9], [0], 0], []),\n  ('no lists', ['2024-02-28T23:45', [], [], 3], ['2024-02-28T23:45', '2024-02-29T23:45', '2024-03-01T23:45']),\n  ('unsorted minutes',\n   ['2024-02-28T07:00', [7, 8], [50, 10], 5],\n   ['2024-02-28T07:10', '2024-02-28T07:50', '2024-02-28T08:10', '2024-02-28T08:50', '2024-02-29T07:10']),\n  ('late hour only list',\n   ['2024-05-05T22:15', [23, 1], [], 4],\n   ['2024-05-05T23:15', '2024-05-06T01:15', '2024-05-06T23:15', '2024-05-07T01:15']),\n  ('regression: default minute from dtstart',\n   ['2024-01-01T09:30', [9, 17], [], 4],\n   ['2024-01-01T09:30', '2024-01-01T17:30', '2024-01-02T09:30', '2024-01-02T17:30']),\n  ('only byminute',\n   ['2024-01-01T14:10', [], [0, 30], 4],\n   ['2024-01-01T14:30', '2024-01-02T14:00', '2024-01-02T14:30', '2024-01-03T14:00'])],\n [('no lists', ['2024-02-28T23:45', [], [], 3], ['2024-02-28T23:45', '2024-02-29T23:45', '2024-03-01T23:45']),\n  ('unsorted minutes',\n   ['2024-02-28T07:00', [7, 8], [50, 10], 5],\n   ['2024-02-28T07:10', '2024-02-28T07:50', '2024-02-28T08:10', '2024-02-28T08:50', '2024-02-29T07:10']),\n  ('late hour only list',\n   ['2024-05-05T22:15', [23, 1], [], 4],\n   ['2024-05-05T23:15', '2024-05-06T01:15', '2024-05-06T23:15', '2024-05-07T01:15']),\n  ('regression: default minute from dtstart',\n   ['2024-01-01T09:30', [9, 17], [], 4],\n   ['2024-01-01T09:30', '2024-01-01T17:30', '2024-01-02T09:30', '2024-01-02T17:30']),\n  ('only byminute',\n   ['2024-01-01T14:10', [], [0, 30], 4],\n   ['2024-01-01T14:30', '2024-01-02T14:00', '2024-01-02T14:30', '2024-01-03T14:00']),\n  ('unsorted duplicate hours',\n   ['2024-01-01T08:00', [17, 9, 17], [15], 4],\n   ['2024-01-01T09:15', '2024-01-01T17:15', '2024-01-02T09:15', '2024-01-02T17:15']),\n  ('product of two lists',\n   ['2024-01-01T00:00', [9, 13], [0, 45], 5],\n   ['2024-01-01T09:00', '2024-01-01T09:45', '2024-01-01T13:00', '2024-01-01T13:45', '2024-01-02T09: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":"1e2b975eafeca3683e89ec55852dcdb7bc4a384e47131f8066cc7eb2ecc79751","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime as dt\nimport calendar\nN = 1\nobservations = []\ndef solve(dtstart, byhour, byminute, count):\n    first = dt.datetime.fromisoformat(dtstart)\n    hours = sorted(set(byhour)) if byhour else [0]\n    minutes = sorted(set(byminute)) if byminute else [first.minute]\n    out = []\n    for k in range(400):\n        day = first.date() + dt.timedelta(days=k)\n        for h, mi in [(h, mi) for h in hours for mi in minutes]:\n            t = dt.datetime.combine(day, dt.time(h, mi))\n            if t < first:\n                continue\n            if len(out) >= count:\n                return out\n            out.append(t.isoformat(timespec='minutes'))\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: default minute from dtstart',\n   ['2024-01-01T09:30', [9, 17], [], 4],\n   ['2024-01-01T09:30', '2024-01-01T17:30', '2024-01-02T09:30', '2024-01-02T17:30']),\n  ('only byminute',\n   ['2024-01-01T14:10', [], [0, 30], 4],\n   ['2024-01-01T14:30', '2024-01-02T14:00', '2024-01-02T14:30', '2024-01-03T14:00']),\n  ('unsorted duplicate hours',\n   ['2024-01-01T08:00', [17, 9, 17], [15], 4],\n   ['2024-01-01T09:15', '2024-01-01T17:15', '2024-01-02T09:15', '2024-01-02T17:15']),\n  ('product of two lists',\n   ['2024-01-01T00:00', [9, 13], [0, 45], 5],\n   ['2024-01-01T09:00', '2024-01-01T09:45', '2024-01-01T13:00', '2024-01-01T13:45', '2024-01-02T09:00']),\n  ('dtstart after some slots',\n   ['2024-01-02T12:00', [8, 12, 18], [0], 4],\n   ['2024-01-02T12:00', '2024-01-02T18:00', '2024-01-03T08:00', '2024-01-03T12:00']),\n  ('dtstart between minutes',\n   ['2024-01-02T12:20', [12], [0, 20, 40], 4],\n   ['2024-01-02T12:20', '2024-01-02T12:40', '2024-01-03T12:00', '2024-01-03T12:20']),\n  ('three by three',\n   ['2024-03-10T00:00', [6, 12, 18], [5, 10, 50], 7],\n   ['2024-03-10T06:05',\n    '2024-03-10T06:10',\n    '2024-03-10T06:50',\n    '2024-03-10T12:05',\n    '2024-03-10T12:10',\n    '2024-03-10T12:50',\n    '2024-03-10T18:05']),\n  ('no lists',\n   ['2024-02-28T23:45', [], [], 3],\n   ['2024-02-28T23:45', '2024-02-29T23:45', '2024-03-01T23:45'])],\n [('unsorted duplicate hours',\n   ['2024-01-01T08:00', [17, 9, 17], [15], 4],\n   ['2024-01-01T09:15', '2024-01-01T17:15', '2024-01-02T09:15', '2024-01-02T17:15']),\n  ('product of two lists',\n   ['2024-01-01T00:00', [9, 13], [0, 45], 5],\n   ['2024-01-01T09:00', '2024-01-01T09:45', '2024-01-01T13:00', '2024-01-01T13:45', '2024-01-02T09:00']),\n  ('dtstart after some slots',\n   ['2024-01-02T12:00', [8, 12, 18], [0], 4],\n   ['2024-01-02T12:00', '2024-01-02T18:00', '2024-01-03T08:00', '2024-01-03T12:00']),\n  ('dtstart between minutes',\n   ['2024-01-02T12:20', [12], [0, 20, 40], 4],\n   ['2024-01-02T12:20', '2024-01-02T12:40', '2024-01-03T12:00', '2024-01-03T12:20']),\n  ('three by three',\n   ['2024-03-10T00:00', [6, 12, 18], [5, 10, 50], 7],\n   ['2024-03-10T06:05',\n    '2024-03-10T06:10',\n    '2024-03-10T06:50',\n    '2024-03-10T12:05',\n    '2024-03-10T12:10',\n    '2024-03-10T12:50',\n    '2024-03-10T18:05']),\n  ('count zero', ['2024-01-01T09:00', [9], [0], 0], []),\n  ('no lists',\n   ['2024-02-28T23:45', [], [], 3],\n   ['2024-02-28T23:45', '2024-02-29T23:45', '2024-03-01T23:45'])],\n [('dtstart after some slots',\n   ['2024-01-02T12:00', [8, 12, 18], [0], 4],\n   ['2024-01-02T12:00', '2024-01-02T18:00', '2024-01-03T08:00', '2024-01-03T12:00']),\n  ('dtstart between minutes',\n   ['2024-01-02T12:20', [12], [0, 20, 40], 4],\n   ['2024-01-02T12:20', '2024-01-02T12:40', '2024-01-03T12:00', '2024-01-03T12:20']),\n  ('three by three',\n   ['2024-03-10T00:00', [6, 12, 18], [5, 10, 50], 7],\n   ['2024-03-10T06:05',\n    '2024-03-10T06:10',\n    '2024-03-10T06:50',\n    '2024-03-10T12:05',\n    '2024-03-10T12:10',\n    '2024-03-10T12:50',\n    '2024-03-10T18:05']),\n  ('count zero', ['2024-01-01T09:00', [9], [0], 0], []),\n  ('no lists', ['2024-02-28T23:45', [], [], 3], ['2024-02-28T23:45', '2024-02-29T23:45', '2024-03-01T23:45']),\n  ('unsorted minutes',\n   ['2024-02-28T07:00', [7, 8], [50, 10], 5],\n   ['2024-02-28T07:10', '2024-02-28T07:50', '2024-02-28T08:10', '2024-02-28T08:50', '2024-02-29T07:10']),\n  ('late hour only list',\n   ['2024-05-05T22:15', [23, 1], [], 4],\n   ['2024-05-05T23:15', '2024-05-06T01:15', '2024-05-06T23:15', '2024-05-07T01:15'])],\n [('three by three',\n   ['2024-03-10T00:00', [6, 12, 18], [5, 10, 50], 7],\n   ['2024-03-10T06:05',\n    '2024-03-10T06:10',\n    '2024-03-10T06:50',\n    '2024-03-10T12:05',\n    '2024-03-10T12:10',\n    '2024-03-10T12:50',\n    '2024-03-10T18:05']),\n  ('count zero', ['2024-01-01T09:00', [9], [0], 0], []),\n  ('no lists', ['2024-02-28T23:45', [], [], 3], ['2024-02-28T23:45', '2024-02-29T23:45', '2024-03-01T23:45']),\n  ('unsorted minutes',\n   ['2024-02-28T07:00', [7, 8], [50, 10], 5],\n   ['2024-02-28T07:10', '2024-02-28T07:50', '2024-02-28T08:10', '2024-02-28T08:50', '2024-02-29T07:10']),\n  ('late hour only list',\n   ['2024-05-05T22:15', [23, 1], [], 4],\n   ['2024-05-05T23:15', '2024-05-06T01:15', '2024-05-06T23:15', '2024-05-07T01:15']),\n  ('regression: default minute from dtstart',\n   ['2024-01-01T09:30', [9, 17], [], 4],\n   ['2024-01-01T09:30', '2024-01-01T17:30', '2024-01-02T09:30', '2024-01-02T17:30']),\n  ('only byminute',\n   ['2024-01-01T14:10', [], [0, 30], 4],\n   ['2024-01-01T14:30', '2024-01-02T14:00', '2024-01-02T14:30', '2024-01-03T14:00'])],\n [('no lists', ['2024-02-28T23:45', [], [], 3], ['2024-02-28T23:45', '2024-02-29T23:45', '2024-03-01T23:45']),\n  ('unsorted minutes',\n   ['2024-02-28T07:00', [7, 8], [50, 10], 5],\n   ['2024-02-28T07:10', '2024-02-28T07:50', '2024-02-28T08:10', '2024-02-28T08:50', '2024-02-29T07:10']),\n  ('late hour only list',\n   ['2024-05-05T22:15', [23, 1], [], 4],\n   ['2024-05-05T23:15', '2024-05-06T01:15', '2024-05-06T23:15', '2024-05-07T01:15']),\n  ('regression: default minute from dtstart',\n   ['2024-01-01T09:30', [9, 17], [], 4],\n   ['2024-01-01T09:30', '2024-01-01T17:30', '2024-01-02T09:30', '2024-01-02T17:30']),\n  ('only byminute',\n   ['2024-01-01T14:10', [], [0, 30], 4],\n   ['2024-01-01T14:30', '2024-01-02T14:00', '2024-01-02T14:30', '2024-01-03T14:00']),\n  ('unsorted duplicate hours',\n   ['2024-01-01T08:00', [17, 9, 17], [15], 4],\n   ['2024-01-01T09:15', '2024-01-01T17:15', '2024-01-02T09:15', '2024-01-02T17:15']),\n  ('product of two lists',\n   ['2024-01-01T00:00', [9, 13], [0, 45], 5],\n   ['2024-01-01T09:00', '2024-01-01T09:45', '2024-01-01T13:00', '2024-01-01T13:45', '2024-01-02T09: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, 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-daily-byhour-byminute-default-hour","generated_at":"2026-09-29T14:49:22.334013+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.","root_cause":"A missing BYHOUR defaults to hour 0.","sha256":"b2cb8330ae77af8696b0320ef8b3cabfd573e9d72ddb9fe170da07487bca9496","title":"Daily BYHOUR/BYMINUTE time-of-day expansion: default hour · 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.353,"exit_code":1,"observations":[{"actual":["2024-01-01T09:30","2024-01-01T17:30","2024-01-02T09:30","2024-01-02T17:30"],"check":"regression: default minute from dtstart","expected":["2024-01-01T09:30","2024-01-01T17:30","2024-01-02T09:30","2024-01-02T17:30"],"passed":true},{"actual":["2024-01-01T14:30","2024-01-02T14:00","2024-01-02T14:30","2024-01-03T14:00"],"check":"only byminute","expected":["2024-01-01T14:30","2024-01-02T14:00","2024-01-02T14:30","2024-01-03T14:00"],"passed":true},{"actual":["2024-01-01T09:15","2024-01-01T17:15","2024-01-02T09:15","2024-01-02T17:15"],"check":"unsorted duplicate hours","expected":["2024-01-01T09:15","2024-01-01T17:15","2024-01-02T09:15","2024-01-02T17:15"],"passed":true},{"actual":["2024-01-01T09:00","2024-01-01T09:45","2024-01-01T13:00","2024-01-01T13:45","2024-01-02T09:00"],"check":"product of two lists","expected":["2024-01-01T09:00","2024-01-01T09:45","2024-01-01T13:00","2024-01-01T13:45","2024-01-02T09:00"],"passed":true},{"actual":["2024-01-02T12:00","2024-01-02T18:00","2024-01-03T08:00","2024-01-03T12:00"],"check":"dtstart after some slots","expected":["2024-01-02T12:00","2024-01-02T18:00","2024-01-03T08:00","2024-01-03T12:00"],"passed":true},{"actual":["2024-01-02T12:20","2024-01-02T12:40","2024-01-03T12:00","2024-01-03T12:20"],"check":"dtstart between minutes","expected":["2024-01-02T12:20","2024-01-02T12:40","2024-01-03T12:00","2024-01-03T12:20"],"passed":true},{"actual":["2024-03-10T06:05","2024-03-10T06:10","2024-03-10T06:50","2024-03-10T12:05","2024-03-10T12:10","2024-03-10T12:50","2024-03-10T18:05"],"check":"three by three","expected":["2024-03-10T06:05","2024-03-10T06:10","2024-03-10T06:50","2024-03-10T12:05","2024-03-10T12:10","2024-03-10T12:50","2024-03-10T18:05"],"passed":true},{"actual":["2024-02-29T00:45","2024-03-01T00:45","2024-03-02T00:45"],"check":"no lists","expected":["2024-02-28T23:45","2024-02-29T23:45","2024-03-01T23:45"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: default minute from dtstart\", \"actual\": [\"2024-01-01T09:30\", \"2024-01-01T17:30\", \"2024-01-02T09:30\", \"2024-01-02T17:30\"], \"expected\": [\"2024-01-01T09:30\", \"2024-01-01T17:30\", \"2024-01-02T09:30\", \"2024-01-02T17:30\"], \"passed\": true}, {\"check\": \"only byminute\", \"actual\": [\"2024-01-01T14:30\", \"2024-01-02T14:00\", \"2024-01-02T14:30\", \"2024-01-03T14:00\"], \"expected\": [\"2024-01-01T14:30\", \"2024-01-02T14:00\", \"2024-01-02T14:30\", \"2024-01-03T14:00\"], \"passed\": true}, {\"check\": \"unsorted duplicate hours\", \"actual\": [\"2024-01-01T09:15\", \"2024-01-01T17:15\", \"2024-01-02T09:15\", \"2024-01-02T17:15\"], \"expected\": [\"2024-01-01T09:15\", \"2024-01-01T17:15\", \"2024-01-02T09:15\", \"2024-01-02T17:15\"], \"passed\": true}, {\"check\": \"product of two lists\", \"actual\": [\"2024-01-01T09:00\", \"2024-01-01T09:45\", \"2024-01-01T13:00\", \"2024-01-01T13:45\", \"2024-01-02T09:00\"], \"expected\": [\"2024-01-01T09:00\", \"2024-01-01T09:45\", \"2024-01-01T13:00\", \"2024-01-01T13:45\", \"2024-01-02T09:00\"], \"passed\": true}, {\"check\": \"dtstart after some slots\", \"actual\": [\"2024-01-02T12:00\", \"2024-01-02T18:00\", \"2024-01-03T08:00\", \"2024-01-03T12:00\"], \"expected\": [\"2024-01-02T12:00\", \"2024-01-02T18:00\", \"2024-01-03T08:00\", \"2024-01-03T12:00\"], \"passed\": true}, {\"check\": \"dtstart between minutes\", \"actual\": [\"2024-01-02T12:20\", \"2024-01-02T12:40\", \"2024-01-03T12:00\", \"2024-01-03T12:20\"], \"expected\": [\"2024-01-02T12:20\", \"2024-01-02T12:40\", \"2024-01-03T12:00\", \"2024-01-03T12:20\"], \"passed\": true}, {\"check\": \"three by three\", \"actual\": [\"2024-03-10T06:05\", \"2024-03-10T06:10\", \"2024-03-10T06:50\", \"2024-03-10T12:05\", \"2024-03-10T12:10\", \"2024-03-10T12:50\", \"2024-03-10T18:05\"], \"expected\": [\"2024-03-10T06:05\", \"2024-03-10T06:10\", \"2024-03-10T06:50\", \"2024-03-10T12:05\", \"2024-03-10T12:10\", \"2024-03-10T12:50\", \"2024-03-10T18:05\"], \"passed\": true}, {\"check\": \"no lists\", \"actual\": [\"2024-02-29T00:45\", \"2024-03-01T00:45\", \"2024-03-02T00:45\"], \"expected\": [\"2024-02-28T23:45\", \"2024-02-29T23:45\", \"2024-03-01T23:45\"], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.187,"exit_code":1,"observations":[{"actual":["2024-01-01T09:30","2024-01-01T17:30","2024-01-02T09:30","2024-01-02T17:30"],"check":"regression: default minute from dtstart","expected":["2024-01-01T09:30","2024-01-01T17:30","2024-01-02T09:30","2024-01-02T17:30"],"passed":true},{"actual":["2024-01-02T00:00","2024-01-02T00:30","2024-01-03T00:00","2024-01-03T00:30"],"check":"only byminute","expected":["2024-01-01T14:30","2024-01-02T14:00","2024-01-02T14:30","2024-01-03T14:00"],"passed":false},{"actual":["2024-01-01T09:15","2024-01-01T17:15","2024-01-02T09:15","2024-01-02T17:15"],"check":"unsorted duplicate hours","expected":["2024-01-01T09:15","2024-01-01T17:15","2024-01-02T09:15","2024-01-02T17:15"],"passed":true},{"actual":["2024-01-01T09:00","2024-01-01T09:45","2024-01-01T13:00","2024-01-01T13:45","2024-01-02T09:00"],"check":"product of two lists","expected":["2024-01-01T09:00","2024-01-01T09:45","2024-01-01T13:00","2024-01-01T13:45","2024-01-02T09:00"],"passed":true},{"actual":["2024-01-02T12:00","2024-01-02T18:00","2024-01-03T08:00","2024-01-03T12:00"],"check":"dtstart after some slots","expected":["2024-01-02T12:00","2024-01-02T18:00","2024-01-03T08:00","2024-01-03T12:00"],"passed":true},{"actual":["2024-01-02T12:20","2024-01-02T12:40","2024-01-03T12:00","2024-01-03T12:20"],"check":"dtstart between minutes","expected":["2024-01-02T12:20","2024-01-02T12:40","2024-01-03T12:00","2024-01-03T12:20"],"passed":true},{"actual":["2024-03-10T06:05","2024-03-10T06:10","2024-03-10T06:50","2024-03-10T12:05","2024-03-10T12:10","2024-03-10T12:50","2024-03-10T18:05"],"check":"three by three","expected":["2024-03-10T06:05","2024-03-10T06:10","2024-03-10T06:50","2024-03-10T12:05","2024-03-10T12:10","2024-03-10T12:50","2024-03-10T18:05"],"passed":true},{"actual":["2024-02-29T00:45","2024-03-01T00:45","2024-03-02T00:45"],"check":"no lists","expected":["2024-02-28T23:45","2024-02-29T23:45","2024-03-01T23:45"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: default minute from dtstart\", \"actual\": [\"2024-01-01T09:30\", \"2024-01-01T17:30\", \"2024-01-02T09:30\", \"2024-01-02T17:30\"], \"expected\": [\"2024-01-01T09:30\", \"2024-01-01T17:30\", \"2024-01-02T09:30\", \"2024-01-02T17:30\"], \"passed\": true}, {\"check\": \"only byminute\", \"actual\": [\"2024-01-02T00:00\", \"2024-01-02T00:30\", \"2024-01-03T00:00\", \"2024-01-03T00:30\"], \"expected\": [\"2024-01-01T14:30\", \"2024-01-02T14:00\", \"2024-01-02T14:30\", \"2024-01-03T14:00\"], \"passed\": false}, {\"check\": \"unsorted duplicate hours\", \"actual\": [\"2024-01-01T09:15\", \"2024-01-01T17:15\", \"2024-01-02T09:15\", \"2024-01-02T17:15\"], \"expected\": [\"2024-01-01T09:15\", \"2024-01-01T17:15\", \"2024-01-02T09:15\", \"2024-01-02T17:15\"], \"passed\": true}, {\"check\": \"product of two lists\", \"actual\": [\"2024-01-01T09:00\", \"2024-01-01T09:45\", \"2024-01-01T13:00\", \"2024-01-01T13:45\", \"2024-01-02T09:00\"], \"expected\": [\"2024-01-01T09:00\", \"2024-01-01T09:45\", \"2024-01-01T13:00\", \"2024-01-01T13:45\", \"2024-01-02T09:00\"], \"passed\": true}, {\"check\": \"dtstart after some slots\", \"actual\": [\"2024-01-02T12:00\", \"2024-01-02T18:00\", \"2024-01-03T08:00\", \"2024-01-03T12:00\"], \"expected\": [\"2024-01-02T12:00\", \"2024-01-02T18:00\", \"2024-01-03T08:00\", \"2024-01-03T12:00\"], \"passed\": true}, {\"check\": \"dtstart between minutes\", \"actual\": [\"2024-01-02T12:20\", \"2024-01-02T12:40\", \"2024-01-03T12:00\", \"2024-01-03T12:20\"], \"expected\": [\"2024-01-02T12:20\", \"2024-01-02T12:40\", \"2024-01-03T12:00\", \"2024-01-03T12:20\"], \"passed\": true}, {\"check\": \"three by three\", \"actual\": [\"2024-03-10T06:05\", \"2024-03-10T06:10\", \"2024-03-10T06:50\", \"2024-03-10T12:05\", \"2024-03-10T12:10\", \"2024-03-10T12:50\", \"2024-03-10T18:05\"], \"expected\": [\"2024-03-10T06:05\", \"2024-03-10T06:10\", \"2024-03-10T06:50\", \"2024-03-10T12:05\", \"2024-03-10T12:10\", \"2024-03-10T12:50\", \"2024-03-10T18:05\"], \"passed\": true}, {\"check\": \"no lists\", \"actual\": [\"2024-02-29T00:45\", \"2024-03-01T00:45\", \"2024-03-02T00:45\"], \"expected\": [\"2024-02-28T23:45\", \"2024-02-29T23:45\", \"2024-03-01T23:45\"], \"passed\": false}], \"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."}}