{"abstract":"Valid VAT numbers are reported invalid.","category":"Check-digit algorithms","checks":8,"contract":"UK VAT registration number check. Spaces are removed, the text is upper-cased and an optional GB prefix removed; the rest must be 9 ASCII digits (else \"malformed\"). Weights 8..2 apply to the first seven digits; the last two digits form a number c. Return \"mod97\" if (sum + c) is divisible by 97, \"mod9755\" if (sum + c + 55) is, else \"invalid\".","contract_signature":"s","evaluation_group":"w2-check_digit_algorithms-uk-vat","failed_approach":"Ascending weights 2..8 apply the right values to the wrong positions.","family":"w2-check_digit_algorithms-uk-vat-weight-start","id":"FA-72691","implementations":{"attempt":{"sha256":"e1112f8861a42e8a2f5cf2b400c7b224a5f2fdf150f09935ef5e401cc5c63d67","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(s):\n    t = s.replace(' ', '').upper()\n    if t.startswith('GB'):\n        t = t[2:]\n    if len(t) != 9 or not t.isascii() or not t.isdigit():\n        return 'malformed'\n    total = sum(int(ch) * w for ch, w in zip(t[:7], range(2, 9)))\n    c = int(t[7:])\n    if (total + c) % 97 == 0:\n        return 'mod97'\n    if (total + c + 55) % 97 == 0:\n        return 'mod9755'\n    return 'invalid'\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [\"GB041839277\"]', ['GB041839277'], 'mod97'], ['regression [\"GB 261 7623 04\"]', ['GB 261 7623 04'], 'mod9755'], ['partial-repair [\"729236520\"]', ['729236520'], 'mod97'], ['control [\"041839278\"]', ['041839278'], 'invalid'], ['control [\"261762305\"]', ['261762305'], 'invalid'], ['control [\"729236521\"]', ['729236521'], 'invalid'], ['control [\"260407727\"]', ['260407727'], 'invalid'], ['control [\"029331391\"]', ['029331391'], 'invalid']], [['regression [\"GB260407726\"]', ['GB260407726'], 'mod9755'], ['regression [\"GB 029 3313 90\"]', ['GB 029 3313 90'], 'mod97'], ['partial-repair [\"581077575\"]', ['581077575'], 'mod9755'], ['control [\"581077576\"]', ['581077576'], 'invalid'], ['control [\"GB98078068\"]', ['GB98078068'], 'malformed'], ['control [\"GB98078068X\"]', ['GB98078068X'], 'malformed'], ['control [\"123456789\"]', ['123456789'], 'invalid'], ['control [\"041839278\"]', ['041839278'], 'invalid']], [['regression [\"GB658372602\"]', ['GB658372602'], 'mod97'], ['regression [\"GB 225 8573 89\"]', ['GB 225 8573 89'], 'mod9755'], ['partial-repair [\"331553089\"]', ['331553089'], 'mod97'], ['control [\"261762305\"]', ['261762305'], 'invalid'], ['control [\"729236521\"]', ['729236521'], 'invalid'], ['control [\"260407727\"]', ['260407727'], 'invalid'], ['control [\"029331391\"]', ['029331391'], 'invalid'], ['control [\"581077576\"]', ['581077576'], 'invalid']], [['regression [\"GB784073455\"]', ['GB784073455'], 'mod9755'], ['regression [\"GB 397 1093 27\"]', ['GB 397 1093 27'], 'mod97'], ['partial-repair [\"155142529\"]', ['155142529'], 'mod9755'], ['control [\"GB98078068\"]', ['GB98078068'], 'malformed'], ['control [\"GB98078068X\"]', ['GB98078068X'], 'malformed'], ['control [\"123456789\"]', ['123456789'], 'invalid'], ['control [\"041839278\"]', ['041839278'], 'invalid'], ['control [\"261762305\"]', ['261762305'], 'invalid']], [['regression [\"GB801525174\"]', ['GB801525174'], 'mod97'], ['regression [\"GB 307 8958 63\"]', ['GB 307 8958 63'], 'mod9755'], ['partial-repair [\"GB980780684\"]', ['GB980780684'], 'mod97'], ['control [\"729236521\"]', ['729236521'], 'invalid'], ['control [\"260407727\"]', ['260407727'], 'invalid'], ['control [\"029331391\"]', ['029331391'], 'invalid'], ['control [\"581077576\"]', ['581077576'], 'invalid'], ['control [\"GB98078068\"]', ['GB98078068'], 'malformed']]]\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":"44afd3875f747078e31bc30288922759f6cd7204cc4f67843bc9b193f12f3478","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(s):\n    t = s.replace(' ', '').upper()\n    if t.startswith('GB'):\n        t = t[2:]\n    if len(t) != 9 or not t.isascii() or not t.isdigit():\n        return 'malformed'\n    total = sum(int(ch) * w for ch, w in zip(t[:7], range(7, 0, -1)))\n    c = int(t[7:])\n    if (total + c) % 97 == 0:\n        return 'mod97'\n    if (total + c + 55) % 97 == 0:\n        return 'mod9755'\n    return 'invalid'\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [\"GB041839277\"]', ['GB041839277'], 'mod97'], ['regression [\"GB 261 7623 04\"]', ['GB 261 7623 04'], 'mod9755'], ['partial-repair [\"729236520\"]', ['729236520'], 'mod97'], ['control [\"041839278\"]', ['041839278'], 'invalid'], ['control [\"261762305\"]', ['261762305'], 'invalid'], ['control [\"729236521\"]', ['729236521'], 'invalid'], ['control [\"260407727\"]', ['260407727'], 'invalid'], ['control [\"029331391\"]', ['029331391'], 'invalid']], [['regression [\"GB260407726\"]', ['GB260407726'], 'mod9755'], ['regression [\"GB 029 3313 90\"]', ['GB 029 3313 90'], 'mod97'], ['partial-repair [\"581077575\"]', ['581077575'], 'mod9755'], ['control [\"581077576\"]', ['581077576'], 'invalid'], ['control [\"GB98078068\"]', ['GB98078068'], 'malformed'], ['control [\"GB98078068X\"]', ['GB98078068X'], 'malformed'], ['control [\"123456789\"]', ['123456789'], 'invalid'], ['control [\"041839278\"]', ['041839278'], 'invalid']], [['regression [\"GB658372602\"]', ['GB658372602'], 'mod97'], ['regression [\"GB 225 8573 89\"]', ['GB 225 8573 89'], 'mod9755'], ['partial-repair [\"331553089\"]', ['331553089'], 'mod97'], ['control [\"261762305\"]', ['261762305'], 'invalid'], ['control [\"729236521\"]', ['729236521'], 'invalid'], ['control [\"260407727\"]', ['260407727'], 'invalid'], ['control [\"029331391\"]', ['029331391'], 'invalid'], ['control [\"581077576\"]', ['581077576'], 'invalid']], [['regression [\"GB784073455\"]', ['GB784073455'], 'mod9755'], ['regression [\"GB 397 1093 27\"]', ['GB 397 1093 27'], 'mod97'], ['partial-repair [\"155142529\"]', ['155142529'], 'mod9755'], ['control [\"GB98078068\"]', ['GB98078068'], 'malformed'], ['control [\"GB98078068X\"]', ['GB98078068X'], 'malformed'], ['control [\"123456789\"]', ['123456789'], 'invalid'], ['control [\"041839278\"]', ['041839278'], 'invalid'], ['control [\"261762305\"]', ['261762305'], 'invalid']], [['regression [\"GB801525174\"]', ['GB801525174'], 'mod97'], ['regression [\"GB 307 8958 63\"]', ['GB 307 8958 63'], 'mod9755'], ['partial-repair [\"GB980780684\"]', ['GB980780684'], 'mod97'], ['control [\"729236521\"]', ['729236521'], 'invalid'], ['control [\"260407727\"]', ['260407727'], 'invalid'], ['control [\"029331391\"]', ['029331391'], 'invalid'], ['control [\"581077576\"]', ['581077576'], 'invalid'], ['control [\"GB98078068\"]', ['GB98078068'], 'malformed']]]\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-uk-vat-weight-start","generated_at":"2026-09-29T14:48:40.816765+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Invoice processing screens supplier VAT numbers before reclaiming input tax.","root_cause":"The weights come from range(7, 0, -1) instead of 8 down to 2.","sha256":"d9a685c8ccabb40ab63cd19da9347c8d5c198d21f1d6556718fa40aa5da87421","title":"UK VAT weights start at seven · 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":41.13,"exit_code":1,"observations":[{"actual":"invalid","check":"regression [\"GB041839277\"]","expected":"mod97","passed":false},{"actual":"mod9755","check":"regression [\"GB 261 7623 04\"]","expected":"mod9755","passed":true},{"actual":"invalid","check":"partial-repair [\"729236520\"]","expected":"mod97","passed":false},{"actual":"invalid","check":"control [\"041839278\"]","expected":"invalid","passed":true},{"actual":"invalid","check":"control [\"261762305\"]","expected":"invalid","passed":true},{"actual":"invalid","check":"control [\"729236521\"]","expected":"invalid","passed":true},{"actual":"invalid","check":"control [\"260407727\"]","expected":"invalid","passed":true},{"actual":"invalid","check":"control [\"029331391\"]","expected":"invalid","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [\\\"GB041839277\\\"]\", \"actual\": \"invalid\", \"expected\": \"mod97\", \"passed\": false}, {\"check\": \"regression [\\\"GB 261 7623 04\\\"]\", \"actual\": \"mod9755\", \"expected\": \"mod9755\", \"passed\": true}, {\"check\": \"partial-repair [\\\"729236520\\\"]\", \"actual\": \"invalid\", \"expected\": \"mod97\", \"passed\": false}, {\"check\": \"control [\\\"041839278\\\"]\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"control [\\\"261762305\\\"]\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"control [\\\"729236521\\\"]\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"control [\\\"260407727\\\"]\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"control [\\\"029331391\\\"]\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.391,"exit_code":1,"observations":[{"actual":"invalid","check":"regression [\"GB041839277\"]","expected":"mod97","passed":false},{"actual":"invalid","check":"regression [\"GB 261 7623 04\"]","expected":"mod9755","passed":false},{"actual":"invalid","check":"partial-repair [\"729236520\"]","expected":"mod97","passed":false},{"actual":"invalid","check":"control [\"041839278\"]","expected":"invalid","passed":true},{"actual":"invalid","check":"control [\"261762305\"]","expected":"invalid","passed":true},{"actual":"invalid","check":"control [\"729236521\"]","expected":"invalid","passed":true},{"actual":"invalid","check":"control [\"260407727\"]","expected":"invalid","passed":true},{"actual":"invalid","check":"control [\"029331391\"]","expected":"invalid","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [\\\"GB041839277\\\"]\", \"actual\": \"invalid\", \"expected\": \"mod97\", \"passed\": false}, {\"check\": \"regression [\\\"GB 261 7623 04\\\"]\", \"actual\": \"invalid\", \"expected\": \"mod9755\", \"passed\": false}, {\"check\": \"partial-repair [\\\"729236520\\\"]\", \"actual\": \"invalid\", \"expected\": \"mod97\", \"passed\": false}, {\"check\": \"control [\\\"041839278\\\"]\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"control [\\\"261762305\\\"]\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"control [\\\"729236521\\\"]\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"control [\\\"260407727\\\"]\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"control [\\\"029331391\\\"]\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"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."}}