{"abstract":"Nearly every valid code is rejected.","category":"Check-digit algorithms","checks":8,"contract":"Validate a GTIN-8, GTIN-12, GTIN-13 or GTIN-14 given as ASCII digits (any other length or character: \"malformed\"). Weights 3,1 alternate starting with 3 on the digit immediately left of the check digit, so the alignment is from the right for every length. Return [kind, check digit matches].","contract_signature":"s","evaluation_group":"w2-check_digit_algorithms-gtin-family","failed_approach":"Dropping the outer % 10 yields 10 whenever the sum is a multiple of ten.","family":"w2-check_digit_algorithms-gtin-family-complement-check","id":"FA-72461","implementations":{"attempt":{"sha256":"d2f38a5663338909eb9e60ff49a7d4296634b08c8b29ee1a4805d5e785e642e8","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(s):\n    if not s.isascii() or not s.isdigit() or len(s) not in (8, 12, 13, 14):\n        return 'malformed'\n    body = s[:-1]\n    total = 0\n    for i, ch in enumerate(reversed(body)):\n        total += int(ch) * (3 if i % 2 == 0 else 1)\n    check = 10 - total % 10\n    kind = {8: 'GTIN-8', 12: 'GTIN-12', 13: 'GTIN-13', 14: 'GTIN-14'}[len(s)]\n    return [kind, check == int(s[-1])]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [\"934235100467\"]', ['934235100467'], ['GTIN-12', True]], ['regression [\"0916391037047\"]', ['0916391037047'], ['GTIN-13', True]], ['partial-repair [\"00000000\"]', ['00000000'], ['GTIN-8', True]], ['control [\"07251955\"]', ['07251955'], ['GTIN-8', True]], ['control [\"07251952\"]', ['07251952'], ['GTIN-8', False]], ['control [\"934235100464\"]', ['934235100464'], ['GTIN-12', False]], ['control [\"0916391037044\"]', ['0916391037044'], ['GTIN-13', False]], ['control [\"59804222888445\"]', ['59804222888445'], ['GTIN-14', False]]], [['regression [\"8847703723452\"]', ['8847703723452'], ['GTIN-13', True]], ['regression [\"033345301891\"]', ['033345301891'], ['GTIN-12', True]], ['partial-repair [\"00000000\"]', ['00000000'], ['GTIN-8', True]], ['control [\"8847703723459\"]', ['8847703723459'], ['GTIN-13', False]], ['control [\"033345301898\"]', ['033345301898'], ['GTIN-12', False]], ['control [\"12641168\"]', ['12641168'], ['GTIN-8', False]], ['control [\"84650644669478\"]', ['84650644669478'], ['GTIN-14', False]], ['control [\"6916522076168\"]', ['6916522076168'], ['GTIN-13', False]]], [['regression [\"84650644669471\"]', ['84650644669471'], ['GTIN-14', True]], ['regression [\"6916522076161\"]', ['6916522076161'], ['GTIN-13', True]], ['partial-repair [\"00000000\"]', ['00000000'], ['GTIN-8', True]], ['control [\"10614141000415\"]', ['10614141000415'], ['GTIN-14', True]], ['control [\"4006381333932\"]', ['4006381333932'], ['GTIN-13', False]], ['control [\"0\"]', ['0'], 'malformed'], ['control [\"123456789012345\"]', ['123456789012345'], 'malformed'], ['control [\"400638133393\"]', ['400638133393'], ['GTIN-12', False]]], [['regression [\"036000291452\"]', ['036000291452'], ['GTIN-12', True]], ['regression [\"96385074\"]', ['96385074'], ['GTIN-8', True]], ['partial-repair [\"00000000\"]', ['00000000'], ['GTIN-8', True]], ['control [\"40063813339a1\"]', ['40063813339a1'], 'malformed'], ['control [\"07251955\"]', ['07251955'], ['GTIN-8', True]], ['control [\"07251952\"]', ['07251952'], ['GTIN-8', False]], ['control [\"934235100464\"]', ['934235100464'], ['GTIN-12', False]], ['control [\"0916391037044\"]', ['0916391037044'], ['GTIN-13', False]]], [['regression [\"5901234123457\"]', ['5901234123457'], ['GTIN-13', True]], ['regression [\"934235100467\"]', ['934235100467'], ['GTIN-12', True]], ['partial-repair [\"00000000\"]', ['00000000'], ['GTIN-8', True]], ['control [\"59804222888445\"]', ['59804222888445'], ['GTIN-14', False]], ['control [\"8847703723459\"]', ['8847703723459'], ['GTIN-13', False]], ['control [\"033345301898\"]', ['033345301898'], ['GTIN-12', False]], ['control [\"12641168\"]', ['12641168'], ['GTIN-8', False]], ['control [\"84650644669478\"]', ['84650644669478'], ['GTIN-14', 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":"9b78415c36756b05c935b002a82fa60154ef79d630593191de4e06f0c66af801","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(s):\n    if not s.isascii() or not s.isdigit() or len(s) not in (8, 12, 13, 14):\n        return 'malformed'\n    body = s[:-1]\n    total = 0\n    for i, ch in enumerate(reversed(body)):\n        total += int(ch) * (3 if i % 2 == 0 else 1)\n    check = total % 10\n    kind = {8: 'GTIN-8', 12: 'GTIN-12', 13: 'GTIN-13', 14: 'GTIN-14'}[len(s)]\n    return [kind, check == int(s[-1])]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [\"934235100467\"]', ['934235100467'], ['GTIN-12', True]], ['regression [\"0916391037047\"]', ['0916391037047'], ['GTIN-13', True]], ['partial-repair [\"00000000\"]', ['00000000'], ['GTIN-8', True]], ['control [\"07251955\"]', ['07251955'], ['GTIN-8', True]], ['control [\"07251952\"]', ['07251952'], ['GTIN-8', False]], ['control [\"934235100464\"]', ['934235100464'], ['GTIN-12', False]], ['control [\"0916391037044\"]', ['0916391037044'], ['GTIN-13', False]], ['control [\"59804222888445\"]', ['59804222888445'], ['GTIN-14', False]]], [['regression [\"8847703723452\"]', ['8847703723452'], ['GTIN-13', True]], ['regression [\"033345301891\"]', ['033345301891'], ['GTIN-12', True]], ['partial-repair [\"00000000\"]', ['00000000'], ['GTIN-8', True]], ['control [\"8847703723459\"]', ['8847703723459'], ['GTIN-13', False]], ['control [\"033345301898\"]', ['033345301898'], ['GTIN-12', False]], ['control [\"12641168\"]', ['12641168'], ['GTIN-8', False]], ['control [\"84650644669478\"]', ['84650644669478'], ['GTIN-14', False]], ['control [\"6916522076168\"]', ['6916522076168'], ['GTIN-13', False]]], [['regression [\"84650644669471\"]', ['84650644669471'], ['GTIN-14', True]], ['regression [\"6916522076161\"]', ['6916522076161'], ['GTIN-13', True]], ['partial-repair [\"00000000\"]', ['00000000'], ['GTIN-8', True]], ['control [\"10614141000415\"]', ['10614141000415'], ['GTIN-14', True]], ['control [\"4006381333932\"]', ['4006381333932'], ['GTIN-13', False]], ['control [\"0\"]', ['0'], 'malformed'], ['control [\"123456789012345\"]', ['123456789012345'], 'malformed'], ['control [\"400638133393\"]', ['400638133393'], ['GTIN-12', False]]], [['regression [\"036000291452\"]', ['036000291452'], ['GTIN-12', True]], ['regression [\"96385074\"]', ['96385074'], ['GTIN-8', True]], ['partial-repair [\"00000000\"]', ['00000000'], ['GTIN-8', True]], ['control [\"40063813339a1\"]', ['40063813339a1'], 'malformed'], ['control [\"07251955\"]', ['07251955'], ['GTIN-8', True]], ['control [\"07251952\"]', ['07251952'], ['GTIN-8', False]], ['control [\"934235100464\"]', ['934235100464'], ['GTIN-12', False]], ['control [\"0916391037044\"]', ['0916391037044'], ['GTIN-13', False]]], [['regression [\"5901234123457\"]', ['5901234123457'], ['GTIN-13', True]], ['regression [\"934235100467\"]', ['934235100467'], ['GTIN-12', True]], ['partial-repair [\"00000000\"]', ['00000000'], ['GTIN-8', True]], ['control [\"59804222888445\"]', ['59804222888445'], ['GTIN-14', False]], ['control [\"8847703723459\"]', ['8847703723459'], ['GTIN-13', False]], ['control [\"033345301898\"]', ['033345301898'], ['GTIN-12', False]], ['control [\"12641168\"]', ['12641168'], ['GTIN-8', False]], ['control [\"84650644669478\"]', ['84650644669478'], ['GTIN-14', 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-gtin-family-complement-check","generated_at":"2026-09-29T14:48:38.728911+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Retail and logistics scanners accept several GTIN lengths through one validator.","root_cause":"The check digit is computed as total % 10 instead of the ten-complement.","sha256":"c06d67d86e7e0896ff0e4e5ca2569835131c34ad579745e4d844f82139a0a629","title":"GTIN check digit uses the raw remainder · 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.406,"exit_code":1,"observations":[{"actual":["GTIN-12",true],"check":"regression [\"934235100467\"]","expected":["GTIN-12",true],"passed":true},{"actual":["GTIN-13",true],"check":"regression [\"0916391037047\"]","expected":["GTIN-13",true],"passed":true},{"actual":["GTIN-8",false],"check":"partial-repair [\"00000000\"]","expected":["GTIN-8",true],"passed":false},{"actual":["GTIN-8",true],"check":"control [\"07251955\"]","expected":["GTIN-8",true],"passed":true},{"actual":["GTIN-8",false],"check":"control [\"07251952\"]","expected":["GTIN-8",false],"passed":true},{"actual":["GTIN-12",false],"check":"control [\"934235100464\"]","expected":["GTIN-12",false],"passed":true},{"actual":["GTIN-13",false],"check":"control [\"0916391037044\"]","expected":["GTIN-13",false],"passed":true},{"actual":["GTIN-14",false],"check":"control [\"59804222888445\"]","expected":["GTIN-14",false],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [\\\"934235100467\\\"]\", \"actual\": [\"GTIN-12\", true], \"expected\": [\"GTIN-12\", true], \"passed\": true}, {\"check\": \"regression [\\\"0916391037047\\\"]\", \"actual\": [\"GTIN-13\", true], \"expected\": [\"GTIN-13\", true], \"passed\": true}, {\"check\": \"partial-repair [\\\"00000000\\\"]\", \"actual\": [\"GTIN-8\", false], \"expected\": [\"GTIN-8\", true], \"passed\": false}, {\"check\": \"control [\\\"07251955\\\"]\", \"actual\": [\"GTIN-8\", true], \"expected\": [\"GTIN-8\", true], \"passed\": true}, {\"check\": \"control [\\\"07251952\\\"]\", \"actual\": [\"GTIN-8\", false], \"expected\": [\"GTIN-8\", false], \"passed\": true}, {\"check\": \"control [\\\"934235100464\\\"]\", \"actual\": [\"GTIN-12\", false], \"expected\": [\"GTIN-12\", false], \"passed\": true}, {\"check\": \"control [\\\"0916391037044\\\"]\", \"actual\": [\"GTIN-13\", false], \"expected\": [\"GTIN-13\", false], \"passed\": true}, {\"check\": \"control [\\\"59804222888445\\\"]\", \"actual\": [\"GTIN-14\", false], \"expected\": [\"GTIN-14\", false], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.664,"exit_code":1,"observations":[{"actual":["GTIN-12",false],"check":"regression [\"934235100467\"]","expected":["GTIN-12",true],"passed":false},{"actual":["GTIN-13",false],"check":"regression [\"0916391037047\"]","expected":["GTIN-13",true],"passed":false},{"actual":["GTIN-8",true],"check":"partial-repair [\"00000000\"]","expected":["GTIN-8",true],"passed":true},{"actual":["GTIN-8",true],"check":"control [\"07251955\"]","expected":["GTIN-8",true],"passed":true},{"actual":["GTIN-8",false],"check":"control [\"07251952\"]","expected":["GTIN-8",false],"passed":true},{"actual":["GTIN-12",false],"check":"control [\"934235100464\"]","expected":["GTIN-12",false],"passed":true},{"actual":["GTIN-13",false],"check":"control [\"0916391037044\"]","expected":["GTIN-13",false],"passed":true},{"actual":["GTIN-14",false],"check":"control [\"59804222888445\"]","expected":["GTIN-14",false],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [\\\"934235100467\\\"]\", \"actual\": [\"GTIN-12\", false], \"expected\": [\"GTIN-12\", true], \"passed\": false}, {\"check\": \"regression [\\\"0916391037047\\\"]\", \"actual\": [\"GTIN-13\", false], \"expected\": [\"GTIN-13\", true], \"passed\": false}, {\"check\": \"partial-repair [\\\"00000000\\\"]\", \"actual\": [\"GTIN-8\", true], \"expected\": [\"GTIN-8\", true], \"passed\": true}, {\"check\": \"control [\\\"07251955\\\"]\", \"actual\": [\"GTIN-8\", true], \"expected\": [\"GTIN-8\", true], \"passed\": true}, {\"check\": \"control [\\\"07251952\\\"]\", \"actual\": [\"GTIN-8\", false], \"expected\": [\"GTIN-8\", false], \"passed\": true}, {\"check\": \"control [\\\"934235100464\\\"]\", \"actual\": [\"GTIN-12\", false], \"expected\": [\"GTIN-12\", false], \"passed\": true}, {\"check\": \"control [\\\"0916391037044\\\"]\", \"actual\": [\"GTIN-13\", false], \"expected\": [\"GTIN-13\", false], \"passed\": true}, {\"check\": \"control [\\\"59804222888445\\\"]\", \"actual\": [\"GTIN-14\", false], \"expected\": [\"GTIN-14\", 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."}}