{"abstract":"Holidays on weekends and duplicated holiday entries remove business days twice.","category":"Bond day-count conventions","checks":8,"contract":"Inputs start and end [y,m,d], a holiday list (may contain weekend dates and duplicates) and an annual rate in percent. bd counts weekdays in [start, end) that are not holidays. Factor = (1 + rate/100)^(bd/252). Return [bd, factor rounded to 8 decimals].","evaluation_group":"w2-bond_day_count_conventions-business-252","failed_approach":"Deduplicating the list still subtracts holidays that fall on weekends.","family":"w2-bond_day_count_conventions-business-252-holiday-subtraction","id":"FA-61151","implementations":{"attempt":{"sha256":"279e4353e26a7d70ff89cd950733e4aa6b8077ea01c5448d5f5f699cc0016d5f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime\nN = 1\nobservations = []\ndef solve(start, end, holidays, rate):\n    S = datetime.date(*start)\n    E = datetime.date(*end)\n    H = {datetime.date(*h) for h in holidays}\n    bd = 0\n    x = S\n    while x < E:\n        if x.weekday() < 5:\n            bd += 1\n        x += datetime.timedelta(days=1)\n    bd -= len({tuple(h) for h in holidays if S <= datetime.date(*h) < E})\n    factor = (1 + rate / 100) ** (bd / 252)\n    return [bd, round(factor, 8)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression holiday subtraction 1', [[2030, 6, 1], [2030, 10, 30], [[2030, 8, 1], [2030, 8, 22], [2030, 6, 19], [2030, 9, 13], [2030, 10, 24], [2030, 9, 4], [2030, 9, 4]], 13.65], [101, 1.05262063]], ['regression holiday subtraction 2', [[2018, 12, 8], [2018, 12, 18], [[2018, 12, 6], [2018, 12, 5], [2018, 12, 12], [2018, 12, 15], [2018, 12, 9], [2018, 12, 9]], 2.0], [5, 1.00039299]], ['partial repair probe 1', [[2025, 4, 25], [2026, 5, 9], [[2025, 8, 25], [2025, 8, 25], [2025, 7, 26], [2025, 5, 31]], 10.75], [270, 1.11560678]], ['partial repair probe 2', [[2024, 12, 1], [2025, 1, 23], [[2024, 12, 7], [2025, 1, 27]], 13.65], [38, 1.0194819]], ['boundary control 1', [[2024, 5, 6], [2024, 5, 6], [], 10.0], [0, 1.0]], ['boundary control 2', [[2024, 5, 3], [2024, 5, 6], [], 10.0], [1, 1.00037829]], ['normal control 1', [[2025, 2, 13], [2025, 2, 22], [[2025, 2, 10]], 2.0], [7, 1.00055022]], ['normal control 2', [[2023, 10, 20], [2023, 10, 27], [[2023, 10, 17], [2023, 10, 17], [2023, 11, 1]], 6.5], [5, 1.00125028]]], [['regression holiday subtraction 1', [[2028, 2, 28], [2028, 9, 11], [[2028, 9, 15], [2028, 4, 16], [2028, 8, 1]], 10.75], [139, 1.05793611]], ['regression holiday subtraction 2', [[2022, 2, 28], [2023, 3, 28], [[2022, 2, 28], [2023, 2, 23], [2022, 6, 11], [2022, 8, 12], [2022, 8, 12], [2022, 11, 25], [2022, 11, 25], [2022, 12, 16], [2022, 12, 16]], 10.75], [276, 1.1183222]], ['partial repair probe 1', [[2022, 7, 31], [2023, 1, 11], [[2022, 7, 31], [2022, 12, 4], [2022, 9, 3], [2022, 12, 31], [2022, 9, 20], [2022, 11, 14], [2022, 11, 14]], 2.0], [115, 1.00907787]], ['partial repair probe 2', [[2022, 12, 30], [2023, 1, 12], [[2022, 12, 31], [2022, 12, 29], [2022, 12, 29], [2023, 1, 2], [2023, 1, 6]], 6.5], [7, 1.00175083]], ['boundary control 1', [[2024, 5, 3], [2024, 5, 6], [], 10.0], [1, 1.00037829]], ['boundary control 2', [[2024, 5, 6], [2024, 5, 6], [], 10.0], [0, 1.0]], ['normal control 1', [[2021, 12, 3], [2022, 4, 20], [], 10.75], [98, 1.04050647]], ['normal control 2', [[2029, 3, 1], [2029, 3, 2], [[2029, 3, 6], [2029, 3, 5], [2029, 3, 4], [2029, 3, 6], [2029, 3, 6], [2029, 2, 25]], 10.75], [1, 1.00040526]]], [['regression holiday subtraction 1', [[2028, 8, 30], [2029, 1, 12], [[2028, 10, 15], [2028, 10, 31], [2028, 9, 15], [2028, 10, 14], [2028, 11, 10]], 10.75], [94, 1.03882147]], ['regression holiday subtraction 2', [[2027, 2, 28], [2027, 9, 23], [[2027, 7, 14], [2027, 7, 22], [2027, 7, 22], [2027, 9, 9]], 10.75], [145, 1.06051116]], ['partial repair probe 1', [[2022, 1, 1], [2022, 8, 15], [[2022, 4, 18], [2022, 4, 3], [2022, 5, 7]], 13.65], [159, 1.08408084]], ['partial repair probe 2', [[2023, 5, 17], [2023, 11, 28], [[2023, 9, 24], [2023, 6, 16], [2023, 6, 1]], 13.65], [137, 1.07203847]], ['boundary control 1', [[2024, 5, 3], [2024, 5, 6], [], 10.0], [1, 1.00037829]], ['boundary control 2', [[2024, 5, 6], [2024, 5, 6], [], 10.0], [0, 1.0]], ['normal control 1', [[2020, 4, 10], [2020, 9, 27], [[2020, 5, 20]], 6.5], [120, 1.03044217]], ['normal control 2', [[2024, 2, 16], [2024, 2, 18], [[2024, 2, 19], [2024, 2, 19], [2024, 2, 16], [2024, 2, 18]], 10.75], [0, 1.0]]], [['regression holiday subtraction 1', [[2021, 3, 8], [2021, 9, 28], [[2021, 8, 26], [2021, 5, 21], [2021, 7, 16], [2021, 9, 4], [2021, 9, 4], [2021, 9, 7], [2021, 9, 25]], 6.5], [142, 1.03612293]], ['regression holiday subtraction 2', [[2027, 11, 23], [2028, 4, 7], [[2027, 12, 28], [2027, 12, 15], [2027, 12, 16], [2028, 2, 14], [2028, 2, 14], [2028, 2, 15], [2028, 4, 1]], 2.0], [93, 1.00733488]], ['partial repair probe 1', [[2019, 11, 9], [2020, 4, 3], [[2019, 12, 7]], 6.5], [104, 1.02633027]], ['partial repair probe 2', [[2025, 10, 7], [2026, 11, 2], [[2026, 4, 18], [2026, 5, 8], [2026, 7, 2], [2026, 7, 2]], 2.0], [277, 1.02200581]], ['boundary control 1', [[2024, 5, 3], [2024, 5, 6], [], 10.0], [1, 1.00037829]], ['boundary control 2', [[2024, 5, 6], [2024, 5, 6], [], 10.0], [0, 1.0]], ['normal control 1', [[2020, 6, 19], [2021, 3, 4], [[2021, 3, 3]], 6.5], [183, 1.04679352]], ['normal control 2', [[2024, 11, 4], [2024, 11, 12], [[2024, 11, 17], [2024, 11, 4], [2024, 11, 2], [2024, 11, 5]], 13.65], [4, 1.00203307]]], [['regression holiday subtraction 1', [[2020, 8, 9], [2020, 8, 26], [[2020, 8, 20], [2020, 8, 15], [2020, 8, 24], [2020, 8, 24]], 2.0], [10, 1.00078613]], ['regression holiday subtraction 2', [[2023, 3, 4], [2023, 8, 25], [[2023, 8, 10], [2023, 3, 2], [2023, 4, 14], [2023, 4, 14], [2023, 5, 15], [2023, 5, 16]], 6.5], [120, 1.03044217]], ['partial repair probe 1', [[2027, 9, 26], [2028, 1, 18], [[2027, 12, 28], [2027, 11, 24], [2027, 11, 24], [2027, 10, 16]], 10.75], [79, 1.03252698]], ['partial repair probe 2', [[2028, 2, 21], [2028, 4, 21], [[2028, 3, 5], [2028, 3, 5], [2028, 3, 28], [2028, 4, 23]], 10.75], [43, 1.01757538]], ['boundary control 1', [[2024, 5, 6], [2024, 5, 6], [], 10.0], [0, 1.0]], ['boundary control 2', [[2024, 5, 3], [2024, 5, 6], [], 10.0], [1, 1.00037829]], ['normal control 1', [[2021, 5, 29], [2021, 8, 5], [[2021, 5, 31]], 6.5], [47, 1.01181455]], ['normal control 2', [[2019, 6, 30], [2020, 4, 5], [[2020, 2, 12]], 10.75], [199, 1.08397053]]]]\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":"ad7cff72c57f46f37929cd94e3cfeef08cfd3d53eb61170c944bd8e1f1d9e314","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime\nN = 1\nobservations = []\ndef solve(start, end, holidays, rate):\n    S = datetime.date(*start)\n    E = datetime.date(*end)\n    H = {datetime.date(*h) for h in holidays}\n    bd = 0\n    x = S\n    while x < E:\n        if x.weekday() < 5:\n            bd += 1\n        x += datetime.timedelta(days=1)\n    bd -= len([h for h in holidays if S <= datetime.date(*h) < E])\n    factor = (1 + rate / 100) ** (bd / 252)\n    return [bd, round(factor, 8)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression holiday subtraction 1', [[2030, 6, 1], [2030, 10, 30], [[2030, 8, 1], [2030, 8, 22], [2030, 6, 19], [2030, 9, 13], [2030, 10, 24], [2030, 9, 4], [2030, 9, 4]], 13.65], [101, 1.05262063]], ['regression holiday subtraction 2', [[2018, 12, 8], [2018, 12, 18], [[2018, 12, 6], [2018, 12, 5], [2018, 12, 12], [2018, 12, 15], [2018, 12, 9], [2018, 12, 9]], 2.0], [5, 1.00039299]], ['partial repair probe 1', [[2025, 4, 25], [2026, 5, 9], [[2025, 8, 25], [2025, 8, 25], [2025, 7, 26], [2025, 5, 31]], 10.75], [270, 1.11560678]], ['partial repair probe 2', [[2024, 12, 1], [2025, 1, 23], [[2024, 12, 7], [2025, 1, 27]], 13.65], [38, 1.0194819]], ['boundary control 1', [[2024, 5, 6], [2024, 5, 6], [], 10.0], [0, 1.0]], ['boundary control 2', [[2024, 5, 3], [2024, 5, 6], [], 10.0], [1, 1.00037829]], ['normal control 1', [[2025, 2, 13], [2025, 2, 22], [[2025, 2, 10]], 2.0], [7, 1.00055022]], ['normal control 2', [[2023, 10, 20], [2023, 10, 27], [[2023, 10, 17], [2023, 10, 17], [2023, 11, 1]], 6.5], [5, 1.00125028]]], [['regression holiday subtraction 1', [[2028, 2, 28], [2028, 9, 11], [[2028, 9, 15], [2028, 4, 16], [2028, 8, 1]], 10.75], [139, 1.05793611]], ['regression holiday subtraction 2', [[2022, 2, 28], [2023, 3, 28], [[2022, 2, 28], [2023, 2, 23], [2022, 6, 11], [2022, 8, 12], [2022, 8, 12], [2022, 11, 25], [2022, 11, 25], [2022, 12, 16], [2022, 12, 16]], 10.75], [276, 1.1183222]], ['partial repair probe 1', [[2022, 7, 31], [2023, 1, 11], [[2022, 7, 31], [2022, 12, 4], [2022, 9, 3], [2022, 12, 31], [2022, 9, 20], [2022, 11, 14], [2022, 11, 14]], 2.0], [115, 1.00907787]], ['partial repair probe 2', [[2022, 12, 30], [2023, 1, 12], [[2022, 12, 31], [2022, 12, 29], [2022, 12, 29], [2023, 1, 2], [2023, 1, 6]], 6.5], [7, 1.00175083]], ['boundary control 1', [[2024, 5, 3], [2024, 5, 6], [], 10.0], [1, 1.00037829]], ['boundary control 2', [[2024, 5, 6], [2024, 5, 6], [], 10.0], [0, 1.0]], ['normal control 1', [[2021, 12, 3], [2022, 4, 20], [], 10.75], [98, 1.04050647]], ['normal control 2', [[2029, 3, 1], [2029, 3, 2], [[2029, 3, 6], [2029, 3, 5], [2029, 3, 4], [2029, 3, 6], [2029, 3, 6], [2029, 2, 25]], 10.75], [1, 1.00040526]]], [['regression holiday subtraction 1', [[2028, 8, 30], [2029, 1, 12], [[2028, 10, 15], [2028, 10, 31], [2028, 9, 15], [2028, 10, 14], [2028, 11, 10]], 10.75], [94, 1.03882147]], ['regression holiday subtraction 2', [[2027, 2, 28], [2027, 9, 23], [[2027, 7, 14], [2027, 7, 22], [2027, 7, 22], [2027, 9, 9]], 10.75], [145, 1.06051116]], ['partial repair probe 1', [[2022, 1, 1], [2022, 8, 15], [[2022, 4, 18], [2022, 4, 3], [2022, 5, 7]], 13.65], [159, 1.08408084]], ['partial repair probe 2', [[2023, 5, 17], [2023, 11, 28], [[2023, 9, 24], [2023, 6, 16], [2023, 6, 1]], 13.65], [137, 1.07203847]], ['boundary control 1', [[2024, 5, 3], [2024, 5, 6], [], 10.0], [1, 1.00037829]], ['boundary control 2', [[2024, 5, 6], [2024, 5, 6], [], 10.0], [0, 1.0]], ['normal control 1', [[2020, 4, 10], [2020, 9, 27], [[2020, 5, 20]], 6.5], [120, 1.03044217]], ['normal control 2', [[2024, 2, 16], [2024, 2, 18], [[2024, 2, 19], [2024, 2, 19], [2024, 2, 16], [2024, 2, 18]], 10.75], [0, 1.0]]], [['regression holiday subtraction 1', [[2021, 3, 8], [2021, 9, 28], [[2021, 8, 26], [2021, 5, 21], [2021, 7, 16], [2021, 9, 4], [2021, 9, 4], [2021, 9, 7], [2021, 9, 25]], 6.5], [142, 1.03612293]], ['regression holiday subtraction 2', [[2027, 11, 23], [2028, 4, 7], [[2027, 12, 28], [2027, 12, 15], [2027, 12, 16], [2028, 2, 14], [2028, 2, 14], [2028, 2, 15], [2028, 4, 1]], 2.0], [93, 1.00733488]], ['partial repair probe 1', [[2019, 11, 9], [2020, 4, 3], [[2019, 12, 7]], 6.5], [104, 1.02633027]], ['partial repair probe 2', [[2025, 10, 7], [2026, 11, 2], [[2026, 4, 18], [2026, 5, 8], [2026, 7, 2], [2026, 7, 2]], 2.0], [277, 1.02200581]], ['boundary control 1', [[2024, 5, 3], [2024, 5, 6], [], 10.0], [1, 1.00037829]], ['boundary control 2', [[2024, 5, 6], [2024, 5, 6], [], 10.0], [0, 1.0]], ['normal control 1', [[2020, 6, 19], [2021, 3, 4], [[2021, 3, 3]], 6.5], [183, 1.04679352]], ['normal control 2', [[2024, 11, 4], [2024, 11, 12], [[2024, 11, 17], [2024, 11, 4], [2024, 11, 2], [2024, 11, 5]], 13.65], [4, 1.00203307]]], [['regression holiday subtraction 1', [[2020, 8, 9], [2020, 8, 26], [[2020, 8, 20], [2020, 8, 15], [2020, 8, 24], [2020, 8, 24]], 2.0], [10, 1.00078613]], ['regression holiday subtraction 2', [[2023, 3, 4], [2023, 8, 25], [[2023, 8, 10], [2023, 3, 2], [2023, 4, 14], [2023, 4, 14], [2023, 5, 15], [2023, 5, 16]], 6.5], [120, 1.03044217]], ['partial repair probe 1', [[2027, 9, 26], [2028, 1, 18], [[2027, 12, 28], [2027, 11, 24], [2027, 11, 24], [2027, 10, 16]], 10.75], [79, 1.03252698]], ['partial repair probe 2', [[2028, 2, 21], [2028, 4, 21], [[2028, 3, 5], [2028, 3, 5], [2028, 3, 28], [2028, 4, 23]], 10.75], [43, 1.01757538]], ['boundary control 1', [[2024, 5, 6], [2024, 5, 6], [], 10.0], [0, 1.0]], ['boundary control 2', [[2024, 5, 3], [2024, 5, 6], [], 10.0], [1, 1.00037829]], ['normal control 1', [[2021, 5, 29], [2021, 8, 5], [[2021, 5, 31]], 6.5], [47, 1.01181455]], ['normal control 2', [[2019, 6, 30], [2020, 4, 5], [[2020, 2, 12]], 10.75], [199, 1.08397053]]]]\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":"d3004cc0be77d1242a72921f2052b6d26551f2faa04dc3da2a3841023ae18bf2","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime\nN = 1\nobservations = []\ndef solve(start, end, holidays, rate):\n    S = datetime.date(*start)\n    E = datetime.date(*end)\n    H = {datetime.date(*h) for h in holidays}\n    bd = 0\n    x = S\n    while x < E:\n        if x.weekday() < 5 and x not in H:\n            bd += 1\n        x += datetime.timedelta(days=1)\n    factor = (1 + rate / 100) ** (bd / 252)\n    return [bd, round(factor, 8)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression holiday subtraction 1', [[2030, 6, 1], [2030, 10, 30], [[2030, 8, 1], [2030, 8, 22], [2030, 6, 19], [2030, 9, 13], [2030, 10, 24], [2030, 9, 4], [2030, 9, 4]], 13.65], [101, 1.05262063]], ['regression holiday subtraction 2', [[2018, 12, 8], [2018, 12, 18], [[2018, 12, 6], [2018, 12, 5], [2018, 12, 12], [2018, 12, 15], [2018, 12, 9], [2018, 12, 9]], 2.0], [5, 1.00039299]], ['partial repair probe 1', [[2025, 4, 25], [2026, 5, 9], [[2025, 8, 25], [2025, 8, 25], [2025, 7, 26], [2025, 5, 31]], 10.75], [270, 1.11560678]], ['partial repair probe 2', [[2024, 12, 1], [2025, 1, 23], [[2024, 12, 7], [2025, 1, 27]], 13.65], [38, 1.0194819]], ['boundary control 1', [[2024, 5, 6], [2024, 5, 6], [], 10.0], [0, 1.0]], ['boundary control 2', [[2024, 5, 3], [2024, 5, 6], [], 10.0], [1, 1.00037829]], ['normal control 1', [[2025, 2, 13], [2025, 2, 22], [[2025, 2, 10]], 2.0], [7, 1.00055022]], ['normal control 2', [[2023, 10, 20], [2023, 10, 27], [[2023, 10, 17], [2023, 10, 17], [2023, 11, 1]], 6.5], [5, 1.00125028]]], [['regression holiday subtraction 1', [[2028, 2, 28], [2028, 9, 11], [[2028, 9, 15], [2028, 4, 16], [2028, 8, 1]], 10.75], [139, 1.05793611]], ['regression holiday subtraction 2', [[2022, 2, 28], [2023, 3, 28], [[2022, 2, 28], [2023, 2, 23], [2022, 6, 11], [2022, 8, 12], [2022, 8, 12], [2022, 11, 25], [2022, 11, 25], [2022, 12, 16], [2022, 12, 16]], 10.75], [276, 1.1183222]], ['partial repair probe 1', [[2022, 7, 31], [2023, 1, 11], [[2022, 7, 31], [2022, 12, 4], [2022, 9, 3], [2022, 12, 31], [2022, 9, 20], [2022, 11, 14], [2022, 11, 14]], 2.0], [115, 1.00907787]], ['partial repair probe 2', [[2022, 12, 30], [2023, 1, 12], [[2022, 12, 31], [2022, 12, 29], [2022, 12, 29], [2023, 1, 2], [2023, 1, 6]], 6.5], [7, 1.00175083]], ['boundary control 1', [[2024, 5, 3], [2024, 5, 6], [], 10.0], [1, 1.00037829]], ['boundary control 2', [[2024, 5, 6], [2024, 5, 6], [], 10.0], [0, 1.0]], ['normal control 1', [[2021, 12, 3], [2022, 4, 20], [], 10.75], [98, 1.04050647]], ['normal control 2', [[2029, 3, 1], [2029, 3, 2], [[2029, 3, 6], [2029, 3, 5], [2029, 3, 4], [2029, 3, 6], [2029, 3, 6], [2029, 2, 25]], 10.75], [1, 1.00040526]]], [['regression holiday subtraction 1', [[2028, 8, 30], [2029, 1, 12], [[2028, 10, 15], [2028, 10, 31], [2028, 9, 15], [2028, 10, 14], [2028, 11, 10]], 10.75], [94, 1.03882147]], ['regression holiday subtraction 2', [[2027, 2, 28], [2027, 9, 23], [[2027, 7, 14], [2027, 7, 22], [2027, 7, 22], [2027, 9, 9]], 10.75], [145, 1.06051116]], ['partial repair probe 1', [[2022, 1, 1], [2022, 8, 15], [[2022, 4, 18], [2022, 4, 3], [2022, 5, 7]], 13.65], [159, 1.08408084]], ['partial repair probe 2', [[2023, 5, 17], [2023, 11, 28], [[2023, 9, 24], [2023, 6, 16], [2023, 6, 1]], 13.65], [137, 1.07203847]], ['boundary control 1', [[2024, 5, 3], [2024, 5, 6], [], 10.0], [1, 1.00037829]], ['boundary control 2', [[2024, 5, 6], [2024, 5, 6], [], 10.0], [0, 1.0]], ['normal control 1', [[2020, 4, 10], [2020, 9, 27], [[2020, 5, 20]], 6.5], [120, 1.03044217]], ['normal control 2', [[2024, 2, 16], [2024, 2, 18], [[2024, 2, 19], [2024, 2, 19], [2024, 2, 16], [2024, 2, 18]], 10.75], [0, 1.0]]], [['regression holiday subtraction 1', [[2021, 3, 8], [2021, 9, 28], [[2021, 8, 26], [2021, 5, 21], [2021, 7, 16], [2021, 9, 4], [2021, 9, 4], [2021, 9, 7], [2021, 9, 25]], 6.5], [142, 1.03612293]], ['regression holiday subtraction 2', [[2027, 11, 23], [2028, 4, 7], [[2027, 12, 28], [2027, 12, 15], [2027, 12, 16], [2028, 2, 14], [2028, 2, 14], [2028, 2, 15], [2028, 4, 1]], 2.0], [93, 1.00733488]], ['partial repair probe 1', [[2019, 11, 9], [2020, 4, 3], [[2019, 12, 7]], 6.5], [104, 1.02633027]], ['partial repair probe 2', [[2025, 10, 7], [2026, 11, 2], [[2026, 4, 18], [2026, 5, 8], [2026, 7, 2], [2026, 7, 2]], 2.0], [277, 1.02200581]], ['boundary control 1', [[2024, 5, 3], [2024, 5, 6], [], 10.0], [1, 1.00037829]], ['boundary control 2', [[2024, 5, 6], [2024, 5, 6], [], 10.0], [0, 1.0]], ['normal control 1', [[2020, 6, 19], [2021, 3, 4], [[2021, 3, 3]], 6.5], [183, 1.04679352]], ['normal control 2', [[2024, 11, 4], [2024, 11, 12], [[2024, 11, 17], [2024, 11, 4], [2024, 11, 2], [2024, 11, 5]], 13.65], [4, 1.00203307]]], [['regression holiday subtraction 1', [[2020, 8, 9], [2020, 8, 26], [[2020, 8, 20], [2020, 8, 15], [2020, 8, 24], [2020, 8, 24]], 2.0], [10, 1.00078613]], ['regression holiday subtraction 2', [[2023, 3, 4], [2023, 8, 25], [[2023, 8, 10], [2023, 3, 2], [2023, 4, 14], [2023, 4, 14], [2023, 5, 15], [2023, 5, 16]], 6.5], [120, 1.03044217]], ['partial repair probe 1', [[2027, 9, 26], [2028, 1, 18], [[2027, 12, 28], [2027, 11, 24], [2027, 11, 24], [2027, 10, 16]], 10.75], [79, 1.03252698]], ['partial repair probe 2', [[2028, 2, 21], [2028, 4, 21], [[2028, 3, 5], [2028, 3, 5], [2028, 3, 28], [2028, 4, 23]], 10.75], [43, 1.01757538]], ['boundary control 1', [[2024, 5, 6], [2024, 5, 6], [], 10.0], [0, 1.0]], ['boundary control 2', [[2024, 5, 3], [2024, 5, 6], [], 10.0], [1, 1.00037829]], ['normal control 1', [[2021, 5, 29], [2021, 8, 5], [[2021, 5, 31]], 6.5], [47, 1.01181455]], ['normal control 2', [[2019, 6, 30], [2020, 4, 5], [[2020, 2, 12]], 10.75], [199, 1.08397053]]]]\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-business-252-holiday-subtraction","generated_at":"2026-09-29T14:46:52.445990+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":"Exclude a day only if it is a weekday that appears in the holiday set.","root_cause":"Holidays are subtracted from the weekday count by list length instead of excluded per day.","sha256":"9cec1703be13504ad4d015cc48f67f104dcf61d535efcaf326216247a540dc3a","title":"Business/252 day count with daily compounding factor: listed holidays are subtracted from a weekday count · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":47.737,"exit_code":1,"observations":[{"actual":[101,1.05262063],"check":"regression holiday subtraction 1","expected":[101,1.05262063],"passed":true},{"actual":[3,1.00023577],"check":"regression holiday subtraction 2","expected":[5,1.00039299],"passed":false},{"actual":[268,1.1147031],"check":"partial repair probe 1","expected":[270,1.11560678],"passed":false},{"actual":[37,1.01896439],"check":"partial repair probe 2","expected":[38,1.0194819],"passed":false},{"actual":[0,1.0],"check":"boundary control 1","expected":[0,1.0],"passed":true},{"actual":[1,1.00037829],"check":"boundary control 2","expected":[1,1.00037829],"passed":true},{"actual":[7,1.00055022],"check":"normal control 1","expected":[7,1.00055022],"passed":true},{"actual":[5,1.00125028],"check":"normal control 2","expected":[5,1.00125028],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression holiday subtraction 1\", \"actual\": [101, 1.05262063], \"expected\": [101, 1.05262063], \"passed\": true}, {\"check\": \"regression holiday subtraction 2\", \"actual\": [3, 1.00023577], \"expected\": [5, 1.00039299], \"passed\": false}, {\"check\": \"partial repair probe 1\", \"actual\": [268, 1.1147031], \"expected\": [270, 1.11560678], \"passed\": false}, {\"check\": \"partial repair probe 2\", \"actual\": [37, 1.01896439], \"expected\": [38, 1.0194819], \"passed\": false}, {\"check\": \"boundary control 1\", \"actual\": [0, 1.0], \"expected\": [0, 1.0], \"passed\": true}, {\"check\": \"boundary control 2\", \"actual\": [1, 1.00037829], \"expected\": [1, 1.00037829], \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": [7, 1.00055022], \"expected\": [7, 1.00055022], \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": [5, 1.00125028], \"expected\": [5, 1.00125028], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.268,"exit_code":1,"observations":[{"actual":[100,1.0520863],"check":"regression holiday subtraction 1","expected":[101,1.05262063],"passed":false},{"actual":[2,1.00015718],"check":"regression holiday subtraction 2","expected":[5,1.00039299],"passed":false},{"actual":[267,1.11425154],"check":"partial repair probe 1","expected":[270,1.11560678],"passed":false},{"actual":[37,1.01896439],"check":"partial repair probe 2","expected":[38,1.0194819],"passed":false},{"actual":[0,1.0],"check":"boundary control 1","expected":[0,1.0],"passed":true},{"actual":[1,1.00037829],"check":"boundary control 2","expected":[1,1.00037829],"passed":true},{"actual":[7,1.00055022],"check":"normal control 1","expected":[7,1.00055022],"passed":true},{"actual":[5,1.00125028],"check":"normal control 2","expected":[5,1.00125028],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression holiday subtraction 1\", \"actual\": [100, 1.0520863], \"expected\": [101, 1.05262063], \"passed\": false}, {\"check\": \"regression holiday subtraction 2\", \"actual\": [2, 1.00015718], \"expected\": [5, 1.00039299], \"passed\": false}, {\"check\": \"partial repair probe 1\", \"actual\": [267, 1.11425154], \"expected\": [270, 1.11560678], \"passed\": false}, {\"check\": \"partial repair probe 2\", \"actual\": [37, 1.01896439], \"expected\": [38, 1.0194819], \"passed\": false}, {\"check\": \"boundary control 1\", \"actual\": [0, 1.0], \"expected\": [0, 1.0], \"passed\": true}, {\"check\": \"boundary control 2\", \"actual\": [1, 1.00037829], \"expected\": [1, 1.00037829], \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": [7, 1.00055022], \"expected\": [7, 1.00055022], \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": [5, 1.00125028], \"expected\": [5, 1.00125028], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":46.73,"exit_code":0,"observations":[{"actual":[101,1.05262063],"check":"regression holiday subtraction 1","expected":[101,1.05262063],"passed":true},{"actual":[5,1.00039299],"check":"regression holiday subtraction 2","expected":[5,1.00039299],"passed":true},{"actual":[270,1.11560678],"check":"partial repair probe 1","expected":[270,1.11560678],"passed":true},{"actual":[38,1.0194819],"check":"partial repair probe 2","expected":[38,1.0194819],"passed":true},{"actual":[0,1.0],"check":"boundary control 1","expected":[0,1.0],"passed":true},{"actual":[1,1.00037829],"check":"boundary control 2","expected":[1,1.00037829],"passed":true},{"actual":[7,1.00055022],"check":"normal control 1","expected":[7,1.00055022],"passed":true},{"actual":[5,1.00125028],"check":"normal control 2","expected":[5,1.00125028],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression holiday subtraction 1\", \"actual\": [101, 1.05262063], \"expected\": [101, 1.05262063], \"passed\": true}, {\"check\": \"regression holiday subtraction 2\", \"actual\": [5, 1.00039299], \"expected\": [5, 1.00039299], \"passed\": true}, {\"check\": \"partial repair probe 1\", \"actual\": [270, 1.11560678], \"expected\": [270, 1.11560678], \"passed\": true}, {\"check\": \"partial repair probe 2\", \"actual\": [38, 1.0194819], \"expected\": [38, 1.0194819], \"passed\": true}, {\"check\": \"boundary control 1\", \"actual\": [0, 1.0], \"expected\": [0, 1.0], \"passed\": true}, {\"check\": \"boundary control 2\", \"actual\": [1, 1.00037829], \"expected\": [1, 1.00037829], \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": [7, 1.00055022], \"expected\": [7, 1.00055022], \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": [5, 1.00125028], \"expected\": [5, 1.00125028], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}