{"abstract":"Early exercise notices filed the evening before expiry are rejected.","category":"Options payoff and settlement","checks":8,"contract":"Inputs expiry date, submission [y,m,d,hh,mm], cutoff [hh,mm], extension minutes and member flag. Notices after the expiry date are \"expired\"; notices on earlier dates are \"accepted\"; on the expiry date a notice is accepted if its minute of day <= cutoff (+extension for members), else \"late\".","contract_signature":"expiry, submit, cutoff, extension, member","evaluation_group":"w2-options_payoff_and_settlement-exercise-notice-cutoff","failed_approach":"Applying the cutoff to every day up to expiry rejects routine early exercises.","family":"w2-options_payoff_and_settlement-exercise-notice-cutoff-earlier-day-notices","id":"FA-61801","implementations":{"attempt":{"sha256":"f46da359bb8befe2167b46cfb77e86785d2ec5526c9ec87ccc42a1d42c7ea155","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime\nN = 1\nobservations = []\ndef solve(expiry, submit, cutoff, extension, member):\n    e = datetime.date(*expiry)\n    y, m, d, hh, mm = submit\n    sd = datetime.date(y, m, d)\n    if sd > e:\n        return 'expired'\n    if sd < e and hh * 60 + mm <= cutoff[0] * 60 + cutoff[1]:\n        return 'accepted'\n    if sd < e:\n        return 'late'\n    limit = cutoff[0] * 60 + cutoff[1] + (extension if member else 0)\n    return 'accepted' if hh * 60 + mm <= limit else 'late'\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression earlier-day notices 1', [[2025, 10, 12], [2025, 10, 11, 19, 30], [17, 30], 30, False], 'accepted'], ['regression earlier-day notices 2', [[2022, 7, 29], [2022, 7, 28, 18, 30], [17, 30], 0, False], 'accepted'], ['partial repair probe 1', [[2020, 3, 27], [2020, 3, 25, 16, 30], [16, 0], 0, False], 'accepted'], ['partial repair probe 2', [[2020, 6, 27], [2020, 6, 25, 18, 31], [17, 0], 30, False], 'accepted'], ['boundary control 1', [[2024, 6, 21], [2024, 6, 21, 17, 30], [17, 30], 0, False], 'accepted'], ['normal control 1', [[2023, 11, 14], [2023, 11, 14, 18, 30], [17, 0], 90, False], 'late'], ['normal control 2', [[2029, 7, 24], [2029, 7, 22, 14, 30], [16, 0], 30, False], 'accepted'], ['normal control 3', [[2029, 2, 28], [2029, 2, 23, 15, 29], [16, 0], 90, True], 'accepted']], [['regression earlier-day notices 1', [[2027, 2, 25], [2027, 2, 24, 19, 0], [17, 30], 0, False], 'accepted'], ['regression earlier-day notices 2', [[2021, 2, 28], [2021, 2, 27, 18, 31], [17, 0], 0, True], 'accepted'], ['partial repair probe 1', [[2024, 7, 30], [2024, 7, 25, 18, 0], [17, 30], 30, True], 'accepted'], ['partial repair probe 2', [[2023, 7, 31], [2023, 7, 26, 19, 30], [17, 30], 90, True], 'accepted'], ['boundary control 1', [[2024, 6, 21], [2024, 6, 21, 17, 30], [17, 30], 0, False], 'accepted'], ['normal control 1', [[2023, 5, 6], [2023, 5, 6, 18, 0], [17, 30], 90, True], 'accepted'], ['normal control 2', [[2024, 4, 30], [2024, 5, 1, 16, 0], [16, 0], 0, False], 'expired'], ['normal control 3', [[2022, 12, 31], [2022, 12, 31, 18, 0], [17, 0], 0, False], 'late']], [['regression earlier-day notices 1', [[2026, 5, 10], [2026, 5, 9, 19, 30], [17, 30], 90, True], 'accepted'], ['regression earlier-day notices 2', [[2020, 4, 26], [2020, 4, 25, 18, 0], [17, 0], 0, True], 'accepted'], ['partial repair probe 1', [[2026, 12, 31], [2026, 12, 29, 19, 1], [17, 30], 0, False], 'accepted'], ['partial repair probe 2', [[2024, 9, 27], [2024, 9, 25, 19, 0], [17, 30], 0, False], 'accepted'], ['boundary control 1', [[2024, 6, 21], [2024, 6, 21, 17, 30], [17, 30], 0, False], 'accepted'], ['normal control 1', [[2021, 6, 30], [2021, 6, 30, 17, 30], [17, 0], 0, False], 'late'], ['normal control 2', [[2027, 10, 1], [2027, 10, 1, 16, 59], [17, 0], 90, True], 'accepted'], ['normal control 3', [[2020, 1, 31], [2020, 1, 31, 19, 30], [17, 30], 90, True], 'late']], [['regression earlier-day notices 1', [[2021, 7, 12], [2021, 7, 11, 18, 0], [17, 0], 30, True], 'accepted'], ['regression earlier-day notices 2', [[2020, 4, 10], [2020, 4, 9, 18, 31], [17, 0], 30, False], 'accepted'], ['partial repair probe 1', [[2023, 7, 23], [2023, 7, 18, 18, 0], [17, 0], 0, False], 'accepted'], ['partial repair probe 2', [[2021, 3, 13], [2021, 3, 8, 19, 0], [17, 0], 90, False], 'accepted'], ['boundary control 1', [[2024, 6, 21], [2024, 6, 21, 17, 30], [17, 30], 0, False], 'accepted'], ['normal control 1', [[2025, 5, 6], [2025, 5, 1, 17, 29], [17, 30], 0, True], 'accepted'], ['normal control 2', [[2024, 9, 24], [2024, 9, 24, 7, 0], [17, 0], 0, True], 'accepted'], ['normal control 3', [[2024, 6, 27], [2024, 6, 26, 16, 29], [17, 0], 30, True], 'accepted']], [['regression earlier-day notices 1', [[2021, 2, 27], [2021, 2, 26, 17, 30], [16, 0], 90, False], 'accepted'], ['regression earlier-day notices 2', [[2026, 12, 25], [2026, 12, 24, 18, 0], [17, 30], 30, False], 'accepted'], ['partial repair probe 1', [[2023, 1, 30], [2023, 1, 25, 19, 0], [17, 30], 90, True], 'accepted'], ['partial repair probe 2', [[2028, 3, 27], [2028, 3, 22, 18, 0], [17, 0], 0, False], 'accepted'], ['boundary control 1', [[2024, 6, 21], [2024, 6, 21, 17, 30], [17, 30], 0, False], 'accepted'], ['normal control 1', [[2022, 7, 17], [2022, 7, 15, 16, 0], [17, 30], 90, False], 'accepted'], ['normal control 2', [[2030, 2, 28], [2030, 2, 28, 16, 1], [16, 0], 90, False], 'late'], ['normal control 3', [[2024, 3, 29], [2024, 3, 28, 16, 0], [16, 0], 0, False], 'accepted']]]\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":"06e163728cb4be56c4194dc1813639fc03028a98a4ecd8a53a9af8372aec8052","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime\nN = 1\nobservations = []\ndef solve(expiry, submit, cutoff, extension, member):\n    e = datetime.date(*expiry)\n    y, m, d, hh, mm = submit\n    sd = datetime.date(y, m, d)\n    if sd > e:\n        return 'expired'\n    if (e - sd).days > 1:\n        return 'accepted'\n    limit = cutoff[0] * 60 + cutoff[1] + (extension if member else 0)\n    return 'accepted' if hh * 60 + mm <= limit else 'late'\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression earlier-day notices 1', [[2025, 10, 12], [2025, 10, 11, 19, 30], [17, 30], 30, False], 'accepted'], ['regression earlier-day notices 2', [[2022, 7, 29], [2022, 7, 28, 18, 30], [17, 30], 0, False], 'accepted'], ['partial repair probe 1', [[2020, 3, 27], [2020, 3, 25, 16, 30], [16, 0], 0, False], 'accepted'], ['partial repair probe 2', [[2020, 6, 27], [2020, 6, 25, 18, 31], [17, 0], 30, False], 'accepted'], ['boundary control 1', [[2024, 6, 21], [2024, 6, 21, 17, 30], [17, 30], 0, False], 'accepted'], ['normal control 1', [[2023, 11, 14], [2023, 11, 14, 18, 30], [17, 0], 90, False], 'late'], ['normal control 2', [[2029, 7, 24], [2029, 7, 22, 14, 30], [16, 0], 30, False], 'accepted'], ['normal control 3', [[2029, 2, 28], [2029, 2, 23, 15, 29], [16, 0], 90, True], 'accepted']], [['regression earlier-day notices 1', [[2027, 2, 25], [2027, 2, 24, 19, 0], [17, 30], 0, False], 'accepted'], ['regression earlier-day notices 2', [[2021, 2, 28], [2021, 2, 27, 18, 31], [17, 0], 0, True], 'accepted'], ['partial repair probe 1', [[2024, 7, 30], [2024, 7, 25, 18, 0], [17, 30], 30, True], 'accepted'], ['partial repair probe 2', [[2023, 7, 31], [2023, 7, 26, 19, 30], [17, 30], 90, True], 'accepted'], ['boundary control 1', [[2024, 6, 21], [2024, 6, 21, 17, 30], [17, 30], 0, False], 'accepted'], ['normal control 1', [[2023, 5, 6], [2023, 5, 6, 18, 0], [17, 30], 90, True], 'accepted'], ['normal control 2', [[2024, 4, 30], [2024, 5, 1, 16, 0], [16, 0], 0, False], 'expired'], ['normal control 3', [[2022, 12, 31], [2022, 12, 31, 18, 0], [17, 0], 0, False], 'late']], [['regression earlier-day notices 1', [[2026, 5, 10], [2026, 5, 9, 19, 30], [17, 30], 90, True], 'accepted'], ['regression earlier-day notices 2', [[2020, 4, 26], [2020, 4, 25, 18, 0], [17, 0], 0, True], 'accepted'], ['partial repair probe 1', [[2026, 12, 31], [2026, 12, 29, 19, 1], [17, 30], 0, False], 'accepted'], ['partial repair probe 2', [[2024, 9, 27], [2024, 9, 25, 19, 0], [17, 30], 0, False], 'accepted'], ['boundary control 1', [[2024, 6, 21], [2024, 6, 21, 17, 30], [17, 30], 0, False], 'accepted'], ['normal control 1', [[2021, 6, 30], [2021, 6, 30, 17, 30], [17, 0], 0, False], 'late'], ['normal control 2', [[2027, 10, 1], [2027, 10, 1, 16, 59], [17, 0], 90, True], 'accepted'], ['normal control 3', [[2020, 1, 31], [2020, 1, 31, 19, 30], [17, 30], 90, True], 'late']], [['regression earlier-day notices 1', [[2021, 7, 12], [2021, 7, 11, 18, 0], [17, 0], 30, True], 'accepted'], ['regression earlier-day notices 2', [[2020, 4, 10], [2020, 4, 9, 18, 31], [17, 0], 30, False], 'accepted'], ['partial repair probe 1', [[2023, 7, 23], [2023, 7, 18, 18, 0], [17, 0], 0, False], 'accepted'], ['partial repair probe 2', [[2021, 3, 13], [2021, 3, 8, 19, 0], [17, 0], 90, False], 'accepted'], ['boundary control 1', [[2024, 6, 21], [2024, 6, 21, 17, 30], [17, 30], 0, False], 'accepted'], ['normal control 1', [[2025, 5, 6], [2025, 5, 1, 17, 29], [17, 30], 0, True], 'accepted'], ['normal control 2', [[2024, 9, 24], [2024, 9, 24, 7, 0], [17, 0], 0, True], 'accepted'], ['normal control 3', [[2024, 6, 27], [2024, 6, 26, 16, 29], [17, 0], 30, True], 'accepted']], [['regression earlier-day notices 1', [[2021, 2, 27], [2021, 2, 26, 17, 30], [16, 0], 90, False], 'accepted'], ['regression earlier-day notices 2', [[2026, 12, 25], [2026, 12, 24, 18, 0], [17, 30], 30, False], 'accepted'], ['partial repair probe 1', [[2023, 1, 30], [2023, 1, 25, 19, 0], [17, 30], 90, True], 'accepted'], ['partial repair probe 2', [[2028, 3, 27], [2028, 3, 22, 18, 0], [17, 0], 0, False], 'accepted'], ['boundary control 1', [[2024, 6, 21], [2024, 6, 21, 17, 30], [17, 30], 0, False], 'accepted'], ['normal control 1', [[2022, 7, 17], [2022, 7, 15, 16, 0], [17, 30], 90, False], 'accepted'], ['normal control 2', [[2030, 2, 28], [2030, 2, 28, 16, 1], [16, 0], 90, False], 'late'], ['normal control 3', [[2024, 3, 29], [2024, 3, 28, 16, 0], [16, 0], 0, False], 'accepted']]]\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 exchange or clearing rulebook. 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-options_payoff_and_settlement-exercise-notice-cutoff-earlier-day-notices","generated_at":"2026-09-29T14:46:58.711820+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Option expiry, exercise and settlement engines move cash and shares; a wrong branch misstates obligations.","root_cause":"Earlier-day acceptance requires at least two days before expiry.","sha256":"f7db06ae1ce2c2a2fd9c9a6e837544bce5b09ebc7e8ed1a14621c71f6d305f1f","title":"Exercise notice acceptance cutoff: the time cutoff is applied to the day before expiry · 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":39.826,"exit_code":1,"observations":[{"actual":"late","check":"regression earlier-day notices 1","expected":"accepted","passed":false},{"actual":"late","check":"regression earlier-day notices 2","expected":"accepted","passed":false},{"actual":"late","check":"partial repair probe 1","expected":"accepted","passed":false},{"actual":"late","check":"partial repair probe 2","expected":"accepted","passed":false},{"actual":"accepted","check":"boundary control 1","expected":"accepted","passed":true},{"actual":"late","check":"normal control 1","expected":"late","passed":true},{"actual":"accepted","check":"normal control 2","expected":"accepted","passed":true},{"actual":"accepted","check":"normal control 3","expected":"accepted","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression earlier-day notices 1\", \"actual\": \"late\", \"expected\": \"accepted\", \"passed\": false}, {\"check\": \"regression earlier-day notices 2\", \"actual\": \"late\", \"expected\": \"accepted\", \"passed\": false}, {\"check\": \"partial repair probe 1\", \"actual\": \"late\", \"expected\": \"accepted\", \"passed\": false}, {\"check\": \"partial repair probe 2\", \"actual\": \"late\", \"expected\": \"accepted\", \"passed\": false}, {\"check\": \"boundary control 1\", \"actual\": \"accepted\", \"expected\": \"accepted\", \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": \"late\", \"expected\": \"late\", \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": \"accepted\", \"expected\": \"accepted\", \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": \"accepted\", \"expected\": \"accepted\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.758,"exit_code":1,"observations":[{"actual":"late","check":"regression earlier-day notices 1","expected":"accepted","passed":false},{"actual":"late","check":"regression earlier-day notices 2","expected":"accepted","passed":false},{"actual":"accepted","check":"partial repair probe 1","expected":"accepted","passed":true},{"actual":"accepted","check":"partial repair probe 2","expected":"accepted","passed":true},{"actual":"accepted","check":"boundary control 1","expected":"accepted","passed":true},{"actual":"late","check":"normal control 1","expected":"late","passed":true},{"actual":"accepted","check":"normal control 2","expected":"accepted","passed":true},{"actual":"accepted","check":"normal control 3","expected":"accepted","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression earlier-day notices 1\", \"actual\": \"late\", \"expected\": \"accepted\", \"passed\": false}, {\"check\": \"regression earlier-day notices 2\", \"actual\": \"late\", \"expected\": \"accepted\", \"passed\": false}, {\"check\": \"partial repair probe 1\", \"actual\": \"accepted\", \"expected\": \"accepted\", \"passed\": true}, {\"check\": \"partial repair probe 2\", \"actual\": \"accepted\", \"expected\": \"accepted\", \"passed\": true}, {\"check\": \"boundary control 1\", \"actual\": \"accepted\", \"expected\": \"accepted\", \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": \"late\", \"expected\": \"late\", \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": \"accepted\", \"expected\": \"accepted\", \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": \"accepted\", \"expected\": \"accepted\", \"passed\": true}], \"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."}}