FA-72621 / Check-digit algorithms / Open access
MRZ composite check omits the field check digits · case 01
The composite (final) check digit fails on valid passports.
ROOT CAUSE
The composite string concatenates only data fields, leaving out the per-field check digits it must cover.
VERIFIED REPAIR
Use line[0:10] + line[13:20] + line[21:43], including each field check digit.
Unsuccessful approach: Including nationality and sex (a contiguous [0:20] + [21:43]) adds characters the composite excludes.
Case contract
Machine-readable passport (TD3) second line, 44 characters of 0-9, A-Z and the filler "<" (else "malformed"). Check digits use weights 7,3,1 restarting per field, "<" = 0, A-Z = 10-35: document number [0:9] check [9]; birth date [13:19] check [19]; expiry [21:27] check [27]; optional data [28:42] check [42] (a "<" check is allowed only when the optional field is entirely filler); composite check [43] over [0:10]+[13:20]+[21:43]. Return five booleans.
Why this case matters
Border-control kiosks verify MRZ check digits to catch OCR misreads before a database query.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(line):
def cd(field):
total = 0
for i, ch in enumerate(field):
if ch == '<':
v = 0
elif ch.isdigit():
v = int(ch)
else:
v = ord(ch) - 55
total += v * (7, 3, 1)[i % 3]
return str(total % 10)
if len(line) != 44 or not line.isascii():
return 'malformed'
if any(not (c.isdigit() or 'A' <= c <= 'Z' or c == '<') for c in line):
return 'malformed'
opt_ok = line[42] == cd(line[28:42]) or (line[42] == '<' and set(line[28:42]) == {'<'})
comp = line[0:9] + line[13:19] + line[21:27] + line[28:42]
return [line[9] == cd(line[0:9]), line[19] == cd(line[13:19]), line[27] == cd(line[21:27]), opt_ok, line[43] == cd(comp)]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression ["SK5TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14"]', ['SK5TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14'], [True, True, True, True, True]], ['regression ["HM87YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0"]', ['HM87YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0'], [True, True, True, True, True]], ['control ["S75TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14"]', ['S75TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14'], [False, True, True, True, False]], ['control ["HM77YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0"]', ['HM77YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0'], [False, True, True, True, False]], ['control ["ZX2H4LT816UTO1712239F2305086AOX6HQ<<<<<<<<46"]', ['ZX2H4LT816UTO1712239F2305086AOX6HQ<<<<<<<<46'], [True, False, True, True, False]], ['control ["WEXHJ2U<<7UTO6804200F3706184<<<<<<<<<<<<<<00"]', ['WEXHJ2U<<7UTO6804200F3706184<<<<<<<<<<<<<<00'], [True, True, False, True, False]], ['control ["6OGHJGP443UTO7305208F2401025ORMBRF<<<<<<<<40"]', ['6OGHJGP443UTO7305208F2401025ORMBRF<<<<<<<<40'], [True, False, True, True, False]], ['control ["Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2"]', ['Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2'], [False, True, True, True, False]]], [['regression ["WEXHJ2U<<7UTO6804200F3006184<<<<<<<<<<<<<<00"]', ['WEXHJ2U<<7UTO6804200F3006184<<<<<<<<<<<<<<00'], [True, True, True, True, True]], ['regression ["ZI4II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2"]', ['ZI4II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2'], [True, True, True, True, True]], ['partial-repair ["6OGHJGP443UTO4305208F2401025ORMBRF<<<<<<<<40"]', ['6OGHJGP443UTO4305208F2401025ORMBRF<<<<<<<<40'], [True, True, True, True, True]], ['control ["Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2"]', ['Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2'], [False, True, True, True, False]], ['control ["L898902C36UTO7408122F1204159ZE184226B<<<<<11"]', ['L898902C36UTO7408122F1204159ZE184226B<<<<<11'], [True, True, True, True, False]], ['control ["L898902C36UTO7408122F1204159ZE184226B<<<<10"]', ['L898902C36UTO7408122F1204159ZE184226B<<<<10'], 'malformed'], ['control ["l898902C36UTO7408122F1204159ZE184226B<<<<<10"]', ['l898902C36UTO7408122F1204159ZE184226B<<<<<10'], 'malformed'], ['control ["S75TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14"]', ['S75TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14'], [False, True, True, True, False]]], [['regression ["ORO5E0T416UTO4006240F2711221<<<<<<<<<<<<<<04"]', ['ORO5E0T416UTO4006240F2711221<<<<<<<<<<<<<<04'], [True, True, True, True, True]], ['regression ["IW9C4XZ762UTO4007096F2906025PS0IN0<<<<<<<<40"]', ['IW9C4XZ762UTO4007096F2906025PS0IN0<<<<<<<<40'], [True, True, True, True, True]], ['partial-repair ["A6OUR3Y<<4UTO3107232F3005017P9VLEN<<<<<<<<50"]', ['A6OUR3Y<<4UTO3107232F3005017P9VLEN<<<<<<<<50'], [True, True, True, True, True]], ['control ["HM77YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0"]', ['HM77YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0'], [False, True, True, True, False]], ['control ["ZX2H4LT816UTO1712239F2305086AOX6HQ<<<<<<<<46"]', ['ZX2H4LT816UTO1712239F2305086AOX6HQ<<<<<<<<46'], [True, False, True, True, False]], ['control ["WEXHJ2U<<7UTO6804200F3706184<<<<<<<<<<<<<<00"]', ['WEXHJ2U<<7UTO6804200F3706184<<<<<<<<<<<<<<00'], [True, True, False, True, False]], ['control ["6OGHJGP443UTO7305208F2401025ORMBRF<<<<<<<<40"]', ['6OGHJGP443UTO7305208F2401025ORMBRF<<<<<<<<40'], [True, False, True, True, False]], ['control ["Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2"]', ['Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2'], [False, True, True, True, False]]], [['regression ["7MZSP32754UTO7512054F33062086HKCM0<<<<<<<<36"]', ['7MZSP32754UTO7512054F33062086HKCM0<<<<<<<<36'], [True, True, True, True, True]], ['regression ["T8AHLV5223UTO4905147F2401173<<<<<<<<<<<<<<02"]', ['T8AHLV5223UTO4905147F2401173<<<<<<<<<<<<<<02'], [True, True, True, True, True]], ['partial-repair ["QQJKFSW<<6UTO2607034F2004079<<<<<<<<<<<<<<<0"]', ['QQJKFSW<<6UTO2607034F2004079<<<<<<<<<<<<<<<0'], [True, True, True, True, True]], ['control ["L898902C36UTO7408122F1204159ZE184226B<<<<<11"]', ['L898902C36UTO7408122F1204159ZE184226B<<<<<11'], [True, True, True, True, False]], ['control ["L898902C36UTO7408122F1204159ZE184226B<<<<10"]', ['L898902C36UTO7408122F1204159ZE184226B<<<<10'], 'malformed'], ['control ["l898902C36UTO7408122F1204159ZE184226B<<<<<10"]', ['l898902C36UTO7408122F1204159ZE184226B<<<<<10'], 'malformed'], ['control ["S75TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14"]', ['S75TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14'], [False, True, True, True, False]], ['control ["HM77YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0"]', ['HM77YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0'], [False, True, True, True, False]]], [['regression ["AB1234<<<1UTO8501019F3001019<<<<<<<<<<<<<<<0"]', ['AB1234<<<1UTO8501019F3001019<<<<<<<<<<<<<<<0'], [True, True, True, True, True]], ['regression ["X<<<<<<<<1UTO0002299F2912316ABC<<<<<<<<<<<56"]', ['X<<<<<<<<1UTO0002299F2912316ABC<<<<<<<<<<<56'], [True, True, True, True, True]], ['partial-repair ["L898902C36UTO7408122F1204159ZE184226B<<<<<10"]', ['L898902C36UTO7408122F1204159ZE184226B<<<<<10'], [True, True, True, True, True]], ['control ["ZX2H4LT816UTO1712239F2305086AOX6HQ<<<<<<<<46"]', ['ZX2H4LT816UTO1712239F2305086AOX6HQ<<<<<<<<46'], [True, False, True, True, False]], ['control ["WEXHJ2U<<7UTO6804200F3706184<<<<<<<<<<<<<<00"]', ['WEXHJ2U<<7UTO6804200F3706184<<<<<<<<<<<<<<00'], [True, True, False, True, False]], ['control ["6OGHJGP443UTO7305208F2401025ORMBRF<<<<<<<<40"]', ['6OGHJGP443UTO7305208F2401025ORMBRF<<<<<<<<40'], [True, False, True, True, False]], ['control ["Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2"]', ['Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2'], [False, True, True, True, False]], ['control ["L898902C36UTO7408122F1204159ZE184226B<<<<<11"]', ['L898902C36UTO7408122F1204159ZE184226B<<<<<11'], [True, True, True, True, False]]]]
for label, args, expected in fixtures[N - 1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression ["SK5TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14"] | [True, True, True, True, False] | [True, True, True, True, True] | Failed |
| regression ["HM87YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0"] | [True, True, True, True, False] | [True, True, True, True, True] | Failed |
| control ["S75TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14"] | [False, True, True, True, False] | [False, True, True, True, False] | Passed |
| control ["HM77YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0"] | [False, True, True, True, False] | [False, True, True, True, False] | Passed |
| control ["ZX2H4LT816UTO1712239F2305086AOX6HQ<<<<<<<<46"] | [True, False, True, True, False] | [True, False, True, True, False] | Passed |
| control ["WEXHJ2U<<7UTO6804200F3706184<<<<<<<<<<<<<<00"] | [True, True, False, True, False] | [True, True, False, True, False] | Passed |
| control ["6OGHJGP443UTO7305208F2401025ORMBRF<<<<<<<<40"] | [True, False, True, True, False] | [True, False, True, True, False] | Passed |
| control ["Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2"] | [False, True, True, True, False] | [False, True, True, True, False] | Passed |
SHA-256 / ba8295e98d9c8a7c6750fa6453a9742e4ac93245cebd02a64b635e73e19e4b92
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(line):
def cd(field):
total = 0
for i, ch in enumerate(field):
if ch == '<':
v = 0
elif ch.isdigit():
v = int(ch)
else:
v = ord(ch) - 55
total += v * (7, 3, 1)[i % 3]
return str(total % 10)
if len(line) != 44 or not line.isascii():
return 'malformed'
if any(not (c.isdigit() or 'A' <= c <= 'Z' or c == '<') for c in line):
return 'malformed'
opt_ok = line[42] == cd(line[28:42]) or (line[42] == '<' and set(line[28:42]) == {'<'})
comp = line[0:20] + line[21:43]
return [line[9] == cd(line[0:9]), line[19] == cd(line[13:19]), line[27] == cd(line[21:27]), opt_ok, line[43] == cd(comp)]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression ["SK5TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14"]', ['SK5TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14'], [True, True, True, True, True]], ['regression ["HM87YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0"]', ['HM87YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0'], [True, True, True, True, True]], ['control ["S75TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14"]', ['S75TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14'], [False, True, True, True, False]], ['control ["HM77YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0"]', ['HM77YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0'], [False, True, True, True, False]], ['control ["ZX2H4LT816UTO1712239F2305086AOX6HQ<<<<<<<<46"]', ['ZX2H4LT816UTO1712239F2305086AOX6HQ<<<<<<<<46'], [True, False, True, True, False]], ['control ["WEXHJ2U<<7UTO6804200F3706184<<<<<<<<<<<<<<00"]', ['WEXHJ2U<<7UTO6804200F3706184<<<<<<<<<<<<<<00'], [True, True, False, True, False]], ['control ["6OGHJGP443UTO7305208F2401025ORMBRF<<<<<<<<40"]', ['6OGHJGP443UTO7305208F2401025ORMBRF<<<<<<<<40'], [True, False, True, True, False]], ['control ["Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2"]', ['Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2'], [False, True, True, True, False]]], [['regression ["WEXHJ2U<<7UTO6804200F3006184<<<<<<<<<<<<<<00"]', ['WEXHJ2U<<7UTO6804200F3006184<<<<<<<<<<<<<<00'], [True, True, True, True, True]], ['regression ["ZI4II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2"]', ['ZI4II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2'], [True, True, True, True, True]], ['partial-repair ["6OGHJGP443UTO4305208F2401025ORMBRF<<<<<<<<40"]', ['6OGHJGP443UTO4305208F2401025ORMBRF<<<<<<<<40'], [True, True, True, True, True]], ['control ["Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2"]', ['Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2'], [False, True, True, True, False]], ['control ["L898902C36UTO7408122F1204159ZE184226B<<<<<11"]', ['L898902C36UTO7408122F1204159ZE184226B<<<<<11'], [True, True, True, True, False]], ['control ["L898902C36UTO7408122F1204159ZE184226B<<<<10"]', ['L898902C36UTO7408122F1204159ZE184226B<<<<10'], 'malformed'], ['control ["l898902C36UTO7408122F1204159ZE184226B<<<<<10"]', ['l898902C36UTO7408122F1204159ZE184226B<<<<<10'], 'malformed'], ['control ["S75TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14"]', ['S75TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14'], [False, True, True, True, False]]], [['regression ["ORO5E0T416UTO4006240F2711221<<<<<<<<<<<<<<04"]', ['ORO5E0T416UTO4006240F2711221<<<<<<<<<<<<<<04'], [True, True, True, True, True]], ['regression ["IW9C4XZ762UTO4007096F2906025PS0IN0<<<<<<<<40"]', ['IW9C4XZ762UTO4007096F2906025PS0IN0<<<<<<<<40'], [True, True, True, True, True]], ['partial-repair ["A6OUR3Y<<4UTO3107232F3005017P9VLEN<<<<<<<<50"]', ['A6OUR3Y<<4UTO3107232F3005017P9VLEN<<<<<<<<50'], [True, True, True, True, True]], ['control ["HM77YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0"]', ['HM77YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0'], [False, True, True, True, False]], ['control ["ZX2H4LT816UTO1712239F2305086AOX6HQ<<<<<<<<46"]', ['ZX2H4LT816UTO1712239F2305086AOX6HQ<<<<<<<<46'], [True, False, True, True, False]], ['control ["WEXHJ2U<<7UTO6804200F3706184<<<<<<<<<<<<<<00"]', ['WEXHJ2U<<7UTO6804200F3706184<<<<<<<<<<<<<<00'], [True, True, False, True, False]], ['control ["6OGHJGP443UTO7305208F2401025ORMBRF<<<<<<<<40"]', ['6OGHJGP443UTO7305208F2401025ORMBRF<<<<<<<<40'], [True, False, True, True, False]], ['control ["Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2"]', ['Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2'], [False, True, True, True, False]]], [['regression ["7MZSP32754UTO7512054F33062086HKCM0<<<<<<<<36"]', ['7MZSP32754UTO7512054F33062086HKCM0<<<<<<<<36'], [True, True, True, True, True]], ['regression ["T8AHLV5223UTO4905147F2401173<<<<<<<<<<<<<<02"]', ['T8AHLV5223UTO4905147F2401173<<<<<<<<<<<<<<02'], [True, True, True, True, True]], ['partial-repair ["QQJKFSW<<6UTO2607034F2004079<<<<<<<<<<<<<<<0"]', ['QQJKFSW<<6UTO2607034F2004079<<<<<<<<<<<<<<<0'], [True, True, True, True, True]], ['control ["L898902C36UTO7408122F1204159ZE184226B<<<<<11"]', ['L898902C36UTO7408122F1204159ZE184226B<<<<<11'], [True, True, True, True, False]], ['control ["L898902C36UTO7408122F1204159ZE184226B<<<<10"]', ['L898902C36UTO7408122F1204159ZE184226B<<<<10'], 'malformed'], ['control ["l898902C36UTO7408122F1204159ZE184226B<<<<<10"]', ['l898902C36UTO7408122F1204159ZE184226B<<<<<10'], 'malformed'], ['control ["S75TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14"]', ['S75TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14'], [False, True, True, True, False]], ['control ["HM77YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0"]', ['HM77YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0'], [False, True, True, True, False]]], [['regression ["AB1234<<<1UTO8501019F3001019<<<<<<<<<<<<<<<0"]', ['AB1234<<<1UTO8501019F3001019<<<<<<<<<<<<<<<0'], [True, True, True, True, True]], ['regression ["X<<<<<<<<1UTO0002299F2912316ABC<<<<<<<<<<<56"]', ['X<<<<<<<<1UTO0002299F2912316ABC<<<<<<<<<<<56'], [True, True, True, True, True]], ['partial-repair ["L898902C36UTO7408122F1204159ZE184226B<<<<<10"]', ['L898902C36UTO7408122F1204159ZE184226B<<<<<10'], [True, True, True, True, True]], ['control ["ZX2H4LT816UTO1712239F2305086AOX6HQ<<<<<<<<46"]', ['ZX2H4LT816UTO1712239F2305086AOX6HQ<<<<<<<<46'], [True, False, True, True, False]], ['control ["WEXHJ2U<<7UTO6804200F3706184<<<<<<<<<<<<<<00"]', ['WEXHJ2U<<7UTO6804200F3706184<<<<<<<<<<<<<<00'], [True, True, False, True, False]], ['control ["6OGHJGP443UTO7305208F2401025ORMBRF<<<<<<<<40"]', ['6OGHJGP443UTO7305208F2401025ORMBRF<<<<<<<<40'], [True, False, True, True, False]], ['control ["Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2"]', ['Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2'], [False, True, True, True, False]], ['control ["L898902C36UTO7408122F1204159ZE184226B<<<<<11"]', ['L898902C36UTO7408122F1204159ZE184226B<<<<<11'], [True, True, True, True, False]]]]
for label, args, expected in fixtures[N - 1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression ["SK5TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14"] | [True, True, True, True, False] | [True, True, True, True, True] | Failed |
| regression ["HM87YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0"] | [True, True, True, True, False] | [True, True, True, True, True] | Failed |
| control ["S75TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14"] | [False, True, True, True, False] | [False, True, True, True, False] | Passed |
| control ["HM77YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0"] | [False, True, True, True, False] | [False, True, True, True, False] | Passed |
| control ["ZX2H4LT816UTO1712239F2305086AOX6HQ<<<<<<<<46"] | [True, False, True, True, False] | [True, False, True, True, False] | Passed |
| control ["WEXHJ2U<<7UTO6804200F3706184<<<<<<<<<<<<<<00"] | [True, True, False, True, False] | [True, True, False, True, False] | Passed |
| control ["6OGHJGP443UTO7305208F2401025ORMBRF<<<<<<<<40"] | [True, False, True, True, False] | [True, False, True, True, False] | Passed |
| control ["Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2"] | [False, True, True, True, False] | [False, True, True, True, False] | Passed |
SHA-256 / cc21e8fed1ca55f3c119e72b0af2871b99e4b46c67fe7aba9377a73684ab8942
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(line):
def cd(field):
total = 0
for i, ch in enumerate(field):
if ch == '<':
v = 0
elif ch.isdigit():
v = int(ch)
else:
v = ord(ch) - 55
total += v * (7, 3, 1)[i % 3]
return str(total % 10)
if len(line) != 44 or not line.isascii():
return 'malformed'
if any(not (c.isdigit() or 'A' <= c <= 'Z' or c == '<') for c in line):
return 'malformed'
opt_ok = line[42] == cd(line[28:42]) or (line[42] == '<' and set(line[28:42]) == {'<'})
comp = line[0:10] + line[13:20] + line[21:43]
return [line[9] == cd(line[0:9]), line[19] == cd(line[13:19]), line[27] == cd(line[21:27]), opt_ok, line[43] == cd(comp)]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression ["SK5TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14"]', ['SK5TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14'], [True, True, True, True, True]], ['regression ["HM87YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0"]', ['HM87YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0'], [True, True, True, True, True]], ['control ["S75TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14"]', ['S75TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14'], [False, True, True, True, False]], ['control ["HM77YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0"]', ['HM77YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0'], [False, True, True, True, False]], ['control ["ZX2H4LT816UTO1712239F2305086AOX6HQ<<<<<<<<46"]', ['ZX2H4LT816UTO1712239F2305086AOX6HQ<<<<<<<<46'], [True, False, True, True, False]], ['control ["WEXHJ2U<<7UTO6804200F3706184<<<<<<<<<<<<<<00"]', ['WEXHJ2U<<7UTO6804200F3706184<<<<<<<<<<<<<<00'], [True, True, False, True, False]], ['control ["6OGHJGP443UTO7305208F2401025ORMBRF<<<<<<<<40"]', ['6OGHJGP443UTO7305208F2401025ORMBRF<<<<<<<<40'], [True, False, True, True, False]], ['control ["Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2"]', ['Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2'], [False, True, True, True, False]]], [['regression ["WEXHJ2U<<7UTO6804200F3006184<<<<<<<<<<<<<<00"]', ['WEXHJ2U<<7UTO6804200F3006184<<<<<<<<<<<<<<00'], [True, True, True, True, True]], ['regression ["ZI4II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2"]', ['ZI4II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2'], [True, True, True, True, True]], ['partial-repair ["6OGHJGP443UTO4305208F2401025ORMBRF<<<<<<<<40"]', ['6OGHJGP443UTO4305208F2401025ORMBRF<<<<<<<<40'], [True, True, True, True, True]], ['control ["Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2"]', ['Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2'], [False, True, True, True, False]], ['control ["L898902C36UTO7408122F1204159ZE184226B<<<<<11"]', ['L898902C36UTO7408122F1204159ZE184226B<<<<<11'], [True, True, True, True, False]], ['control ["L898902C36UTO7408122F1204159ZE184226B<<<<10"]', ['L898902C36UTO7408122F1204159ZE184226B<<<<10'], 'malformed'], ['control ["l898902C36UTO7408122F1204159ZE184226B<<<<<10"]', ['l898902C36UTO7408122F1204159ZE184226B<<<<<10'], 'malformed'], ['control ["S75TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14"]', ['S75TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14'], [False, True, True, True, False]]], [['regression ["ORO5E0T416UTO4006240F2711221<<<<<<<<<<<<<<04"]', ['ORO5E0T416UTO4006240F2711221<<<<<<<<<<<<<<04'], [True, True, True, True, True]], ['regression ["IW9C4XZ762UTO4007096F2906025PS0IN0<<<<<<<<40"]', ['IW9C4XZ762UTO4007096F2906025PS0IN0<<<<<<<<40'], [True, True, True, True, True]], ['partial-repair ["A6OUR3Y<<4UTO3107232F3005017P9VLEN<<<<<<<<50"]', ['A6OUR3Y<<4UTO3107232F3005017P9VLEN<<<<<<<<50'], [True, True, True, True, True]], ['control ["HM77YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0"]', ['HM77YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0'], [False, True, True, True, False]], ['control ["ZX2H4LT816UTO1712239F2305086AOX6HQ<<<<<<<<46"]', ['ZX2H4LT816UTO1712239F2305086AOX6HQ<<<<<<<<46'], [True, False, True, True, False]], ['control ["WEXHJ2U<<7UTO6804200F3706184<<<<<<<<<<<<<<00"]', ['WEXHJ2U<<7UTO6804200F3706184<<<<<<<<<<<<<<00'], [True, True, False, True, False]], ['control ["6OGHJGP443UTO7305208F2401025ORMBRF<<<<<<<<40"]', ['6OGHJGP443UTO7305208F2401025ORMBRF<<<<<<<<40'], [True, False, True, True, False]], ['control ["Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2"]', ['Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2'], [False, True, True, True, False]]], [['regression ["7MZSP32754UTO7512054F33062086HKCM0<<<<<<<<36"]', ['7MZSP32754UTO7512054F33062086HKCM0<<<<<<<<36'], [True, True, True, True, True]], ['regression ["T8AHLV5223UTO4905147F2401173<<<<<<<<<<<<<<02"]', ['T8AHLV5223UTO4905147F2401173<<<<<<<<<<<<<<02'], [True, True, True, True, True]], ['partial-repair ["QQJKFSW<<6UTO2607034F2004079<<<<<<<<<<<<<<<0"]', ['QQJKFSW<<6UTO2607034F2004079<<<<<<<<<<<<<<<0'], [True, True, True, True, True]], ['control ["L898902C36UTO7408122F1204159ZE184226B<<<<<11"]', ['L898902C36UTO7408122F1204159ZE184226B<<<<<11'], [True, True, True, True, False]], ['control ["L898902C36UTO7408122F1204159ZE184226B<<<<10"]', ['L898902C36UTO7408122F1204159ZE184226B<<<<10'], 'malformed'], ['control ["l898902C36UTO7408122F1204159ZE184226B<<<<<10"]', ['l898902C36UTO7408122F1204159ZE184226B<<<<<10'], 'malformed'], ['control ["S75TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14"]', ['S75TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14'], [False, True, True, True, False]], ['control ["HM77YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0"]', ['HM77YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0'], [False, True, True, True, False]]], [['regression ["AB1234<<<1UTO8501019F3001019<<<<<<<<<<<<<<<0"]', ['AB1234<<<1UTO8501019F3001019<<<<<<<<<<<<<<<0'], [True, True, True, True, True]], ['regression ["X<<<<<<<<1UTO0002299F2912316ABC<<<<<<<<<<<56"]', ['X<<<<<<<<1UTO0002299F2912316ABC<<<<<<<<<<<56'], [True, True, True, True, True]], ['partial-repair ["L898902C36UTO7408122F1204159ZE184226B<<<<<10"]', ['L898902C36UTO7408122F1204159ZE184226B<<<<<10'], [True, True, True, True, True]], ['control ["ZX2H4LT816UTO1712239F2305086AOX6HQ<<<<<<<<46"]', ['ZX2H4LT816UTO1712239F2305086AOX6HQ<<<<<<<<46'], [True, False, True, True, False]], ['control ["WEXHJ2U<<7UTO6804200F3706184<<<<<<<<<<<<<<00"]', ['WEXHJ2U<<7UTO6804200F3706184<<<<<<<<<<<<<<00'], [True, True, False, True, False]], ['control ["6OGHJGP443UTO7305208F2401025ORMBRF<<<<<<<<40"]', ['6OGHJGP443UTO7305208F2401025ORMBRF<<<<<<<<40'], [True, False, True, True, False]], ['control ["Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2"]', ['Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2'], [False, True, True, True, False]], ['control ["L898902C36UTO7408122F1204159ZE184226B<<<<<11"]', ['L898902C36UTO7408122F1204159ZE184226B<<<<<11'], [True, True, True, True, False]]]]
for label, args, expected in fixtures[N - 1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression ["SK5TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14"] | [True, True, True, True, True] | [True, True, True, True, True] | Passed |
| regression ["HM87YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0"] | [True, True, True, True, True] | [True, True, True, True, True] | Passed |
| control ["S75TG49<<9UTO2004046F2210193O66P4C<<<<<<<<14"] | [False, True, True, True, False] | [False, True, True, True, False] | Passed |
| control ["HM77YWD225UTO1907195F3112216<<<<<<<<<<<<<<<0"] | [False, True, True, True, False] | [False, True, True, True, False] | Passed |
| control ["ZX2H4LT816UTO1712239F2305086AOX6HQ<<<<<<<<46"] | [True, False, True, True, False] | [True, False, True, True, False] | Passed |
| control ["WEXHJ2U<<7UTO6804200F3706184<<<<<<<<<<<<<<00"] | [True, True, False, True, False] | [True, True, False, True, False] | Passed |
| control ["6OGHJGP443UTO7305208F2401025ORMBRF<<<<<<<<40"] | [True, False, True, True, False] | [True, False, True, True, False] | Passed |
| control ["Z74II1W798UTO2103259F3311282<<<<<<<<<<<<<<<2"] | [False, True, True, True, False] | [False, True, True, True, False] | Passed |
SHA-256 / 4e3b80878ce50ddf4bc1f8f67f4164ce30bbf49a37b461dfe825bcd384250707
Verification & scope
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.
Observations recorded using Python 3.12.14 at 2026-09-29T14:48:40.193325+00:00.
Case digest / f799d98b1181790abf317bb8e915da1fe61ccb83e01b9ca405658be3f7f0b32c