{"abstract":"CUSIPs with letters in doubled positions get wrong check digits.","category":"Check-digit algorithms","checks":8,"contract":"CUSIP check: nine ASCII characters, the ninth a digit. Payload values: digits face value, A-Z 10-35, * 36, @ 37, # 38 (anything else \"malformed\"). Every second payload character (1-based even position) is doubled, and the decimal digits of each value are summed. Return [(10 - sum % 10) % 10, whether it equals the ninth digit].","evaluation_group":"w2-check_digit_algorithms-cusip","failed_approach":"A digital root folds 19 and larger values to a single digit, still differing from the two-digit sum.","family":"w2-check_digit_algorithms-cusip-digit-summing","id":"FA-72536","implementations":{"attempt":{"sha256":"5859ed764554ff234de9cff481864e8ed9f9deb69e38e9712e0fc96e483f745b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(s):\n    if len(s) != 9 or not s.isascii() or not s[8].isdigit():\n        return 'malformed'\n    total = 0\n    for i, ch in enumerate(s[:8]):\n        if ch.isdigit():\n            v = int(ch)\n        elif 'A' <= ch <= 'Z':\n            v = ord(ch) - 55\n        elif ch in '*@#':\n            v = 36 + '*@#'.index(ch)\n        else:\n            return 'malformed'\n        if i % 2 == 1:\n            v *= 2\n        total += (v - 1) % 9 + 1 if v else 0\n    check = (10 - total % 10) % 10\n    return [check, check == int(s[8])]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [\"317997MK3\"]', ['317997MK3'], [7, False]], ['regression [\"624143L53\"]', ['624143L53'], [0, False]], ['partial-repair [\"088857YN7\"]', ['088857YN7'], [1, False]], ['partial-repair [\"6OZ44LI17\"]', ['6OZ44LI17'], [5, False]], ['control [\"595693682\"]', ['595693682'], [0, False]], ['control [\"445197417\"]', ['445197417'], [1, False]], ['control [\"037833100\"]', ['037833100'], [0, True]], ['control [\"594918104\"]', ['594918104'], [4, True]]], [['regression [\"161949AV8\"]', ['161949AV8'], [4, False]], ['regression [\"523003XR4\"]', ['523003XR4'], [7, False]], ['partial-repair [\"6PI3M7KT7\"]', ['6PI3M7KT7'], [0, False]], ['partial-repair [\"KU9BYOL70\"]', ['KU9BYOL70'], [2, False]], ['control [\"03783310\"]', ['03783310'], 'malformed'], ['control [\"0378331a0\"]', ['0378331a0'], 'malformed'], ['control [\"595693682\"]', ['595693682'], [0, False]], ['control [\"445197417\"]', ['445197417'], [1, False]]], [['regression [\"088857YN7\"]', ['088857YN7'], [1, False]], ['regression [\"462107IA0\"]', ['462107IA0'], [3, False]], ['partial-repair [\"7WKYMG#Y7\"]', ['7WKYMG#Y7'], [3, False]], ['partial-repair [\"68389X105\"]', ['68389X105'], [5, True]], ['control [\"594918104\"]', ['594918104'], [4, True]], ['control [\"037833101\"]', ['037833101'], [0, False]], ['control [\"03783310\"]', ['03783310'], 'malformed'], ['control [\"0378331a0\"]', ['0378331a0'], 'malformed']], [['regression [\"V0SRK56U5\"]', ['V0SRK56U5'], [2, False]], ['regression [\"U243EIXI1\"]', ['U243EIXI1'], [4, False]], ['partial-repair [\"088857YN7\"]', ['088857YN7'], [1, False]], ['partial-repair [\"6OZ44LI17\"]', ['6OZ44LI17'], [5, False]], ['control [\"445197417\"]', ['445197417'], [1, False]], ['control [\"037833100\"]', ['037833100'], [0, True]], ['control [\"594918104\"]', ['594918104'], [4, True]], ['control [\"037833101\"]', ['037833101'], [0, False]]], [['regression [\"KU9BYOL70\"]', ['KU9BYOL70'], [2, False]], ['regression [\"XIXEC2WW3\"]', ['XIXEC2WW3'], [7, False]], ['partial-repair [\"6PI3M7KT7\"]', ['6PI3M7KT7'], [0, False]], ['control [\"0378331a0\"]', ['0378331a0'], 'malformed'], ['control [\"595693682\"]', ['595693682'], [0, False]], ['control [\"445197417\"]', ['445197417'], [1, False]], ['control [\"037833100\"]', ['037833100'], [0, True]], ['control [\"594918104\"]', ['594918104'], [4, True]]]]\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":"dccf6f79c0873b2e8ee30988bb4f7b921ce016d40443fc97aff5e22078f7411c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(s):\n    if len(s) != 9 or not s.isascii() or not s[8].isdigit():\n        return 'malformed'\n    total = 0\n    for i, ch in enumerate(s[:8]):\n        if ch.isdigit():\n            v = int(ch)\n        elif 'A' <= ch <= 'Z':\n            v = ord(ch) - 55\n        elif ch in '*@#':\n            v = 36 + '*@#'.index(ch)\n        else:\n            return 'malformed'\n        if i % 2 == 1:\n            v *= 2\n        total += v - 9 if v > 9 else v\n    check = (10 - total % 10) % 10\n    return [check, check == int(s[8])]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [\"317997MK3\"]', ['317997MK3'], [7, False]], ['regression [\"624143L53\"]', ['624143L53'], [0, False]], ['partial-repair [\"088857YN7\"]', ['088857YN7'], [1, False]], ['partial-repair [\"6OZ44LI17\"]', ['6OZ44LI17'], [5, False]], ['control [\"595693682\"]', ['595693682'], [0, False]], ['control [\"445197417\"]', ['445197417'], [1, False]], ['control [\"037833100\"]', ['037833100'], [0, True]], ['control [\"594918104\"]', ['594918104'], [4, True]]], [['regression [\"161949AV8\"]', ['161949AV8'], [4, False]], ['regression [\"523003XR4\"]', ['523003XR4'], [7, False]], ['partial-repair [\"6PI3M7KT7\"]', ['6PI3M7KT7'], [0, False]], ['partial-repair [\"KU9BYOL70\"]', ['KU9BYOL70'], [2, False]], ['control [\"03783310\"]', ['03783310'], 'malformed'], ['control [\"0378331a0\"]', ['0378331a0'], 'malformed'], ['control [\"595693682\"]', ['595693682'], [0, False]], ['control [\"445197417\"]', ['445197417'], [1, False]]], [['regression [\"088857YN7\"]', ['088857YN7'], [1, False]], ['regression [\"462107IA0\"]', ['462107IA0'], [3, False]], ['partial-repair [\"7WKYMG#Y7\"]', ['7WKYMG#Y7'], [3, False]], ['partial-repair [\"68389X105\"]', ['68389X105'], [5, True]], ['control [\"594918104\"]', ['594918104'], [4, True]], ['control [\"037833101\"]', ['037833101'], [0, False]], ['control [\"03783310\"]', ['03783310'], 'malformed'], ['control [\"0378331a0\"]', ['0378331a0'], 'malformed']], [['regression [\"V0SRK56U5\"]', ['V0SRK56U5'], [2, False]], ['regression [\"U243EIXI1\"]', ['U243EIXI1'], [4, False]], ['partial-repair [\"088857YN7\"]', ['088857YN7'], [1, False]], ['partial-repair [\"6OZ44LI17\"]', ['6OZ44LI17'], [5, False]], ['control [\"445197417\"]', ['445197417'], [1, False]], ['control [\"037833100\"]', ['037833100'], [0, True]], ['control [\"594918104\"]', ['594918104'], [4, True]], ['control [\"037833101\"]', ['037833101'], [0, False]]], [['regression [\"KU9BYOL70\"]', ['KU9BYOL70'], [2, False]], ['regression [\"XIXEC2WW3\"]', ['XIXEC2WW3'], [7, False]], ['partial-repair [\"6PI3M7KT7\"]', ['6PI3M7KT7'], [0, False]], ['control [\"0378331a0\"]', ['0378331a0'], 'malformed'], ['control [\"595693682\"]', ['595693682'], [0, False]], ['control [\"445197417\"]', ['445197417'], [1, False]], ['control [\"037833100\"]', ['037833100'], [0, True]], ['control [\"594918104\"]', ['594918104'], [4, True]]]]\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":"9608752162620384980f2b8e9573347fdf8c66f7b9801775692ca11665d49749","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(s):\n    if len(s) != 9 or not s.isascii() or not s[8].isdigit():\n        return 'malformed'\n    total = 0\n    for i, ch in enumerate(s[:8]):\n        if ch.isdigit():\n            v = int(ch)\n        elif 'A' <= ch <= 'Z':\n            v = ord(ch) - 55\n        elif ch in '*@#':\n            v = 36 + '*@#'.index(ch)\n        else:\n            return 'malformed'\n        if i % 2 == 1:\n            v *= 2\n        total += v // 10 + v % 10\n    check = (10 - total % 10) % 10\n    return [check, check == int(s[8])]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [\"317997MK3\"]', ['317997MK3'], [7, False]], ['regression [\"624143L53\"]', ['624143L53'], [0, False]], ['partial-repair [\"088857YN7\"]', ['088857YN7'], [1, False]], ['partial-repair [\"6OZ44LI17\"]', ['6OZ44LI17'], [5, False]], ['control [\"595693682\"]', ['595693682'], [0, False]], ['control [\"445197417\"]', ['445197417'], [1, False]], ['control [\"037833100\"]', ['037833100'], [0, True]], ['control [\"594918104\"]', ['594918104'], [4, True]]], [['regression [\"161949AV8\"]', ['161949AV8'], [4, False]], ['regression [\"523003XR4\"]', ['523003XR4'], [7, False]], ['partial-repair [\"6PI3M7KT7\"]', ['6PI3M7KT7'], [0, False]], ['partial-repair [\"KU9BYOL70\"]', ['KU9BYOL70'], [2, False]], ['control [\"03783310\"]', ['03783310'], 'malformed'], ['control [\"0378331a0\"]', ['0378331a0'], 'malformed'], ['control [\"595693682\"]', ['595693682'], [0, False]], ['control [\"445197417\"]', ['445197417'], [1, False]]], [['regression [\"088857YN7\"]', ['088857YN7'], [1, False]], ['regression [\"462107IA0\"]', ['462107IA0'], [3, False]], ['partial-repair [\"7WKYMG#Y7\"]', ['7WKYMG#Y7'], [3, False]], ['partial-repair [\"68389X105\"]', ['68389X105'], [5, True]], ['control [\"594918104\"]', ['594918104'], [4, True]], ['control [\"037833101\"]', ['037833101'], [0, False]], ['control [\"03783310\"]', ['03783310'], 'malformed'], ['control [\"0378331a0\"]', ['0378331a0'], 'malformed']], [['regression [\"V0SRK56U5\"]', ['V0SRK56U5'], [2, False]], ['regression [\"U243EIXI1\"]', ['U243EIXI1'], [4, False]], ['partial-repair [\"088857YN7\"]', ['088857YN7'], [1, False]], ['partial-repair [\"6OZ44LI17\"]', ['6OZ44LI17'], [5, False]], ['control [\"445197417\"]', ['445197417'], [1, False]], ['control [\"037833100\"]', ['037833100'], [0, True]], ['control [\"594918104\"]', ['594918104'], [4, True]], ['control [\"037833101\"]', ['037833101'], [0, False]]], [['regression [\"KU9BYOL70\"]', ['KU9BYOL70'], [2, False]], ['regression [\"XIXEC2WW3\"]', ['XIXEC2WW3'], [7, False]], ['partial-repair [\"6PI3M7KT7\"]', ['6PI3M7KT7'], [0, False]], ['control [\"0378331a0\"]', ['0378331a0'], 'malformed'], ['control [\"595693682\"]', ['595693682'], [0, False]], ['control [\"445197417\"]', ['445197417'], [1, False]], ['control [\"037833100\"]', ['037833100'], [0, True]], ['control [\"594918104\"]', ['594918104'], [4, True]]]]\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, bounded teaching model of the named scheme under the stated contract; not a certified validator. 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-check_digit_algorithms-cusip-digit-summing","generated_at":"2026-09-29T14:48:39.322547+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Clearing and custody systems validate North American security identifiers.","repair":"Add v // 10 + v % 10 for every (possibly doubled) value.","root_cause":"Values are reduced with the Luhn rule v - 9 (if v > 9), which only equals the digit sum below 20; letter values reach 76.","sha256":"7c6e87d81bdb26e431bd9027cf41dea45dbd43d3fa89a844b767580ffb74e98a","title":"CUSIP folds doubled values by subtracting nine · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":38.223,"exit_code":1,"observations":[{"actual":[7,false],"check":"regression [\"317997MK3\"]","expected":[7,false],"passed":true},{"actual":[0,false],"check":"regression [\"624143L53\"]","expected":[0,false],"passed":true},{"actual":[0,false],"check":"partial-repair [\"088857YN7\"]","expected":[1,false],"passed":false},{"actual":[4,false],"check":"partial-repair [\"6OZ44LI17\"]","expected":[5,false],"passed":false},{"actual":[0,false],"check":"control [\"595693682\"]","expected":[0,false],"passed":true},{"actual":[1,false],"check":"control [\"445197417\"]","expected":[1,false],"passed":true},{"actual":[0,true],"check":"control [\"037833100\"]","expected":[0,true],"passed":true},{"actual":[4,true],"check":"control [\"594918104\"]","expected":[4,true],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [\\\"317997MK3\\\"]\", \"actual\": [7, false], \"expected\": [7, false], \"passed\": true}, {\"check\": \"regression [\\\"624143L53\\\"]\", \"actual\": [0, false], \"expected\": [0, false], \"passed\": true}, {\"check\": \"partial-repair [\\\"088857YN7\\\"]\", \"actual\": [0, false], \"expected\": [1, false], \"passed\": false}, {\"check\": \"partial-repair [\\\"6OZ44LI17\\\"]\", \"actual\": [4, false], \"expected\": [5, false], \"passed\": false}, {\"check\": \"control [\\\"595693682\\\"]\", \"actual\": [0, false], \"expected\": [0, false], \"passed\": true}, {\"check\": \"control [\\\"445197417\\\"]\", \"actual\": [1, false], \"expected\": [1, false], \"passed\": true}, {\"check\": \"control [\\\"037833100\\\"]\", \"actual\": [0, true], \"expected\": [0, true], \"passed\": true}, {\"check\": \"control [\\\"594918104\\\"]\", \"actual\": [4, true], \"expected\": [4, true], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":36.643,"exit_code":1,"observations":[{"actual":[1,false],"check":"regression [\"317997MK3\"]","expected":[7,false],"passed":false},{"actual":[1,false],"check":"regression [\"624143L53\"]","expected":[0,false],"passed":false},{"actual":[6,false],"check":"partial-repair [\"088857YN7\"]","expected":[1,false],"passed":false},{"actual":[3,false],"check":"partial-repair [\"6OZ44LI17\"]","expected":[5,false],"passed":false},{"actual":[0,false],"check":"control [\"595693682\"]","expected":[0,false],"passed":true},{"actual":[1,false],"check":"control [\"445197417\"]","expected":[1,false],"passed":true},{"actual":[0,true],"check":"control [\"037833100\"]","expected":[0,true],"passed":true},{"actual":[4,true],"check":"control [\"594918104\"]","expected":[4,true],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [\\\"317997MK3\\\"]\", \"actual\": [1, false], \"expected\": [7, false], \"passed\": false}, {\"check\": \"regression [\\\"624143L53\\\"]\", \"actual\": [1, false], \"expected\": [0, false], \"passed\": false}, {\"check\": \"partial-repair [\\\"088857YN7\\\"]\", \"actual\": [6, false], \"expected\": [1, false], \"passed\": false}, {\"check\": \"partial-repair [\\\"6OZ44LI17\\\"]\", \"actual\": [3, false], \"expected\": [5, false], \"passed\": false}, {\"check\": \"control [\\\"595693682\\\"]\", \"actual\": [0, false], \"expected\": [0, false], \"passed\": true}, {\"check\": \"control [\\\"445197417\\\"]\", \"actual\": [1, false], \"expected\": [1, false], \"passed\": true}, {\"check\": \"control [\\\"037833100\\\"]\", \"actual\": [0, true], \"expected\": [0, true], \"passed\": true}, {\"check\": \"control [\\\"594918104\\\"]\", \"actual\": [4, true], \"expected\": [4, true], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":37.796,"exit_code":0,"observations":[{"actual":[7,false],"check":"regression [\"317997MK3\"]","expected":[7,false],"passed":true},{"actual":[0,false],"check":"regression [\"624143L53\"]","expected":[0,false],"passed":true},{"actual":[1,false],"check":"partial-repair [\"088857YN7\"]","expected":[1,false],"passed":true},{"actual":[5,false],"check":"partial-repair [\"6OZ44LI17\"]","expected":[5,false],"passed":true},{"actual":[0,false],"check":"control [\"595693682\"]","expected":[0,false],"passed":true},{"actual":[1,false],"check":"control [\"445197417\"]","expected":[1,false],"passed":true},{"actual":[0,true],"check":"control [\"037833100\"]","expected":[0,true],"passed":true},{"actual":[4,true],"check":"control [\"594918104\"]","expected":[4,true],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [\\\"317997MK3\\\"]\", \"actual\": [7, false], \"expected\": [7, false], \"passed\": true}, {\"check\": \"regression [\\\"624143L53\\\"]\", \"actual\": [0, false], \"expected\": [0, false], \"passed\": true}, {\"check\": \"partial-repair [\\\"088857YN7\\\"]\", \"actual\": [1, false], \"expected\": [1, false], \"passed\": true}, {\"check\": \"partial-repair [\\\"6OZ44LI17\\\"]\", \"actual\": [5, false], \"expected\": [5, false], \"passed\": true}, {\"check\": \"control [\\\"595693682\\\"]\", \"actual\": [0, false], \"expected\": [0, false], \"passed\": true}, {\"check\": \"control [\\\"445197417\\\"]\", \"actual\": [1, false], \"expected\": [1, false], \"passed\": true}, {\"check\": \"control [\\\"037833100\\\"]\", \"actual\": [0, true], \"expected\": [0, true], \"passed\": true}, {\"check\": \"control [\\\"594918104\\\"]\", \"actual\": [4, true], \"expected\": [4, true], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}