{"abstract":"Generated check digits fail validation of the very number they were computed for.","category":"Check-digit algorithms","checks":8,"contract":"Verhoeff dihedral-group scheme. mode \"generate\" returns the check digit for a nonempty ASCII digit payload; mode \"validate\" returns whether a nonempty digit string ending in its check digit is correct. Digits are processed from the right with permutation P[(i + offset) % 8], offset 1 when generating and 0 when validating; the check digit is the dihedral inverse of the final state. Empty or non-digit input returns None.","contract_signature":"s, mode","evaluation_group":"w2-check_digit_algorithms-verhoeff","failed_approach":"Always using offset 1 fixes generation but breaks validation of complete numbers.","family":"w2-check_digit_algorithms-verhoeff-generate-offset","id":"FA-72386","implementations":{"attempt":{"sha256":"dc60743f239586bbe956fced10bc7e2575818b943fe691c963cc6715c0dd671e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(s, mode):\n    D = [[0,1,2,3,4,5,6,7,8,9],[1,2,3,4,0,6,7,8,9,5],[2,3,4,0,1,7,8,9,5,6],[3,4,0,1,2,8,9,5,6,7],[4,0,1,2,3,9,5,6,7,8],[5,9,8,7,6,0,4,3,2,1],[6,5,9,8,7,1,0,4,3,2],[7,6,5,9,8,2,1,0,4,3],[8,7,6,5,9,3,2,1,0,4],[9,8,7,6,5,4,3,2,1,0]]\n    P = [[0,1,2,3,4,5,6,7,8,9],[1,5,7,6,2,8,3,0,9,4],[5,8,0,3,7,9,6,1,4,2],[8,9,1,6,0,4,3,5,2,7],[9,4,5,3,1,2,8,7,6,0],[4,2,8,6,5,7,3,9,0,1],[2,7,9,3,8,0,6,4,1,5],[7,0,4,6,9,1,3,2,5,8]]\n    INV = [0,4,3,2,1,5,6,7,8,9]\n    if not s or not s.isascii() or not s.isdigit():\n        return None\n    offset = 1\n    c = 0\n    for i, ch in enumerate(reversed(s)):\n        c = D[c][P[(i + offset) % 8][int(ch)]]\n    if mode == 'generate':\n        return INV[c]\n    return c == 0\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [\"7\", \"generate\"]', ['7', 'generate'], 0], ['regression [\"12\", \"generate\"]', ['12', 'generate'], 1], ['partial-repair [\"6001\", \"validate\"]', ['6001', 'validate'], False], ['partial-repair [\"076688867\", \"validate\"]', ['076688867', 'validate'], False], ['control [\"73\", \"validate\"]', ['73', 'validate'], False], ['control [\"123\", \"validate\"]', ['123', 'validate'], False], ['control [\"317230\", \"validate\"]', ['317230', 'validate'], False], ['control [\"2864257569\", \"validate\"]', ['2864257569', 'validate'], False]], [['regression [\"31723\", \"generate\"]', ['31723', 'generate'], 6], ['regression [\"07668886\", \"generate\"]', ['07668886', 'generate'], 2], ['partial-repair [\"0\", \"validate\"]', ['0', 'validate'], True], ['partial-repair [\"1428570\", \"validate\"]', ['1428570', 'validate'], True], ['control [\"8115669551647\", \"validate\"]', ['8115669551647', 'validate'], False], ['control [\"6516456313406690\", \"validate\"]', ['6516456313406690', 'validate'], False], ['control [\"2364\", \"validate\"]', ['2364', 'validate'], False], ['control [\"123451\", \"validate\"]', ['123451', 'validate'], True]], [['regression [\"42668879332\", \"generate\"]', ['42668879332', 'generate'], 9], ['regression [\"811566955164\", \"generate\"]', ['811566955164', 'generate'], 9], ['partial-repair [\"076688867\", \"validate\"]', ['076688867', 'validate'], False], ['partial-repair [\"2363\", \"validate\"]', ['2363', 'validate'], True], ['control [\"\", \"validate\"]', ['', 'validate'], None], ['control [\"12a\", \"generate\"]', ['12a', 'generate'], None], ['control [\"1428572\", \"validate\"]', ['1428572', 'validate'], False], ['control [\"73\", \"validate\"]', ['73', 'validate'], False]], [['regression [\"236\", \"generate\"]', ['236', 'generate'], 3], ['regression [\"12345\", \"generate\"]', ['12345', 'generate'], 1], ['partial-repair [\"1428570\", \"validate\"]', ['1428570', 'validate'], True], ['partial-repair [\"6001\", \"validate\"]', ['6001', 'validate'], False], ['control [\"317230\", \"validate\"]', ['317230', 'validate'], False], ['control [\"2864257569\", \"validate\"]', ['2864257569', 'validate'], False], ['control [\"426688793324\", \"validate\"]', ['426688793324', 'validate'], False], ['control [\"8115669551647\", \"validate\"]', ['8115669551647', 'validate'], False]], [['regression [\"142857\", \"generate\"]', ['142857', 'generate'], 0], ['regression [\"84736430954837284567892\", \"generate\"]', ['84736430954837284567892', 'generate'], 2], ['partial-repair [\"2363\", \"validate\"]', ['2363', 'validate'], True], ['partial-repair [\"0\", \"validate\"]', ['0', 'validate'], True], ['control [\"2364\", \"validate\"]', ['2364', 'validate'], False], ['control [\"123451\", \"validate\"]', ['123451', 'validate'], True], ['control [\"\", \"generate\"]', ['', 'generate'], None], ['control [\"\", \"validate\"]', ['', 'validate'], None]]]\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":"d47960311101b79cdb40722becbb7f8480b17cbb55a1c608c82718ad6271fdd7","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(s, mode):\n    D = [[0,1,2,3,4,5,6,7,8,9],[1,2,3,4,0,6,7,8,9,5],[2,3,4,0,1,7,8,9,5,6],[3,4,0,1,2,8,9,5,6,7],[4,0,1,2,3,9,5,6,7,8],[5,9,8,7,6,0,4,3,2,1],[6,5,9,8,7,1,0,4,3,2],[7,6,5,9,8,2,1,0,4,3],[8,7,6,5,9,3,2,1,0,4],[9,8,7,6,5,4,3,2,1,0]]\n    P = [[0,1,2,3,4,5,6,7,8,9],[1,5,7,6,2,8,3,0,9,4],[5,8,0,3,7,9,6,1,4,2],[8,9,1,6,0,4,3,5,2,7],[9,4,5,3,1,2,8,7,6,0],[4,2,8,6,5,7,3,9,0,1],[2,7,9,3,8,0,6,4,1,5],[7,0,4,6,9,1,3,2,5,8]]\n    INV = [0,4,3,2,1,5,6,7,8,9]\n    if not s or not s.isascii() or not s.isdigit():\n        return None\n    offset = 0\n    c = 0\n    for i, ch in enumerate(reversed(s)):\n        c = D[c][P[(i + offset) % 8][int(ch)]]\n    if mode == 'generate':\n        return INV[c]\n    return c == 0\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [\"7\", \"generate\"]', ['7', 'generate'], 0], ['regression [\"12\", \"generate\"]', ['12', 'generate'], 1], ['partial-repair [\"6001\", \"validate\"]', ['6001', 'validate'], False], ['partial-repair [\"076688867\", \"validate\"]', ['076688867', 'validate'], False], ['control [\"73\", \"validate\"]', ['73', 'validate'], False], ['control [\"123\", \"validate\"]', ['123', 'validate'], False], ['control [\"317230\", \"validate\"]', ['317230', 'validate'], False], ['control [\"2864257569\", \"validate\"]', ['2864257569', 'validate'], False]], [['regression [\"31723\", \"generate\"]', ['31723', 'generate'], 6], ['regression [\"07668886\", \"generate\"]', ['07668886', 'generate'], 2], ['partial-repair [\"0\", \"validate\"]', ['0', 'validate'], True], ['partial-repair [\"1428570\", \"validate\"]', ['1428570', 'validate'], True], ['control [\"8115669551647\", \"validate\"]', ['8115669551647', 'validate'], False], ['control [\"6516456313406690\", \"validate\"]', ['6516456313406690', 'validate'], False], ['control [\"2364\", \"validate\"]', ['2364', 'validate'], False], ['control [\"123451\", \"validate\"]', ['123451', 'validate'], True]], [['regression [\"42668879332\", \"generate\"]', ['42668879332', 'generate'], 9], ['regression [\"811566955164\", \"generate\"]', ['811566955164', 'generate'], 9], ['partial-repair [\"076688867\", \"validate\"]', ['076688867', 'validate'], False], ['partial-repair [\"2363\", \"validate\"]', ['2363', 'validate'], True], ['control [\"\", \"validate\"]', ['', 'validate'], None], ['control [\"12a\", \"generate\"]', ['12a', 'generate'], None], ['control [\"1428572\", \"validate\"]', ['1428572', 'validate'], False], ['control [\"73\", \"validate\"]', ['73', 'validate'], False]], [['regression [\"236\", \"generate\"]', ['236', 'generate'], 3], ['regression [\"12345\", \"generate\"]', ['12345', 'generate'], 1], ['partial-repair [\"1428570\", \"validate\"]', ['1428570', 'validate'], True], ['partial-repair [\"6001\", \"validate\"]', ['6001', 'validate'], False], ['control [\"317230\", \"validate\"]', ['317230', 'validate'], False], ['control [\"2864257569\", \"validate\"]', ['2864257569', 'validate'], False], ['control [\"426688793324\", \"validate\"]', ['426688793324', 'validate'], False], ['control [\"8115669551647\", \"validate\"]', ['8115669551647', 'validate'], False]], [['regression [\"142857\", \"generate\"]', ['142857', 'generate'], 0], ['regression [\"84736430954837284567892\", \"generate\"]', ['84736430954837284567892', 'generate'], 2], ['partial-repair [\"2363\", \"validate\"]', ['2363', 'validate'], True], ['partial-repair [\"0\", \"validate\"]', ['0', 'validate'], True], ['control [\"2364\", \"validate\"]', ['2364', 'validate'], False], ['control [\"123451\", \"validate\"]', ['123451', 'validate'], True], ['control [\"\", \"generate\"]', ['', 'generate'], None], ['control [\"\", \"validate\"]', ['', 'validate'], None]]]\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-verhoeff-generate-offset","generated_at":"2026-09-29T14:48:38.020566+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"National identity and ticketing numbers use Verhoeff to catch all single-digit and adjacent transposition errors.","root_cause":"Generation uses offset 0, so each payload digit receives the permutation meant for the position to its right.","sha256":"ace4ff4c0b2720b66dc1a800054d3f161069fab94149063d8d77bf381c0ccc1d","title":"Verhoeff generation omits the position offset · 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":44.629,"exit_code":1,"observations":[{"actual":0,"check":"regression [\"7\", \"generate\"]","expected":0,"passed":true},{"actual":1,"check":"regression [\"12\", \"generate\"]","expected":1,"passed":true},{"actual":true,"check":"partial-repair [\"6001\", \"validate\"]","expected":false,"passed":false},{"actual":true,"check":"partial-repair [\"076688867\", \"validate\"]","expected":false,"passed":false},{"actual":false,"check":"control [\"73\", \"validate\"]","expected":false,"passed":true},{"actual":false,"check":"control [\"123\", \"validate\"]","expected":false,"passed":true},{"actual":false,"check":"control [\"317230\", \"validate\"]","expected":false,"passed":true},{"actual":false,"check":"control [\"2864257569\", \"validate\"]","expected":false,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [\\\"7\\\", \\\"generate\\\"]\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"regression [\\\"12\\\", \\\"generate\\\"]\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"partial-repair [\\\"6001\\\", \\\"validate\\\"]\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"partial-repair [\\\"076688867\\\", \\\"validate\\\"]\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"control [\\\"73\\\", \\\"validate\\\"]\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"control [\\\"123\\\", \\\"validate\\\"]\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"control [\\\"317230\\\", \\\"validate\\\"]\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"control [\\\"2864257569\\\", \\\"validate\\\"]\", \"actual\": false, \"expected\": false, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.386,"exit_code":1,"observations":[{"actual":7,"check":"regression [\"7\", \"generate\"]","expected":0,"passed":false},{"actual":7,"check":"regression [\"12\", \"generate\"]","expected":1,"passed":false},{"actual":false,"check":"partial-repair [\"6001\", \"validate\"]","expected":false,"passed":true},{"actual":false,"check":"partial-repair [\"076688867\", \"validate\"]","expected":false,"passed":true},{"actual":false,"check":"control [\"73\", \"validate\"]","expected":false,"passed":true},{"actual":false,"check":"control [\"123\", \"validate\"]","expected":false,"passed":true},{"actual":false,"check":"control [\"317230\", \"validate\"]","expected":false,"passed":true},{"actual":false,"check":"control [\"2864257569\", \"validate\"]","expected":false,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [\\\"7\\\", \\\"generate\\\"]\", \"actual\": 7, \"expected\": 0, \"passed\": false}, {\"check\": \"regression [\\\"12\\\", \\\"generate\\\"]\", \"actual\": 7, \"expected\": 1, \"passed\": false}, {\"check\": \"partial-repair [\\\"6001\\\", \\\"validate\\\"]\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"partial-repair [\\\"076688867\\\", \\\"validate\\\"]\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"control [\\\"73\\\", \\\"validate\\\"]\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"control [\\\"123\\\", \\\"validate\\\"]\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"control [\\\"317230\\\", \\\"validate\\\"]\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"control [\\\"2864257569\\\", \\\"validate\\\"]\", \"actual\": false, \"expected\": false, \"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."}}