{"abstract":"A tab encodes as $J (line feed) and data separators become the wrong control codes.","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":"Using lowercase letters produces characters Code 39 cannot encode.","family":"w2-barcode-symbology-encoding-code39-full-ascii-control-letter","id":"FA-79476","implementations":{"attempt":{"sha256":"3c4578846c3bbd2d508b90f971f37221dbbb6311453109303c7f1973eb259872","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 + 96)\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 = [[[('AB\\t', 'full', 2), {'data': '*AB$I*', 'modules': 77}], [('Z-9x\\t', 'full', 2), {'data': '*Z-9+X$I*', 'modules': 116}], [('café', 'standard', 4), {'error': 'ratio'}], [('ABPN/7PN/7', 'full', 1), {'error': 'ratio'}], [('a+ba+b', 'full', 4), {'error': 'ratio'}], [('Z-9a+blot', 'standard', 2), {'error': 'char', 'char': 'a'}], [('café\\t', 'full', 4), {'error': 'ratio'}], [('\\t$5', 'full', 2), {'data': '*$I/D5*', 'modules': 90}]], [[('\\t#1', 'full', 2), {'data': '*$I/C1*', 'modules': 90}], [('\\t\\x1b', 'full', 2), {'data': '*$I%A*', 'modules': 77}], [('', '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}], [('\\t', 'full', 3), {'data': '*$I*', 'modules': 63}]], [[('\\t#1*', 'full', 3), {'data': '*$I/C1/J*', 'modules': 143}], [('\\x7fq\\t', 'full', 3), {'data': '*%T+Q$I*', 'modules': 127}], [('a+bAB', 'full', 2), {'data': '*+A/K+BAB*', 'modules': 129}], [('#1café', 'standard', 4), {'error': 'ratio'}], [('ABPN/7Z-9', 'full', 2), {'data': '*ABPN/O7Z-9*', 'modules': 155}], [(' ', 'full', 1), {'error': 'ratio'}], [('$5 \\x00', 'full', 2), {'data': '*/D5 %U*', 'modules': 103}], [('\\x00\\t50%', 'full', 2), {'data': '*%U$I50/E*', 'modules': 129}]], [[('\\t*q', 'full', 3), {'data': '*$I/J+Q*', 'modules': 127}], [('qPN/7café', 'full', 2), {'error': 'char', 'char': 'é'}], [('AB\\x00 ', 'full', 1), {'error': 'ratio'}], [('*', 'full', 2), {'data': '*/J*', 'modules': 51}], [('AB12', 'standard', 2), {'data': '*AB12*', 'modules': 77}], [('#1café', 'full', 2), {'error': 'char', 'char': 'é'}], [(' ABPN/7', 'full', 1), {'error': 'ratio'}], [('\\t\\x7f', 'full', 3), {'data': '*$I%T*', 'modules': 95}]], [[('\\t\\t', 'full', 3), {'data': '*$I$I*', 'modules': 95}], [('  \\t', 'full', 2), {'data': '*  $I*', 'modules': 77}], [('\\x00', 'full', 1), {'error': 'ratio'}], [('', 'standard', 2), {'data': '**', 'modules': 25}], [('', 'standard', 1), {'error': 'ratio'}], [('\\x7f\\x00', 'full', 4), {'error': 'ratio'}], [('$5a+bAB', 'full', 3), {'data': '*/D5+A/K+BAB*', 'modules': 207}], [('50% \\t', 'full', 3), {'data': '*50/E $I*', 'modules': 143}]]]\nlabels = [\"regression: control character escape letter\", \"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":"1c5890fe36ae1b119af7bbe9bfd4f2194be0bb1a7e37d01172839863f4a4638f","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 + 65)\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 = [[[('AB\\t', 'full', 2), {'data': '*AB$I*', 'modules': 77}], [('Z-9x\\t', 'full', 2), {'data': '*Z-9+X$I*', 'modules': 116}], [('café', 'standard', 4), {'error': 'ratio'}], [('ABPN/7PN/7', 'full', 1), {'error': 'ratio'}], [('a+ba+b', 'full', 4), {'error': 'ratio'}], [('Z-9a+blot', 'standard', 2), {'error': 'char', 'char': 'a'}], [('café\\t', 'full', 4), {'error': 'ratio'}], [('\\t$5', 'full', 2), {'data': '*$I/D5*', 'modules': 90}]], [[('\\t#1', 'full', 2), {'data': '*$I/C1*', 'modules': 90}], [('\\t\\x1b', 'full', 2), {'data': '*$I%A*', 'modules': 77}], [('', '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}], [('\\t', 'full', 3), {'data': '*$I*', 'modules': 63}]], [[('\\t#1*', 'full', 3), {'data': '*$I/C1/J*', 'modules': 143}], [('\\x7fq\\t', 'full', 3), {'data': '*%T+Q$I*', 'modules': 127}], [('a+bAB', 'full', 2), {'data': '*+A/K+BAB*', 'modules': 129}], [('#1café', 'standard', 4), {'error': 'ratio'}], [('ABPN/7Z-9', 'full', 2), {'data': '*ABPN/O7Z-9*', 'modules': 155}], [(' ', 'full', 1), {'error': 'ratio'}], [('$5 \\x00', 'full', 2), {'data': '*/D5 %U*', 'modules': 103}], [('\\x00\\t50%', 'full', 2), {'data': '*%U$I50/E*', 'modules': 129}]], [[('\\t*q', 'full', 3), {'data': '*$I/J+Q*', 'modules': 127}], [('qPN/7café', 'full', 2), {'error': 'char', 'char': 'é'}], [('AB\\x00 ', 'full', 1), {'error': 'ratio'}], [('*', 'full', 2), {'data': '*/J*', 'modules': 51}], [('AB12', 'standard', 2), {'data': '*AB12*', 'modules': 77}], [('#1café', 'full', 2), {'error': 'char', 'char': 'é'}], [(' ABPN/7', 'full', 1), {'error': 'ratio'}], [('\\t\\x7f', 'full', 3), {'data': '*$I%T*', 'modules': 95}]], [[('\\t\\t', 'full', 3), {'data': '*$I$I*', 'modules': 95}], [('  \\t', 'full', 2), {'data': '*  $I*', 'modules': 77}], [('\\x00', 'full', 1), {'error': 'ratio'}], [('', 'standard', 2), {'data': '**', 'modules': 25}], [('', 'standard', 1), {'error': 'ratio'}], [('\\x7f\\x00', 'full', 4), {'error': 'ratio'}], [('$5a+bAB', 'full', 3), {'data': '*/D5+A/K+BAB*', 'modules': 207}], [('50% \\t', 'full', 3), {'data': '*50/E $I*', 'modules': 143}]]]\nlabels = [\"regression: control character escape letter\", \"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":"8657e557ff263e68572805980af16dc58113812877ca377c97232ad424477848","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 = [[[('AB\\t', 'full', 2), {'data': '*AB$I*', 'modules': 77}], [('Z-9x\\t', 'full', 2), {'data': '*Z-9+X$I*', 'modules': 116}], [('café', 'standard', 4), {'error': 'ratio'}], [('ABPN/7PN/7', 'full', 1), {'error': 'ratio'}], [('a+ba+b', 'full', 4), {'error': 'ratio'}], [('Z-9a+blot', 'standard', 2), {'error': 'char', 'char': 'a'}], [('café\\t', 'full', 4), {'error': 'ratio'}], [('\\t$5', 'full', 2), {'data': '*$I/D5*', 'modules': 90}]], [[('\\t#1', 'full', 2), {'data': '*$I/C1*', 'modules': 90}], [('\\t\\x1b', 'full', 2), {'data': '*$I%A*', 'modules': 77}], [('', '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}], [('\\t', 'full', 3), {'data': '*$I*', 'modules': 63}]], [[('\\t#1*', 'full', 3), {'data': '*$I/C1/J*', 'modules': 143}], [('\\x7fq\\t', 'full', 3), {'data': '*%T+Q$I*', 'modules': 127}], [('a+bAB', 'full', 2), {'data': '*+A/K+BAB*', 'modules': 129}], [('#1café', 'standard', 4), {'error': 'ratio'}], [('ABPN/7Z-9', 'full', 2), {'data': '*ABPN/O7Z-9*', 'modules': 155}], [(' ', 'full', 1), {'error': 'ratio'}], [('$5 \\x00', 'full', 2), {'data': '*/D5 %U*', 'modules': 103}], [('\\x00\\t50%', 'full', 2), {'data': '*%U$I50/E*', 'modules': 129}]], [[('\\t*q', 'full', 3), {'data': '*$I/J+Q*', 'modules': 127}], [('qPN/7café', 'full', 2), {'error': 'char', 'char': 'é'}], [('AB\\x00 ', 'full', 1), {'error': 'ratio'}], [('*', 'full', 2), {'data': '*/J*', 'modules': 51}], [('AB12', 'standard', 2), {'data': '*AB12*', 'modules': 77}], [('#1café', 'full', 2), {'error': 'char', 'char': 'é'}], [(' ABPN/7', 'full', 1), {'error': 'ratio'}], [('\\t\\x7f', 'full', 3), {'data': '*$I%T*', 'modules': 95}]], [[('\\t\\t', 'full', 3), {'data': '*$I$I*', 'modules': 95}], [('  \\t', 'full', 2), {'data': '*  $I*', 'modules': 77}], [('\\x00', 'full', 1), {'error': 'ratio'}], [('', 'standard', 2), {'data': '**', 'modules': 25}], [('', 'standard', 1), {'error': 'ratio'}], [('\\x7f\\x00', 'full', 4), {'error': 'ratio'}], [('$5a+bAB', 'full', 3), {'data': '*/D5+A/K+BAB*', 'modules': 207}], [('50% \\t', 'full', 3), {'data': '*50/E $I*', 'modules': 143}]]]\nlabels = [\"regression: control character escape letter\", \"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-control-letter","generated_at":"2026-09-29T14:49:44.991058+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":"Map control code 1 to $A, so the letter is chr(o + 64).","root_cause":"Control code o is mapped to letter chr(o + 65) instead of chr(o + 64).","sha256":"59786e514025d1ebe45c0b950d97bc576e4e7d18cc7b892193ab4f269988a9f3","title":"Full ASCII control escapes are shifted by one letter · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.359,"exit_code":1,"observations":[{"actual":{"data":"*AB$i*","modules":77},"check":"regression: control character escape letter 0","expected":{"data":"*AB$I*","modules":77},"passed":false},{"actual":{"data":"*Z-9+X$i*","modules":116},"check":"repair trap 1","expected":{"data":"*Z-9+X$I*","modules":116},"passed":false},{"actual":{"error":"ratio"},"check":"combined fault 2","expected":{"error":"ratio"},"passed":true},{"actual":{"error":"ratio"},"check":"control 3","expected":{"error":"ratio"},"passed":true},{"actual":{"error":"ratio"},"check":"control 4","expected":{"error":"ratio"},"passed":true},{"actual":{"char":"a","error":"char"},"check":"boundary 5","expected":{"char":"a","error":"char"},"passed":true},{"actual":{"error":"ratio"},"check":"boundary 6","expected":{"error":"ratio"},"passed":true},{"actual":{"data":"*$i/D5*","modules":90},"check":"control 7","expected":{"data":"*$I/D5*","modules":90},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: control character escape letter 0\", \"actual\": {\"data\": \"*AB$i*\", \"modules\": 77}, \"expected\": {\"data\": \"*AB$I*\", \"modules\": 77}, \"passed\": false}, {\"check\": \"repair trap 1\", \"actual\": {\"data\": \"*Z-9+X$i*\", \"modules\": 116}, \"expected\": {\"data\": \"*Z-9+X$I*\", \"modules\": 116}, \"passed\": false}, {\"check\": \"combined fault 2\", \"actual\": {\"error\": \"ratio\"}, \"expected\": {\"error\": \"ratio\"}, \"passed\": true}, {\"check\": \"control 3\", \"actual\": {\"error\": \"ratio\"}, \"expected\": {\"error\": \"ratio\"}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"error\": \"ratio\"}, \"expected\": {\"error\": \"ratio\"}, \"passed\": true}, {\"check\": \"boundary 5\", \"actual\": {\"error\": \"char\", \"char\": \"a\"}, \"expected\": {\"error\": \"char\", \"char\": \"a\"}, \"passed\": true}, {\"check\": \"boundary 6\", \"actual\": {\"error\": \"ratio\"}, \"expected\": {\"error\": \"ratio\"}, \"passed\": true}, {\"check\": \"control 7\", \"actual\": {\"data\": \"*$i/D5*\", \"modules\": 90}, \"expected\": {\"data\": \"*$I/D5*\", \"modules\": 90}, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.016,"exit_code":1,"observations":[{"actual":{"data":"*AB$J*","modules":77},"check":"regression: control character escape letter 0","expected":{"data":"*AB$I*","modules":77},"passed":false},{"actual":{"data":"*Z-9+X$J*","modules":116},"check":"repair trap 1","expected":{"data":"*Z-9+X$I*","modules":116},"passed":false},{"actual":{"error":"ratio"},"check":"combined fault 2","expected":{"error":"ratio"},"passed":true},{"actual":{"error":"ratio"},"check":"control 3","expected":{"error":"ratio"},"passed":true},{"actual":{"error":"ratio"},"check":"control 4","expected":{"error":"ratio"},"passed":true},{"actual":{"char":"a","error":"char"},"check":"boundary 5","expected":{"char":"a","error":"char"},"passed":true},{"actual":{"error":"ratio"},"check":"boundary 6","expected":{"error":"ratio"},"passed":true},{"actual":{"data":"*$J/D5*","modules":90},"check":"control 7","expected":{"data":"*$I/D5*","modules":90},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: control character escape letter 0\", \"actual\": {\"data\": \"*AB$J*\", \"modules\": 77}, \"expected\": {\"data\": \"*AB$I*\", \"modules\": 77}, \"passed\": false}, {\"check\": \"repair trap 1\", \"actual\": {\"data\": \"*Z-9+X$J*\", \"modules\": 116}, \"expected\": {\"data\": \"*Z-9+X$I*\", \"modules\": 116}, \"passed\": false}, {\"check\": \"combined fault 2\", \"actual\": {\"error\": \"ratio\"}, \"expected\": {\"error\": \"ratio\"}, \"passed\": true}, {\"check\": \"control 3\", \"actual\": {\"error\": \"ratio\"}, \"expected\": {\"error\": \"ratio\"}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"error\": \"ratio\"}, \"expected\": {\"error\": \"ratio\"}, \"passed\": true}, {\"check\": \"boundary 5\", \"actual\": {\"error\": \"char\", \"char\": \"a\"}, \"expected\": {\"error\": \"char\", \"char\": \"a\"}, \"passed\": true}, {\"check\": \"boundary 6\", \"actual\": {\"error\": \"ratio\"}, \"expected\": {\"error\": \"ratio\"}, \"passed\": true}, {\"check\": \"control 7\", \"actual\": {\"data\": \"*$J/D5*\", \"modules\": 90}, \"expected\": {\"data\": \"*$I/D5*\", \"modules\": 90}, \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.261,"exit_code":0,"observations":[{"actual":{"data":"*AB$I*","modules":77},"check":"regression: control character escape letter 0","expected":{"data":"*AB$I*","modules":77},"passed":true},{"actual":{"data":"*Z-9+X$I*","modules":116},"check":"repair trap 1","expected":{"data":"*Z-9+X$I*","modules":116},"passed":true},{"actual":{"error":"ratio"},"check":"combined fault 2","expected":{"error":"ratio"},"passed":true},{"actual":{"error":"ratio"},"check":"control 3","expected":{"error":"ratio"},"passed":true},{"actual":{"error":"ratio"},"check":"control 4","expected":{"error":"ratio"},"passed":true},{"actual":{"char":"a","error":"char"},"check":"boundary 5","expected":{"char":"a","error":"char"},"passed":true},{"actual":{"error":"ratio"},"check":"boundary 6","expected":{"error":"ratio"},"passed":true},{"actual":{"data":"*$I/D5*","modules":90},"check":"control 7","expected":{"data":"*$I/D5*","modules":90},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: control character escape letter 0\", \"actual\": {\"data\": \"*AB$I*\", \"modules\": 77}, \"expected\": {\"data\": \"*AB$I*\", \"modules\": 77}, \"passed\": true}, {\"check\": \"repair trap 1\", \"actual\": {\"data\": \"*Z-9+X$I*\", \"modules\": 116}, \"expected\": {\"data\": \"*Z-9+X$I*\", \"modules\": 116}, \"passed\": true}, {\"check\": \"combined fault 2\", \"actual\": {\"error\": \"ratio\"}, \"expected\": {\"error\": \"ratio\"}, \"passed\": true}, {\"check\": \"control 3\", \"actual\": {\"error\": \"ratio\"}, \"expected\": {\"error\": \"ratio\"}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"error\": \"ratio\"}, \"expected\": {\"error\": \"ratio\"}, \"passed\": true}, {\"check\": \"boundary 5\", \"actual\": {\"error\": \"char\", \"char\": \"a\"}, \"expected\": {\"error\": \"char\", \"char\": \"a\"}, \"passed\": true}, {\"check\": \"boundary 6\", \"actual\": {\"error\": \"ratio\"}, \"expected\": {\"error\": \"ratio\"}, \"passed\": true}, {\"check\": \"control 7\", \"actual\": {\"data\": \"*$I/D5*\", \"modules\": 90}, \"expected\": {\"data\": \"*$I/D5*\", \"modules\": 90}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}