{"abstract":"Most generated check digits disagree with the Damm reference.","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":"Starting from the first digit instead of 0 keeps the swapped lookup semantics hidden only for some inputs.","family":"w2-check_digit_algorithms-damm-table-index-order","id":"FA-72406","implementations":{"attempt":{"sha256":"4776dda2d196fe38fbc3377c33d9d57e2982bd48f0e819b164b935cae718e8ee","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 = int(t[0])\n    for ch in t[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 [\"7601\", \"generate\"]', ['7601', 'generate'], 3], ['partial-repair [\"9\", \"generate\"]', ['9', 'generate'], 2], ['control [\"97\", \"validate\"]', ['97', 'validate'], False], ['control [\"249\", \"validate\"]', ['249', 'validate'], False], ['control [\"6370058\", \"validate\"]', ['6370058', 'validate'], False], ['control [\"23794217\", \"validate\"]', ['23794217', 'validate'], False], ['control [\"90341295635\", \"validate\"]', ['90341295635', 'validate'], False]], [['regression [\"637005\", \"generate\"]', ['637005', 'generate'], 2], ['regression [\"2379421\", \"generate\"]', ['2379421', 'generate'], 1], ['partial-repair [\"4060\", \"validate\"]', ['4060', 'validate'], False], ['partial-repair [\"7601\", \"generate\"]', ['7601', 'generate'], 3], ['control [\"  \", \"generate\"]', ['  ', 'generate'], None], ['control [\"1-2\", \"generate\"]', ['1-2', 'generate'], None], ['control [\"0\", \"validate\"]', ['0', 'validate'], True], ['control [\"97\", \"validate\"]', ['97', 'validate'], False]], [['regression [\"3157205642\", \"validate\"]', ['3157205642', 'validate'], True], ['regression [\"9034129563\", \"generate\"]', ['9034129563', 'generate'], 7], ['partial-repair [\"637005\", \"generate\"]', ['637005', 'generate'], 2], ['partial-repair [\"2379421\", \"generate\"]', ['2379421', 'generate'], 1], ['control [\"6370058\", \"validate\"]', ['6370058', 'validate'], False], ['control [\"23794217\", \"validate\"]', ['23794217', 'validate'], False], ['control [\"90341295635\", \"validate\"]', ['90341295635', 'validate'], False], ['control [\"  \", \"generate\"]', ['  ', 'generate'], None]], [['regression [\"76892456191326\", \"validate\"]', ['76892456191326', 'validate'], False], ['regression [\"572\", \"generate\"]', ['572', 'generate'], 4], ['partial-repair [\"3157205642\", \"validate\"]', ['3157205642', 'validate'], True], ['partial-repair [\"9034129563\", \"generate\"]', ['9034129563', 'generate'], 7], ['control [\"0\", \"validate\"]', ['0', 'validate'], True], ['control [\"97\", \"validate\"]', ['97', 'validate'], False], ['control [\"249\", \"validate\"]', ['249', 'validate'], False], ['control [\"6370058\", \"validate\"]', ['6370058', 'validate'], False]], [['regression [\"5727\", \"validate\"]', ['5727', 'validate'], False], ['regression [\"572 4\", \"validate\"]', ['572 4', 'validate'], True], ['partial-repair [\"572\", \"generate\"]', ['572', 'generate'], 4], ['partial-repair [\"5724\", \"validate\"]', ['5724', 'validate'], True], ['control [\"90341295635\", \"validate\"]', ['90341295635', 'validate'], False], ['control [\"  \", \"generate\"]', ['  ', 'generate'], None], ['control [\"1-2\", \"generate\"]', ['1-2', 'generate'], None], ['control [\"0\", \"validate\"]', ['0', 'validate'], 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":"241121c11e8e151bf9a936a03b4e527cea5d39e6bd65911c214748bd98ba70a0","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:\n        interim = T[int(ch)][interim]\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 [\"7601\", \"generate\"]', ['7601', 'generate'], 3], ['partial-repair [\"9\", \"generate\"]', ['9', 'generate'], 2], ['control [\"97\", \"validate\"]', ['97', 'validate'], False], ['control [\"249\", \"validate\"]', ['249', 'validate'], False], ['control [\"6370058\", \"validate\"]', ['6370058', 'validate'], False], ['control [\"23794217\", \"validate\"]', ['23794217', 'validate'], False], ['control [\"90341295635\", \"validate\"]', ['90341295635', 'validate'], False]], [['regression [\"637005\", \"generate\"]', ['637005', 'generate'], 2], ['regression [\"2379421\", \"generate\"]', ['2379421', 'generate'], 1], ['partial-repair [\"4060\", \"validate\"]', ['4060', 'validate'], False], ['partial-repair [\"7601\", \"generate\"]', ['7601', 'generate'], 3], ['control [\"  \", \"generate\"]', ['  ', 'generate'], None], ['control [\"1-2\", \"generate\"]', ['1-2', 'generate'], None], ['control [\"0\", \"validate\"]', ['0', 'validate'], True], ['control [\"97\", \"validate\"]', ['97', 'validate'], False]], [['regression [\"3157205642\", \"validate\"]', ['3157205642', 'validate'], True], ['regression [\"9034129563\", \"generate\"]', ['9034129563', 'generate'], 7], ['partial-repair [\"637005\", \"generate\"]', ['637005', 'generate'], 2], ['partial-repair [\"2379421\", \"generate\"]', ['2379421', 'generate'], 1], ['control [\"6370058\", \"validate\"]', ['6370058', 'validate'], False], ['control [\"23794217\", \"validate\"]', ['23794217', 'validate'], False], ['control [\"90341295635\", \"validate\"]', ['90341295635', 'validate'], False], ['control [\"  \", \"generate\"]', ['  ', 'generate'], None]], [['regression [\"76892456191326\", \"validate\"]', ['76892456191326', 'validate'], False], ['regression [\"572\", \"generate\"]', ['572', 'generate'], 4], ['partial-repair [\"3157205642\", \"validate\"]', ['3157205642', 'validate'], True], ['partial-repair [\"9034129563\", \"generate\"]', ['9034129563', 'generate'], 7], ['control [\"0\", \"validate\"]', ['0', 'validate'], True], ['control [\"97\", \"validate\"]', ['97', 'validate'], False], ['control [\"249\", \"validate\"]', ['249', 'validate'], False], ['control [\"6370058\", \"validate\"]', ['6370058', 'validate'], False]], [['regression [\"5727\", \"validate\"]', ['5727', 'validate'], False], ['regression [\"572 4\", \"validate\"]', ['572 4', 'validate'], True], ['partial-repair [\"572\", \"generate\"]', ['572', 'generate'], 4], ['partial-repair [\"5724\", \"validate\"]', ['5724', 'validate'], True], ['control [\"90341295635\", \"validate\"]', ['90341295635', 'validate'], False], ['control [\"  \", \"generate\"]', ['  ', 'generate'], None], ['control [\"1-2\", \"generate\"]', ['1-2', 'generate'], None], ['control [\"0\", \"validate\"]', ['0', 'validate'], 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-damm-table-index-order","generated_at":"2026-09-29T14:48:38.270660+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 step uses T[digit][interim]; the quasigroup is not commutative, so the operands are swapped.","sha256":"4df5747c33b899428d3a3ce8b6bdd8ce72f84a397b312b94ec5317c1184bbbad","title":"Damm looks up the digit row instead of the interim row · 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.191,"exit_code":1,"observations":[{"actual":8,"check":"regression [\"24\", \"generate\"]","expected":1,"passed":false},{"actual":1,"check":"regression [\"7601\", \"generate\"]","expected":3,"passed":false},{"actual":9,"check":"partial-repair [\"9\", \"generate\"]","expected":2,"passed":false},{"actual":false,"check":"control [\"97\", \"validate\"]","expected":false,"passed":true},{"actual":false,"check":"control [\"249\", \"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},{"actual":false,"check":"control [\"90341295635\", \"validate\"]","expected":false,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [\\\"24\\\", \\\"generate\\\"]\", \"actual\": 8, \"expected\": 1, \"passed\": false}, {\"check\": \"regression [\\\"7601\\\", \\\"generate\\\"]\", \"actual\": 1, \"expected\": 3, \"passed\": false}, {\"check\": \"partial-repair [\\\"9\\\", \\\"generate\\\"]\", \"actual\": 9, \"expected\": 2, \"passed\": false}, {\"check\": \"control [\\\"97\\\", \\\"validate\\\"]\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"control [\\\"249\\\", \\\"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}, {\"check\": \"control [\\\"90341295635\\\", \\\"validate\\\"]\", \"actual\": false, \"expected\": false, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":37.274,"exit_code":1,"observations":[{"actual":0,"check":"regression [\"24\", \"generate\"]","expected":1,"passed":false},{"actual":8,"check":"regression [\"7601\", \"generate\"]","expected":3,"passed":false},{"actual":2,"check":"partial-repair [\"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 [\"6370058\", \"validate\"]","expected":false,"passed":true},{"actual":false,"check":"control [\"23794217\", \"validate\"]","expected":false,"passed":true},{"actual":false,"check":"control [\"90341295635\", \"validate\"]","expected":false,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [\\\"24\\\", \\\"generate\\\"]\", \"actual\": 0, \"expected\": 1, \"passed\": false}, {\"check\": \"regression [\\\"7601\\\", \\\"generate\\\"]\", \"actual\": 8, \"expected\": 3, \"passed\": false}, {\"check\": \"partial-repair [\\\"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 [\\\"6370058\\\", \\\"validate\\\"]\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"control [\\\"23794217\\\", \\\"validate\\\"]\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"control [\\\"90341295635\\\", \\\"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."}}