{"abstract":"At-the-money calls pay the full amount instead of half.","category":"Options payoff and settlement","checks":8,"contract":"Inputs kind (cash-call, cash-put, asset-call, asset-put), strike, final price and cash amount. Calls are in the money when final > strike, puts when final < strike; at final == strike both pay half. Cash-or-nothing pays the cash amount, asset-or-nothing pays the final price, times the state (1, 0.5 or 0). Round to 6.","contract_signature":"kind, strike, final, cash_amount","evaluation_group":"w2-options_payoff_and_settlement-digital-options","failed_approach":"Paying nothing at the strike ignores the half-payment rule.","family":"w2-options_payoff_and_settlement-digital-options-call-at-strike-rule","id":"FA-61466","implementations":{"attempt":{"sha256":"3700af2ca354c0ceb48b6e98e3ebfef253be224486cf2f870bf06968c0d8e85d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(kind, strike, final, cash_amount):\n    if kind.split('-')[1] == 'call':\n        state = 1 if final > strike else 0\n    else:\n        state = 1 if final < strike else (0.5 if final == strike else 0)\n    unit = cash_amount if kind.startswith('cash') else final\n    return round(unit * state, 6)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression call at-strike rule 1', ['asset-call', 95, 95, 100], 47.5], ['regression call at-strike rule 2', ['asset-call', 105, 105, 100], 52.5], ['partial repair probe 1', ['cash-call', 95, 95, 1000], 500.0], ['partial repair probe 2', ['cash-call', 95, 95, 10], 5.0], ['boundary control 1', ['asset-put', 100, 90, 10], 90], ['normal control 1', ['cash-put', 100, 107, 10], 0], ['normal control 2', ['cash-put', 100, 88, 1000], 1000], ['normal control 3', ['cash-call', 105, 104.5, 10], 0]], [['regression call at-strike rule 1', ['cash-call', 95, 95, 100], 50.0], ['regression call at-strike rule 2', ['asset-call', 105, 105, 10], 52.5], ['partial repair probe 1', ['asset-call', 105, 105, 100], 52.5], ['partial repair probe 2', ['cash-call', 105, 105, 1000], 500.0], ['boundary control 1', ['asset-put', 100, 90, 10], 90], ['normal control 1', ['asset-call', 100, 88, 1000], 0], ['normal control 2', ['cash-put', 95, 95, 10], 5.0], ['normal control 3', ['cash-put', 105, 93, 10], 10]], [['regression call at-strike rule 1', ['asset-call', 95, 95, 1000], 47.5], ['regression call at-strike rule 2', ['cash-call', 100, 100, 1000], 500.0], ['partial repair probe 1', ['cash-call', 95, 95, 10], 5.0], ['partial repair probe 2', ['cash-call', 95, 95, 1000], 500.0], ['boundary control 1', ['asset-put', 100, 90, 10], 90], ['normal control 1', ['cash-call', 100, 100.5, 100], 100], ['normal control 2', ['asset-call', 95, 94.5, 1000], 0.0], ['normal control 3', ['cash-put', 105, 112, 10], 0]], [['regression call at-strike rule 1', ['asset-call', 95, 95, 10], 47.5], ['regression call at-strike rule 2', ['cash-call', 95, 95, 1000], 500.0], ['partial repair probe 1', ['cash-call', 105, 105, 10], 5.0], ['partial repair probe 2', ['cash-call', 100, 100, 10], 5.0], ['boundary control 1', ['asset-put', 100, 90, 10], 90], ['normal control 1', ['asset-call', 95, 94.5, 100], 0.0], ['normal control 2', ['cash-put', 105, 112, 100], 0], ['normal control 3', ['cash-put', 100, 100, 1000], 500.0]], [['regression call at-strike rule 1', ['cash-call', 95, 95, 10], 5.0], ['regression call at-strike rule 2', ['asset-call', 105, 105, 10], 52.5], ['partial repair probe 1', ['asset-call', 100, 100, 10], 50.0], ['partial repair probe 2', ['cash-call', 105, 105, 1000], 500.0], ['boundary control 1', ['asset-put', 100, 90, 10], 90], ['normal control 1', ['cash-call', 105, 104.5, 10], 0], ['normal control 2', ['cash-put', 95, 95.5, 100], 0], ['normal control 3', ['asset-call', 100, 107, 10], 107]]]\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":"2d6fee8526a113be731148cc2683b83a6826a7d4f23a3c597578f5c1980fb65b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(kind, strike, final, cash_amount):\n    if kind.split('-')[1] == 'call':\n        state = 1 if final >= strike else 0\n    else:\n        state = 1 if final < strike else (0.5 if final == strike else 0)\n    unit = cash_amount if kind.startswith('cash') else final\n    return round(unit * state, 6)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression call at-strike rule 1', ['asset-call', 95, 95, 100], 47.5], ['regression call at-strike rule 2', ['asset-call', 105, 105, 100], 52.5], ['partial repair probe 1', ['cash-call', 95, 95, 1000], 500.0], ['partial repair probe 2', ['cash-call', 95, 95, 10], 5.0], ['boundary control 1', ['asset-put', 100, 90, 10], 90], ['normal control 1', ['cash-put', 100, 107, 10], 0], ['normal control 2', ['cash-put', 100, 88, 1000], 1000], ['normal control 3', ['cash-call', 105, 104.5, 10], 0]], [['regression call at-strike rule 1', ['cash-call', 95, 95, 100], 50.0], ['regression call at-strike rule 2', ['asset-call', 105, 105, 10], 52.5], ['partial repair probe 1', ['asset-call', 105, 105, 100], 52.5], ['partial repair probe 2', ['cash-call', 105, 105, 1000], 500.0], ['boundary control 1', ['asset-put', 100, 90, 10], 90], ['normal control 1', ['asset-call', 100, 88, 1000], 0], ['normal control 2', ['cash-put', 95, 95, 10], 5.0], ['normal control 3', ['cash-put', 105, 93, 10], 10]], [['regression call at-strike rule 1', ['asset-call', 95, 95, 1000], 47.5], ['regression call at-strike rule 2', ['cash-call', 100, 100, 1000], 500.0], ['partial repair probe 1', ['cash-call', 95, 95, 10], 5.0], ['partial repair probe 2', ['cash-call', 95, 95, 1000], 500.0], ['boundary control 1', ['asset-put', 100, 90, 10], 90], ['normal control 1', ['cash-call', 100, 100.5, 100], 100], ['normal control 2', ['asset-call', 95, 94.5, 1000], 0.0], ['normal control 3', ['cash-put', 105, 112, 10], 0]], [['regression call at-strike rule 1', ['asset-call', 95, 95, 10], 47.5], ['regression call at-strike rule 2', ['cash-call', 95, 95, 1000], 500.0], ['partial repair probe 1', ['cash-call', 105, 105, 10], 5.0], ['partial repair probe 2', ['cash-call', 100, 100, 10], 5.0], ['boundary control 1', ['asset-put', 100, 90, 10], 90], ['normal control 1', ['asset-call', 95, 94.5, 100], 0.0], ['normal control 2', ['cash-put', 105, 112, 100], 0], ['normal control 3', ['cash-put', 100, 100, 1000], 500.0]], [['regression call at-strike rule 1', ['cash-call', 95, 95, 10], 5.0], ['regression call at-strike rule 2', ['asset-call', 105, 105, 10], 52.5], ['partial repair probe 1', ['asset-call', 100, 100, 10], 50.0], ['partial repair probe 2', ['cash-call', 105, 105, 1000], 500.0], ['boundary control 1', ['asset-put', 100, 90, 10], 90], ['normal control 1', ['cash-call', 105, 104.5, 10], 0], ['normal control 2', ['cash-put', 95, 95.5, 100], 0], ['normal control 3', ['asset-call', 100, 107, 10], 107]]]\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-digital-options-call-at-strike-rule","generated_at":"2026-09-29T14:46:55.489130+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":"The call test uses final >= strike with no half-payment case.","sha256":"fde5fa084ef119b80ee6f591e7e4225e3a6e01cabbf55200e01af0a6c0942dd1","title":"Binary option settlement with an at-strike rule: calls finishing exactly at the strike pay in full · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":41.718,"exit_code":1,"observations":[{"actual":0,"check":"regression call at-strike rule 1","expected":47.5,"passed":false},{"actual":0,"check":"regression call at-strike rule 2","expected":52.5,"passed":false},{"actual":0,"check":"partial repair probe 1","expected":500.0,"passed":false},{"actual":0,"check":"partial repair probe 2","expected":5.0,"passed":false},{"actual":90,"check":"boundary control 1","expected":90,"passed":true},{"actual":0,"check":"normal control 1","expected":0,"passed":true},{"actual":1000,"check":"normal control 2","expected":1000,"passed":true},{"actual":0,"check":"normal control 3","expected":0,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression call at-strike rule 1\", \"actual\": 0, \"expected\": 47.5, \"passed\": false}, {\"check\": \"regression call at-strike rule 2\", \"actual\": 0, \"expected\": 52.5, \"passed\": false}, {\"check\": \"partial repair probe 1\", \"actual\": 0, \"expected\": 500.0, \"passed\": false}, {\"check\": \"partial repair probe 2\", \"actual\": 0, \"expected\": 5.0, \"passed\": false}, {\"check\": \"boundary control 1\", \"actual\": 90, \"expected\": 90, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 1000, \"expected\": 1000, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": 0, \"expected\": 0, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.583,"exit_code":1,"observations":[{"actual":95,"check":"regression call at-strike rule 1","expected":47.5,"passed":false},{"actual":105,"check":"regression call at-strike rule 2","expected":52.5,"passed":false},{"actual":1000,"check":"partial repair probe 1","expected":500.0,"passed":false},{"actual":10,"check":"partial repair probe 2","expected":5.0,"passed":false},{"actual":90,"check":"boundary control 1","expected":90,"passed":true},{"actual":0,"check":"normal control 1","expected":0,"passed":true},{"actual":1000,"check":"normal control 2","expected":1000,"passed":true},{"actual":0,"check":"normal control 3","expected":0,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression call at-strike rule 1\", \"actual\": 95, \"expected\": 47.5, \"passed\": false}, {\"check\": \"regression call at-strike rule 2\", \"actual\": 105, \"expected\": 52.5, \"passed\": false}, {\"check\": \"partial repair probe 1\", \"actual\": 1000, \"expected\": 500.0, \"passed\": false}, {\"check\": \"partial repair probe 2\", \"actual\": 10, \"expected\": 5.0, \"passed\": false}, {\"check\": \"boundary control 1\", \"actual\": 90, \"expected\": 90, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 1000, \"expected\": 1000, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": 0, \"expected\": 0, \"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."}}