{"abstract":"References whose base is a multiple of 97 are rejected when they carry 97.","category":"Check-digit algorithms","checks":8,"contract":"Belgian structured payment communication: optional surrounding +++...+++ or ***...*** (matching), slashes ignored, then exactly 12 ASCII digits (else \"malformed\"). The last two digits must equal the first ten digits mod 97, where a remainder of 0 is written 97. Return whether they match.","evaluation_group":"w2-check_digit_algorithms-be-structured-communication","failed_approach":"Accepting 00 as well as 97 admits the invalid 00 form.","family":"w2-check_digit_algorithms-be-structured-communication-zero-remainder","id":"FA-72676","implementations":{"attempt":{"sha256":"a3bc092b610c5b872956a8d34181d9573ba71864c2ff26a06d97f5044bbf2f3c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(s):\n    t = s.strip()\n    if len(t) > 6 and t[:3] == t[-3:] and t[:3] in ('+++', '***'):\n        t = t[3:-3]\n    t = t.replace('/', '')\n    if len(t) != 12 or not t.isascii() or not t.isdigit():\n        return 'malformed'\n    r = int(t[:10]) % 97\n    if r == 0:\n        r = 97\n    return r == int(t[10:]) or (r == 97 and t[10:] == '00')\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [\"000000009797\"]', ['000000009797'], True], ['regression [\"000000009700\"]', ['000000009700'], False], ['partial-repair [\"000000019400\"]', ['000000019400'], False], ['control [\"621266857360\"]', ['621266857360'], True], ['control [\"+++865/5789/93879+++\"]', ['+++865/5789/93879+++'], True], ['control [\"***035/9935/50934***\"]', ['***035/9935/50934***'], True], ['control [\"371789633519\"]', ['371789633519'], True], ['control [\"+++131/9631/75508+++\"]', ['+++131/9631/75508+++'], True]], [['regression [\"000000019400\"]', ['000000019400'], False], ['regression [\"000000000097\"]', ['000000000097'], True], ['partial-repair [\"000000009700\"]', ['000000009700'], False], ['control [\"***078/2001/09694***\"]', ['***078/2001/09694***'], True], ['control [\"640618349478\"]', ['640618349478'], True], ['control [\"+++990/8748/13965+++\"]', ['+++990/8748/13965+++'], True], ['control [\"***930/2019/38809***\"]', ['***930/2019/38809***'], True], ['control [\"646994510702\"]', ['646994510702'], True]], [['regression [\"000000009797\"]', ['000000009797'], True], ['regression [\"000000009700\"]', ['000000009700'], False], ['partial-repair [\"000000019400\"]', ['000000019400'], False], ['control [\"+++001/1569/26676+++\"]', ['+++001/1569/26676+++'], True], ['control [\"***178/8225/23467***\"]', ['***178/8225/23467***'], True], ['control [\"123456780211\"]', ['123456780211'], True], ['control [\"123456780200\"]', ['123456780200'], False], ['control [\"999999997019\"]', ['999999997019'], True]], [['regression [\"000000019400\"]', ['000000019400'], False], ['regression [\"000000000097\"]', ['000000000097'], True], ['partial-repair [\"000000009700\"]', ['000000009700'], False], ['control [\"999999997000\"]', ['999999997000'], False], ['control [\"+++123/4567/89002+++\"]', ['+++123/4567/89002+++'], True], ['control [\"123456789002\"]', ['123456789002'], True], ['control [\"12345678900\"]', ['12345678900'], 'malformed'], ['control [\"+++123/4567/8900A+++\"]', ['+++123/4567/8900A+++'], 'malformed']], [['regression [\"000000009797\"]', ['000000009797'], True], ['regression [\"000000009700\"]', ['000000009700'], False], ['partial-repair [\"000000019400\"]', ['000000019400'], False], ['control [\"***090/9337/55493***\"]', ['***090/9337/55493***'], True], ['control [\"+++090/9337/55493***\"]', ['+++090/9337/55493***'], 'malformed'], ['control [\"123456789003\"]', ['123456789003'], False], ['control [\"621266857360\"]', ['621266857360'], True], ['control [\"+++865/5789/93879+++\"]', ['+++865/5789/93879+++'], 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":"b3f3dafd200afce26c28d823b1426fdaeaa57955238c0c3a93bf6e312d93651a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(s):\n    t = s.strip()\n    if len(t) > 6 and t[:3] == t[-3:] and t[:3] in ('+++', '***'):\n        t = t[3:-3]\n    t = t.replace('/', '')\n    if len(t) != 12 or not t.isascii() or not t.isdigit():\n        return 'malformed'\n    r = int(t[:10]) % 97\n    return r == int(t[10:])\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [\"000000009797\"]', ['000000009797'], True], ['regression [\"000000009700\"]', ['000000009700'], False], ['partial-repair [\"000000019400\"]', ['000000019400'], False], ['control [\"621266857360\"]', ['621266857360'], True], ['control [\"+++865/5789/93879+++\"]', ['+++865/5789/93879+++'], True], ['control [\"***035/9935/50934***\"]', ['***035/9935/50934***'], True], ['control [\"371789633519\"]', ['371789633519'], True], ['control [\"+++131/9631/75508+++\"]', ['+++131/9631/75508+++'], True]], [['regression [\"000000019400\"]', ['000000019400'], False], ['regression [\"000000000097\"]', ['000000000097'], True], ['partial-repair [\"000000009700\"]', ['000000009700'], False], ['control [\"***078/2001/09694***\"]', ['***078/2001/09694***'], True], ['control [\"640618349478\"]', ['640618349478'], True], ['control [\"+++990/8748/13965+++\"]', ['+++990/8748/13965+++'], True], ['control [\"***930/2019/38809***\"]', ['***930/2019/38809***'], True], ['control [\"646994510702\"]', ['646994510702'], True]], [['regression [\"000000009797\"]', ['000000009797'], True], ['regression [\"000000009700\"]', ['000000009700'], False], ['partial-repair [\"000000019400\"]', ['000000019400'], False], ['control [\"+++001/1569/26676+++\"]', ['+++001/1569/26676+++'], True], ['control [\"***178/8225/23467***\"]', ['***178/8225/23467***'], True], ['control [\"123456780211\"]', ['123456780211'], True], ['control [\"123456780200\"]', ['123456780200'], False], ['control [\"999999997019\"]', ['999999997019'], True]], [['regression [\"000000019400\"]', ['000000019400'], False], ['regression [\"000000000097\"]', ['000000000097'], True], ['partial-repair [\"000000009700\"]', ['000000009700'], False], ['control [\"999999997000\"]', ['999999997000'], False], ['control [\"+++123/4567/89002+++\"]', ['+++123/4567/89002+++'], True], ['control [\"123456789002\"]', ['123456789002'], True], ['control [\"12345678900\"]', ['12345678900'], 'malformed'], ['control [\"+++123/4567/8900A+++\"]', ['+++123/4567/8900A+++'], 'malformed']], [['regression [\"000000009797\"]', ['000000009797'], True], ['regression [\"000000009700\"]', ['000000009700'], False], ['partial-repair [\"000000019400\"]', ['000000019400'], False], ['control [\"***090/9337/55493***\"]', ['***090/9337/55493***'], True], ['control [\"+++090/9337/55493***\"]', ['+++090/9337/55493***'], 'malformed'], ['control [\"123456789003\"]', ['123456789003'], False], ['control [\"621266857360\"]', ['621266857360'], True], ['control [\"+++865/5789/93879+++\"]', ['+++865/5789/93879+++'], 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":"9644bd47d025c20bf62d7c6fdcafe93c6aabd05ca6d6b3d88dd2c3493ec91c64","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(s):\n    t = s.strip()\n    if len(t) > 6 and t[:3] == t[-3:] and t[:3] in ('+++', '***'):\n        t = t[3:-3]\n    t = t.replace('/', '')\n    if len(t) != 12 or not t.isascii() or not t.isdigit():\n        return 'malformed'\n    r = int(t[:10]) % 97\n    if r == 0:\n        r = 97\n    return r == int(t[10:])\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [\"000000009797\"]', ['000000009797'], True], ['regression [\"000000009700\"]', ['000000009700'], False], ['partial-repair [\"000000019400\"]', ['000000019400'], False], ['control [\"621266857360\"]', ['621266857360'], True], ['control [\"+++865/5789/93879+++\"]', ['+++865/5789/93879+++'], True], ['control [\"***035/9935/50934***\"]', ['***035/9935/50934***'], True], ['control [\"371789633519\"]', ['371789633519'], True], ['control [\"+++131/9631/75508+++\"]', ['+++131/9631/75508+++'], True]], [['regression [\"000000019400\"]', ['000000019400'], False], ['regression [\"000000000097\"]', ['000000000097'], True], ['partial-repair [\"000000009700\"]', ['000000009700'], False], ['control [\"***078/2001/09694***\"]', ['***078/2001/09694***'], True], ['control [\"640618349478\"]', ['640618349478'], True], ['control [\"+++990/8748/13965+++\"]', ['+++990/8748/13965+++'], True], ['control [\"***930/2019/38809***\"]', ['***930/2019/38809***'], True], ['control [\"646994510702\"]', ['646994510702'], True]], [['regression [\"000000009797\"]', ['000000009797'], True], ['regression [\"000000009700\"]', ['000000009700'], False], ['partial-repair [\"000000019400\"]', ['000000019400'], False], ['control [\"+++001/1569/26676+++\"]', ['+++001/1569/26676+++'], True], ['control [\"***178/8225/23467***\"]', ['***178/8225/23467***'], True], ['control [\"123456780211\"]', ['123456780211'], True], ['control [\"123456780200\"]', ['123456780200'], False], ['control [\"999999997019\"]', ['999999997019'], True]], [['regression [\"000000019400\"]', ['000000019400'], False], ['regression [\"000000000097\"]', ['000000000097'], True], ['partial-repair [\"000000009700\"]', ['000000009700'], False], ['control [\"999999997000\"]', ['999999997000'], False], ['control [\"+++123/4567/89002+++\"]', ['+++123/4567/89002+++'], True], ['control [\"123456789002\"]', ['123456789002'], True], ['control [\"12345678900\"]', ['12345678900'], 'malformed'], ['control [\"+++123/4567/8900A+++\"]', ['+++123/4567/8900A+++'], 'malformed']], [['regression [\"000000009797\"]', ['000000009797'], True], ['regression [\"000000009700\"]', ['000000009700'], False], ['partial-repair [\"000000019400\"]', ['000000019400'], False], ['control [\"***090/9337/55493***\"]', ['***090/9337/55493***'], True], ['control [\"+++090/9337/55493***\"]', ['+++090/9337/55493***'], 'malformed'], ['control [\"123456789003\"]', ['123456789003'], False], ['control [\"621266857360\"]', ['621266857360'], True], ['control [\"+++865/5789/93879+++\"]', ['+++865/5789/93879+++'], 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-be-structured-communication-zero-remainder","generated_at":"2026-09-29T14:48:40.568908+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Banks reconcile incoming transfers by validating the structured reference before matching invoices.","repair":"Replace a zero remainder by 97 before comparing.","root_cause":"The rule mapping remainder 0 to 97 is missing.","sha256":"4c67fd8c8687f809093e755d43986e9406e3fa439085f0f670381e9c92bf5977","title":"Structured communication expects 00 for a zero remainder · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.162,"exit_code":1,"observations":[{"actual":true,"check":"regression [\"000000009797\"]","expected":true,"passed":true},{"actual":true,"check":"regression [\"000000009700\"]","expected":false,"passed":false},{"actual":true,"check":"partial-repair [\"000000019400\"]","expected":false,"passed":false},{"actual":true,"check":"control [\"621266857360\"]","expected":true,"passed":true},{"actual":true,"check":"control [\"+++865/5789/93879+++\"]","expected":true,"passed":true},{"actual":true,"check":"control [\"***035/9935/50934***\"]","expected":true,"passed":true},{"actual":true,"check":"control [\"371789633519\"]","expected":true,"passed":true},{"actual":true,"check":"control [\"+++131/9631/75508+++\"]","expected":true,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [\\\"000000009797\\\"]\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"regression [\\\"000000009700\\\"]\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"partial-repair [\\\"000000019400\\\"]\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"control [\\\"621266857360\\\"]\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"control [\\\"+++865/5789/93879+++\\\"]\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"control [\\\"***035/9935/50934***\\\"]\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"control [\\\"371789633519\\\"]\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"control [\\\"+++131/9631/75508+++\\\"]\", \"actual\": true, \"expected\": true, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":35.712,"exit_code":1,"observations":[{"actual":false,"check":"regression [\"000000009797\"]","expected":true,"passed":false},{"actual":true,"check":"regression [\"000000009700\"]","expected":false,"passed":false},{"actual":true,"check":"partial-repair [\"000000019400\"]","expected":false,"passed":false},{"actual":true,"check":"control [\"621266857360\"]","expected":true,"passed":true},{"actual":true,"check":"control [\"+++865/5789/93879+++\"]","expected":true,"passed":true},{"actual":true,"check":"control [\"***035/9935/50934***\"]","expected":true,"passed":true},{"actual":true,"check":"control [\"371789633519\"]","expected":true,"passed":true},{"actual":true,"check":"control [\"+++131/9631/75508+++\"]","expected":true,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [\\\"000000009797\\\"]\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"regression [\\\"000000009700\\\"]\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"partial-repair [\\\"000000019400\\\"]\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"control [\\\"621266857360\\\"]\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"control [\\\"+++865/5789/93879+++\\\"]\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"control [\\\"***035/9935/50934***\\\"]\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"control [\\\"371789633519\\\"]\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"control [\\\"+++131/9631/75508+++\\\"]\", \"actual\": true, \"expected\": true, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":36.173,"exit_code":0,"observations":[{"actual":true,"check":"regression [\"000000009797\"]","expected":true,"passed":true},{"actual":false,"check":"regression [\"000000009700\"]","expected":false,"passed":true},{"actual":false,"check":"partial-repair [\"000000019400\"]","expected":false,"passed":true},{"actual":true,"check":"control [\"621266857360\"]","expected":true,"passed":true},{"actual":true,"check":"control [\"+++865/5789/93879+++\"]","expected":true,"passed":true},{"actual":true,"check":"control [\"***035/9935/50934***\"]","expected":true,"passed":true},{"actual":true,"check":"control [\"371789633519\"]","expected":true,"passed":true},{"actual":true,"check":"control [\"+++131/9631/75508+++\"]","expected":true,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [\\\"000000009797\\\"]\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"regression [\\\"000000009700\\\"]\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"partial-repair [\\\"000000019400\\\"]\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"control [\\\"621266857360\\\"]\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"control [\\\"+++865/5789/93879+++\\\"]\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"control [\\\"***035/9935/50934***\\\"]\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"control [\\\"371789633519\\\"]\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"control [\\\"+++131/9631/75508+++\\\"]\", \"actual\": true, \"expected\": true, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}