{"abstract":"Every digital is treated as a put.","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":"Searching for call only in the first four characters never matches.","family":"w2-options_payoff_and_settlement-digital-options-kind-dispatch","id":"FA-61481","implementations":{"attempt":{"sha256":"1a8171707a7285df15fd648bb84b84348e1fbf6cebdc66d1000195ab25571b47","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(kind, strike, final, cash_amount):\n    if 'call' in kind[:4]:\n        state = 1 if final > strike else (0.5 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 kind dispatch 1', ['cash-call', 105, 93, 10], 0], ['regression kind dispatch 2', ['asset-call', 105, 104.5, 10], 0.0], ['partial repair probe 1', ['asset-call', 95, 83, 100], 0], ['partial repair probe 2', ['asset-call', 105, 93, 1000], 0], ['boundary control 1', ['asset-put', 100, 90, 10], 90], ['boundary control 2', ['cash-call', 100, 100, 10], 5.0], ['normal control 1', ['asset-call', 100, 100, 10], 50.0], ['normal control 2', ['cash-put', 100, 100, 100], 50.0]], [['regression kind dispatch 1', ['cash-call', 105, 112, 1000], 1000], ['regression kind dispatch 2', ['cash-call', 95, 95.5, 100], 100], ['partial repair probe 1', ['asset-call', 100, 88, 1000], 0], ['partial repair probe 2', ['asset-call', 105, 93, 100], 0], ['boundary control 1', ['cash-call', 100, 100, 10], 5.0], ['boundary control 2', ['asset-put', 100, 90, 10], 90], ['normal control 1', ['cash-put', 105, 105, 10], 5.0], ['normal control 2', ['cash-put', 100, 99.5, 1000], 1000]], [['regression kind dispatch 1', ['cash-call', 95, 94.5, 100], 0], ['regression kind dispatch 2', ['asset-call', 95, 95.5, 1000], 95.5], ['partial repair probe 1', ['cash-call', 100, 100.5, 1000], 1000], ['partial repair probe 2', ['asset-call', 95, 102, 100], 102], ['boundary control 1', ['cash-call', 100, 100, 10], 5.0], ['boundary control 2', ['asset-put', 100, 90, 10], 90], ['normal control 1', ['cash-put', 95, 95.5, 100], 0], ['normal control 2', ['asset-call', 100, 100, 1000], 50.0]], [['regression kind dispatch 1', ['cash-call', 95, 95.5, 10], 10], ['regression kind dispatch 2', ['cash-call', 95, 95.5, 1000], 1000], ['partial repair probe 1', ['cash-call', 100, 107, 100], 100], ['partial repair probe 2', ['asset-call', 105, 93, 100], 0], ['boundary control 1', ['asset-put', 100, 90, 10], 90], ['boundary control 2', ['cash-call', 100, 100, 10], 5.0], ['normal control 1', ['cash-put', 100, 107, 100], 0], ['normal control 2', ['asset-put', 105, 93, 10], 93]], [['regression kind dispatch 1', ['asset-call', 105, 104.5, 100], 0.0], ['regression kind dispatch 2', ['asset-call', 100, 88, 1000], 0], ['partial repair probe 1', ['cash-call', 105, 104.5, 100], 0], ['partial repair probe 2', ['asset-call', 100, 100.5, 100], 100.5], ['boundary control 1', ['cash-call', 100, 100, 10], 5.0], ['boundary control 2', ['asset-put', 100, 90, 10], 90], ['normal control 1', ['asset-put', 100, 100, 100], 50.0], ['normal control 2', ['asset-call', 105, 105, 100], 52.5]]]\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":"1efc05fea24feb9155ac8489a4cfbb488e45de2face3b5cdb7c61753a030dbe4","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('-')[0] == 'call':\n        state = 1 if final > strike else (0.5 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 kind dispatch 1', ['cash-call', 105, 93, 10], 0], ['regression kind dispatch 2', ['asset-call', 105, 104.5, 10], 0.0], ['partial repair probe 1', ['asset-call', 95, 83, 100], 0], ['partial repair probe 2', ['asset-call', 105, 93, 1000], 0], ['boundary control 1', ['asset-put', 100, 90, 10], 90], ['boundary control 2', ['cash-call', 100, 100, 10], 5.0], ['normal control 1', ['asset-call', 100, 100, 10], 50.0], ['normal control 2', ['cash-put', 100, 100, 100], 50.0]], [['regression kind dispatch 1', ['cash-call', 105, 112, 1000], 1000], ['regression kind dispatch 2', ['cash-call', 95, 95.5, 100], 100], ['partial repair probe 1', ['asset-call', 100, 88, 1000], 0], ['partial repair probe 2', ['asset-call', 105, 93, 100], 0], ['boundary control 1', ['cash-call', 100, 100, 10], 5.0], ['boundary control 2', ['asset-put', 100, 90, 10], 90], ['normal control 1', ['cash-put', 105, 105, 10], 5.0], ['normal control 2', ['cash-put', 100, 99.5, 1000], 1000]], [['regression kind dispatch 1', ['cash-call', 95, 94.5, 100], 0], ['regression kind dispatch 2', ['asset-call', 95, 95.5, 1000], 95.5], ['partial repair probe 1', ['cash-call', 100, 100.5, 1000], 1000], ['partial repair probe 2', ['asset-call', 95, 102, 100], 102], ['boundary control 1', ['cash-call', 100, 100, 10], 5.0], ['boundary control 2', ['asset-put', 100, 90, 10], 90], ['normal control 1', ['cash-put', 95, 95.5, 100], 0], ['normal control 2', ['asset-call', 100, 100, 1000], 50.0]], [['regression kind dispatch 1', ['cash-call', 95, 95.5, 10], 10], ['regression kind dispatch 2', ['cash-call', 95, 95.5, 1000], 1000], ['partial repair probe 1', ['cash-call', 100, 107, 100], 100], ['partial repair probe 2', ['asset-call', 105, 93, 100], 0], ['boundary control 1', ['asset-put', 100, 90, 10], 90], ['boundary control 2', ['cash-call', 100, 100, 10], 5.0], ['normal control 1', ['cash-put', 100, 107, 100], 0], ['normal control 2', ['asset-put', 105, 93, 10], 93]], [['regression kind dispatch 1', ['asset-call', 105, 104.5, 100], 0.0], ['regression kind dispatch 2', ['asset-call', 100, 88, 1000], 0], ['partial repair probe 1', ['cash-call', 105, 104.5, 100], 0], ['partial repair probe 2', ['asset-call', 100, 100.5, 100], 100.5], ['boundary control 1', ['cash-call', 100, 100, 10], 5.0], ['boundary control 2', ['asset-put', 100, 90, 10], 90], ['normal control 1', ['asset-put', 100, 100, 100], 50.0], ['normal control 2', ['asset-call', 105, 105, 100], 52.5]]]\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-kind-dispatch","generated_at":"2026-09-29T14:46:55.606898+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/put side is read from the first hyphen-separated token.","sha256":"eb6b93e3140c577d5dd285eac79be25c69c4b3a401651d8aa59d54f9860d5417","title":"Binary option settlement with an at-strike rule: option side is parsed from the wrong token · 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.413,"exit_code":1,"observations":[{"actual":10,"check":"regression kind dispatch 1","expected":0,"passed":false},{"actual":104.5,"check":"regression kind dispatch 2","expected":0.0,"passed":false},{"actual":83,"check":"partial repair probe 1","expected":0,"passed":false},{"actual":93,"check":"partial repair probe 2","expected":0,"passed":false},{"actual":90,"check":"boundary control 1","expected":90,"passed":true},{"actual":5.0,"check":"boundary control 2","expected":5.0,"passed":true},{"actual":50.0,"check":"normal control 1","expected":50.0,"passed":true},{"actual":50.0,"check":"normal control 2","expected":50.0,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression kind dispatch 1\", \"actual\": 10, \"expected\": 0, \"passed\": false}, {\"check\": \"regression kind dispatch 2\", \"actual\": 104.5, \"expected\": 0.0, \"passed\": false}, {\"check\": \"partial repair probe 1\", \"actual\": 83, \"expected\": 0, \"passed\": false}, {\"check\": \"partial repair probe 2\", \"actual\": 93, \"expected\": 0, \"passed\": false}, {\"check\": \"boundary control 1\", \"actual\": 90, \"expected\": 90, \"passed\": true}, {\"check\": \"boundary control 2\", \"actual\": 5.0, \"expected\": 5.0, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": 50.0, \"expected\": 50.0, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 50.0, \"expected\": 50.0, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.183,"exit_code":1,"observations":[{"actual":10,"check":"regression kind dispatch 1","expected":0,"passed":false},{"actual":104.5,"check":"regression kind dispatch 2","expected":0.0,"passed":false},{"actual":83,"check":"partial repair probe 1","expected":0,"passed":false},{"actual":93,"check":"partial repair probe 2","expected":0,"passed":false},{"actual":90,"check":"boundary control 1","expected":90,"passed":true},{"actual":5.0,"check":"boundary control 2","expected":5.0,"passed":true},{"actual":50.0,"check":"normal control 1","expected":50.0,"passed":true},{"actual":50.0,"check":"normal control 2","expected":50.0,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression kind dispatch 1\", \"actual\": 10, \"expected\": 0, \"passed\": false}, {\"check\": \"regression kind dispatch 2\", \"actual\": 104.5, \"expected\": 0.0, \"passed\": false}, {\"check\": \"partial repair probe 1\", \"actual\": 83, \"expected\": 0, \"passed\": false}, {\"check\": \"partial repair probe 2\", \"actual\": 93, \"expected\": 0, \"passed\": false}, {\"check\": \"boundary control 1\", \"actual\": 90, \"expected\": 90, \"passed\": true}, {\"check\": \"boundary control 2\", \"actual\": 5.0, \"expected\": 5.0, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": 50.0, \"expected\": 50.0, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 50.0, \"expected\": 50.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."}}