{"abstract":"Most valid CPFs fail the second check digit.","category":"Check-digit algorithms","checks":8,"contract":"Brazilian CPF taxpayer number: dots and hyphens removed, then 11 ASCII digits that are not all the same digit (else \"malformed\"). k1 = (sum of digits 1-9 weighted 10..2) * 10 mod 11 mod 10; k2 = (digits 1-9 and the computed k1 weighted 11..2) * 10 mod 11 mod 10. Return [k1, k2, whether digits 10-11 equal them].","evaluation_group":"w2-check_digit_algorithms-br-cpf","failed_approach":"Shifting the range to 12..3 covers ten digits but with every weight one too large.","family":"w2-check_digit_algorithms-br-cpf-second-digit-weights","id":"FA-72746","implementations":{"attempt":{"sha256":"61825751349d90752bf5e2f7653425a153c6aec18d5048a6652d5abf8b90a0a7","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(s):\n    t = s.replace('.', '').replace('-', '')\n    if len(t) != 11 or not t.isascii() or not t.isdigit():\n        return 'malformed'\n    if len(set(t)) == 1:\n        return 'malformed'\n    d = [int(ch) for ch in t]\n    k1 = sum(w * x for w, x in zip(range(10, 1, -1), d[:9])) * 10 % 11 % 10\n    k2 = sum(w * x for w, x in zip(range(12, 2, -1), d[:9] + [k1])) * 10 % 11 % 10\n    return [k1, k2, d[9] == k1 and d[10] == k2]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [\"42765277574\"]', ['42765277574'], [9, 1, False]], ['regression [\"04160821863\"]', ['04160821863'], [1, 2, False]], ['control [\"111.111.111-11\"]', ['111.111.111-11'], 'malformed'], ['control [\"00000000000\"]', ['00000000000'], 'malformed'], ['control [\"22222222222\"]', ['22222222222'], 'malformed'], ['control [\"1234567890\"]', ['1234567890'], 'malformed'], ['control [\"80112861152\"]', ['80112861152'], [0, 5, False]], ['control [\"61682621036\"]', ['61682621036'], [5, 7, False]]], [['regression [\"54166960081\"]', ['54166960081'], [1, 6, False]], ['regression [\"80112861152\"]', ['80112861152'], [0, 5, False]], ['control [\"00000000000\"]', ['00000000000'], 'malformed'], ['control [\"22222222222\"]', ['22222222222'], 'malformed'], ['control [\"1234567890\"]', ['1234567890'], 'malformed'], ['control [\"111.111.111-11\"]', ['111.111.111-11'], 'malformed'], ['control [\"11888021888\"]', ['11888021888'], [6, 1, False]], ['control [\"02970275879\"]', ['02970275879'], [1, 3, False]]], [['regression [\"91615291602\"]', ['91615291602'], [8, 7, False]], ['regression [\"38203173222\"]', ['38203173222'], [5, 0, False]], ['control [\"22222222222\"]', ['22222222222'], 'malformed'], ['control [\"1234567890\"]', ['1234567890'], 'malformed'], ['control [\"111.111.111-11\"]', ['111.111.111-11'], 'malformed'], ['control [\"00000000000\"]', ['00000000000'], 'malformed'], ['control [\"25998738965\"]', ['25998738965'], [4, 2, False]], ['control [\"52682522850\"]', ['52682522850'], [3, 1, False]]], [['regression [\"11888021888\"]', ['11888021888'], [6, 1, False]], ['regression [\"02970275879\"]', ['02970275879'], [1, 3, False]], ['control [\"1234567890\"]', ['1234567890'], 'malformed'], ['control [\"111.111.111-11\"]', ['111.111.111-11'], 'malformed'], ['control [\"00000000000\"]', ['00000000000'], 'malformed'], ['control [\"22222222222\"]', ['22222222222'], 'malformed'], ['control [\"37134793981\"]', ['37134793981'], [9, 0, False]], ['control [\"529.982.247-25\"]', ['529.982.247-25'], [2, 5, True]]], [['regression [\"29622049718\"]', ['29622049718'], [0, 2, False]], ['regression [\"22747397622\"]', ['22747397622'], [5, 3, False]], ['control [\"111.111.111-11\"]', ['111.111.111-11'], 'malformed'], ['control [\"00000000000\"]', ['00000000000'], 'malformed'], ['control [\"22222222222\"]', ['22222222222'], 'malformed'], ['control [\"1234567890\"]', ['1234567890'], 'malformed'], ['control [\"123.456.789-09\"]', ['123.456.789-09'], [0, 9, True]], ['control [\"123.456.789-00\"]', ['123.456.789-00'], [0, 9, False]]]]\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":"396899f8dfd2fe2211390987409830d29f18cbb3e3030bb76c5415c8e771d71a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(s):\n    t = s.replace('.', '').replace('-', '')\n    if len(t) != 11 or not t.isascii() or not t.isdigit():\n        return 'malformed'\n    if len(set(t)) == 1:\n        return 'malformed'\n    d = [int(ch) for ch in t]\n    k1 = sum(w * x for w, x in zip(range(10, 1, -1), d[:9])) * 10 % 11 % 10\n    k2 = sum(w * x for w, x in zip(range(10, 1, -1), d[:9] + [k1])) * 10 % 11 % 10\n    return [k1, k2, d[9] == k1 and d[10] == k2]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [\"42765277574\"]', ['42765277574'], [9, 1, False]], ['regression [\"04160821863\"]', ['04160821863'], [1, 2, False]], ['control [\"111.111.111-11\"]', ['111.111.111-11'], 'malformed'], ['control [\"00000000000\"]', ['00000000000'], 'malformed'], ['control [\"22222222222\"]', ['22222222222'], 'malformed'], ['control [\"1234567890\"]', ['1234567890'], 'malformed'], ['control [\"80112861152\"]', ['80112861152'], [0, 5, False]], ['control [\"61682621036\"]', ['61682621036'], [5, 7, False]]], [['regression [\"54166960081\"]', ['54166960081'], [1, 6, False]], ['regression [\"80112861152\"]', ['80112861152'], [0, 5, False]], ['control [\"00000000000\"]', ['00000000000'], 'malformed'], ['control [\"22222222222\"]', ['22222222222'], 'malformed'], ['control [\"1234567890\"]', ['1234567890'], 'malformed'], ['control [\"111.111.111-11\"]', ['111.111.111-11'], 'malformed'], ['control [\"11888021888\"]', ['11888021888'], [6, 1, False]], ['control [\"02970275879\"]', ['02970275879'], [1, 3, False]]], [['regression [\"91615291602\"]', ['91615291602'], [8, 7, False]], ['regression [\"38203173222\"]', ['38203173222'], [5, 0, False]], ['control [\"22222222222\"]', ['22222222222'], 'malformed'], ['control [\"1234567890\"]', ['1234567890'], 'malformed'], ['control [\"111.111.111-11\"]', ['111.111.111-11'], 'malformed'], ['control [\"00000000000\"]', ['00000000000'], 'malformed'], ['control [\"25998738965\"]', ['25998738965'], [4, 2, False]], ['control [\"52682522850\"]', ['52682522850'], [3, 1, False]]], [['regression [\"11888021888\"]', ['11888021888'], [6, 1, False]], ['regression [\"02970275879\"]', ['02970275879'], [1, 3, False]], ['control [\"1234567890\"]', ['1234567890'], 'malformed'], ['control [\"111.111.111-11\"]', ['111.111.111-11'], 'malformed'], ['control [\"00000000000\"]', ['00000000000'], 'malformed'], ['control [\"22222222222\"]', ['22222222222'], 'malformed'], ['control [\"37134793981\"]', ['37134793981'], [9, 0, False]], ['control [\"529.982.247-25\"]', ['529.982.247-25'], [2, 5, True]]], [['regression [\"29622049718\"]', ['29622049718'], [0, 2, False]], ['regression [\"22747397622\"]', ['22747397622'], [5, 3, False]], ['control [\"111.111.111-11\"]', ['111.111.111-11'], 'malformed'], ['control [\"00000000000\"]', ['00000000000'], 'malformed'], ['control [\"22222222222\"]', ['22222222222'], 'malformed'], ['control [\"1234567890\"]', ['1234567890'], 'malformed'], ['control [\"123.456.789-09\"]', ['123.456.789-09'], [0, 9, True]], ['control [\"123.456.789-00\"]', ['123.456.789-00'], [0, 9, False]]]]\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":"8b68f9592b26610bb9eb66e58ded17f85cb2bcd0301d03f06143a56c7938f08a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(s):\n    t = s.replace('.', '').replace('-', '')\n    if len(t) != 11 or not t.isascii() or not t.isdigit():\n        return 'malformed'\n    if len(set(t)) == 1:\n        return 'malformed'\n    d = [int(ch) for ch in t]\n    k1 = sum(w * x for w, x in zip(range(10, 1, -1), d[:9])) * 10 % 11 % 10\n    k2 = sum(w * x for w, x in zip(range(11, 1, -1), d[:9] + [k1])) * 10 % 11 % 10\n    return [k1, k2, d[9] == k1 and d[10] == k2]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [\"42765277574\"]', ['42765277574'], [9, 1, False]], ['regression [\"04160821863\"]', ['04160821863'], [1, 2, False]], ['control [\"111.111.111-11\"]', ['111.111.111-11'], 'malformed'], ['control [\"00000000000\"]', ['00000000000'], 'malformed'], ['control [\"22222222222\"]', ['22222222222'], 'malformed'], ['control [\"1234567890\"]', ['1234567890'], 'malformed'], ['control [\"80112861152\"]', ['80112861152'], [0, 5, False]], ['control [\"61682621036\"]', ['61682621036'], [5, 7, False]]], [['regression [\"54166960081\"]', ['54166960081'], [1, 6, False]], ['regression [\"80112861152\"]', ['80112861152'], [0, 5, False]], ['control [\"00000000000\"]', ['00000000000'], 'malformed'], ['control [\"22222222222\"]', ['22222222222'], 'malformed'], ['control [\"1234567890\"]', ['1234567890'], 'malformed'], ['control [\"111.111.111-11\"]', ['111.111.111-11'], 'malformed'], ['control [\"11888021888\"]', ['11888021888'], [6, 1, False]], ['control [\"02970275879\"]', ['02970275879'], [1, 3, False]]], [['regression [\"91615291602\"]', ['91615291602'], [8, 7, False]], ['regression [\"38203173222\"]', ['38203173222'], [5, 0, False]], ['control [\"22222222222\"]', ['22222222222'], 'malformed'], ['control [\"1234567890\"]', ['1234567890'], 'malformed'], ['control [\"111.111.111-11\"]', ['111.111.111-11'], 'malformed'], ['control [\"00000000000\"]', ['00000000000'], 'malformed'], ['control [\"25998738965\"]', ['25998738965'], [4, 2, False]], ['control [\"52682522850\"]', ['52682522850'], [3, 1, False]]], [['regression [\"11888021888\"]', ['11888021888'], [6, 1, False]], ['regression [\"02970275879\"]', ['02970275879'], [1, 3, False]], ['control [\"1234567890\"]', ['1234567890'], 'malformed'], ['control [\"111.111.111-11\"]', ['111.111.111-11'], 'malformed'], ['control [\"00000000000\"]', ['00000000000'], 'malformed'], ['control [\"22222222222\"]', ['22222222222'], 'malformed'], ['control [\"37134793981\"]', ['37134793981'], [9, 0, False]], ['control [\"529.982.247-25\"]', ['529.982.247-25'], [2, 5, True]]], [['regression [\"29622049718\"]', ['29622049718'], [0, 2, False]], ['regression [\"22747397622\"]', ['22747397622'], [5, 3, False]], ['control [\"111.111.111-11\"]', ['111.111.111-11'], 'malformed'], ['control [\"00000000000\"]', ['00000000000'], 'malformed'], ['control [\"22222222222\"]', ['22222222222'], 'malformed'], ['control [\"1234567890\"]', ['1234567890'], 'malformed'], ['control [\"123.456.789-09\"]', ['123.456.789-09'], [0, 9, True]], ['control [\"123.456.789-00\"]', ['123.456.789-00'], [0, 9, False]]]]\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-br-cpf-second-digit-weights","generated_at":"2026-09-29T14:48:41.173861+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Onboarding and invoicing flows validate CPF numbers before tax reporting.","repair":"Weight the ten digits for k2 by 11 down to 2.","root_cause":"k2 is weighted 10..2, so zip truncates the list and the computed k1 never enters the sum.","sha256":"32c91633e4eef1832eb60c7bb0add5e8ea82913e8996483358aa25912027980d","title":"CPF second check digit reuses the first weight range · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":38.606,"exit_code":1,"observations":[{"actual":[9,2,false],"check":"regression [\"42765277574\"]","expected":[9,1,false],"passed":false},{"actual":[1,4,false],"check":"regression [\"04160821863\"]","expected":[1,2,false],"passed":false},{"actual":"malformed","check":"control [\"111.111.111-11\"]","expected":"malformed","passed":true},{"actual":"malformed","check":"control [\"00000000000\"]","expected":"malformed","passed":true},{"actual":"malformed","check":"control [\"22222222222\"]","expected":"malformed","passed":true},{"actual":"malformed","check":"control [\"1234567890\"]","expected":"malformed","passed":true},{"actual":[0,0,false],"check":"control [\"80112861152\"]","expected":[0,5,false],"passed":false},{"actual":[5,3,false],"check":"control [\"61682621036\"]","expected":[5,7,false],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [\\\"42765277574\\\"]\", \"actual\": [9, 2, false], \"expected\": [9, 1, false], \"passed\": false}, {\"check\": \"regression [\\\"04160821863\\\"]\", \"actual\": [1, 4, false], \"expected\": [1, 2, false], \"passed\": false}, {\"check\": \"control [\\\"111.111.111-11\\\"]\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"control [\\\"00000000000\\\"]\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"control [\\\"22222222222\\\"]\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"control [\\\"1234567890\\\"]\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"control [\\\"80112861152\\\"]\", \"actual\": [0, 0, false], \"expected\": [0, 5, false], \"passed\": false}, {\"check\": \"control [\\\"61682621036\\\"]\", \"actual\": [5, 3, false], \"expected\": [5, 7, false], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.141,"exit_code":1,"observations":[{"actual":[9,9,false],"check":"regression [\"42765277574\"]","expected":[9,1,false],"passed":false},{"actual":[1,1,false],"check":"regression [\"04160821863\"]","expected":[1,2,false],"passed":false},{"actual":"malformed","check":"control [\"111.111.111-11\"]","expected":"malformed","passed":true},{"actual":"malformed","check":"control [\"00000000000\"]","expected":"malformed","passed":true},{"actual":"malformed","check":"control [\"22222222222\"]","expected":"malformed","passed":true},{"actual":"malformed","check":"control [\"1234567890\"]","expected":"malformed","passed":true},{"actual":[0,0,false],"check":"control [\"80112861152\"]","expected":[0,5,false],"passed":false},{"actual":[5,5,false],"check":"control [\"61682621036\"]","expected":[5,7,false],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [\\\"42765277574\\\"]\", \"actual\": [9, 9, false], \"expected\": [9, 1, false], \"passed\": false}, {\"check\": \"regression [\\\"04160821863\\\"]\", \"actual\": [1, 1, false], \"expected\": [1, 2, false], \"passed\": false}, {\"check\": \"control [\\\"111.111.111-11\\\"]\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"control [\\\"00000000000\\\"]\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"control [\\\"22222222222\\\"]\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"control [\\\"1234567890\\\"]\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"control [\\\"80112861152\\\"]\", \"actual\": [0, 0, false], \"expected\": [0, 5, false], \"passed\": false}, {\"check\": \"control [\\\"61682621036\\\"]\", \"actual\": [5, 5, false], \"expected\": [5, 7, false], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":37.513,"exit_code":0,"observations":[{"actual":[9,1,false],"check":"regression [\"42765277574\"]","expected":[9,1,false],"passed":true},{"actual":[1,2,false],"check":"regression [\"04160821863\"]","expected":[1,2,false],"passed":true},{"actual":"malformed","check":"control [\"111.111.111-11\"]","expected":"malformed","passed":true},{"actual":"malformed","check":"control [\"00000000000\"]","expected":"malformed","passed":true},{"actual":"malformed","check":"control [\"22222222222\"]","expected":"malformed","passed":true},{"actual":"malformed","check":"control [\"1234567890\"]","expected":"malformed","passed":true},{"actual":[0,5,false],"check":"control [\"80112861152\"]","expected":[0,5,false],"passed":true},{"actual":[5,7,false],"check":"control [\"61682621036\"]","expected":[5,7,false],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [\\\"42765277574\\\"]\", \"actual\": [9, 1, false], \"expected\": [9, 1, false], \"passed\": true}, {\"check\": \"regression [\\\"04160821863\\\"]\", \"actual\": [1, 2, false], \"expected\": [1, 2, false], \"passed\": true}, {\"check\": \"control [\\\"111.111.111-11\\\"]\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"control [\\\"00000000000\\\"]\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"control [\\\"22222222222\\\"]\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"control [\\\"1234567890\\\"]\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"control [\\\"80112861152\\\"]\", \"actual\": [0, 5, false], \"expected\": [0, 5, false], \"passed\": true}, {\"check\": \"control [\\\"61682621036\\\"]\", \"actual\": [5, 7, false], \"expected\": [5, 7, false], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}