{"abstract":"Check digits only match for palindromic payloads.","category":"Check-digit algorithms","checks":8,"contract":"Damm quasigroup scheme with the standard order-10 table. Spaces are ignored; the remaining text must be nonempty ASCII digits or the result is None. Digits are processed left to right with interim = T[interim][digit] from 0; \"generate\" returns the final interim value, \"validate\" returns whether it is 0.","contract_signature":"s, mode","evaluation_group":"w2-check_digit_algorithms-damm","failed_approach":"Reversing only the last two digits still reorders the fold.","family":"w2-check_digit_algorithms-damm-traversal-direction","id":"FA-72411","implementations":{"attempt":{"sha256":"88cac4161019b5dc4c7eb2f33b5af64aaaab85ade196a7816aa3bef73da639f6","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(s, mode):\n    T = [[0,3,1,7,5,9,8,6,4,2],[7,0,9,2,1,5,4,8,6,3],[4,2,0,6,8,7,1,3,5,9],[1,7,5,0,9,8,3,4,2,6],[6,1,2,3,0,4,5,9,7,8],[3,6,7,4,2,0,9,5,8,1],[5,8,6,9,7,2,0,1,3,4],[8,9,4,5,3,6,2,0,1,7],[9,4,3,8,6,1,7,2,0,5],[2,5,8,1,4,3,6,7,9,0]]\n    t = s.replace(' ', '')\n    if not t or not t.isascii() or not t.isdigit():\n        return None\n    interim = 0\n    for ch in t[:-2] + t[-2:][::-1]:\n        interim = T[interim][int(ch)]\n    if mode == 'generate':\n        return interim\n    return interim == 0\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [\"24\", \"generate\"]', ['24', 'generate'], 1], ['regression [\"406\", \"generate\"]', ['406', 'generate'], 3], ['control [\"9\", \"generate\"]', ['9', 'generate'], 2], ['control [\"97\", \"validate\"]', ['97', 'validate'], False], ['control [\"249\", \"validate\"]', ['249', 'validate'], False], ['control [\"4060\", \"validate\"]', ['4060', 'validate'], False], ['control [\"6370058\", \"validate\"]', ['6370058', 'validate'], False], ['control [\"23794217\", \"validate\"]', ['23794217', 'validate'], False]], [['regression [\"76013\", \"validate\"]', ['76013', 'validate'], True], ['regression [\"637005\", \"generate\"]', ['637005', 'generate'], 2], ['control [\"23794217\", \"validate\"]', ['23794217', 'validate'], False], ['control [\"90341295635\", \"validate\"]', ['90341295635', 'validate'], False], ['control [\"76892456191326\", \"validate\"]', ['76892456191326', 'validate'], False], ['control [\"5727\", \"validate\"]', ['5727', 'validate'], False], ['control [\"  \", \"generate\"]', ['  ', 'generate'], None], ['control [\"1-2\", \"generate\"]', ['1-2', 'generate'], None]], [['regression [\"315720564\", \"generate\"]', ['315720564', 'generate'], 2], ['regression [\"3157205642\", \"validate\"]', ['3157205642', 'validate'], True], ['control [\"1-2\", \"generate\"]', ['1-2', 'generate'], None], ['control [\"0\", \"validate\"]', ['0', 'validate'], True], ['control [\"9\", \"generate\"]', ['9', 'generate'], 2], ['control [\"97\", \"validate\"]', ['97', 'validate'], False], ['control [\"249\", \"validate\"]', ['249', 'validate'], False], ['control [\"4060\", \"validate\"]', ['4060', 'validate'], False]], [['regression [\"7689245619132\", \"generate\"]', ['7689245619132', 'generate'], 9], ['regression [\"572\", \"generate\"]', ['572', 'generate'], 4], ['control [\"4060\", \"validate\"]', ['4060', 'validate'], False], ['control [\"6370058\", \"validate\"]', ['6370058', 'validate'], False], ['control [\"23794217\", \"validate\"]', ['23794217', 'validate'], False], ['control [\"90341295635\", \"validate\"]', ['90341295635', 'validate'], False], ['control [\"76892456191326\", \"validate\"]', ['76892456191326', 'validate'], False], ['control [\"5727\", \"validate\"]', ['5727', 'validate'], False]], [['regression [\"572 4\", \"validate\"]', ['572 4', 'validate'], True], ['regression [\"12 34 56\", \"generate\"]', ['12 34 56', 'generate'], 6], ['control [\"5727\", \"validate\"]', ['5727', 'validate'], False], ['control [\"  \", \"generate\"]', ['  ', 'generate'], None], ['control [\"1-2\", \"generate\"]', ['1-2', 'generate'], None], ['control [\"0\", \"validate\"]', ['0', 'validate'], True], ['control [\"9\", \"generate\"]', ['9', 'generate'], 2], ['control [\"97\", \"validate\"]', ['97', 'validate'], 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":"ccfe07099a1e12fe621ee8a93f00b884a9a434516dbfad5de5d889ce05f8b5c8","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(s, mode):\n    T = [[0,3,1,7,5,9,8,6,4,2],[7,0,9,2,1,5,4,8,6,3],[4,2,0,6,8,7,1,3,5,9],[1,7,5,0,9,8,3,4,2,6],[6,1,2,3,0,4,5,9,7,8],[3,6,7,4,2,0,9,5,8,1],[5,8,6,9,7,2,0,1,3,4],[8,9,4,5,3,6,2,0,1,7],[9,4,3,8,6,1,7,2,0,5],[2,5,8,1,4,3,6,7,9,0]]\n    t = s.replace(' ', '')\n    if not t or not t.isascii() or not t.isdigit():\n        return None\n    interim = 0\n    for ch in reversed(t):\n        interim = T[interim][int(ch)]\n    if mode == 'generate':\n        return interim\n    return interim == 0\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [\"24\", \"generate\"]', ['24', 'generate'], 1], ['regression [\"406\", \"generate\"]', ['406', 'generate'], 3], ['control [\"9\", \"generate\"]', ['9', 'generate'], 2], ['control [\"97\", \"validate\"]', ['97', 'validate'], False], ['control [\"249\", \"validate\"]', ['249', 'validate'], False], ['control [\"4060\", \"validate\"]', ['4060', 'validate'], False], ['control [\"6370058\", \"validate\"]', ['6370058', 'validate'], False], ['control [\"23794217\", \"validate\"]', ['23794217', 'validate'], False]], [['regression [\"76013\", \"validate\"]', ['76013', 'validate'], True], ['regression [\"637005\", \"generate\"]', ['637005', 'generate'], 2], ['control [\"23794217\", \"validate\"]', ['23794217', 'validate'], False], ['control [\"90341295635\", \"validate\"]', ['90341295635', 'validate'], False], ['control [\"76892456191326\", \"validate\"]', ['76892456191326', 'validate'], False], ['control [\"5727\", \"validate\"]', ['5727', 'validate'], False], ['control [\"  \", \"generate\"]', ['  ', 'generate'], None], ['control [\"1-2\", \"generate\"]', ['1-2', 'generate'], None]], [['regression [\"315720564\", \"generate\"]', ['315720564', 'generate'], 2], ['regression [\"3157205642\", \"validate\"]', ['3157205642', 'validate'], True], ['control [\"1-2\", \"generate\"]', ['1-2', 'generate'], None], ['control [\"0\", \"validate\"]', ['0', 'validate'], True], ['control [\"9\", \"generate\"]', ['9', 'generate'], 2], ['control [\"97\", \"validate\"]', ['97', 'validate'], False], ['control [\"249\", \"validate\"]', ['249', 'validate'], False], ['control [\"4060\", \"validate\"]', ['4060', 'validate'], False]], [['regression [\"7689245619132\", \"generate\"]', ['7689245619132', 'generate'], 9], ['regression [\"572\", \"generate\"]', ['572', 'generate'], 4], ['control [\"4060\", \"validate\"]', ['4060', 'validate'], False], ['control [\"6370058\", \"validate\"]', ['6370058', 'validate'], False], ['control [\"23794217\", \"validate\"]', ['23794217', 'validate'], False], ['control [\"90341295635\", \"validate\"]', ['90341295635', 'validate'], False], ['control [\"76892456191326\", \"validate\"]', ['76892456191326', 'validate'], False], ['control [\"5727\", \"validate\"]', ['5727', 'validate'], False]], [['regression [\"572 4\", \"validate\"]', ['572 4', 'validate'], True], ['regression [\"12 34 56\", \"generate\"]', ['12 34 56', 'generate'], 6], ['control [\"5727\", \"validate\"]', ['5727', 'validate'], False], ['control [\"  \", \"generate\"]', ['  ', 'generate'], None], ['control [\"1-2\", \"generate\"]', ['1-2', 'generate'], None], ['control [\"0\", \"validate\"]', ['0', 'validate'], True], ['control [\"9\", \"generate\"]', ['9', 'generate'], 2], ['control [\"97\", \"validate\"]', ['97', 'validate'], 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-damm-traversal-direction","generated_at":"2026-09-29T14:48:38.353272+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Damm checks are used on order and parcel references where transpositions must be detected.","root_cause":"The loop walks reversed(t), but Damm folds digits from the most significant end.","sha256":"2789c359ca473c57fefc1587378585c8613f926ffac06c0c42eff7c2ba208044","title":"Damm processes digits right to left · 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":37.252,"exit_code":1,"observations":[{"actual":7,"check":"regression [\"24\", \"generate\"]","expected":1,"passed":false},{"actual":2,"check":"regression [\"406\", \"generate\"]","expected":3,"passed":false},{"actual":2,"check":"control [\"9\", \"generate\"]","expected":2,"passed":true},{"actual":false,"check":"control [\"97\", \"validate\"]","expected":false,"passed":true},{"actual":false,"check":"control [\"249\", \"validate\"]","expected":false,"passed":true},{"actual":false,"check":"control [\"4060\", \"validate\"]","expected":false,"passed":true},{"actual":false,"check":"control [\"6370058\", \"validate\"]","expected":false,"passed":true},{"actual":false,"check":"control [\"23794217\", \"validate\"]","expected":false,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [\\\"24\\\", \\\"generate\\\"]\", \"actual\": 7, \"expected\": 1, \"passed\": false}, {\"check\": \"regression [\\\"406\\\", \\\"generate\\\"]\", \"actual\": 2, \"expected\": 3, \"passed\": false}, {\"check\": \"control [\\\"9\\\", \\\"generate\\\"]\", \"actual\": 2, \"expected\": 2, \"passed\": true}, {\"check\": \"control [\\\"97\\\", \\\"validate\\\"]\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"control [\\\"249\\\", \\\"validate\\\"]\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"control [\\\"4060\\\", \\\"validate\\\"]\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"control [\\\"6370058\\\", \\\"validate\\\"]\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"control [\\\"23794217\\\", \\\"validate\\\"]\", \"actual\": false, \"expected\": false, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.859,"exit_code":1,"observations":[{"actual":7,"check":"regression [\"24\", \"generate\"]","expected":1,"passed":false},{"actual":4,"check":"regression [\"406\", \"generate\"]","expected":3,"passed":false},{"actual":2,"check":"control [\"9\", \"generate\"]","expected":2,"passed":true},{"actual":false,"check":"control [\"97\", \"validate\"]","expected":false,"passed":true},{"actual":false,"check":"control [\"249\", \"validate\"]","expected":false,"passed":true},{"actual":false,"check":"control [\"4060\", \"validate\"]","expected":false,"passed":true},{"actual":false,"check":"control [\"6370058\", \"validate\"]","expected":false,"passed":true},{"actual":false,"check":"control [\"23794217\", \"validate\"]","expected":false,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [\\\"24\\\", \\\"generate\\\"]\", \"actual\": 7, \"expected\": 1, \"passed\": false}, {\"check\": \"regression [\\\"406\\\", \\\"generate\\\"]\", \"actual\": 4, \"expected\": 3, \"passed\": false}, {\"check\": \"control [\\\"9\\\", \\\"generate\\\"]\", \"actual\": 2, \"expected\": 2, \"passed\": true}, {\"check\": \"control [\\\"97\\\", \\\"validate\\\"]\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"control [\\\"249\\\", \\\"validate\\\"]\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"control [\\\"4060\\\", \\\"validate\\\"]\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"control [\\\"6370058\\\", \\\"validate\\\"]\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"control [\\\"23794217\\\", \\\"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."}}