{"abstract":"Check characters are wrong for all remainders except 10-to-X style coincidences.","category":"Check-digit algorithms","checks":8,"contract":"Check character of an 18-character resident identity number: seventeen ASCII digits followed by a digit or X (lowercase x accepted). Weights are 2^(17-i) mod 11 for 0-based i; the check character is \"10X98765432\"[sum % 11]. Return [check character, whether the 18th character matches case-insensitively].","evaluation_group":"w2-check_digit_algorithms-cn-resident-id","failed_approach":"Moving X to the end of the reversed map (\"1098765432X\") still misplaces three values.","family":"w2-check_digit_algorithms-cn-resident-id-check-map","id":"FA-72586","implementations":{"attempt":{"sha256":"698b38e6c8226cc443e2e80e333a01ebfaf249376b7f079c3466b797e8b55020","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(s):\n    if len(s) != 18 or not s.isascii() or not s[:17].isdigit():\n        return 'malformed'\n    total = sum(int(ch) * pow(2, 17 - i, 11) for i, ch in enumerate(s[:17]))\n    check = '1098765432X'[total % 11]\n    return [check, check == s[17].upper()]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [\"268310199103143528\"]', ['268310199103143528'], ['9', False]], ['regression [\"297547197007199229\"]', ['297547197007199229'], ['2', False]], ['control [\"11010519491231002\"]', ['11010519491231002'], 'malformed'], ['control [\"1101051949123100XX\"]', ['1101051949123100XX'], 'malformed'], ['control [\"518849198106269933\"]', ['518849198106269933'], ['6', False]], ['control [\"405799197903155930\"]', ['405799197903155930'], ['7', False]], ['control [\"445793197510028320\"]', ['445793197510028320'], ['X', False]], ['control [\"309071197409120443\"]', ['309071197409120443'], ['3', True]]], [['regression [\"445793197510028320\"]', ['445793197510028320'], ['X', False]], ['regression [\"309071197409120443\"]', ['309071197409120443'], ['3', True]], ['partial-repair [\"405799197903155930\"]', ['405799197903155930'], ['7', False]], ['control [\"1101051949123100XX\"]', ['1101051949123100XX'], 'malformed'], ['control [\"11010519491231002\"]', ['11010519491231002'], 'malformed'], ['control [\"458825200412201114\"]', ['458825200412201114'], ['5', False]], ['control [\"373498196811139070\"]', ['373498196811139070'], ['5', False]], ['control [\"18951819720314318X\"]', ['18951819720314318X'], ['3', False]]], [['regression [\"458825200412201114\"]', ['458825200412201114'], ['5', False]], ['regression [\"373498196811139070\"]', ['373498196811139070'], ['5', False]], ['partial-repair [\"594570196107138355\"]', ['594570196107138355'], ['2', False]], ['control [\"11010519491231002\"]', ['11010519491231002'], 'malformed'], ['control [\"1101051949123100XX\"]', ['1101051949123100XX'], 'malformed'], ['control [\"197110195609245785\"]', ['197110195609245785'], ['6', False]], ['control [\"37858219960314414X\"]', ['37858219960314414X'], ['7', False]], ['control [\"22100419730209591X\"]', ['22100419730209591X'], ['4', False]]], [['regression [\"50937819800315206x\"]', ['50937819800315206x'], ['9', False]], ['regression [\"600025197711283200\"]', ['600025197711283200'], ['5', False]], ['partial-repair [\"18951819720314318X\"]', ['18951819720314318X'], ['3', False]], ['control [\"1101051949123100XX\"]', ['1101051949123100XX'], 'malformed'], ['control [\"11010519491231002\"]', ['11010519491231002'], 'malformed'], ['control [\"261917197009053555\"]', ['261917197009053555'], ['3', False]], ['control [\"607248198301138071\"]', ['607248198301138071'], ['9', False]], ['control [\"148107199504128670\"]', ['148107199504128670'], ['3', False]]], [['regression [\"22100419730209591X\"]', ['22100419730209591X'], ['4', False]], ['regression [\"653847197508233493\"]', ['653847197508233493'], ['2', False]], ['partial-repair [\"197110195609245785\"]', ['197110195609245785'], ['6', False]], ['partial-repair [\"37858219960314414X\"]', ['37858219960314414X'], ['7', False]], ['control [\"11010519491231002\"]', ['11010519491231002'], 'malformed'], ['control [\"1101051949123100XX\"]', ['1101051949123100XX'], 'malformed'], ['control [\"11010519491231002X\"]', ['11010519491231002X'], ['X', True]], ['control [\"11010519491231002x\"]', ['11010519491231002x'], ['X', 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":"ea2b914c77473276fae7ce280577dd81ffa6fa8633471bfe0c0acf8361f8420d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(s):\n    if len(s) != 18 or not s.isascii() or not s[:17].isdigit():\n        return 'malformed'\n    total = sum(int(ch) * pow(2, 17 - i, 11) for i, ch in enumerate(s[:17]))\n    check = '0123456789X'[total % 11]\n    return [check, check == s[17].upper()]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [\"268310199103143528\"]', ['268310199103143528'], ['9', False]], ['regression [\"297547197007199229\"]', ['297547197007199229'], ['2', False]], ['control [\"11010519491231002\"]', ['11010519491231002'], 'malformed'], ['control [\"1101051949123100XX\"]', ['1101051949123100XX'], 'malformed'], ['control [\"518849198106269933\"]', ['518849198106269933'], ['6', False]], ['control [\"405799197903155930\"]', ['405799197903155930'], ['7', False]], ['control [\"445793197510028320\"]', ['445793197510028320'], ['X', False]], ['control [\"309071197409120443\"]', ['309071197409120443'], ['3', True]]], [['regression [\"445793197510028320\"]', ['445793197510028320'], ['X', False]], ['regression [\"309071197409120443\"]', ['309071197409120443'], ['3', True]], ['partial-repair [\"405799197903155930\"]', ['405799197903155930'], ['7', False]], ['control [\"1101051949123100XX\"]', ['1101051949123100XX'], 'malformed'], ['control [\"11010519491231002\"]', ['11010519491231002'], 'malformed'], ['control [\"458825200412201114\"]', ['458825200412201114'], ['5', False]], ['control [\"373498196811139070\"]', ['373498196811139070'], ['5', False]], ['control [\"18951819720314318X\"]', ['18951819720314318X'], ['3', False]]], [['regression [\"458825200412201114\"]', ['458825200412201114'], ['5', False]], ['regression [\"373498196811139070\"]', ['373498196811139070'], ['5', False]], ['partial-repair [\"594570196107138355\"]', ['594570196107138355'], ['2', False]], ['control [\"11010519491231002\"]', ['11010519491231002'], 'malformed'], ['control [\"1101051949123100XX\"]', ['1101051949123100XX'], 'malformed'], ['control [\"197110195609245785\"]', ['197110195609245785'], ['6', False]], ['control [\"37858219960314414X\"]', ['37858219960314414X'], ['7', False]], ['control [\"22100419730209591X\"]', ['22100419730209591X'], ['4', False]]], [['regression [\"50937819800315206x\"]', ['50937819800315206x'], ['9', False]], ['regression [\"600025197711283200\"]', ['600025197711283200'], ['5', False]], ['partial-repair [\"18951819720314318X\"]', ['18951819720314318X'], ['3', False]], ['control [\"1101051949123100XX\"]', ['1101051949123100XX'], 'malformed'], ['control [\"11010519491231002\"]', ['11010519491231002'], 'malformed'], ['control [\"261917197009053555\"]', ['261917197009053555'], ['3', False]], ['control [\"607248198301138071\"]', ['607248198301138071'], ['9', False]], ['control [\"148107199504128670\"]', ['148107199504128670'], ['3', False]]], [['regression [\"22100419730209591X\"]', ['22100419730209591X'], ['4', False]], ['regression [\"653847197508233493\"]', ['653847197508233493'], ['2', False]], ['partial-repair [\"197110195609245785\"]', ['197110195609245785'], ['6', False]], ['partial-repair [\"37858219960314414X\"]', ['37858219960314414X'], ['7', False]], ['control [\"11010519491231002\"]', ['11010519491231002'], 'malformed'], ['control [\"1101051949123100XX\"]', ['1101051949123100XX'], 'malformed'], ['control [\"11010519491231002X\"]', ['11010519491231002X'], ['X', True]], ['control [\"11010519491231002x\"]', ['11010519491231002x'], ['X', 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"},"fixed":{"sha256":"c00715277c14f5509e2843f67d21fdbcdef35dec71c152f10bbcf00db72635e8","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(s):\n    if len(s) != 18 or not s.isascii() or not s[:17].isdigit():\n        return 'malformed'\n    total = sum(int(ch) * pow(2, 17 - i, 11) for i, ch in enumerate(s[:17]))\n    check = '10X98765432'[total % 11]\n    return [check, check == s[17].upper()]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [\"268310199103143528\"]', ['268310199103143528'], ['9', False]], ['regression [\"297547197007199229\"]', ['297547197007199229'], ['2', False]], ['control [\"11010519491231002\"]', ['11010519491231002'], 'malformed'], ['control [\"1101051949123100XX\"]', ['1101051949123100XX'], 'malformed'], ['control [\"518849198106269933\"]', ['518849198106269933'], ['6', False]], ['control [\"405799197903155930\"]', ['405799197903155930'], ['7', False]], ['control [\"445793197510028320\"]', ['445793197510028320'], ['X', False]], ['control [\"309071197409120443\"]', ['309071197409120443'], ['3', True]]], [['regression [\"445793197510028320\"]', ['445793197510028320'], ['X', False]], ['regression [\"309071197409120443\"]', ['309071197409120443'], ['3', True]], ['partial-repair [\"405799197903155930\"]', ['405799197903155930'], ['7', False]], ['control [\"1101051949123100XX\"]', ['1101051949123100XX'], 'malformed'], ['control [\"11010519491231002\"]', ['11010519491231002'], 'malformed'], ['control [\"458825200412201114\"]', ['458825200412201114'], ['5', False]], ['control [\"373498196811139070\"]', ['373498196811139070'], ['5', False]], ['control [\"18951819720314318X\"]', ['18951819720314318X'], ['3', False]]], [['regression [\"458825200412201114\"]', ['458825200412201114'], ['5', False]], ['regression [\"373498196811139070\"]', ['373498196811139070'], ['5', False]], ['partial-repair [\"594570196107138355\"]', ['594570196107138355'], ['2', False]], ['control [\"11010519491231002\"]', ['11010519491231002'], 'malformed'], ['control [\"1101051949123100XX\"]', ['1101051949123100XX'], 'malformed'], ['control [\"197110195609245785\"]', ['197110195609245785'], ['6', False]], ['control [\"37858219960314414X\"]', ['37858219960314414X'], ['7', False]], ['control [\"22100419730209591X\"]', ['22100419730209591X'], ['4', False]]], [['regression [\"50937819800315206x\"]', ['50937819800315206x'], ['9', False]], ['regression [\"600025197711283200\"]', ['600025197711283200'], ['5', False]], ['partial-repair [\"18951819720314318X\"]', ['18951819720314318X'], ['3', False]], ['control [\"1101051949123100XX\"]', ['1101051949123100XX'], 'malformed'], ['control [\"11010519491231002\"]', ['11010519491231002'], 'malformed'], ['control [\"261917197009053555\"]', ['261917197009053555'], ['3', False]], ['control [\"607248198301138071\"]', ['607248198301138071'], ['9', False]], ['control [\"148107199504128670\"]', ['148107199504128670'], ['3', False]]], [['regression [\"22100419730209591X\"]', ['22100419730209591X'], ['4', False]], ['regression [\"653847197508233493\"]', ['653847197508233493'], ['2', False]], ['partial-repair [\"197110195609245785\"]', ['197110195609245785'], ['6', False]], ['partial-repair [\"37858219960314414X\"]', ['37858219960314414X'], ['7', False]], ['control [\"11010519491231002\"]', ['11010519491231002'], 'malformed'], ['control [\"1101051949123100XX\"]', ['1101051949123100XX'], 'malformed'], ['control [\"11010519491231002X\"]', ['11010519491231002X'], ['X', True]], ['control [\"11010519491231002x\"]', ['11010519491231002x'], ['X', 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-cn-resident-id-check-map","generated_at":"2026-09-29T14:48:39.772177+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Account opening flows validate national identity numbers before identity verification.","repair":"Map remainder r to \"10X98765432\"[r].","root_cause":"The remainder indexes \"0123456789X\" instead of the scheme map \"10X98765432\".","sha256":"14b70d63c9350f4ed6437207cf5d82cd57e8edba540f7eedd5fa68b377792d16","title":"Resident ID maps the remainder straight to a digit · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":35.24,"exit_code":1,"observations":[{"actual":["8",true],"check":"regression [\"268310199103143528\"]","expected":["9",false],"passed":false},{"actual":["X",false],"check":"regression [\"297547197007199229\"]","expected":["2",false],"passed":false},{"actual":"malformed","check":"control [\"11010519491231002\"]","expected":"malformed","passed":true},{"actual":"malformed","check":"control [\"1101051949123100XX\"]","expected":"malformed","passed":true},{"actual":["5",false],"check":"control [\"518849198106269933\"]","expected":["6",false],"passed":false},{"actual":["6",false],"check":"control [\"405799197903155930\"]","expected":["7",false],"passed":false},{"actual":["9",false],"check":"control [\"445793197510028320\"]","expected":["X",false],"passed":false},{"actual":["2",false],"check":"control [\"309071197409120443\"]","expected":["3",true],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [\\\"268310199103143528\\\"]\", \"actual\": [\"8\", true], \"expected\": [\"9\", false], \"passed\": false}, {\"check\": \"regression [\\\"297547197007199229\\\"]\", \"actual\": [\"X\", false], \"expected\": [\"2\", false], \"passed\": false}, {\"check\": \"control [\\\"11010519491231002\\\"]\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"control [\\\"1101051949123100XX\\\"]\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"control [\\\"518849198106269933\\\"]\", \"actual\": [\"5\", false], \"expected\": [\"6\", false], \"passed\": false}, {\"check\": \"control [\\\"405799197903155930\\\"]\", \"actual\": [\"6\", false], \"expected\": [\"7\", false], \"passed\": false}, {\"check\": \"control [\\\"445793197510028320\\\"]\", \"actual\": [\"9\", false], \"expected\": [\"X\", false], \"passed\": false}, {\"check\": \"control [\\\"309071197409120443\\\"]\", \"actual\": [\"2\", false], \"expected\": [\"3\", true], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.017,"exit_code":1,"observations":[{"actual":["3",false],"check":"regression [\"268310199103143528\"]","expected":["9",false],"passed":false},{"actual":["X",false],"check":"regression [\"297547197007199229\"]","expected":["2",false],"passed":false},{"actual":"malformed","check":"control [\"11010519491231002\"]","expected":"malformed","passed":true},{"actual":"malformed","check":"control [\"1101051949123100XX\"]","expected":"malformed","passed":true},{"actual":["6",false],"check":"control [\"518849198106269933\"]","expected":["6",false],"passed":true},{"actual":["5",false],"check":"control [\"405799197903155930\"]","expected":["7",false],"passed":false},{"actual":["2",false],"check":"control [\"445793197510028320\"]","expected":["X",false],"passed":false},{"actual":["9",false],"check":"control [\"309071197409120443\"]","expected":["3",true],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [\\\"268310199103143528\\\"]\", \"actual\": [\"3\", false], \"expected\": [\"9\", false], \"passed\": false}, {\"check\": \"regression [\\\"297547197007199229\\\"]\", \"actual\": [\"X\", false], \"expected\": [\"2\", false], \"passed\": false}, {\"check\": \"control [\\\"11010519491231002\\\"]\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"control [\\\"1101051949123100XX\\\"]\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"control [\\\"518849198106269933\\\"]\", \"actual\": [\"6\", false], \"expected\": [\"6\", false], \"passed\": true}, {\"check\": \"control [\\\"405799197903155930\\\"]\", \"actual\": [\"5\", false], \"expected\": [\"7\", false], \"passed\": false}, {\"check\": \"control [\\\"445793197510028320\\\"]\", \"actual\": [\"2\", false], \"expected\": [\"X\", false], \"passed\": false}, {\"check\": \"control [\\\"309071197409120443\\\"]\", \"actual\": [\"9\", false], \"expected\": [\"3\", true], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":38.216,"exit_code":0,"observations":[{"actual":["9",false],"check":"regression [\"268310199103143528\"]","expected":["9",false],"passed":true},{"actual":["2",false],"check":"regression [\"297547197007199229\"]","expected":["2",false],"passed":true},{"actual":"malformed","check":"control [\"11010519491231002\"]","expected":"malformed","passed":true},{"actual":"malformed","check":"control [\"1101051949123100XX\"]","expected":"malformed","passed":true},{"actual":["6",false],"check":"control [\"518849198106269933\"]","expected":["6",false],"passed":true},{"actual":["7",false],"check":"control [\"405799197903155930\"]","expected":["7",false],"passed":true},{"actual":["X",false],"check":"control [\"445793197510028320\"]","expected":["X",false],"passed":true},{"actual":["3",true],"check":"control [\"309071197409120443\"]","expected":["3",true],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [\\\"268310199103143528\\\"]\", \"actual\": [\"9\", false], \"expected\": [\"9\", false], \"passed\": true}, {\"check\": \"regression [\\\"297547197007199229\\\"]\", \"actual\": [\"2\", false], \"expected\": [\"2\", false], \"passed\": true}, {\"check\": \"control [\\\"11010519491231002\\\"]\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"control [\\\"1101051949123100XX\\\"]\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"control [\\\"518849198106269933\\\"]\", \"actual\": [\"6\", false], \"expected\": [\"6\", false], \"passed\": true}, {\"check\": \"control [\\\"405799197903155930\\\"]\", \"actual\": [\"7\", false], \"expected\": [\"7\", false], \"passed\": true}, {\"check\": \"control [\\\"445793197510028320\\\"]\", \"actual\": [\"X\", false], \"expected\": [\"X\", false], \"passed\": true}, {\"check\": \"control [\\\"309071197409120443\\\"]\", \"actual\": [\"3\", true], \"expected\": [\"3\", true], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}