{"abstract":"An unsorted step list lets an earlier step override a later one.","category":"Bond day-count conventions","checks":8,"contract":"Inputs prev and next coupon dates, settlement in [prev, next], a list of [date, rate] steps (unordered; a step applies on and after its date), the base rate before any step, and frequency. Each accrued day d in [prev, settle) earns the rate in force on d. Accrued = 100/freq * sum(rates)/days(prev, next), rounded to 6.","evaluation_group":"w2-bond_day_count_conventions-step-up-accrual","failed_approach":"Sorting by rate instead of date only works for monotone step-ups.","family":"w2-bond_day_count_conventions-step-up-accrual-step-ordering","id":"FA-61176","implementations":{"attempt":{"sha256":"98c6e5e404f6878cf49c67def3de586c15131c68158f8ce41ae202124a151146","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(prev, nxt, settle, steps, base_rate, freq):\n    P = datetime.date(*prev)\n    Q = datetime.date(*nxt)\n    S = datetime.date(*settle)\n    period = (Q - P).days\n    sched = sorted(((datetime.date(*s[0]), s[1]) for s in steps), key=lambda s: s[1])\n    def rate_on(x):\n        r = base_rate\n        for when, v in sched:\n            if when <= x:\n                r = v\n        return r\n    total = Fraction(0)\n    x = P\n    while x < S:\n        total += Fraction(str(rate_on(x)))\n        x += datetime.timedelta(days=1)\n    return round(float(total * 100 / freq / period), 6)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression step ordering 1', [[2019, 10, 1], [2020, 1, 1], [2019, 12, 5], [[[2019, 10, 4], 0.04], [[2019, 9, 15], 0.035], [[2019, 12, 13], 0.07], [[2019, 10, 19], 0.06]], 0.025, 4], 0.95788], ['regression step ordering 2', [[2024, 8, 26], [2025, 2, 26], [2024, 10, 18], [[[2024, 10, 7], 0.07], [[2025, 2, 12], 0.04], [[2024, 8, 4], 0.04], [[2025, 1, 25], 0.07]], 0.025, 2], 0.665761], ['partial repair probe 1', [[2010, 6, 16], [2010, 9, 16], [2010, 7, 25], [[[2010, 6, 16], 0.05], [[2010, 8, 24], 0.04], [[2010, 7, 16], 0.035]], 0.025, 4], 0.493207], ['partial repair probe 2', [[2014, 5, 4], [2015, 5, 4], [2015, 1, 27], [[[2014, 5, 20], 0.07], [[2014, 8, 20], 0.04], [[2014, 9, 8], 0.04], [[2015, 5, 7], 0.035]], 0.02, 1], 3.605479], ['boundary control 1', [[2024, 1, 1], [2024, 7, 1], [2024, 4, 1], [[[2024, 3, 1], 0.05]], 0.02, 2], 0.755495], ['boundary control 2', [[2024, 1, 1], [2024, 7, 1], [2024, 1, 1], [], 0.02, 2], 0.0], ['normal control 1', [[2012, 5, 20], [2013, 5, 20], [2012, 8, 4], [[[2012, 9, 20], 0.05], [[2013, 3, 23], 0.035], [[2012, 8, 4], 0.08]], 0.02, 1], 0.416438], ['normal control 2', [[2029, 5, 1], [2030, 5, 1], [2029, 7, 19], [[[2030, 4, 3], 0.06], [[2029, 10, 8], 0.06], [[2030, 2, 26], 0.05]], 0.025, 1], 0.541096]], [['regression step ordering 1', [[2016, 7, 22], [2017, 7, 22], [2016, 12, 15], [[[2016, 11, 9], 0.07], [[2016, 10, 28], 0.05], [[2016, 8, 16], 0.035]], 0.025, 1], 1.726027], ['regression step ordering 2', [[2011, 12, 24], [2012, 3, 24], [2012, 3, 24], [[[2011, 12, 13], 0.06], [[2011, 11, 30], 0.04], [[2012, 1, 1], 0.04], [[2012, 3, 24], 0.08]], 0.02, 4], 1.043956], ['partial repair probe 1', [[2019, 8, 21], [2019, 11, 21], [2019, 10, 4], [[[2019, 10, 23], 0.07], [[2019, 11, 27], 0.035], [[2019, 8, 26], 0.06], [[2019, 8, 28], 0.05], [[2019, 10, 4], 0.08]], 0.02, 4], 0.5625], ['partial repair probe 2', [[2021, 12, 11], [2022, 12, 11], [2022, 5, 14], [[[2021, 11, 21], 0.06], [[2022, 6, 9], 0.035], [[2022, 6, 2], 0.05], [[2022, 3, 26], 0.03]], 0.02, 1], 2.128767], ['boundary control 1', [[2024, 1, 1], [2024, 7, 1], [2024, 4, 1], [[[2024, 3, 1], 0.05]], 0.02, 2], 0.755495], ['boundary control 2', [[2024, 1, 1], [2024, 7, 1], [2024, 1, 1], [], 0.02, 2], 0.0], ['normal control 1', [[2012, 5, 20], [2012, 11, 20], [2012, 7, 11], [], 0.02, 2], 0.282609], ['normal control 2', [[2028, 12, 31], [2029, 3, 31], [2029, 1, 2], [[[2029, 4, 5], 0.03], [[2029, 1, 2], 0.08]], 0.02, 4], 0.011111]], [['regression step ordering 1', [[2010, 10, 28], [2011, 1, 28], [2010, 12, 26], [[[2011, 1, 30], 0.07], [[2010, 12, 12], 0.06], [[2010, 12, 10], 0.035]], 0.02, 4], 0.480978], ['regression step ordering 2', [[2020, 5, 20], [2020, 8, 20], [2020, 6, 19], [[[2020, 6, 8], 0.05], [[2020, 5, 26], 0.04], [[2020, 7, 3], 0.07], [[2020, 6, 14], 0.06]], 0.02, 4], 0.336957], ['partial repair probe 1', [[2028, 5, 25], [2028, 11, 25], [2028, 11, 8], [[[2028, 8, 20], 0.05], [[2028, 9, 1], 0.04], [[2028, 11, 8], 0.08]], 0.02, 2], 1.375], ['partial repair probe 2', [[2024, 8, 30], [2025, 8, 30], [2025, 6, 15], [[[2024, 12, 7], 0.06], [[2025, 7, 7], 0.06], [[2025, 5, 4], 0.035]], 0.025, 1], 3.513699], ['boundary control 1', [[2024, 1, 1], [2024, 7, 1], [2024, 1, 1], [], 0.02, 2], 0.0], ['boundary control 2', [[2024, 1, 1], [2024, 7, 1], [2024, 4, 1], [[[2024, 3, 1], 0.05]], 0.02, 2], 0.755495], ['normal control 1', [[2015, 12, 18], [2016, 12, 18], [2016, 2, 18], [[[2016, 1, 21], 0.07], [[2016, 10, 27], 0.035], [[2016, 11, 26], 0.05], [[2016, 11, 4], 0.07], [[2016, 2, 18], 0.08]], 0.02, 1], 0.721311], ['normal control 2', [[2025, 7, 28], [2026, 1, 28], [2025, 10, 12], [], 0.025, 2], 0.516304]], [['regression step ordering 1', [[2029, 10, 31], [2030, 4, 30], [2029, 11, 13], [[[2030, 4, 3], 0.06], [[2029, 10, 20], 0.035], [[2029, 10, 12], 0.03]], 0.02, 2], 0.125691], ['regression step ordering 2', [[2020, 4, 16], [2021, 4, 16], [2021, 1, 31], [[[2020, 11, 22], 0.07], [[2020, 7, 13], 0.04], [[2020, 6, 7], 0.07]], 0.02, 1], 3.764384], ['partial repair probe 1', [[2022, 4, 14], [2022, 10, 14], [2022, 7, 5], [[[2022, 6, 21], 0.04], [[2022, 6, 26], 0.035], [[2022, 7, 23], 0.035]], 0.02, 2], 0.512295], ['partial repair probe 2', [[2028, 4, 28], [2028, 7, 28], [2028, 7, 15], [[[2028, 6, 22], 0.07], [[2028, 6, 27], 0.05]], 0.02, 4], 0.645604], ['boundary control 1', [[2024, 1, 1], [2024, 7, 1], [2024, 4, 1], [[[2024, 3, 1], 0.05]], 0.02, 2], 0.755495], ['boundary control 2', [[2024, 1, 1], [2024, 7, 1], [2024, 1, 1], [], 0.02, 2], 0.0], ['normal control 1', [[2034, 1, 31], [2035, 1, 31], [2034, 2, 15], [[[2034, 11, 25], 0.07], [[2035, 1, 10], 0.07], [[2035, 1, 8], 0.06], [[2034, 6, 3], 0.06]], 0.025, 1], 0.10274], ['normal control 2', [[2037, 3, 10], [2037, 6, 10], [2037, 4, 22], [[[2037, 6, 12], 0.05], [[2037, 4, 28], 0.07], [[2037, 2, 25], 0.03], [[2037, 6, 10], 0.04]], 0.025, 4], 0.350543]], [['regression step ordering 1', [[2022, 11, 20], [2023, 11, 20], [2023, 10, 7], [[[2023, 2, 28], 0.07], [[2023, 10, 6], 0.03], [[2023, 4, 6], 0.03], [[2023, 7, 5], 0.07]], 0.02, 1], 3.789041], ['regression step ordering 2', [[2012, 10, 1], [2013, 4, 1], [2013, 3, 7], [[[2012, 11, 13], 0.05], [[2012, 9, 7], 0.07]], 0.02, 2], 2.392857], ['partial repair probe 1', [[2034, 3, 30], [2034, 9, 30], [2034, 7, 23], [[[2034, 6, 8], 0.06], [[2034, 7, 22], 0.035], [[2034, 8, 20], 0.035], [[2034, 7, 29], 0.06]], 0.025, 2], 1.202446], ['partial repair probe 2', [[2029, 6, 1], [2029, 12, 1], [2029, 9, 11], [[[2029, 6, 3], 0.07], [[2029, 9, 28], 0.07], [[2029, 8, 2], 0.03]], 0.025, 2], 1.489071], ['boundary control 1', [[2024, 1, 1], [2024, 7, 1], [2024, 1, 1], [], 0.02, 2], 0.0], ['boundary control 2', [[2024, 1, 1], [2024, 7, 1], [2024, 4, 1], [[[2024, 3, 1], 0.05]], 0.02, 2], 0.755495], ['normal control 1', [[2040, 12, 2], [2041, 3, 2], [2041, 1, 13], [[[2041, 1, 10], 0.035], [[2041, 1, 13], 0.08]], 0.02, 4], 0.245833], ['normal control 2', [[2029, 1, 28], [2029, 7, 28], [2029, 4, 23], [[[2029, 1, 27], 0.04], [[2029, 3, 10], 0.05], [[2029, 4, 27], 0.03], [[2029, 6, 2], 0.06], [[2029, 4, 23], 0.08]], 0.02, 2], 1.060773]]]\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":"b03d03c764330e554e86b33b9a1ec0ca0103fd20d3ab52f0adfdaf82706c32b3","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(prev, nxt, settle, steps, base_rate, freq):\n    P = datetime.date(*prev)\n    Q = datetime.date(*nxt)\n    S = datetime.date(*settle)\n    period = (Q - P).days\n    sched = [(datetime.date(*s[0]), s[1]) for s in steps]\n    def rate_on(x):\n        r = base_rate\n        for when, v in sched:\n            if when <= x:\n                r = v\n        return r\n    total = Fraction(0)\n    x = P\n    while x < S:\n        total += Fraction(str(rate_on(x)))\n        x += datetime.timedelta(days=1)\n    return round(float(total * 100 / freq / period), 6)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression step ordering 1', [[2019, 10, 1], [2020, 1, 1], [2019, 12, 5], [[[2019, 10, 4], 0.04], [[2019, 9, 15], 0.035], [[2019, 12, 13], 0.07], [[2019, 10, 19], 0.06]], 0.025, 4], 0.95788], ['regression step ordering 2', [[2024, 8, 26], [2025, 2, 26], [2024, 10, 18], [[[2024, 10, 7], 0.07], [[2025, 2, 12], 0.04], [[2024, 8, 4], 0.04], [[2025, 1, 25], 0.07]], 0.025, 2], 0.665761], ['partial repair probe 1', [[2010, 6, 16], [2010, 9, 16], [2010, 7, 25], [[[2010, 6, 16], 0.05], [[2010, 8, 24], 0.04], [[2010, 7, 16], 0.035]], 0.025, 4], 0.493207], ['partial repair probe 2', [[2014, 5, 4], [2015, 5, 4], [2015, 1, 27], [[[2014, 5, 20], 0.07], [[2014, 8, 20], 0.04], [[2014, 9, 8], 0.04], [[2015, 5, 7], 0.035]], 0.02, 1], 3.605479], ['boundary control 1', [[2024, 1, 1], [2024, 7, 1], [2024, 4, 1], [[[2024, 3, 1], 0.05]], 0.02, 2], 0.755495], ['boundary control 2', [[2024, 1, 1], [2024, 7, 1], [2024, 1, 1], [], 0.02, 2], 0.0], ['normal control 1', [[2012, 5, 20], [2013, 5, 20], [2012, 8, 4], [[[2012, 9, 20], 0.05], [[2013, 3, 23], 0.035], [[2012, 8, 4], 0.08]], 0.02, 1], 0.416438], ['normal control 2', [[2029, 5, 1], [2030, 5, 1], [2029, 7, 19], [[[2030, 4, 3], 0.06], [[2029, 10, 8], 0.06], [[2030, 2, 26], 0.05]], 0.025, 1], 0.541096]], [['regression step ordering 1', [[2016, 7, 22], [2017, 7, 22], [2016, 12, 15], [[[2016, 11, 9], 0.07], [[2016, 10, 28], 0.05], [[2016, 8, 16], 0.035]], 0.025, 1], 1.726027], ['regression step ordering 2', [[2011, 12, 24], [2012, 3, 24], [2012, 3, 24], [[[2011, 12, 13], 0.06], [[2011, 11, 30], 0.04], [[2012, 1, 1], 0.04], [[2012, 3, 24], 0.08]], 0.02, 4], 1.043956], ['partial repair probe 1', [[2019, 8, 21], [2019, 11, 21], [2019, 10, 4], [[[2019, 10, 23], 0.07], [[2019, 11, 27], 0.035], [[2019, 8, 26], 0.06], [[2019, 8, 28], 0.05], [[2019, 10, 4], 0.08]], 0.02, 4], 0.5625], ['partial repair probe 2', [[2021, 12, 11], [2022, 12, 11], [2022, 5, 14], [[[2021, 11, 21], 0.06], [[2022, 6, 9], 0.035], [[2022, 6, 2], 0.05], [[2022, 3, 26], 0.03]], 0.02, 1], 2.128767], ['boundary control 1', [[2024, 1, 1], [2024, 7, 1], [2024, 4, 1], [[[2024, 3, 1], 0.05]], 0.02, 2], 0.755495], ['boundary control 2', [[2024, 1, 1], [2024, 7, 1], [2024, 1, 1], [], 0.02, 2], 0.0], ['normal control 1', [[2012, 5, 20], [2012, 11, 20], [2012, 7, 11], [], 0.02, 2], 0.282609], ['normal control 2', [[2028, 12, 31], [2029, 3, 31], [2029, 1, 2], [[[2029, 4, 5], 0.03], [[2029, 1, 2], 0.08]], 0.02, 4], 0.011111]], [['regression step ordering 1', [[2010, 10, 28], [2011, 1, 28], [2010, 12, 26], [[[2011, 1, 30], 0.07], [[2010, 12, 12], 0.06], [[2010, 12, 10], 0.035]], 0.02, 4], 0.480978], ['regression step ordering 2', [[2020, 5, 20], [2020, 8, 20], [2020, 6, 19], [[[2020, 6, 8], 0.05], [[2020, 5, 26], 0.04], [[2020, 7, 3], 0.07], [[2020, 6, 14], 0.06]], 0.02, 4], 0.336957], ['partial repair probe 1', [[2028, 5, 25], [2028, 11, 25], [2028, 11, 8], [[[2028, 8, 20], 0.05], [[2028, 9, 1], 0.04], [[2028, 11, 8], 0.08]], 0.02, 2], 1.375], ['partial repair probe 2', [[2024, 8, 30], [2025, 8, 30], [2025, 6, 15], [[[2024, 12, 7], 0.06], [[2025, 7, 7], 0.06], [[2025, 5, 4], 0.035]], 0.025, 1], 3.513699], ['boundary control 1', [[2024, 1, 1], [2024, 7, 1], [2024, 1, 1], [], 0.02, 2], 0.0], ['boundary control 2', [[2024, 1, 1], [2024, 7, 1], [2024, 4, 1], [[[2024, 3, 1], 0.05]], 0.02, 2], 0.755495], ['normal control 1', [[2015, 12, 18], [2016, 12, 18], [2016, 2, 18], [[[2016, 1, 21], 0.07], [[2016, 10, 27], 0.035], [[2016, 11, 26], 0.05], [[2016, 11, 4], 0.07], [[2016, 2, 18], 0.08]], 0.02, 1], 0.721311], ['normal control 2', [[2025, 7, 28], [2026, 1, 28], [2025, 10, 12], [], 0.025, 2], 0.516304]], [['regression step ordering 1', [[2029, 10, 31], [2030, 4, 30], [2029, 11, 13], [[[2030, 4, 3], 0.06], [[2029, 10, 20], 0.035], [[2029, 10, 12], 0.03]], 0.02, 2], 0.125691], ['regression step ordering 2', [[2020, 4, 16], [2021, 4, 16], [2021, 1, 31], [[[2020, 11, 22], 0.07], [[2020, 7, 13], 0.04], [[2020, 6, 7], 0.07]], 0.02, 1], 3.764384], ['partial repair probe 1', [[2022, 4, 14], [2022, 10, 14], [2022, 7, 5], [[[2022, 6, 21], 0.04], [[2022, 6, 26], 0.035], [[2022, 7, 23], 0.035]], 0.02, 2], 0.512295], ['partial repair probe 2', [[2028, 4, 28], [2028, 7, 28], [2028, 7, 15], [[[2028, 6, 22], 0.07], [[2028, 6, 27], 0.05]], 0.02, 4], 0.645604], ['boundary control 1', [[2024, 1, 1], [2024, 7, 1], [2024, 4, 1], [[[2024, 3, 1], 0.05]], 0.02, 2], 0.755495], ['boundary control 2', [[2024, 1, 1], [2024, 7, 1], [2024, 1, 1], [], 0.02, 2], 0.0], ['normal control 1', [[2034, 1, 31], [2035, 1, 31], [2034, 2, 15], [[[2034, 11, 25], 0.07], [[2035, 1, 10], 0.07], [[2035, 1, 8], 0.06], [[2034, 6, 3], 0.06]], 0.025, 1], 0.10274], ['normal control 2', [[2037, 3, 10], [2037, 6, 10], [2037, 4, 22], [[[2037, 6, 12], 0.05], [[2037, 4, 28], 0.07], [[2037, 2, 25], 0.03], [[2037, 6, 10], 0.04]], 0.025, 4], 0.350543]], [['regression step ordering 1', [[2022, 11, 20], [2023, 11, 20], [2023, 10, 7], [[[2023, 2, 28], 0.07], [[2023, 10, 6], 0.03], [[2023, 4, 6], 0.03], [[2023, 7, 5], 0.07]], 0.02, 1], 3.789041], ['regression step ordering 2', [[2012, 10, 1], [2013, 4, 1], [2013, 3, 7], [[[2012, 11, 13], 0.05], [[2012, 9, 7], 0.07]], 0.02, 2], 2.392857], ['partial repair probe 1', [[2034, 3, 30], [2034, 9, 30], [2034, 7, 23], [[[2034, 6, 8], 0.06], [[2034, 7, 22], 0.035], [[2034, 8, 20], 0.035], [[2034, 7, 29], 0.06]], 0.025, 2], 1.202446], ['partial repair probe 2', [[2029, 6, 1], [2029, 12, 1], [2029, 9, 11], [[[2029, 6, 3], 0.07], [[2029, 9, 28], 0.07], [[2029, 8, 2], 0.03]], 0.025, 2], 1.489071], ['boundary control 1', [[2024, 1, 1], [2024, 7, 1], [2024, 1, 1], [], 0.02, 2], 0.0], ['boundary control 2', [[2024, 1, 1], [2024, 7, 1], [2024, 4, 1], [[[2024, 3, 1], 0.05]], 0.02, 2], 0.755495], ['normal control 1', [[2040, 12, 2], [2041, 3, 2], [2041, 1, 13], [[[2041, 1, 10], 0.035], [[2041, 1, 13], 0.08]], 0.02, 4], 0.245833], ['normal control 2', [[2029, 1, 28], [2029, 7, 28], [2029, 4, 23], [[[2029, 1, 27], 0.04], [[2029, 3, 10], 0.05], [[2029, 4, 27], 0.03], [[2029, 6, 2], 0.06], [[2029, 4, 23], 0.08]], 0.02, 2], 1.060773]]]\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":"60355abf245e12312226211ad41e95375eadcfcd04570dd5b28d01d66754fdf1","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(prev, nxt, settle, steps, base_rate, freq):\n    P = datetime.date(*prev)\n    Q = datetime.date(*nxt)\n    S = datetime.date(*settle)\n    period = (Q - P).days\n    sched = sorted((datetime.date(*s[0]), s[1]) for s in steps)\n    def rate_on(x):\n        r = base_rate\n        for when, v in sched:\n            if when <= x:\n                r = v\n        return r\n    total = Fraction(0)\n    x = P\n    while x < S:\n        total += Fraction(str(rate_on(x)))\n        x += datetime.timedelta(days=1)\n    return round(float(total * 100 / freq / period), 6)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression step ordering 1', [[2019, 10, 1], [2020, 1, 1], [2019, 12, 5], [[[2019, 10, 4], 0.04], [[2019, 9, 15], 0.035], [[2019, 12, 13], 0.07], [[2019, 10, 19], 0.06]], 0.025, 4], 0.95788], ['regression step ordering 2', [[2024, 8, 26], [2025, 2, 26], [2024, 10, 18], [[[2024, 10, 7], 0.07], [[2025, 2, 12], 0.04], [[2024, 8, 4], 0.04], [[2025, 1, 25], 0.07]], 0.025, 2], 0.665761], ['partial repair probe 1', [[2010, 6, 16], [2010, 9, 16], [2010, 7, 25], [[[2010, 6, 16], 0.05], [[2010, 8, 24], 0.04], [[2010, 7, 16], 0.035]], 0.025, 4], 0.493207], ['partial repair probe 2', [[2014, 5, 4], [2015, 5, 4], [2015, 1, 27], [[[2014, 5, 20], 0.07], [[2014, 8, 20], 0.04], [[2014, 9, 8], 0.04], [[2015, 5, 7], 0.035]], 0.02, 1], 3.605479], ['boundary control 1', [[2024, 1, 1], [2024, 7, 1], [2024, 4, 1], [[[2024, 3, 1], 0.05]], 0.02, 2], 0.755495], ['boundary control 2', [[2024, 1, 1], [2024, 7, 1], [2024, 1, 1], [], 0.02, 2], 0.0], ['normal control 1', [[2012, 5, 20], [2013, 5, 20], [2012, 8, 4], [[[2012, 9, 20], 0.05], [[2013, 3, 23], 0.035], [[2012, 8, 4], 0.08]], 0.02, 1], 0.416438], ['normal control 2', [[2029, 5, 1], [2030, 5, 1], [2029, 7, 19], [[[2030, 4, 3], 0.06], [[2029, 10, 8], 0.06], [[2030, 2, 26], 0.05]], 0.025, 1], 0.541096]], [['regression step ordering 1', [[2016, 7, 22], [2017, 7, 22], [2016, 12, 15], [[[2016, 11, 9], 0.07], [[2016, 10, 28], 0.05], [[2016, 8, 16], 0.035]], 0.025, 1], 1.726027], ['regression step ordering 2', [[2011, 12, 24], [2012, 3, 24], [2012, 3, 24], [[[2011, 12, 13], 0.06], [[2011, 11, 30], 0.04], [[2012, 1, 1], 0.04], [[2012, 3, 24], 0.08]], 0.02, 4], 1.043956], ['partial repair probe 1', [[2019, 8, 21], [2019, 11, 21], [2019, 10, 4], [[[2019, 10, 23], 0.07], [[2019, 11, 27], 0.035], [[2019, 8, 26], 0.06], [[2019, 8, 28], 0.05], [[2019, 10, 4], 0.08]], 0.02, 4], 0.5625], ['partial repair probe 2', [[2021, 12, 11], [2022, 12, 11], [2022, 5, 14], [[[2021, 11, 21], 0.06], [[2022, 6, 9], 0.035], [[2022, 6, 2], 0.05], [[2022, 3, 26], 0.03]], 0.02, 1], 2.128767], ['boundary control 1', [[2024, 1, 1], [2024, 7, 1], [2024, 4, 1], [[[2024, 3, 1], 0.05]], 0.02, 2], 0.755495], ['boundary control 2', [[2024, 1, 1], [2024, 7, 1], [2024, 1, 1], [], 0.02, 2], 0.0], ['normal control 1', [[2012, 5, 20], [2012, 11, 20], [2012, 7, 11], [], 0.02, 2], 0.282609], ['normal control 2', [[2028, 12, 31], [2029, 3, 31], [2029, 1, 2], [[[2029, 4, 5], 0.03], [[2029, 1, 2], 0.08]], 0.02, 4], 0.011111]], [['regression step ordering 1', [[2010, 10, 28], [2011, 1, 28], [2010, 12, 26], [[[2011, 1, 30], 0.07], [[2010, 12, 12], 0.06], [[2010, 12, 10], 0.035]], 0.02, 4], 0.480978], ['regression step ordering 2', [[2020, 5, 20], [2020, 8, 20], [2020, 6, 19], [[[2020, 6, 8], 0.05], [[2020, 5, 26], 0.04], [[2020, 7, 3], 0.07], [[2020, 6, 14], 0.06]], 0.02, 4], 0.336957], ['partial repair probe 1', [[2028, 5, 25], [2028, 11, 25], [2028, 11, 8], [[[2028, 8, 20], 0.05], [[2028, 9, 1], 0.04], [[2028, 11, 8], 0.08]], 0.02, 2], 1.375], ['partial repair probe 2', [[2024, 8, 30], [2025, 8, 30], [2025, 6, 15], [[[2024, 12, 7], 0.06], [[2025, 7, 7], 0.06], [[2025, 5, 4], 0.035]], 0.025, 1], 3.513699], ['boundary control 1', [[2024, 1, 1], [2024, 7, 1], [2024, 1, 1], [], 0.02, 2], 0.0], ['boundary control 2', [[2024, 1, 1], [2024, 7, 1], [2024, 4, 1], [[[2024, 3, 1], 0.05]], 0.02, 2], 0.755495], ['normal control 1', [[2015, 12, 18], [2016, 12, 18], [2016, 2, 18], [[[2016, 1, 21], 0.07], [[2016, 10, 27], 0.035], [[2016, 11, 26], 0.05], [[2016, 11, 4], 0.07], [[2016, 2, 18], 0.08]], 0.02, 1], 0.721311], ['normal control 2', [[2025, 7, 28], [2026, 1, 28], [2025, 10, 12], [], 0.025, 2], 0.516304]], [['regression step ordering 1', [[2029, 10, 31], [2030, 4, 30], [2029, 11, 13], [[[2030, 4, 3], 0.06], [[2029, 10, 20], 0.035], [[2029, 10, 12], 0.03]], 0.02, 2], 0.125691], ['regression step ordering 2', [[2020, 4, 16], [2021, 4, 16], [2021, 1, 31], [[[2020, 11, 22], 0.07], [[2020, 7, 13], 0.04], [[2020, 6, 7], 0.07]], 0.02, 1], 3.764384], ['partial repair probe 1', [[2022, 4, 14], [2022, 10, 14], [2022, 7, 5], [[[2022, 6, 21], 0.04], [[2022, 6, 26], 0.035], [[2022, 7, 23], 0.035]], 0.02, 2], 0.512295], ['partial repair probe 2', [[2028, 4, 28], [2028, 7, 28], [2028, 7, 15], [[[2028, 6, 22], 0.07], [[2028, 6, 27], 0.05]], 0.02, 4], 0.645604], ['boundary control 1', [[2024, 1, 1], [2024, 7, 1], [2024, 4, 1], [[[2024, 3, 1], 0.05]], 0.02, 2], 0.755495], ['boundary control 2', [[2024, 1, 1], [2024, 7, 1], [2024, 1, 1], [], 0.02, 2], 0.0], ['normal control 1', [[2034, 1, 31], [2035, 1, 31], [2034, 2, 15], [[[2034, 11, 25], 0.07], [[2035, 1, 10], 0.07], [[2035, 1, 8], 0.06], [[2034, 6, 3], 0.06]], 0.025, 1], 0.10274], ['normal control 2', [[2037, 3, 10], [2037, 6, 10], [2037, 4, 22], [[[2037, 6, 12], 0.05], [[2037, 4, 28], 0.07], [[2037, 2, 25], 0.03], [[2037, 6, 10], 0.04]], 0.025, 4], 0.350543]], [['regression step ordering 1', [[2022, 11, 20], [2023, 11, 20], [2023, 10, 7], [[[2023, 2, 28], 0.07], [[2023, 10, 6], 0.03], [[2023, 4, 6], 0.03], [[2023, 7, 5], 0.07]], 0.02, 1], 3.789041], ['regression step ordering 2', [[2012, 10, 1], [2013, 4, 1], [2013, 3, 7], [[[2012, 11, 13], 0.05], [[2012, 9, 7], 0.07]], 0.02, 2], 2.392857], ['partial repair probe 1', [[2034, 3, 30], [2034, 9, 30], [2034, 7, 23], [[[2034, 6, 8], 0.06], [[2034, 7, 22], 0.035], [[2034, 8, 20], 0.035], [[2034, 7, 29], 0.06]], 0.025, 2], 1.202446], ['partial repair probe 2', [[2029, 6, 1], [2029, 12, 1], [2029, 9, 11], [[[2029, 6, 3], 0.07], [[2029, 9, 28], 0.07], [[2029, 8, 2], 0.03]], 0.025, 2], 1.489071], ['boundary control 1', [[2024, 1, 1], [2024, 7, 1], [2024, 1, 1], [], 0.02, 2], 0.0], ['boundary control 2', [[2024, 1, 1], [2024, 7, 1], [2024, 4, 1], [[[2024, 3, 1], 0.05]], 0.02, 2], 0.755495], ['normal control 1', [[2040, 12, 2], [2041, 3, 2], [2041, 1, 13], [[[2041, 1, 10], 0.035], [[2041, 1, 13], 0.08]], 0.02, 4], 0.245833], ['normal control 2', [[2029, 1, 28], [2029, 7, 28], [2029, 4, 23], [[[2029, 1, 27], 0.04], [[2029, 3, 10], 0.05], [[2029, 4, 27], 0.03], [[2029, 6, 2], 0.06], [[2029, 4, 23], 0.08]], 0.02, 2], 1.060773]]]\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-step-up-accrual-step-ordering","generated_at":"2026-09-29T14:46:52.800579+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":"Sort steps by effective date before scanning.","root_cause":"The schedule is not sorted by date before the last-applicable scan.","sha256":"593fbf5e74dd930a68164d363c489996ff081c1819f1c898431e30239dfcce54","title":"Step-up coupon accrued interest: steps are applied in the order supplied · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":45.348,"exit_code":1,"observations":[{"actual":0.95788,"check":"regression step ordering 1","expected":0.95788,"passed":true},{"actual":0.665761,"check":"regression step ordering 2","expected":0.665761,"passed":true},{"actual":0.529891,"check":"partial repair probe 1","expected":0.493207,"passed":false},{"actual":4.920548,"check":"partial repair probe 2","expected":3.605479,"passed":false},{"actual":0.755495,"check":"boundary control 1","expected":0.755495,"passed":true},{"actual":0.0,"check":"boundary control 2","expected":0.0,"passed":true},{"actual":0.416438,"check":"normal control 1","expected":0.416438,"passed":true},{"actual":0.541096,"check":"normal control 2","expected":0.541096,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression step ordering 1\", \"actual\": 0.95788, \"expected\": 0.95788, \"passed\": true}, {\"check\": \"regression step ordering 2\", \"actual\": 0.665761, \"expected\": 0.665761, \"passed\": true}, {\"check\": \"partial repair probe 1\", \"actual\": 0.529891, \"expected\": 0.493207, \"passed\": false}, {\"check\": \"partial repair probe 2\", \"actual\": 4.920548, \"expected\": 3.605479, \"passed\": false}, {\"check\": \"boundary control 1\", \"actual\": 0.755495, \"expected\": 0.755495, \"passed\": true}, {\"check\": \"boundary control 2\", \"actual\": 0.0, \"expected\": 0.0, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": 0.416438, \"expected\": 0.416438, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 0.541096, \"expected\": 0.541096, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":46.51,"exit_code":1,"observations":[{"actual":0.9375,"check":"regression step ordering 1","expected":0.95788,"passed":false},{"actual":0.576087,"check":"regression step ordering 2","expected":0.665761,"passed":false},{"actual":0.493207,"check":"partial repair probe 1","expected":0.493207,"passed":true},{"actual":3.605479,"check":"partial repair probe 2","expected":3.605479,"passed":true},{"actual":0.755495,"check":"boundary control 1","expected":0.755495,"passed":true},{"actual":0.0,"check":"boundary control 2","expected":0.0,"passed":true},{"actual":0.416438,"check":"normal control 1","expected":0.416438,"passed":true},{"actual":0.541096,"check":"normal control 2","expected":0.541096,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression step ordering 1\", \"actual\": 0.9375, \"expected\": 0.95788, \"passed\": false}, {\"check\": \"regression step ordering 2\", \"actual\": 0.576087, \"expected\": 0.665761, \"passed\": false}, {\"check\": \"partial repair probe 1\", \"actual\": 0.493207, \"expected\": 0.493207, \"passed\": true}, {\"check\": \"partial repair probe 2\", \"actual\": 3.605479, \"expected\": 3.605479, \"passed\": true}, {\"check\": \"boundary control 1\", \"actual\": 0.755495, \"expected\": 0.755495, \"passed\": true}, {\"check\": \"boundary control 2\", \"actual\": 0.0, \"expected\": 0.0, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": 0.416438, \"expected\": 0.416438, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 0.541096, \"expected\": 0.541096, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":48.006,"exit_code":0,"observations":[{"actual":0.95788,"check":"regression step ordering 1","expected":0.95788,"passed":true},{"actual":0.665761,"check":"regression step ordering 2","expected":0.665761,"passed":true},{"actual":0.493207,"check":"partial repair probe 1","expected":0.493207,"passed":true},{"actual":3.605479,"check":"partial repair probe 2","expected":3.605479,"passed":true},{"actual":0.755495,"check":"boundary control 1","expected":0.755495,"passed":true},{"actual":0.0,"check":"boundary control 2","expected":0.0,"passed":true},{"actual":0.416438,"check":"normal control 1","expected":0.416438,"passed":true},{"actual":0.541096,"check":"normal control 2","expected":0.541096,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression step ordering 1\", \"actual\": 0.95788, \"expected\": 0.95788, \"passed\": true}, {\"check\": \"regression step ordering 2\", \"actual\": 0.665761, \"expected\": 0.665761, \"passed\": true}, {\"check\": \"partial repair probe 1\", \"actual\": 0.493207, \"expected\": 0.493207, \"passed\": true}, {\"check\": \"partial repair probe 2\", \"actual\": 3.605479, \"expected\": 3.605479, \"passed\": true}, {\"check\": \"boundary control 1\", \"actual\": 0.755495, \"expected\": 0.755495, \"passed\": true}, {\"check\": \"boundary control 2\", \"actual\": 0.0, \"expected\": 0.0, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": 0.416438, \"expected\": 0.416438, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 0.541096, \"expected\": 0.541096, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}