{"abstract":"Payments fall on weekends and holidays.","category":"Bond day-count conventions","checks":8,"contract":"Inputs an unadjusted schedule (first element is the accrual start), holidays and a flag. Business days are weekdays not in holidays; adjustment is modified following. For each period the payment date is the adjusted end date; accrual days use adjusted start and end if the flag is set, otherwise the unadjusted dates. Return [[payment date, accrual days], ...].","evaluation_group":"w2-bond_day_count_conventions-adjusted-accrual-periods","failed_approach":"Plain following adjustment pushes month-end payments into the next month.","family":"w2-bond_day_count_conventions-adjusted-accrual-periods-payment-date-convention","id":"FA-61266","implementations":{"attempt":{"sha256":"fe415fa51f84f28012a8266713419172a24e32e6eb4f50917f87c9cadf499186","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime\nN = 1\nobservations = []\ndef solve(dates, holidays, adjust_accrual):\n    H = {datetime.date(*h) for h in holidays}\n    def biz(x):\n        return x.weekday() < 5 and x not in H\n    def fwd(x):\n        while not biz(x):\n            x += datetime.timedelta(days=1)\n        return x\n    def bwd(x):\n        while not biz(x):\n            x -= datetime.timedelta(days=1)\n        return x\n    def mf(x):\n        f = fwd(x)\n        return f if f.month == x.month else bwd(x)\n    out = []\n    for i in range(1, len(dates)):\n        s = datetime.date(*dates[i - 1])\n        e = datetime.date(*dates[i])\n        pay = fwd(e)\n        if adjust_accrual:\n            s, e = mf(s), mf(e)\n        out.append([[pay.year, pay.month, pay.day], (e - s).days])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression payment date convention 1', [[[2025, 10, 31], [2026, 4, 30], [2026, 10, 31]], [], True], [[[2026, 4, 30], 181], [[2026, 10, 30], 183]]], ['regression payment date convention 2', [[[2026, 2, 26], [2026, 5, 26]], [[2026, 5, 26]], False], [[[2026, 5, 27], 89]]], ['partial repair probe 1', [[[2024, 8, 31], [2025, 2, 28], [2025, 8, 31], [2026, 2, 28]], [[2026, 2, 28]], True], [[[2025, 2, 28], 182], [[2025, 8, 29], 182], [[2026, 2, 27], 182]]], ['partial repair probe 2', [[[2030, 8, 31], [2030, 9, 30], [2030, 10, 31], [2030, 11, 30], [2030, 12, 31]], [], False], [[[2030, 9, 30], 30], [[2030, 10, 31], 31], [[2030, 11, 29], 30], [[2030, 12, 31], 31]]], ['normal control 1', [[[2025, 12, 30], [2026, 6, 30], [2026, 12, 30], [2027, 6, 30], [2027, 12, 30]], [[2026, 7, 2], [2027, 12, 31]], True], [[[2026, 6, 30], 182], [[2026, 12, 30], 183], [[2027, 6, 30], 182], [[2027, 12, 30], 183]]], ['normal control 2', [[[2029, 7, 31], [2029, 10, 31], [2030, 1, 31]], [[2029, 11, 2]], True], [[[2029, 10, 31], 92], [[2030, 1, 31], 92]]], ['normal control 3', [[[2023, 5, 8], [2023, 8, 8], [2023, 11, 8]], [], True], [[[2023, 8, 8], 92], [[2023, 11, 8], 92]]], ['normal control 4', [[[2027, 11, 4], [2028, 2, 4]], [[2027, 11, 6], [2028, 2, 5]], False], [[[2028, 2, 4], 92]]]], [['regression payment date convention 1', [[[2025, 4, 19], [2025, 5, 19], [2025, 6, 19], [2025, 7, 19], [2025, 8, 19]], [[2025, 8, 20]], False], [[[2025, 5, 19], 30], [[2025, 6, 19], 31], [[2025, 7, 21], 30], [[2025, 8, 19], 31]]], ['regression payment date convention 2', [[[2025, 7, 31], [2025, 8, 31], [2025, 9, 30], [2025, 10, 31], [2025, 11, 30]], [[2025, 12, 2]], False], [[[2025, 8, 29], 31], [[2025, 9, 30], 30], [[2025, 10, 31], 31], [[2025, 11, 28], 30]]], ['partial repair probe 1', [[[2020, 11, 30], [2021, 2, 28], [2021, 5, 30], [2021, 8, 30]], [], False], [[[2021, 2, 26], 90], [[2021, 5, 31], 91], [[2021, 8, 30], 92]]], ['partial repair probe 2', [[[2021, 12, 30], [2022, 6, 30], [2022, 12, 30], [2023, 6, 30], [2023, 12, 30]], [[2022, 12, 31]], False], [[[2022, 6, 30], 182], [[2022, 12, 30], 183], [[2023, 6, 30], 182], [[2023, 12, 29], 183]]], ['normal control 1', [[[2025, 9, 30], [2026, 3, 30], [2026, 9, 30]], [[2026, 4, 1]], True], [[[2026, 3, 30], 181], [[2026, 9, 30], 184]]], ['normal control 2', [[[2024, 8, 20], [2024, 11, 20], [2025, 2, 20]], [], False], [[[2024, 11, 20], 92], [[2025, 2, 20], 92]]], ['normal control 3', [[[2019, 4, 9], [2019, 5, 9]], [], False], [[[2019, 5, 9], 30]]], ['normal control 4', [[[2030, 11, 30], [2030, 12, 30], [2031, 1, 30], [2031, 2, 28]], [], True], [[[2030, 12, 30], 31], [[2031, 1, 30], 31], [[2031, 2, 28], 29]]]], [['regression payment date convention 1', [[[2030, 1, 30], [2030, 2, 28], [2030, 3, 30], [2030, 4, 30]], [[2030, 1, 30], [2030, 3, 30]], False], [[[2030, 2, 28], 29], [[2030, 3, 29], 30], [[2030, 4, 30], 31]]], ['regression payment date convention 2', [[[2029, 6, 30], [2029, 9, 30], [2029, 12, 30]], [], True], [[[2029, 9, 28], 91], [[2029, 12, 31], 94]]], ['partial repair probe 1', [[[2021, 9, 30], [2021, 10, 30], [2021, 11, 30]], [[2021, 10, 31]], False], [[[2021, 10, 29], 30], [[2021, 11, 30], 31]]], ['partial repair probe 2', [[[2019, 3, 31], [2019, 6, 30]], [[2019, 7, 2]], True], [[[2019, 6, 28], 91]]], ['normal control 1', [[[2019, 10, 13], [2020, 4, 13]], [], False], [[[2020, 4, 13], 183]]], ['normal control 2', [[[2030, 4, 30], [2030, 10, 30], [2031, 4, 30], [2031, 10, 30]], [], True], [[[2030, 10, 30], 183], [[2031, 4, 30], 182], [[2031, 10, 30], 183]]], ['normal control 3', [[[2024, 4, 15], [2024, 10, 15]], [[2024, 4, 17]], False], [[[2024, 10, 15], 183]]], ['normal control 4', [[[2027, 11, 30], [2027, 12, 30]], [], True], [[[2027, 12, 30], 30]]]], [['regression payment date convention 1', [[[2019, 3, 28], [2019, 6, 28], [2019, 9, 28], [2019, 12, 28], [2020, 3, 28]], [[2019, 3, 29]], False], [[[2019, 6, 28], 92], [[2019, 9, 30], 92], [[2019, 12, 30], 91], [[2020, 3, 30], 91]]], ['regression payment date convention 2', [[[2027, 12, 31], [2028, 6, 30], [2028, 12, 31], [2029, 6, 30], [2029, 12, 31]], [], False], [[[2028, 6, 30], 182], [[2028, 12, 29], 184], [[2029, 6, 29], 181], [[2029, 12, 31], 184]]], ['partial repair probe 1', [[[2026, 10, 30], [2027, 1, 30], [2027, 4, 30], [2027, 7, 30]], [[2027, 5, 1]], False], [[[2027, 1, 29], 92], [[2027, 4, 30], 90], [[2027, 7, 30], 91]]], ['partial repair probe 2', [[[2023, 11, 30], [2024, 5, 30], [2024, 11, 30]], [[2023, 12, 2]], False], [[[2024, 5, 30], 182], [[2024, 11, 29], 184]]], ['normal control 1', [[[2025, 2, 28], [2025, 8, 28]], [[2025, 8, 30]], True], [[[2025, 8, 28], 181]]], ['normal control 2', [[[2025, 10, 6], [2026, 1, 6], [2026, 4, 6], [2026, 7, 6], [2026, 10, 6]], [[2026, 1, 8]], False], [[[2026, 1, 6], 92], [[2026, 4, 6], 90], [[2026, 7, 6], 91], [[2026, 10, 6], 92]]], ['normal control 3', [[[2024, 6, 30], [2024, 9, 30]], [], False], [[[2024, 9, 30], 92]]], ['normal control 4', [[[2022, 6, 6], [2022, 9, 6]], [[2022, 6, 6]], True], [[[2022, 9, 6], 91]]]], [['regression payment date convention 1', [[[2022, 9, 30], [2023, 3, 30], [2023, 9, 30]], [[2023, 10, 1]], True], [[[2023, 3, 30], 181], [[2023, 9, 29], 183]]], ['regression payment date convention 2', [[[2023, 3, 31], [2023, 6, 30], [2023, 9, 30]], [], False], [[[2023, 6, 30], 91], [[2023, 9, 29], 92]]], ['partial repair probe 1', [[[2024, 3, 31], [2024, 6, 30], [2024, 9, 30], [2024, 12, 31], [2025, 3, 31]], [], False], [[[2024, 6, 28], 91], [[2024, 9, 30], 92], [[2024, 12, 31], 92], [[2025, 3, 31], 90]]], ['partial repair probe 2', [[[2030, 8, 31], [2030, 9, 30], [2030, 10, 31], [2030, 11, 30]], [[2030, 11, 1]], True], [[[2030, 9, 30], 31], [[2030, 10, 31], 31], [[2030, 11, 29], 29]]], ['normal control 1', [[[2026, 8, 2], [2026, 9, 2], [2026, 10, 2], [2026, 11, 2], [2026, 12, 2]], [[2026, 8, 3], [2026, 11, 3]], True], [[[2026, 9, 2], 29], [[2026, 10, 2], 30], [[2026, 11, 2], 31], [[2026, 12, 2], 30]]], ['normal control 2', [[[2030, 7, 31], [2030, 10, 31]], [], False], [[[2030, 10, 31], 92]]], ['normal control 3', [[[2029, 7, 30], [2029, 10, 30], [2030, 1, 30], [2030, 4, 30]], [[2029, 7, 30]], False], [[[2029, 10, 30], 92], [[2030, 1, 30], 92], [[2030, 4, 30], 90]]], ['normal control 4', [[[2022, 8, 28], [2022, 9, 28], [2022, 10, 28], [2022, 11, 28], [2022, 12, 28]], [[2022, 8, 28]], True], [[[2022, 9, 28], 30], [[2022, 10, 28], 30], [[2022, 11, 28], 31], [[2022, 12, 28], 30]]]]]\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":"17c5ecb9611b7f890e247e04a78af15e565cb8361689e7872b6a1302e27fa4d8","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime\nN = 1\nobservations = []\ndef solve(dates, holidays, adjust_accrual):\n    H = {datetime.date(*h) for h in holidays}\n    def biz(x):\n        return x.weekday() < 5 and x not in H\n    def fwd(x):\n        while not biz(x):\n            x += datetime.timedelta(days=1)\n        return x\n    def bwd(x):\n        while not biz(x):\n            x -= datetime.timedelta(days=1)\n        return x\n    def mf(x):\n        f = fwd(x)\n        return f if f.month == x.month else bwd(x)\n    out = []\n    for i in range(1, len(dates)):\n        s = datetime.date(*dates[i - 1])\n        e = datetime.date(*dates[i])\n        pay = e\n        if adjust_accrual:\n            s, e = mf(s), mf(e)\n        out.append([[pay.year, pay.month, pay.day], (e - s).days])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression payment date convention 1', [[[2025, 10, 31], [2026, 4, 30], [2026, 10, 31]], [], True], [[[2026, 4, 30], 181], [[2026, 10, 30], 183]]], ['regression payment date convention 2', [[[2026, 2, 26], [2026, 5, 26]], [[2026, 5, 26]], False], [[[2026, 5, 27], 89]]], ['partial repair probe 1', [[[2024, 8, 31], [2025, 2, 28], [2025, 8, 31], [2026, 2, 28]], [[2026, 2, 28]], True], [[[2025, 2, 28], 182], [[2025, 8, 29], 182], [[2026, 2, 27], 182]]], ['partial repair probe 2', [[[2030, 8, 31], [2030, 9, 30], [2030, 10, 31], [2030, 11, 30], [2030, 12, 31]], [], False], [[[2030, 9, 30], 30], [[2030, 10, 31], 31], [[2030, 11, 29], 30], [[2030, 12, 31], 31]]], ['normal control 1', [[[2025, 12, 30], [2026, 6, 30], [2026, 12, 30], [2027, 6, 30], [2027, 12, 30]], [[2026, 7, 2], [2027, 12, 31]], True], [[[2026, 6, 30], 182], [[2026, 12, 30], 183], [[2027, 6, 30], 182], [[2027, 12, 30], 183]]], ['normal control 2', [[[2029, 7, 31], [2029, 10, 31], [2030, 1, 31]], [[2029, 11, 2]], True], [[[2029, 10, 31], 92], [[2030, 1, 31], 92]]], ['normal control 3', [[[2023, 5, 8], [2023, 8, 8], [2023, 11, 8]], [], True], [[[2023, 8, 8], 92], [[2023, 11, 8], 92]]], ['normal control 4', [[[2027, 11, 4], [2028, 2, 4]], [[2027, 11, 6], [2028, 2, 5]], False], [[[2028, 2, 4], 92]]]], [['regression payment date convention 1', [[[2025, 4, 19], [2025, 5, 19], [2025, 6, 19], [2025, 7, 19], [2025, 8, 19]], [[2025, 8, 20]], False], [[[2025, 5, 19], 30], [[2025, 6, 19], 31], [[2025, 7, 21], 30], [[2025, 8, 19], 31]]], ['regression payment date convention 2', [[[2025, 7, 31], [2025, 8, 31], [2025, 9, 30], [2025, 10, 31], [2025, 11, 30]], [[2025, 12, 2]], False], [[[2025, 8, 29], 31], [[2025, 9, 30], 30], [[2025, 10, 31], 31], [[2025, 11, 28], 30]]], ['partial repair probe 1', [[[2020, 11, 30], [2021, 2, 28], [2021, 5, 30], [2021, 8, 30]], [], False], [[[2021, 2, 26], 90], [[2021, 5, 31], 91], [[2021, 8, 30], 92]]], ['partial repair probe 2', [[[2021, 12, 30], [2022, 6, 30], [2022, 12, 30], [2023, 6, 30], [2023, 12, 30]], [[2022, 12, 31]], False], [[[2022, 6, 30], 182], [[2022, 12, 30], 183], [[2023, 6, 30], 182], [[2023, 12, 29], 183]]], ['normal control 1', [[[2025, 9, 30], [2026, 3, 30], [2026, 9, 30]], [[2026, 4, 1]], True], [[[2026, 3, 30], 181], [[2026, 9, 30], 184]]], ['normal control 2', [[[2024, 8, 20], [2024, 11, 20], [2025, 2, 20]], [], False], [[[2024, 11, 20], 92], [[2025, 2, 20], 92]]], ['normal control 3', [[[2019, 4, 9], [2019, 5, 9]], [], False], [[[2019, 5, 9], 30]]], ['normal control 4', [[[2030, 11, 30], [2030, 12, 30], [2031, 1, 30], [2031, 2, 28]], [], True], [[[2030, 12, 30], 31], [[2031, 1, 30], 31], [[2031, 2, 28], 29]]]], [['regression payment date convention 1', [[[2030, 1, 30], [2030, 2, 28], [2030, 3, 30], [2030, 4, 30]], [[2030, 1, 30], [2030, 3, 30]], False], [[[2030, 2, 28], 29], [[2030, 3, 29], 30], [[2030, 4, 30], 31]]], ['regression payment date convention 2', [[[2029, 6, 30], [2029, 9, 30], [2029, 12, 30]], [], True], [[[2029, 9, 28], 91], [[2029, 12, 31], 94]]], ['partial repair probe 1', [[[2021, 9, 30], [2021, 10, 30], [2021, 11, 30]], [[2021, 10, 31]], False], [[[2021, 10, 29], 30], [[2021, 11, 30], 31]]], ['partial repair probe 2', [[[2019, 3, 31], [2019, 6, 30]], [[2019, 7, 2]], True], [[[2019, 6, 28], 91]]], ['normal control 1', [[[2019, 10, 13], [2020, 4, 13]], [], False], [[[2020, 4, 13], 183]]], ['normal control 2', [[[2030, 4, 30], [2030, 10, 30], [2031, 4, 30], [2031, 10, 30]], [], True], [[[2030, 10, 30], 183], [[2031, 4, 30], 182], [[2031, 10, 30], 183]]], ['normal control 3', [[[2024, 4, 15], [2024, 10, 15]], [[2024, 4, 17]], False], [[[2024, 10, 15], 183]]], ['normal control 4', [[[2027, 11, 30], [2027, 12, 30]], [], True], [[[2027, 12, 30], 30]]]], [['regression payment date convention 1', [[[2019, 3, 28], [2019, 6, 28], [2019, 9, 28], [2019, 12, 28], [2020, 3, 28]], [[2019, 3, 29]], False], [[[2019, 6, 28], 92], [[2019, 9, 30], 92], [[2019, 12, 30], 91], [[2020, 3, 30], 91]]], ['regression payment date convention 2', [[[2027, 12, 31], [2028, 6, 30], [2028, 12, 31], [2029, 6, 30], [2029, 12, 31]], [], False], [[[2028, 6, 30], 182], [[2028, 12, 29], 184], [[2029, 6, 29], 181], [[2029, 12, 31], 184]]], ['partial repair probe 1', [[[2026, 10, 30], [2027, 1, 30], [2027, 4, 30], [2027, 7, 30]], [[2027, 5, 1]], False], [[[2027, 1, 29], 92], [[2027, 4, 30], 90], [[2027, 7, 30], 91]]], ['partial repair probe 2', [[[2023, 11, 30], [2024, 5, 30], [2024, 11, 30]], [[2023, 12, 2]], False], [[[2024, 5, 30], 182], [[2024, 11, 29], 184]]], ['normal control 1', [[[2025, 2, 28], [2025, 8, 28]], [[2025, 8, 30]], True], [[[2025, 8, 28], 181]]], ['normal control 2', [[[2025, 10, 6], [2026, 1, 6], [2026, 4, 6], [2026, 7, 6], [2026, 10, 6]], [[2026, 1, 8]], False], [[[2026, 1, 6], 92], [[2026, 4, 6], 90], [[2026, 7, 6], 91], [[2026, 10, 6], 92]]], ['normal control 3', [[[2024, 6, 30], [2024, 9, 30]], [], False], [[[2024, 9, 30], 92]]], ['normal control 4', [[[2022, 6, 6], [2022, 9, 6]], [[2022, 6, 6]], True], [[[2022, 9, 6], 91]]]], [['regression payment date convention 1', [[[2022, 9, 30], [2023, 3, 30], [2023, 9, 30]], [[2023, 10, 1]], True], [[[2023, 3, 30], 181], [[2023, 9, 29], 183]]], ['regression payment date convention 2', [[[2023, 3, 31], [2023, 6, 30], [2023, 9, 30]], [], False], [[[2023, 6, 30], 91], [[2023, 9, 29], 92]]], ['partial repair probe 1', [[[2024, 3, 31], [2024, 6, 30], [2024, 9, 30], [2024, 12, 31], [2025, 3, 31]], [], False], [[[2024, 6, 28], 91], [[2024, 9, 30], 92], [[2024, 12, 31], 92], [[2025, 3, 31], 90]]], ['partial repair probe 2', [[[2030, 8, 31], [2030, 9, 30], [2030, 10, 31], [2030, 11, 30]], [[2030, 11, 1]], True], [[[2030, 9, 30], 31], [[2030, 10, 31], 31], [[2030, 11, 29], 29]]], ['normal control 1', [[[2026, 8, 2], [2026, 9, 2], [2026, 10, 2], [2026, 11, 2], [2026, 12, 2]], [[2026, 8, 3], [2026, 11, 3]], True], [[[2026, 9, 2], 29], [[2026, 10, 2], 30], [[2026, 11, 2], 31], [[2026, 12, 2], 30]]], ['normal control 2', [[[2030, 7, 31], [2030, 10, 31]], [], False], [[[2030, 10, 31], 92]]], ['normal control 3', [[[2029, 7, 30], [2029, 10, 30], [2030, 1, 30], [2030, 4, 30]], [[2029, 7, 30]], False], [[[2029, 10, 30], 92], [[2030, 1, 30], 92], [[2030, 4, 30], 90]]], ['normal control 4', [[[2022, 8, 28], [2022, 9, 28], [2022, 10, 28], [2022, 11, 28], [2022, 12, 28]], [[2022, 8, 28]], True], [[[2022, 9, 28], 30], [[2022, 10, 28], 30], [[2022, 11, 28], 31], [[2022, 12, 28], 30]]]]]\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":"81f21379a75e38ebd753e4f2a05fb5fc8f3692112cf564e74900eb66c60b9ba3","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime\nN = 1\nobservations = []\ndef solve(dates, holidays, adjust_accrual):\n    H = {datetime.date(*h) for h in holidays}\n    def biz(x):\n        return x.weekday() < 5 and x not in H\n    def fwd(x):\n        while not biz(x):\n            x += datetime.timedelta(days=1)\n        return x\n    def bwd(x):\n        while not biz(x):\n            x -= datetime.timedelta(days=1)\n        return x\n    def mf(x):\n        f = fwd(x)\n        return f if f.month == x.month else bwd(x)\n    out = []\n    for i in range(1, len(dates)):\n        s = datetime.date(*dates[i - 1])\n        e = datetime.date(*dates[i])\n        pay = mf(e)\n        if adjust_accrual:\n            s, e = mf(s), mf(e)\n        out.append([[pay.year, pay.month, pay.day], (e - s).days])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression payment date convention 1', [[[2025, 10, 31], [2026, 4, 30], [2026, 10, 31]], [], True], [[[2026, 4, 30], 181], [[2026, 10, 30], 183]]], ['regression payment date convention 2', [[[2026, 2, 26], [2026, 5, 26]], [[2026, 5, 26]], False], [[[2026, 5, 27], 89]]], ['partial repair probe 1', [[[2024, 8, 31], [2025, 2, 28], [2025, 8, 31], [2026, 2, 28]], [[2026, 2, 28]], True], [[[2025, 2, 28], 182], [[2025, 8, 29], 182], [[2026, 2, 27], 182]]], ['partial repair probe 2', [[[2030, 8, 31], [2030, 9, 30], [2030, 10, 31], [2030, 11, 30], [2030, 12, 31]], [], False], [[[2030, 9, 30], 30], [[2030, 10, 31], 31], [[2030, 11, 29], 30], [[2030, 12, 31], 31]]], ['normal control 1', [[[2025, 12, 30], [2026, 6, 30], [2026, 12, 30], [2027, 6, 30], [2027, 12, 30]], [[2026, 7, 2], [2027, 12, 31]], True], [[[2026, 6, 30], 182], [[2026, 12, 30], 183], [[2027, 6, 30], 182], [[2027, 12, 30], 183]]], ['normal control 2', [[[2029, 7, 31], [2029, 10, 31], [2030, 1, 31]], [[2029, 11, 2]], True], [[[2029, 10, 31], 92], [[2030, 1, 31], 92]]], ['normal control 3', [[[2023, 5, 8], [2023, 8, 8], [2023, 11, 8]], [], True], [[[2023, 8, 8], 92], [[2023, 11, 8], 92]]], ['normal control 4', [[[2027, 11, 4], [2028, 2, 4]], [[2027, 11, 6], [2028, 2, 5]], False], [[[2028, 2, 4], 92]]]], [['regression payment date convention 1', [[[2025, 4, 19], [2025, 5, 19], [2025, 6, 19], [2025, 7, 19], [2025, 8, 19]], [[2025, 8, 20]], False], [[[2025, 5, 19], 30], [[2025, 6, 19], 31], [[2025, 7, 21], 30], [[2025, 8, 19], 31]]], ['regression payment date convention 2', [[[2025, 7, 31], [2025, 8, 31], [2025, 9, 30], [2025, 10, 31], [2025, 11, 30]], [[2025, 12, 2]], False], [[[2025, 8, 29], 31], [[2025, 9, 30], 30], [[2025, 10, 31], 31], [[2025, 11, 28], 30]]], ['partial repair probe 1', [[[2020, 11, 30], [2021, 2, 28], [2021, 5, 30], [2021, 8, 30]], [], False], [[[2021, 2, 26], 90], [[2021, 5, 31], 91], [[2021, 8, 30], 92]]], ['partial repair probe 2', [[[2021, 12, 30], [2022, 6, 30], [2022, 12, 30], [2023, 6, 30], [2023, 12, 30]], [[2022, 12, 31]], False], [[[2022, 6, 30], 182], [[2022, 12, 30], 183], [[2023, 6, 30], 182], [[2023, 12, 29], 183]]], ['normal control 1', [[[2025, 9, 30], [2026, 3, 30], [2026, 9, 30]], [[2026, 4, 1]], True], [[[2026, 3, 30], 181], [[2026, 9, 30], 184]]], ['normal control 2', [[[2024, 8, 20], [2024, 11, 20], [2025, 2, 20]], [], False], [[[2024, 11, 20], 92], [[2025, 2, 20], 92]]], ['normal control 3', [[[2019, 4, 9], [2019, 5, 9]], [], False], [[[2019, 5, 9], 30]]], ['normal control 4', [[[2030, 11, 30], [2030, 12, 30], [2031, 1, 30], [2031, 2, 28]], [], True], [[[2030, 12, 30], 31], [[2031, 1, 30], 31], [[2031, 2, 28], 29]]]], [['regression payment date convention 1', [[[2030, 1, 30], [2030, 2, 28], [2030, 3, 30], [2030, 4, 30]], [[2030, 1, 30], [2030, 3, 30]], False], [[[2030, 2, 28], 29], [[2030, 3, 29], 30], [[2030, 4, 30], 31]]], ['regression payment date convention 2', [[[2029, 6, 30], [2029, 9, 30], [2029, 12, 30]], [], True], [[[2029, 9, 28], 91], [[2029, 12, 31], 94]]], ['partial repair probe 1', [[[2021, 9, 30], [2021, 10, 30], [2021, 11, 30]], [[2021, 10, 31]], False], [[[2021, 10, 29], 30], [[2021, 11, 30], 31]]], ['partial repair probe 2', [[[2019, 3, 31], [2019, 6, 30]], [[2019, 7, 2]], True], [[[2019, 6, 28], 91]]], ['normal control 1', [[[2019, 10, 13], [2020, 4, 13]], [], False], [[[2020, 4, 13], 183]]], ['normal control 2', [[[2030, 4, 30], [2030, 10, 30], [2031, 4, 30], [2031, 10, 30]], [], True], [[[2030, 10, 30], 183], [[2031, 4, 30], 182], [[2031, 10, 30], 183]]], ['normal control 3', [[[2024, 4, 15], [2024, 10, 15]], [[2024, 4, 17]], False], [[[2024, 10, 15], 183]]], ['normal control 4', [[[2027, 11, 30], [2027, 12, 30]], [], True], [[[2027, 12, 30], 30]]]], [['regression payment date convention 1', [[[2019, 3, 28], [2019, 6, 28], [2019, 9, 28], [2019, 12, 28], [2020, 3, 28]], [[2019, 3, 29]], False], [[[2019, 6, 28], 92], [[2019, 9, 30], 92], [[2019, 12, 30], 91], [[2020, 3, 30], 91]]], ['regression payment date convention 2', [[[2027, 12, 31], [2028, 6, 30], [2028, 12, 31], [2029, 6, 30], [2029, 12, 31]], [], False], [[[2028, 6, 30], 182], [[2028, 12, 29], 184], [[2029, 6, 29], 181], [[2029, 12, 31], 184]]], ['partial repair probe 1', [[[2026, 10, 30], [2027, 1, 30], [2027, 4, 30], [2027, 7, 30]], [[2027, 5, 1]], False], [[[2027, 1, 29], 92], [[2027, 4, 30], 90], [[2027, 7, 30], 91]]], ['partial repair probe 2', [[[2023, 11, 30], [2024, 5, 30], [2024, 11, 30]], [[2023, 12, 2]], False], [[[2024, 5, 30], 182], [[2024, 11, 29], 184]]], ['normal control 1', [[[2025, 2, 28], [2025, 8, 28]], [[2025, 8, 30]], True], [[[2025, 8, 28], 181]]], ['normal control 2', [[[2025, 10, 6], [2026, 1, 6], [2026, 4, 6], [2026, 7, 6], [2026, 10, 6]], [[2026, 1, 8]], False], [[[2026, 1, 6], 92], [[2026, 4, 6], 90], [[2026, 7, 6], 91], [[2026, 10, 6], 92]]], ['normal control 3', [[[2024, 6, 30], [2024, 9, 30]], [], False], [[[2024, 9, 30], 92]]], ['normal control 4', [[[2022, 6, 6], [2022, 9, 6]], [[2022, 6, 6]], True], [[[2022, 9, 6], 91]]]], [['regression payment date convention 1', [[[2022, 9, 30], [2023, 3, 30], [2023, 9, 30]], [[2023, 10, 1]], True], [[[2023, 3, 30], 181], [[2023, 9, 29], 183]]], ['regression payment date convention 2', [[[2023, 3, 31], [2023, 6, 30], [2023, 9, 30]], [], False], [[[2023, 6, 30], 91], [[2023, 9, 29], 92]]], ['partial repair probe 1', [[[2024, 3, 31], [2024, 6, 30], [2024, 9, 30], [2024, 12, 31], [2025, 3, 31]], [], False], [[[2024, 6, 28], 91], [[2024, 9, 30], 92], [[2024, 12, 31], 92], [[2025, 3, 31], 90]]], ['partial repair probe 2', [[[2030, 8, 31], [2030, 9, 30], [2030, 10, 31], [2030, 11, 30]], [[2030, 11, 1]], True], [[[2030, 9, 30], 31], [[2030, 10, 31], 31], [[2030, 11, 29], 29]]], ['normal control 1', [[[2026, 8, 2], [2026, 9, 2], [2026, 10, 2], [2026, 11, 2], [2026, 12, 2]], [[2026, 8, 3], [2026, 11, 3]], True], [[[2026, 9, 2], 29], [[2026, 10, 2], 30], [[2026, 11, 2], 31], [[2026, 12, 2], 30]]], ['normal control 2', [[[2030, 7, 31], [2030, 10, 31]], [], False], [[[2030, 10, 31], 92]]], ['normal control 3', [[[2029, 7, 30], [2029, 10, 30], [2030, 1, 30], [2030, 4, 30]], [[2029, 7, 30]], False], [[[2029, 10, 30], 92], [[2030, 1, 30], 92], [[2030, 4, 30], 90]]], ['normal control 4', [[[2022, 8, 28], [2022, 9, 28], [2022, 10, 28], [2022, 11, 28], [2022, 12, 28]], [[2022, 8, 28]], True], [[[2022, 9, 28], 30], [[2022, 10, 28], 30], [[2022, 11, 28], 31], [[2022, 12, 28], 30]]]]]\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":"A deterministic toy contract stated explicitly in the contract field; no claim of conformance to any published convention text. 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-bond_day_count_conventions-adjusted-accrual-periods-payment-date-convention","generated_at":"2026-09-29T14:46:53.574117+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Bond accrual and pricing systems depend on exact day-count arithmetic; a single-day error changes settlement cash.","repair":"Pay on the modified-following adjusted end date.","root_cause":"The payment date is the raw schedule date.","sha256":"b99685a3e7bcf5f461c487b3afc84e47b5e57f7edf96b394992671b09bfa461c","title":"Adjusted versus unadjusted accrual periods: payments are made on unadjusted dates · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":44.948,"exit_code":1,"observations":[{"actual":[[[2026,4,30],181],[[2026,11,2],183]],"check":"regression payment date convention 1","expected":[[[2026,4,30],181],[[2026,10,30],183]],"passed":false},{"actual":[[[2026,5,27],89]],"check":"regression payment date convention 2","expected":[[[2026,5,27],89]],"passed":true},{"actual":[[[2025,2,28],182],[[2025,9,1],182],[[2026,3,2],182]],"check":"partial repair probe 1","expected":[[[2025,2,28],182],[[2025,8,29],182],[[2026,2,27],182]],"passed":false},{"actual":[[[2030,9,30],30],[[2030,10,31],31],[[2030,12,2],30],[[2030,12,31],31]],"check":"partial repair probe 2","expected":[[[2030,9,30],30],[[2030,10,31],31],[[2030,11,29],30],[[2030,12,31],31]],"passed":false},{"actual":[[[2026,6,30],182],[[2026,12,30],183],[[2027,6,30],182],[[2027,12,30],183]],"check":"normal control 1","expected":[[[2026,6,30],182],[[2026,12,30],183],[[2027,6,30],182],[[2027,12,30],183]],"passed":true},{"actual":[[[2029,10,31],92],[[2030,1,31],92]],"check":"normal control 2","expected":[[[2029,10,31],92],[[2030,1,31],92]],"passed":true},{"actual":[[[2023,8,8],92],[[2023,11,8],92]],"check":"normal control 3","expected":[[[2023,8,8],92],[[2023,11,8],92]],"passed":true},{"actual":[[[2028,2,4],92]],"check":"normal control 4","expected":[[[2028,2,4],92]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression payment date convention 1\", \"actual\": [[[2026, 4, 30], 181], [[2026, 11, 2], 183]], \"expected\": [[[2026, 4, 30], 181], [[2026, 10, 30], 183]], \"passed\": false}, {\"check\": \"regression payment date convention 2\", \"actual\": [[[2026, 5, 27], 89]], \"expected\": [[[2026, 5, 27], 89]], \"passed\": true}, {\"check\": \"partial repair probe 1\", \"actual\": [[[2025, 2, 28], 182], [[2025, 9, 1], 182], [[2026, 3, 2], 182]], \"expected\": [[[2025, 2, 28], 182], [[2025, 8, 29], 182], [[2026, 2, 27], 182]], \"passed\": false}, {\"check\": \"partial repair probe 2\", \"actual\": [[[2030, 9, 30], 30], [[2030, 10, 31], 31], [[2030, 12, 2], 30], [[2030, 12, 31], 31]], \"expected\": [[[2030, 9, 30], 30], [[2030, 10, 31], 31], [[2030, 11, 29], 30], [[2030, 12, 31], 31]], \"passed\": false}, {\"check\": \"normal control 1\", \"actual\": [[[2026, 6, 30], 182], [[2026, 12, 30], 183], [[2027, 6, 30], 182], [[2027, 12, 30], 183]], \"expected\": [[[2026, 6, 30], 182], [[2026, 12, 30], 183], [[2027, 6, 30], 182], [[2027, 12, 30], 183]], \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": [[[2029, 10, 31], 92], [[2030, 1, 31], 92]], \"expected\": [[[2029, 10, 31], 92], [[2030, 1, 31], 92]], \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": [[[2023, 8, 8], 92], [[2023, 11, 8], 92]], \"expected\": [[[2023, 8, 8], 92], [[2023, 11, 8], 92]], \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": [[[2028, 2, 4], 92]], \"expected\": [[[2028, 2, 4], 92]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":49.786,"exit_code":1,"observations":[{"actual":[[[2026,4,30],181],[[2026,10,31],183]],"check":"regression payment date convention 1","expected":[[[2026,4,30],181],[[2026,10,30],183]],"passed":false},{"actual":[[[2026,5,26],89]],"check":"regression payment date convention 2","expected":[[[2026,5,27],89]],"passed":false},{"actual":[[[2025,2,28],182],[[2025,8,31],182],[[2026,2,28],182]],"check":"partial repair probe 1","expected":[[[2025,2,28],182],[[2025,8,29],182],[[2026,2,27],182]],"passed":false},{"actual":[[[2030,9,30],30],[[2030,10,31],31],[[2030,11,30],30],[[2030,12,31],31]],"check":"partial repair probe 2","expected":[[[2030,9,30],30],[[2030,10,31],31],[[2030,11,29],30],[[2030,12,31],31]],"passed":false},{"actual":[[[2026,6,30],182],[[2026,12,30],183],[[2027,6,30],182],[[2027,12,30],183]],"check":"normal control 1","expected":[[[2026,6,30],182],[[2026,12,30],183],[[2027,6,30],182],[[2027,12,30],183]],"passed":true},{"actual":[[[2029,10,31],92],[[2030,1,31],92]],"check":"normal control 2","expected":[[[2029,10,31],92],[[2030,1,31],92]],"passed":true},{"actual":[[[2023,8,8],92],[[2023,11,8],92]],"check":"normal control 3","expected":[[[2023,8,8],92],[[2023,11,8],92]],"passed":true},{"actual":[[[2028,2,4],92]],"check":"normal control 4","expected":[[[2028,2,4],92]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression payment date convention 1\", \"actual\": [[[2026, 4, 30], 181], [[2026, 10, 31], 183]], \"expected\": [[[2026, 4, 30], 181], [[2026, 10, 30], 183]], \"passed\": false}, {\"check\": \"regression payment date convention 2\", \"actual\": [[[2026, 5, 26], 89]], \"expected\": [[[2026, 5, 27], 89]], \"passed\": false}, {\"check\": \"partial repair probe 1\", \"actual\": [[[2025, 2, 28], 182], [[2025, 8, 31], 182], [[2026, 2, 28], 182]], \"expected\": [[[2025, 2, 28], 182], [[2025, 8, 29], 182], [[2026, 2, 27], 182]], \"passed\": false}, {\"check\": \"partial repair probe 2\", \"actual\": [[[2030, 9, 30], 30], [[2030, 10, 31], 31], [[2030, 11, 30], 30], [[2030, 12, 31], 31]], \"expected\": [[[2030, 9, 30], 30], [[2030, 10, 31], 31], [[2030, 11, 29], 30], [[2030, 12, 31], 31]], \"passed\": false}, {\"check\": \"normal control 1\", \"actual\": [[[2026, 6, 30], 182], [[2026, 12, 30], 183], [[2027, 6, 30], 182], [[2027, 12, 30], 183]], \"expected\": [[[2026, 6, 30], 182], [[2026, 12, 30], 183], [[2027, 6, 30], 182], [[2027, 12, 30], 183]], \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": [[[2029, 10, 31], 92], [[2030, 1, 31], 92]], \"expected\": [[[2029, 10, 31], 92], [[2030, 1, 31], 92]], \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": [[[2023, 8, 8], 92], [[2023, 11, 8], 92]], \"expected\": [[[2023, 8, 8], 92], [[2023, 11, 8], 92]], \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": [[[2028, 2, 4], 92]], \"expected\": [[[2028, 2, 4], 92]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.802,"exit_code":0,"observations":[{"actual":[[[2026,4,30],181],[[2026,10,30],183]],"check":"regression payment date convention 1","expected":[[[2026,4,30],181],[[2026,10,30],183]],"passed":true},{"actual":[[[2026,5,27],89]],"check":"regression payment date convention 2","expected":[[[2026,5,27],89]],"passed":true},{"actual":[[[2025,2,28],182],[[2025,8,29],182],[[2026,2,27],182]],"check":"partial repair probe 1","expected":[[[2025,2,28],182],[[2025,8,29],182],[[2026,2,27],182]],"passed":true},{"actual":[[[2030,9,30],30],[[2030,10,31],31],[[2030,11,29],30],[[2030,12,31],31]],"check":"partial repair probe 2","expected":[[[2030,9,30],30],[[2030,10,31],31],[[2030,11,29],30],[[2030,12,31],31]],"passed":true},{"actual":[[[2026,6,30],182],[[2026,12,30],183],[[2027,6,30],182],[[2027,12,30],183]],"check":"normal control 1","expected":[[[2026,6,30],182],[[2026,12,30],183],[[2027,6,30],182],[[2027,12,30],183]],"passed":true},{"actual":[[[2029,10,31],92],[[2030,1,31],92]],"check":"normal control 2","expected":[[[2029,10,31],92],[[2030,1,31],92]],"passed":true},{"actual":[[[2023,8,8],92],[[2023,11,8],92]],"check":"normal control 3","expected":[[[2023,8,8],92],[[2023,11,8],92]],"passed":true},{"actual":[[[2028,2,4],92]],"check":"normal control 4","expected":[[[2028,2,4],92]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression payment date convention 1\", \"actual\": [[[2026, 4, 30], 181], [[2026, 10, 30], 183]], \"expected\": [[[2026, 4, 30], 181], [[2026, 10, 30], 183]], \"passed\": true}, {\"check\": \"regression payment date convention 2\", \"actual\": [[[2026, 5, 27], 89]], \"expected\": [[[2026, 5, 27], 89]], \"passed\": true}, {\"check\": \"partial repair probe 1\", \"actual\": [[[2025, 2, 28], 182], [[2025, 8, 29], 182], [[2026, 2, 27], 182]], \"expected\": [[[2025, 2, 28], 182], [[2025, 8, 29], 182], [[2026, 2, 27], 182]], \"passed\": true}, {\"check\": \"partial repair probe 2\", \"actual\": [[[2030, 9, 30], 30], [[2030, 10, 31], 31], [[2030, 11, 29], 30], [[2030, 12, 31], 31]], \"expected\": [[[2030, 9, 30], 30], [[2030, 10, 31], 31], [[2030, 11, 29], 30], [[2030, 12, 31], 31]], \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": [[[2026, 6, 30], 182], [[2026, 12, 30], 183], [[2027, 6, 30], 182], [[2027, 12, 30], 183]], \"expected\": [[[2026, 6, 30], 182], [[2026, 12, 30], 183], [[2027, 6, 30], 182], [[2027, 12, 30], 183]], \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": [[[2029, 10, 31], 92], [[2030, 1, 31], 92]], \"expected\": [[[2029, 10, 31], 92], [[2030, 1, 31], 92]], \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": [[[2023, 8, 8], 92], [[2023, 11, 8], 92]], \"expected\": [[[2023, 8, 8], 92], [[2023, 11, 8], 92]], \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": [[[2028, 2, 4], 92]], \"expected\": [[[2028, 2, 4], 92]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}