{"abstract":"Symbols printed with an out-of-range ratio are wider than planned and fail grading.","category":"Barcode symbology encoding","checks":8,"contract":"Encode text for Code 39 with a wide:narrow ratio of 2 or 3. Standard mode accepts only the 43 characters 0-9 A-Z - . space $ / + %. Full ASCII mode maps lowercase to \"+\" plus the capital, controls 1..26 to \"$\" plus A..Z, NUL to %U, 27..31 to %A..%E, DEL to %T, and punctuation (including the four standard shift characters $ % + /) to its two-character escape. Every symbol character, including the start/stop \"*\", has 6 narrow and 3 wide elements, and one narrow gap separates adjacent characters. Return the framed data and the total width in narrow modules.","evaluation_group":"w2-barcode-symbology-encoding-code39-full-ascii","failed_approach":"Rejecting only ratios above 3 lets 1:1 symbols through, which cannot be decoded.","family":"w2-barcode-symbology-encoding-code39-full-ascii-ratio-check","id":"FA-79481","implementations":{"attempt":{"sha256":"670412e0b64faa96b4e8d8447f600af1965148ecece0b035cc46db7a7b3323d9","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(text, mode, ratio):\n    std = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%'\n    if ratio > 3:\n        return {'error': 'ratio'}\n    if mode == 'standard':\n        for ch in text:\n            if ch not in std:\n                return {'error': 'char', 'char': ch}\n        enc = text\n    else:\n        punct = {'$': '/D', '%': '/E', '+': '/K', '/': '/O', '!': '/A', '\"': '/B', '#': '/C', '&': '/F', \"'\": '/G',\n                 '(': '/H', ')': '/I', '*': '/J', ',': '/L', ':': '/Z', ';': '%F', '<': '%G', '=': '%H', '>': '%I',\n                 '?': '%J', '@': '%V', '[': '%K', '\\\\': '%L', ']': '%M', '^': '%N', '_': '%O', '`': '%W',\n                 '{': '%P', '|': '%Q', '}': '%R', '~': '%S'}\n        enc = ''\n        for ch in text:\n            o = ord(ch)\n            if o > 127:\n                return {'error': 'char', 'char': ch}\n            if ch in punct:\n                enc += punct[ch]\n            elif 'a' <= ch <= 'z':\n                enc += '+' + ch.upper()\n            elif 1 <= o <= 26:\n                enc += '$' + chr(o + 64)\n            elif o == 0:\n                enc += '%U'\n            elif 27 <= o <= 31:\n                enc += '%' + chr(o - 27 + 65)\n            elif o == 127:\n                enc += '%T'\n            else:\n                enc += ch\n    count = len(enc) + 2\n    return {'data': '*' + enc + '*', 'modules': count * (6 + 3 * ratio) + (count - 1)}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[('café', 'standard', 4), {'error': 'ratio'}], [('ABPN/7PN/7', 'full', 1), {'error': 'ratio'}], [('Z-9a+blot', 'standard', 2), {'error': 'char', 'char': 'a'}], [('PN/7PN/7$5', 'full', 3), {'data': '*PN/O7PN/O7/D5*', 'modules': 239}], [('\\x1b', 'full', 2), {'data': '*%A*', 'modules': 51}], [('', 'full', 3), {'data': '**', 'modules': 31}], [('café', 'standard', 3), {'error': 'char', 'char': 'c'}], [('a+ba+b', 'full', 4), {'error': 'ratio'}]], [[('\\x00caféq', 'full', 4), {'error': 'ratio'}], [('', 'standard', 1), {'error': 'ratio'}], [('\\x1blotlot', 'full', 2), {'data': '*%A+L+O+T+L+O+T*', 'modules': 207}], [('#1', 'full', 2), {'data': '*/C1*', 'modules': 64}], [('ABa+b', 'full', 2), {'data': '*AB+A/K+B*', 'modules': 129}], [('', 'full', 3), {'data': '**', 'modules': 31}], [('\\x1b', 'full', 2), {'data': '*%A*', 'modules': 51}], [('q$5café', 'standard', 4), {'error': 'ratio'}]], [[('\\x7f#1', 'standard', 4), {'error': 'ratio'}], [(' ', 'full', 1), {'error': 'ratio'}], [('$5 \\x00', 'full', 2), {'data': '*/D5 %U*', 'modules': 103}], [('$550%', 'full', 3), {'data': '*/D550/E*', 'modules': 143}], [('*\\x1bcafé', 'full', 2), {'error': 'char', 'char': 'é'}], [('q \\x00', 'full', 2), {'data': '*+Q %U*', 'modules': 90}], [('xcafé50%', 'standard', 3), {'error': 'char', 'char': 'x'}], [('', 'full', 4), {'error': 'ratio'}]], [[('a+blot\\x1b', 'full', 4), {'error': 'ratio'}], [('', 'full', 1), {'error': 'ratio'}], [('qPN/7café', 'full', 2), {'error': 'char', 'char': 'é'}], [('*', 'full', 2), {'data': '*/J*', 'modules': 51}], [('AB12', 'standard', 2), {'data': '*AB12*', 'modules': 77}], [('\\x7f\\tlot', 'full', 3), {'data': '*%T$I+L+O+T*', 'modules': 191}], [('#1café', 'full', 2), {'error': 'char', 'char': 'é'}], [('PN/7', 'full', 4), {'error': 'ratio'}]], [[('PN/7', 'standard', 4), {'error': 'ratio'}], [('\\x7f$5', 'full', 1), {'error': 'ratio'}], [('$5lot', 'full', 3), {'data': '*/D5+L+O+T*', 'modules': 175}], [('', 'standard', 2), {'data': '**', 'modules': 25}], [('$5a+bAB', 'full', 3), {'data': '*/D5+A/K+BAB*', 'modules': 207}], [('#112\\x7f', 'full', 3), {'data': '*/C112%T*', 'modules': 143}], [('q*PN/7', 'standard', 2), {'error': 'char', 'char': 'q'}], [('Z-9$512', 'standard', 4), {'error': 'ratio'}]]]\nlabels = [\"regression: wide to narrow ratio validation\", \"repair trap\", \"combined fault\", \"control\", \"control\", \"boundary\", \"boundary\", \"control\"]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"%s %d\" % (labels[i % len(labels)], i), 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":"3755bc2f05607a6ff8ec3a437a6563d5e1d4de6d3ba70556036543076ae35288","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(text, mode, ratio):\n    std = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%'\n    if ratio < 2:\n        return {'error': 'ratio'}\n    if mode == 'standard':\n        for ch in text:\n            if ch not in std:\n                return {'error': 'char', 'char': ch}\n        enc = text\n    else:\n        punct = {'$': '/D', '%': '/E', '+': '/K', '/': '/O', '!': '/A', '\"': '/B', '#': '/C', '&': '/F', \"'\": '/G',\n                 '(': '/H', ')': '/I', '*': '/J', ',': '/L', ':': '/Z', ';': '%F', '<': '%G', '=': '%H', '>': '%I',\n                 '?': '%J', '@': '%V', '[': '%K', '\\\\': '%L', ']': '%M', '^': '%N', '_': '%O', '`': '%W',\n                 '{': '%P', '|': '%Q', '}': '%R', '~': '%S'}\n        enc = ''\n        for ch in text:\n            o = ord(ch)\n            if o > 127:\n                return {'error': 'char', 'char': ch}\n            if ch in punct:\n                enc += punct[ch]\n            elif 'a' <= ch <= 'z':\n                enc += '+' + ch.upper()\n            elif 1 <= o <= 26:\n                enc += '$' + chr(o + 64)\n            elif o == 0:\n                enc += '%U'\n            elif 27 <= o <= 31:\n                enc += '%' + chr(o - 27 + 65)\n            elif o == 127:\n                enc += '%T'\n            else:\n                enc += ch\n    count = len(enc) + 2\n    return {'data': '*' + enc + '*', 'modules': count * (6 + 3 * ratio) + (count - 1)}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[('café', 'standard', 4), {'error': 'ratio'}], [('ABPN/7PN/7', 'full', 1), {'error': 'ratio'}], [('Z-9a+blot', 'standard', 2), {'error': 'char', 'char': 'a'}], [('PN/7PN/7$5', 'full', 3), {'data': '*PN/O7PN/O7/D5*', 'modules': 239}], [('\\x1b', 'full', 2), {'data': '*%A*', 'modules': 51}], [('', 'full', 3), {'data': '**', 'modules': 31}], [('café', 'standard', 3), {'error': 'char', 'char': 'c'}], [('a+ba+b', 'full', 4), {'error': 'ratio'}]], [[('\\x00caféq', 'full', 4), {'error': 'ratio'}], [('', 'standard', 1), {'error': 'ratio'}], [('\\x1blotlot', 'full', 2), {'data': '*%A+L+O+T+L+O+T*', 'modules': 207}], [('#1', 'full', 2), {'data': '*/C1*', 'modules': 64}], [('ABa+b', 'full', 2), {'data': '*AB+A/K+B*', 'modules': 129}], [('', 'full', 3), {'data': '**', 'modules': 31}], [('\\x1b', 'full', 2), {'data': '*%A*', 'modules': 51}], [('q$5café', 'standard', 4), {'error': 'ratio'}]], [[('\\x7f#1', 'standard', 4), {'error': 'ratio'}], [(' ', 'full', 1), {'error': 'ratio'}], [('$5 \\x00', 'full', 2), {'data': '*/D5 %U*', 'modules': 103}], [('$550%', 'full', 3), {'data': '*/D550/E*', 'modules': 143}], [('*\\x1bcafé', 'full', 2), {'error': 'char', 'char': 'é'}], [('q \\x00', 'full', 2), {'data': '*+Q %U*', 'modules': 90}], [('xcafé50%', 'standard', 3), {'error': 'char', 'char': 'x'}], [('', 'full', 4), {'error': 'ratio'}]], [[('a+blot\\x1b', 'full', 4), {'error': 'ratio'}], [('', 'full', 1), {'error': 'ratio'}], [('qPN/7café', 'full', 2), {'error': 'char', 'char': 'é'}], [('*', 'full', 2), {'data': '*/J*', 'modules': 51}], [('AB12', 'standard', 2), {'data': '*AB12*', 'modules': 77}], [('\\x7f\\tlot', 'full', 3), {'data': '*%T$I+L+O+T*', 'modules': 191}], [('#1café', 'full', 2), {'error': 'char', 'char': 'é'}], [('PN/7', 'full', 4), {'error': 'ratio'}]], [[('PN/7', 'standard', 4), {'error': 'ratio'}], [('\\x7f$5', 'full', 1), {'error': 'ratio'}], [('$5lot', 'full', 3), {'data': '*/D5+L+O+T*', 'modules': 175}], [('', 'standard', 2), {'data': '**', 'modules': 25}], [('$5a+bAB', 'full', 3), {'data': '*/D5+A/K+BAB*', 'modules': 207}], [('#112\\x7f', 'full', 3), {'data': '*/C112%T*', 'modules': 143}], [('q*PN/7', 'standard', 2), {'error': 'char', 'char': 'q'}], [('Z-9$512', 'standard', 4), {'error': 'ratio'}]]]\nlabels = [\"regression: wide to narrow ratio validation\", \"repair trap\", \"combined fault\", \"control\", \"control\", \"boundary\", \"boundary\", \"control\"]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"%s %d\" % (labels[i % len(labels)], i), 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":"0ff839737dbecf8387d251526cb7d692f8448e192db56325c91fa290505bcab4","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(text, mode, ratio):\n    std = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%'\n    if ratio not in (2, 3):\n        return {'error': 'ratio'}\n    if mode == 'standard':\n        for ch in text:\n            if ch not in std:\n                return {'error': 'char', 'char': ch}\n        enc = text\n    else:\n        punct = {'$': '/D', '%': '/E', '+': '/K', '/': '/O', '!': '/A', '\"': '/B', '#': '/C', '&': '/F', \"'\": '/G',\n                 '(': '/H', ')': '/I', '*': '/J', ',': '/L', ':': '/Z', ';': '%F', '<': '%G', '=': '%H', '>': '%I',\n                 '?': '%J', '@': '%V', '[': '%K', '\\\\': '%L', ']': '%M', '^': '%N', '_': '%O', '`': '%W',\n                 '{': '%P', '|': '%Q', '}': '%R', '~': '%S'}\n        enc = ''\n        for ch in text:\n            o = ord(ch)\n            if o > 127:\n                return {'error': 'char', 'char': ch}\n            if ch in punct:\n                enc += punct[ch]\n            elif 'a' <= ch <= 'z':\n                enc += '+' + ch.upper()\n            elif 1 <= o <= 26:\n                enc += '$' + chr(o + 64)\n            elif o == 0:\n                enc += '%U'\n            elif 27 <= o <= 31:\n                enc += '%' + chr(o - 27 + 65)\n            elif o == 127:\n                enc += '%T'\n            else:\n                enc += ch\n    count = len(enc) + 2\n    return {'data': '*' + enc + '*', 'modules': count * (6 + 3 * ratio) + (count - 1)}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[('café', 'standard', 4), {'error': 'ratio'}], [('ABPN/7PN/7', 'full', 1), {'error': 'ratio'}], [('Z-9a+blot', 'standard', 2), {'error': 'char', 'char': 'a'}], [('PN/7PN/7$5', 'full', 3), {'data': '*PN/O7PN/O7/D5*', 'modules': 239}], [('\\x1b', 'full', 2), {'data': '*%A*', 'modules': 51}], [('', 'full', 3), {'data': '**', 'modules': 31}], [('café', 'standard', 3), {'error': 'char', 'char': 'c'}], [('a+ba+b', 'full', 4), {'error': 'ratio'}]], [[('\\x00caféq', 'full', 4), {'error': 'ratio'}], [('', 'standard', 1), {'error': 'ratio'}], [('\\x1blotlot', 'full', 2), {'data': '*%A+L+O+T+L+O+T*', 'modules': 207}], [('#1', 'full', 2), {'data': '*/C1*', 'modules': 64}], [('ABa+b', 'full', 2), {'data': '*AB+A/K+B*', 'modules': 129}], [('', 'full', 3), {'data': '**', 'modules': 31}], [('\\x1b', 'full', 2), {'data': '*%A*', 'modules': 51}], [('q$5café', 'standard', 4), {'error': 'ratio'}]], [[('\\x7f#1', 'standard', 4), {'error': 'ratio'}], [(' ', 'full', 1), {'error': 'ratio'}], [('$5 \\x00', 'full', 2), {'data': '*/D5 %U*', 'modules': 103}], [('$550%', 'full', 3), {'data': '*/D550/E*', 'modules': 143}], [('*\\x1bcafé', 'full', 2), {'error': 'char', 'char': 'é'}], [('q \\x00', 'full', 2), {'data': '*+Q %U*', 'modules': 90}], [('xcafé50%', 'standard', 3), {'error': 'char', 'char': 'x'}], [('', 'full', 4), {'error': 'ratio'}]], [[('a+blot\\x1b', 'full', 4), {'error': 'ratio'}], [('', 'full', 1), {'error': 'ratio'}], [('qPN/7café', 'full', 2), {'error': 'char', 'char': 'é'}], [('*', 'full', 2), {'data': '*/J*', 'modules': 51}], [('AB12', 'standard', 2), {'data': '*AB12*', 'modules': 77}], [('\\x7f\\tlot', 'full', 3), {'data': '*%T$I+L+O+T*', 'modules': 191}], [('#1café', 'full', 2), {'error': 'char', 'char': 'é'}], [('PN/7', 'full', 4), {'error': 'ratio'}]], [[('PN/7', 'standard', 4), {'error': 'ratio'}], [('\\x7f$5', 'full', 1), {'error': 'ratio'}], [('$5lot', 'full', 3), {'data': '*/D5+L+O+T*', 'modules': 175}], [('', 'standard', 2), {'data': '**', 'modules': 25}], [('$5a+bAB', 'full', 3), {'data': '*/D5+A/K+BAB*', 'modules': 207}], [('#112\\x7f', 'full', 3), {'data': '*/C112%T*', 'modules': 143}], [('q*PN/7', 'standard', 2), {'error': 'char', 'char': 'q'}], [('Z-9$512', 'standard', 4), {'error': 'ratio'}]]]\nlabels = [\"regression: wide to narrow ratio validation\", \"repair trap\", \"combined fault\", \"control\", \"control\", \"boundary\", \"boundary\", \"control\"]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"%s %d\" % (labels[i % len(labels)], i), 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 with a stipulated contract; it makes no claim of conformance to any published specification. 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-barcode-symbology-encoding-code39-full-ascii-ratio-check","generated_at":"2026-09-29T14:49:45.029235+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Retail, logistics, pharmacy and document workflows depend on encoders that produce exactly the module pattern, code-set switches, separators and quiet zones scanners expect; one misplaced module or separator makes a label unreadable or, worse, scan as different data.","repair":"Accept exactly the supported ratios 2 and 3.","root_cause":"Only ratios below 2 are rejected.","sha256":"c78a4d86ebc9528249e8120e827cb72e16f49506627bee5fd8df07c31419a8a5","title":"Code 39 accepts a 4:1 wide ratio · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.488,"exit_code":1,"observations":[{"actual":{"error":"ratio"},"check":"regression: wide to narrow ratio validation 0","expected":{"error":"ratio"},"passed":true},{"actual":{"data":"*ABPN/O7PN/O7*","modules":139},"check":"repair trap 1","expected":{"error":"ratio"},"passed":false},{"actual":{"char":"a","error":"char"},"check":"combined fault 2","expected":{"char":"a","error":"char"},"passed":true},{"actual":{"data":"*PN/O7PN/O7/D5*","modules":239},"check":"control 3","expected":{"data":"*PN/O7PN/O7/D5*","modules":239},"passed":true},{"actual":{"data":"*%A*","modules":51},"check":"control 4","expected":{"data":"*%A*","modules":51},"passed":true},{"actual":{"data":"**","modules":31},"check":"boundary 5","expected":{"data":"**","modules":31},"passed":true},{"actual":{"char":"c","error":"char"},"check":"boundary 6","expected":{"char":"c","error":"char"},"passed":true},{"actual":{"error":"ratio"},"check":"control 7","expected":{"error":"ratio"},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: wide to narrow ratio validation 0\", \"actual\": {\"error\": \"ratio\"}, \"expected\": {\"error\": \"ratio\"}, \"passed\": true}, {\"check\": \"repair trap 1\", \"actual\": {\"data\": \"*ABPN/O7PN/O7*\", \"modules\": 139}, \"expected\": {\"error\": \"ratio\"}, \"passed\": false}, {\"check\": \"combined fault 2\", \"actual\": {\"error\": \"char\", \"char\": \"a\"}, \"expected\": {\"error\": \"char\", \"char\": \"a\"}, \"passed\": true}, {\"check\": \"control 3\", \"actual\": {\"data\": \"*PN/O7PN/O7/D5*\", \"modules\": 239}, \"expected\": {\"data\": \"*PN/O7PN/O7/D5*\", \"modules\": 239}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"data\": \"*%A*\", \"modules\": 51}, \"expected\": {\"data\": \"*%A*\", \"modules\": 51}, \"passed\": true}, {\"check\": \"boundary 5\", \"actual\": {\"data\": \"**\", \"modules\": 31}, \"expected\": {\"data\": \"**\", \"modules\": 31}, \"passed\": true}, {\"check\": \"boundary 6\", \"actual\": {\"error\": \"char\", \"char\": \"c\"}, \"expected\": {\"error\": \"char\", \"char\": \"c\"}, \"passed\": true}, {\"check\": \"control 7\", \"actual\": {\"error\": \"ratio\"}, \"expected\": {\"error\": \"ratio\"}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.863,"exit_code":1,"observations":[{"actual":{"char":"c","error":"char"},"check":"regression: wide to narrow ratio validation 0","expected":{"error":"ratio"},"passed":false},{"actual":{"error":"ratio"},"check":"repair trap 1","expected":{"error":"ratio"},"passed":true},{"actual":{"char":"a","error":"char"},"check":"combined fault 2","expected":{"char":"a","error":"char"},"passed":true},{"actual":{"data":"*PN/O7PN/O7/D5*","modules":239},"check":"control 3","expected":{"data":"*PN/O7PN/O7/D5*","modules":239},"passed":true},{"actual":{"data":"*%A*","modules":51},"check":"control 4","expected":{"data":"*%A*","modules":51},"passed":true},{"actual":{"data":"**","modules":31},"check":"boundary 5","expected":{"data":"**","modules":31},"passed":true},{"actual":{"char":"c","error":"char"},"check":"boundary 6","expected":{"char":"c","error":"char"},"passed":true},{"actual":{"data":"*+A/K+B+A/K+B*","modules":265},"check":"control 7","expected":{"error":"ratio"},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: wide to narrow ratio validation 0\", \"actual\": {\"error\": \"char\", \"char\": \"c\"}, \"expected\": {\"error\": \"ratio\"}, \"passed\": false}, {\"check\": \"repair trap 1\", \"actual\": {\"error\": \"ratio\"}, \"expected\": {\"error\": \"ratio\"}, \"passed\": true}, {\"check\": \"combined fault 2\", \"actual\": {\"error\": \"char\", \"char\": \"a\"}, \"expected\": {\"error\": \"char\", \"char\": \"a\"}, \"passed\": true}, {\"check\": \"control 3\", \"actual\": {\"data\": \"*PN/O7PN/O7/D5*\", \"modules\": 239}, \"expected\": {\"data\": \"*PN/O7PN/O7/D5*\", \"modules\": 239}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"data\": \"*%A*\", \"modules\": 51}, \"expected\": {\"data\": \"*%A*\", \"modules\": 51}, \"passed\": true}, {\"check\": \"boundary 5\", \"actual\": {\"data\": \"**\", \"modules\": 31}, \"expected\": {\"data\": \"**\", \"modules\": 31}, \"passed\": true}, {\"check\": \"boundary 6\", \"actual\": {\"error\": \"char\", \"char\": \"c\"}, \"expected\": {\"error\": \"char\", \"char\": \"c\"}, \"passed\": true}, {\"check\": \"control 7\", \"actual\": {\"data\": \"*+A/K+B+A/K+B*\", \"modules\": 265}, \"expected\": {\"error\": \"ratio\"}, \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":38.866,"exit_code":0,"observations":[{"actual":{"error":"ratio"},"check":"regression: wide to narrow ratio validation 0","expected":{"error":"ratio"},"passed":true},{"actual":{"error":"ratio"},"check":"repair trap 1","expected":{"error":"ratio"},"passed":true},{"actual":{"char":"a","error":"char"},"check":"combined fault 2","expected":{"char":"a","error":"char"},"passed":true},{"actual":{"data":"*PN/O7PN/O7/D5*","modules":239},"check":"control 3","expected":{"data":"*PN/O7PN/O7/D5*","modules":239},"passed":true},{"actual":{"data":"*%A*","modules":51},"check":"control 4","expected":{"data":"*%A*","modules":51},"passed":true},{"actual":{"data":"**","modules":31},"check":"boundary 5","expected":{"data":"**","modules":31},"passed":true},{"actual":{"char":"c","error":"char"},"check":"boundary 6","expected":{"char":"c","error":"char"},"passed":true},{"actual":{"error":"ratio"},"check":"control 7","expected":{"error":"ratio"},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: wide to narrow ratio validation 0\", \"actual\": {\"error\": \"ratio\"}, \"expected\": {\"error\": \"ratio\"}, \"passed\": true}, {\"check\": \"repair trap 1\", \"actual\": {\"error\": \"ratio\"}, \"expected\": {\"error\": \"ratio\"}, \"passed\": true}, {\"check\": \"combined fault 2\", \"actual\": {\"error\": \"char\", \"char\": \"a\"}, \"expected\": {\"error\": \"char\", \"char\": \"a\"}, \"passed\": true}, {\"check\": \"control 3\", \"actual\": {\"data\": \"*PN/O7PN/O7/D5*\", \"modules\": 239}, \"expected\": {\"data\": \"*PN/O7PN/O7/D5*\", \"modules\": 239}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"data\": \"*%A*\", \"modules\": 51}, \"expected\": {\"data\": \"*%A*\", \"modules\": 51}, \"passed\": true}, {\"check\": \"boundary 5\", \"actual\": {\"data\": \"**\", \"modules\": 31}, \"expected\": {\"data\": \"**\", \"modules\": 31}, \"passed\": true}, {\"check\": \"boundary 6\", \"actual\": {\"error\": \"char\", \"char\": \"c\"}, \"expected\": {\"error\": \"char\", \"char\": \"c\"}, \"passed\": true}, {\"check\": \"control 7\", \"actual\": {\"error\": \"ratio\"}, \"expected\": {\"error\": \"ratio\"}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}