{"abstract":"Text ending with a separator gains a phantom empty paragraph.","category":"Bidirectional text layout","checks":8,"contract":"Input [text, default level]. Paragraph separators (\\n, \\r, U+2029; \\r\\n counts once) end a paragraph and stay with it. A trailing non-empty remainder is a paragraph. Each paragraph takes level 1 if its first letter is uppercase (stand-in for RTL), 0 if lowercase, else the default. Return [[paragraph, level]].","evaluation_group":"w2-bidirectional-text-layout-paragraph-split","failed_approach":"Dropping whitespace-only remainders loses a real paragraph.","family":"w2-bidirectional-text-layout-paragraph-split-trailing-empty-paragraph","id":"FA-80826","implementations":{"attempt":{"sha256":"2e6865a14be495e596e6f61f58c393f47c6143c1e337058dd65dbc0be0f158e6","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    text, default = x\n    paras = []\n    cur = ''\n    i = 0\n    while i < len(text):\n        ch = text[i]\n        if ch == '\\r' and text[i + 1:i + 2] == '\\n':\n            cur += '\\r\\n'\n            paras.append(cur)\n            cur = ''\n            i += 2\n            continue\n        cur += ch\n        if ch in '\\n\\r\\u2029':\n            paras.append(cur)\n            cur = ''\n        i += 1\n    if cur.strip():\n        paras.append(cur)\n    out = []\n    for p in paras:\n        level = default\n        for ch in p:\n            if ch.isalpha():\n                level = 1 if ch.isupper() else 0\n                break\n        out.append([p, level])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('digits then letter', ['12 X\\n', 0], [['12 X\\n', 1]]), ('regression: trailing empty paragraph', ['.b\\r\\n1\\r', 0], [['.b\\r\\n', 0], ['1\\r', 0]]), ('partial-repair probe', ['bXY.b\\n ', 1], [['bXY.b\\n', 0], [' ', 1]]), ('partial-repair probe', ['\\n\\raa\\r\\ncY \\r\\n ', 1], [['\\n', 1], ['\\r', 1], ['aa\\r\\n', 0], ['cY \\r\\n', 0], [' ', 1]]), ('CRLF is one separator', ['ab\\r\\nXY', 0], [['ab\\r\\n', 0], ['XY', 1]]), ('separator only paragraph', ['a\\n\\nZ', 1], [['a\\n', 0], ['\\n', 1], ['Z', 1]]), ('control layout', ['.a1Y\\r\\r\\nY2a,,,\\r\\n2', 0], [['.a1Y\\r', 0], ['\\r\\n', 0], ['Y2a,,,\\r\\n', 1], ['2', 0]]), ('control layout', ['b  \\r\\nc2,\\u202911\\na,', 1], [['b  \\r\\n', 0], ['c2,\\u2029', 0], ['11\\n', 1], ['a,', 0]])], [('regression: trailing empty paragraph', ['XY\\r \\r\\n', 0], [['XY\\r', 1], [' \\r\\n', 0]]), ('regression: trailing empty paragraph', ['\\n\\r\\n \\nc2\\r\\n', 0], [['\\n', 0], ['\\r\\n', 0], [' \\n', 0], ['c2\\r\\n', 0]]), ('partial-repair probe', ['\\n,Y\\u2029 ', 0], [['\\n', 0], [',Y\\u2029', 1], [' ', 0]]), ('partial-repair probe', [', \\n \\r\\n ', 0], [[', \\n', 0], [' \\r\\n', 0], [' ', 0]]), ('CRLF is one separator', ['ab\\r\\nXY', 0], [['ab\\r\\n', 0], ['XY', 1]]), ('digits then letter', ['12 X\\n', 0], [['12 X\\n', 1]]), ('control layout', [',\\u2029 Z', 1], [[',\\u2029', 1], [' Z', 1]]), ('control layout', [' .X', 0], [[' .X', 1]])], [('regression: trailing empty paragraph', ['\\nbcY\\n', 1], [['\\n', 1], ['bcY\\n', 0]]), ('regression: trailing empty paragraph', ['2,\\r\\n', 0], [['2,\\r\\n', 0]]), ('partial-repair probe', [', \\n \\r\\n ', 0], [[', \\n', 0], [' \\r\\n', 0], [' ', 0]]), ('partial-repair probe', ['\\n,Y\\u2029 ', 0], [['\\n', 0], [',Y\\u2029', 1], [' ', 0]]), ('CRLF is one separator', ['ab\\r\\nXY', 0], [['ab\\r\\n', 0], ['XY', 1]]), ('separator only paragraph', ['a\\n\\nZ', 1], [['a\\n', 0], ['\\n', 1], ['Z', 1]]), ('control layout', ['1XcXc\\r11b', 0], [['1XcXc\\r', 1], ['11b', 0]]), ('control layout', ['X.\\r\\n\\r\\n\\rX,c Y c1', 0], [['X.\\r\\n', 1], ['\\r\\n', 0], ['\\r', 0], ['X,c Y c1', 1]])], [('regression: trailing empty paragraph', [',,.,Y \\u2029', 0], [[',,.,Y \\u2029', 1]]), ('regression: trailing empty paragraph', ['b \\r\\n1\\n,\\ncbb\\n\\n!\\n\\n', 0], [['b \\r\\n', 0], ['1\\n', 0], [',\\n', 0], ['cbb\\n', 0], ['\\n', 0], ['!\\n', 0], ['\\n', 0]]), ('partial-repair probe', ['\\n,Y\\u2029 ', 0], [['\\n', 0], [',Y\\u2029', 1], [' ', 0]]), ('partial-repair probe', ['ZcZ\\u2029. !\\n ', 0], [['ZcZ\\u2029', 1], ['. !\\n', 0], [' ', 0]]), ('separator only paragraph', ['a\\n\\nZ', 1], [['a\\n', 0], ['\\n', 1], ['Z', 1]]), ('CRLF is one separator', ['ab\\r\\nXY', 0], [['ab\\r\\n', 0], ['XY', 1]]), ('control layout', ['2 c.ZZ\\n\\u2029Y.\\n\\r\\nb2b ', 0], [['2 c.ZZ\\n', 0], ['\\u2029', 0], ['Y.\\n', 1], ['\\r\\n', 0], ['b2b ', 0]]), ('control layout', [',c2aaYZZ\\u2029\\r\\nX.X', 0], [[',c2aaYZZ\\u2029', 0], ['\\r\\n', 0], ['X.X', 1]])], [('regression: trailing empty paragraph', ['Z\\r\\r\\n\\rcX!X12.!.c\\u2029', 0], [['Z\\r', 1], ['\\r\\n', 0], ['\\r', 0], ['cX!X12.!.c\\u2029', 0]]), ('regression: trailing empty paragraph', [' Y,1Y\\n\\r\\n', 1], [[' Y,1Y\\n', 1], ['\\r\\n', 1]]), ('partial-repair probe', [', \\n \\r\\n ', 0], [[', \\n', 0], [' \\r\\n', 0], [' ', 0]]), ('partial-repair probe', ['bXY.b\\n ', 1], [['bXY.b\\n', 0], [' ', 1]]), ('CRLF is one separator', ['ab\\r\\nXY', 0], [['ab\\r\\n', 0], ['XY', 1]]), ('digits then letter', ['12 X\\n', 0], [['12 X\\n', 1]]), ('control layout', ['\\nYc!', 0], [['\\n', 0], ['Yc!', 1]]), ('control layout', ['Z,!', 0], [['Z,!', 1]])]]\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":"4a54aa85e78b269e6e08d7c27dd06a7e26b9af432e38f00554a3bb9c17edcaab","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    text, default = x\n    paras = []\n    cur = ''\n    i = 0\n    while i < len(text):\n        ch = text[i]\n        if ch == '\\r' and text[i + 1:i + 2] == '\\n':\n            cur += '\\r\\n'\n            paras.append(cur)\n            cur = ''\n            i += 2\n            continue\n        cur += ch\n        if ch in '\\n\\r\\u2029':\n            paras.append(cur)\n            cur = ''\n        i += 1\n    paras.append(cur)\n    out = []\n    for p in paras:\n        level = default\n        for ch in p:\n            if ch.isalpha():\n                level = 1 if ch.isupper() else 0\n                break\n        out.append([p, level])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('digits then letter', ['12 X\\n', 0], [['12 X\\n', 1]]), ('regression: trailing empty paragraph', ['.b\\r\\n1\\r', 0], [['.b\\r\\n', 0], ['1\\r', 0]]), ('partial-repair probe', ['bXY.b\\n ', 1], [['bXY.b\\n', 0], [' ', 1]]), ('partial-repair probe', ['\\n\\raa\\r\\ncY \\r\\n ', 1], [['\\n', 1], ['\\r', 1], ['aa\\r\\n', 0], ['cY \\r\\n', 0], [' ', 1]]), ('CRLF is one separator', ['ab\\r\\nXY', 0], [['ab\\r\\n', 0], ['XY', 1]]), ('separator only paragraph', ['a\\n\\nZ', 1], [['a\\n', 0], ['\\n', 1], ['Z', 1]]), ('control layout', ['.a1Y\\r\\r\\nY2a,,,\\r\\n2', 0], [['.a1Y\\r', 0], ['\\r\\n', 0], ['Y2a,,,\\r\\n', 1], ['2', 0]]), ('control layout', ['b  \\r\\nc2,\\u202911\\na,', 1], [['b  \\r\\n', 0], ['c2,\\u2029', 0], ['11\\n', 1], ['a,', 0]])], [('regression: trailing empty paragraph', ['XY\\r \\r\\n', 0], [['XY\\r', 1], [' \\r\\n', 0]]), ('regression: trailing empty paragraph', ['\\n\\r\\n \\nc2\\r\\n', 0], [['\\n', 0], ['\\r\\n', 0], [' \\n', 0], ['c2\\r\\n', 0]]), ('partial-repair probe', ['\\n,Y\\u2029 ', 0], [['\\n', 0], [',Y\\u2029', 1], [' ', 0]]), ('partial-repair probe', [', \\n \\r\\n ', 0], [[', \\n', 0], [' \\r\\n', 0], [' ', 0]]), ('CRLF is one separator', ['ab\\r\\nXY', 0], [['ab\\r\\n', 0], ['XY', 1]]), ('digits then letter', ['12 X\\n', 0], [['12 X\\n', 1]]), ('control layout', [',\\u2029 Z', 1], [[',\\u2029', 1], [' Z', 1]]), ('control layout', [' .X', 0], [[' .X', 1]])], [('regression: trailing empty paragraph', ['\\nbcY\\n', 1], [['\\n', 1], ['bcY\\n', 0]]), ('regression: trailing empty paragraph', ['2,\\r\\n', 0], [['2,\\r\\n', 0]]), ('partial-repair probe', [', \\n \\r\\n ', 0], [[', \\n', 0], [' \\r\\n', 0], [' ', 0]]), ('partial-repair probe', ['\\n,Y\\u2029 ', 0], [['\\n', 0], [',Y\\u2029', 1], [' ', 0]]), ('CRLF is one separator', ['ab\\r\\nXY', 0], [['ab\\r\\n', 0], ['XY', 1]]), ('separator only paragraph', ['a\\n\\nZ', 1], [['a\\n', 0], ['\\n', 1], ['Z', 1]]), ('control layout', ['1XcXc\\r11b', 0], [['1XcXc\\r', 1], ['11b', 0]]), ('control layout', ['X.\\r\\n\\r\\n\\rX,c Y c1', 0], [['X.\\r\\n', 1], ['\\r\\n', 0], ['\\r', 0], ['X,c Y c1', 1]])], [('regression: trailing empty paragraph', [',,.,Y \\u2029', 0], [[',,.,Y \\u2029', 1]]), ('regression: trailing empty paragraph', ['b \\r\\n1\\n,\\ncbb\\n\\n!\\n\\n', 0], [['b \\r\\n', 0], ['1\\n', 0], [',\\n', 0], ['cbb\\n', 0], ['\\n', 0], ['!\\n', 0], ['\\n', 0]]), ('partial-repair probe', ['\\n,Y\\u2029 ', 0], [['\\n', 0], [',Y\\u2029', 1], [' ', 0]]), ('partial-repair probe', ['ZcZ\\u2029. !\\n ', 0], [['ZcZ\\u2029', 1], ['. !\\n', 0], [' ', 0]]), ('separator only paragraph', ['a\\n\\nZ', 1], [['a\\n', 0], ['\\n', 1], ['Z', 1]]), ('CRLF is one separator', ['ab\\r\\nXY', 0], [['ab\\r\\n', 0], ['XY', 1]]), ('control layout', ['2 c.ZZ\\n\\u2029Y.\\n\\r\\nb2b ', 0], [['2 c.ZZ\\n', 0], ['\\u2029', 0], ['Y.\\n', 1], ['\\r\\n', 0], ['b2b ', 0]]), ('control layout', [',c2aaYZZ\\u2029\\r\\nX.X', 0], [[',c2aaYZZ\\u2029', 0], ['\\r\\n', 0], ['X.X', 1]])], [('regression: trailing empty paragraph', ['Z\\r\\r\\n\\rcX!X12.!.c\\u2029', 0], [['Z\\r', 1], ['\\r\\n', 0], ['\\r', 0], ['cX!X12.!.c\\u2029', 0]]), ('regression: trailing empty paragraph', [' Y,1Y\\n\\r\\n', 1], [[' Y,1Y\\n', 1], ['\\r\\n', 1]]), ('partial-repair probe', [', \\n \\r\\n ', 0], [[', \\n', 0], [' \\r\\n', 0], [' ', 0]]), ('partial-repair probe', ['bXY.b\\n ', 1], [['bXY.b\\n', 0], [' ', 1]]), ('CRLF is one separator', ['ab\\r\\nXY', 0], [['ab\\r\\n', 0], ['XY', 1]]), ('digits then letter', ['12 X\\n', 0], [['12 X\\n', 1]]), ('control layout', ['\\nYc!', 0], [['\\n', 0], ['Yc!', 1]]), ('control layout', ['Z,!', 0], [['Z,!', 1]])]]\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":"8f1416a3ab8548a378d73a96db2baae508d953eb841a15ed3bf56a035ab88d6d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    text, default = x\n    paras = []\n    cur = ''\n    i = 0\n    while i < len(text):\n        ch = text[i]\n        if ch == '\\r' and text[i + 1:i + 2] == '\\n':\n            cur += '\\r\\n'\n            paras.append(cur)\n            cur = ''\n            i += 2\n            continue\n        cur += ch\n        if ch in '\\n\\r\\u2029':\n            paras.append(cur)\n            cur = ''\n        i += 1\n    if cur:\n        paras.append(cur)\n    out = []\n    for p in paras:\n        level = default\n        for ch in p:\n            if ch.isalpha():\n                level = 1 if ch.isupper() else 0\n                break\n        out.append([p, level])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('digits then letter', ['12 X\\n', 0], [['12 X\\n', 1]]), ('regression: trailing empty paragraph', ['.b\\r\\n1\\r', 0], [['.b\\r\\n', 0], ['1\\r', 0]]), ('partial-repair probe', ['bXY.b\\n ', 1], [['bXY.b\\n', 0], [' ', 1]]), ('partial-repair probe', ['\\n\\raa\\r\\ncY \\r\\n ', 1], [['\\n', 1], ['\\r', 1], ['aa\\r\\n', 0], ['cY \\r\\n', 0], [' ', 1]]), ('CRLF is one separator', ['ab\\r\\nXY', 0], [['ab\\r\\n', 0], ['XY', 1]]), ('separator only paragraph', ['a\\n\\nZ', 1], [['a\\n', 0], ['\\n', 1], ['Z', 1]]), ('control layout', ['.a1Y\\r\\r\\nY2a,,,\\r\\n2', 0], [['.a1Y\\r', 0], ['\\r\\n', 0], ['Y2a,,,\\r\\n', 1], ['2', 0]]), ('control layout', ['b  \\r\\nc2,\\u202911\\na,', 1], [['b  \\r\\n', 0], ['c2,\\u2029', 0], ['11\\n', 1], ['a,', 0]])], [('regression: trailing empty paragraph', ['XY\\r \\r\\n', 0], [['XY\\r', 1], [' \\r\\n', 0]]), ('regression: trailing empty paragraph', ['\\n\\r\\n \\nc2\\r\\n', 0], [['\\n', 0], ['\\r\\n', 0], [' \\n', 0], ['c2\\r\\n', 0]]), ('partial-repair probe', ['\\n,Y\\u2029 ', 0], [['\\n', 0], [',Y\\u2029', 1], [' ', 0]]), ('partial-repair probe', [', \\n \\r\\n ', 0], [[', \\n', 0], [' \\r\\n', 0], [' ', 0]]), ('CRLF is one separator', ['ab\\r\\nXY', 0], [['ab\\r\\n', 0], ['XY', 1]]), ('digits then letter', ['12 X\\n', 0], [['12 X\\n', 1]]), ('control layout', [',\\u2029 Z', 1], [[',\\u2029', 1], [' Z', 1]]), ('control layout', [' .X', 0], [[' .X', 1]])], [('regression: trailing empty paragraph', ['\\nbcY\\n', 1], [['\\n', 1], ['bcY\\n', 0]]), ('regression: trailing empty paragraph', ['2,\\r\\n', 0], [['2,\\r\\n', 0]]), ('partial-repair probe', [', \\n \\r\\n ', 0], [[', \\n', 0], [' \\r\\n', 0], [' ', 0]]), ('partial-repair probe', ['\\n,Y\\u2029 ', 0], [['\\n', 0], [',Y\\u2029', 1], [' ', 0]]), ('CRLF is one separator', ['ab\\r\\nXY', 0], [['ab\\r\\n', 0], ['XY', 1]]), ('separator only paragraph', ['a\\n\\nZ', 1], [['a\\n', 0], ['\\n', 1], ['Z', 1]]), ('control layout', ['1XcXc\\r11b', 0], [['1XcXc\\r', 1], ['11b', 0]]), ('control layout', ['X.\\r\\n\\r\\n\\rX,c Y c1', 0], [['X.\\r\\n', 1], ['\\r\\n', 0], ['\\r', 0], ['X,c Y c1', 1]])], [('regression: trailing empty paragraph', [',,.,Y \\u2029', 0], [[',,.,Y \\u2029', 1]]), ('regression: trailing empty paragraph', ['b \\r\\n1\\n,\\ncbb\\n\\n!\\n\\n', 0], [['b \\r\\n', 0], ['1\\n', 0], [',\\n', 0], ['cbb\\n', 0], ['\\n', 0], ['!\\n', 0], ['\\n', 0]]), ('partial-repair probe', ['\\n,Y\\u2029 ', 0], [['\\n', 0], [',Y\\u2029', 1], [' ', 0]]), ('partial-repair probe', ['ZcZ\\u2029. !\\n ', 0], [['ZcZ\\u2029', 1], ['. !\\n', 0], [' ', 0]]), ('separator only paragraph', ['a\\n\\nZ', 1], [['a\\n', 0], ['\\n', 1], ['Z', 1]]), ('CRLF is one separator', ['ab\\r\\nXY', 0], [['ab\\r\\n', 0], ['XY', 1]]), ('control layout', ['2 c.ZZ\\n\\u2029Y.\\n\\r\\nb2b ', 0], [['2 c.ZZ\\n', 0], ['\\u2029', 0], ['Y.\\n', 1], ['\\r\\n', 0], ['b2b ', 0]]), ('control layout', [',c2aaYZZ\\u2029\\r\\nX.X', 0], [[',c2aaYZZ\\u2029', 0], ['\\r\\n', 0], ['X.X', 1]])], [('regression: trailing empty paragraph', ['Z\\r\\r\\n\\rcX!X12.!.c\\u2029', 0], [['Z\\r', 1], ['\\r\\n', 0], ['\\r', 0], ['cX!X12.!.c\\u2029', 0]]), ('regression: trailing empty paragraph', [' Y,1Y\\n\\r\\n', 1], [[' Y,1Y\\n', 1], ['\\r\\n', 1]]), ('partial-repair probe', [', \\n \\r\\n ', 0], [[', \\n', 0], [' \\r\\n', 0], [' ', 0]]), ('partial-repair probe', ['bXY.b\\n ', 1], [['bXY.b\\n', 0], [' ', 1]]), ('CRLF is one separator', ['ab\\r\\nXY', 0], [['ab\\r\\n', 0], ['XY', 1]]), ('digits then letter', ['12 X\\n', 0], [['12 X\\n', 1]]), ('control layout', ['\\nYc!', 0], [['\\n', 0], ['Yc!', 1]]), ('control layout', ['Z,!', 0], [['Z,!', 1]])]]\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 toy bidi model over stipulated class labels and integer levels; it is inspired by, but does not claim conformance to, any published algorithm. 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-bidirectional-text-layout-paragraph-split-trailing-empty-paragraph","generated_at":"2026-09-29T14:49:57.390811+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Mixed right-to-left and left-to-right text must resolve levels and visual order exactly, or words, numbers and carets land in the wrong place.","repair":"Only append a non-empty remainder.","root_cause":"The remainder is appended even when empty.","sha256":"3f6184d27bc2b148609a6e7424173473d2e1c16c221d9eb7802812b6e82a6509","title":"Paragraph separation and direction: trailing empty paragraph · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":38.409,"exit_code":1,"observations":[{"actual":[["12 X\n",1]],"check":"digits then letter","expected":[["12 X\n",1]],"passed":true},{"actual":[[".b\r\n",0],["1\r",0]],"check":"regression: trailing empty paragraph","expected":[[".b\r\n",0],["1\r",0]],"passed":true},{"actual":[["bXY.b\n",0]],"check":"partial-repair probe","expected":[["bXY.b\n",0],[" ",1]],"passed":false},{"actual":[["\n",1],["\r",1],["aa\r\n",0],["cY \r\n",0]],"check":"partial-repair probe","expected":[["\n",1],["\r",1],["aa\r\n",0],["cY \r\n",0],[" ",1]],"passed":false},{"actual":[["ab\r\n",0],["XY",1]],"check":"CRLF is one separator","expected":[["ab\r\n",0],["XY",1]],"passed":true},{"actual":[["a\n",0],["\n",1],["Z",1]],"check":"separator only paragraph","expected":[["a\n",0],["\n",1],["Z",1]],"passed":true},{"actual":[[".a1Y\r",0],["\r\n",0],["Y2a,,,\r\n",1],["2",0]],"check":"control layout","expected":[[".a1Y\r",0],["\r\n",0],["Y2a,,,\r\n",1],["2",0]],"passed":true},{"actual":[["b  \r\n",0],["c2, ",0],["11\n",1],["a,",0]],"check":"control layout","expected":[["b  \r\n",0],["c2, ",0],["11\n",1],["a,",0]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"digits then letter\", \"actual\": [[\"12 X\\n\", 1]], \"expected\": [[\"12 X\\n\", 1]], \"passed\": true}, {\"check\": \"regression: trailing empty paragraph\", \"actual\": [[\".b\\r\\n\", 0], [\"1\\r\", 0]], \"expected\": [[\".b\\r\\n\", 0], [\"1\\r\", 0]], \"passed\": true}, {\"check\": \"partial-repair probe\", \"actual\": [[\"bXY.b\\n\", 0]], \"expected\": [[\"bXY.b\\n\", 0], [\" \", 1]], \"passed\": false}, {\"check\": \"partial-repair probe\", \"actual\": [[\"\\n\", 1], [\"\\r\", 1], [\"aa\\r\\n\", 0], [\"cY \\r\\n\", 0]], \"expected\": [[\"\\n\", 1], [\"\\r\", 1], [\"aa\\r\\n\", 0], [\"cY \\r\\n\", 0], [\" \", 1]], \"passed\": false}, {\"check\": \"CRLF is one separator\", \"actual\": [[\"ab\\r\\n\", 0], [\"XY\", 1]], \"expected\": [[\"ab\\r\\n\", 0], [\"XY\", 1]], \"passed\": true}, {\"check\": \"separator only paragraph\", \"actual\": [[\"a\\n\", 0], [\"\\n\", 1], [\"Z\", 1]], \"expected\": [[\"a\\n\", 0], [\"\\n\", 1], [\"Z\", 1]], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [[\".a1Y\\r\", 0], [\"\\r\\n\", 0], [\"Y2a,,,\\r\\n\", 1], [\"2\", 0]], \"expected\": [[\".a1Y\\r\", 0], [\"\\r\\n\", 0], [\"Y2a,,,\\r\\n\", 1], [\"2\", 0]], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [[\"b  \\r\\n\", 0], [\"c2, \", 0], [\"11\\n\", 1], [\"a,\", 0]], \"expected\": [[\"b  \\r\\n\", 0], [\"c2, \", 0], [\"11\\n\", 1], [\"a,\", 0]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.767,"exit_code":1,"observations":[{"actual":[["12 X\n",1],["",0]],"check":"digits then letter","expected":[["12 X\n",1]],"passed":false},{"actual":[[".b\r\n",0],["1\r",0],["",0]],"check":"regression: trailing empty paragraph","expected":[[".b\r\n",0],["1\r",0]],"passed":false},{"actual":[["bXY.b\n",0],[" ",1]],"check":"partial-repair probe","expected":[["bXY.b\n",0],[" ",1]],"passed":true},{"actual":[["\n",1],["\r",1],["aa\r\n",0],["cY \r\n",0],[" ",1]],"check":"partial-repair probe","expected":[["\n",1],["\r",1],["aa\r\n",0],["cY \r\n",0],[" ",1]],"passed":true},{"actual":[["ab\r\n",0],["XY",1]],"check":"CRLF is one separator","expected":[["ab\r\n",0],["XY",1]],"passed":true},{"actual":[["a\n",0],["\n",1],["Z",1]],"check":"separator only paragraph","expected":[["a\n",0],["\n",1],["Z",1]],"passed":true},{"actual":[[".a1Y\r",0],["\r\n",0],["Y2a,,,\r\n",1],["2",0]],"check":"control layout","expected":[[".a1Y\r",0],["\r\n",0],["Y2a,,,\r\n",1],["2",0]],"passed":true},{"actual":[["b  \r\n",0],["c2, ",0],["11\n",1],["a,",0]],"check":"control layout","expected":[["b  \r\n",0],["c2, ",0],["11\n",1],["a,",0]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"digits then letter\", \"actual\": [[\"12 X\\n\", 1], [\"\", 0]], \"expected\": [[\"12 X\\n\", 1]], \"passed\": false}, {\"check\": \"regression: trailing empty paragraph\", \"actual\": [[\".b\\r\\n\", 0], [\"1\\r\", 0], [\"\", 0]], \"expected\": [[\".b\\r\\n\", 0], [\"1\\r\", 0]], \"passed\": false}, {\"check\": \"partial-repair probe\", \"actual\": [[\"bXY.b\\n\", 0], [\" \", 1]], \"expected\": [[\"bXY.b\\n\", 0], [\" \", 1]], \"passed\": true}, {\"check\": \"partial-repair probe\", \"actual\": [[\"\\n\", 1], [\"\\r\", 1], [\"aa\\r\\n\", 0], [\"cY \\r\\n\", 0], [\" \", 1]], \"expected\": [[\"\\n\", 1], [\"\\r\", 1], [\"aa\\r\\n\", 0], [\"cY \\r\\n\", 0], [\" \", 1]], \"passed\": true}, {\"check\": \"CRLF is one separator\", \"actual\": [[\"ab\\r\\n\", 0], [\"XY\", 1]], \"expected\": [[\"ab\\r\\n\", 0], [\"XY\", 1]], \"passed\": true}, {\"check\": \"separator only paragraph\", \"actual\": [[\"a\\n\", 0], [\"\\n\", 1], [\"Z\", 1]], \"expected\": [[\"a\\n\", 0], [\"\\n\", 1], [\"Z\", 1]], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [[\".a1Y\\r\", 0], [\"\\r\\n\", 0], [\"Y2a,,,\\r\\n\", 1], [\"2\", 0]], \"expected\": [[\".a1Y\\r\", 0], [\"\\r\\n\", 0], [\"Y2a,,,\\r\\n\", 1], [\"2\", 0]], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [[\"b  \\r\\n\", 0], [\"c2, \", 0], [\"11\\n\", 1], [\"a,\", 0]], \"expected\": [[\"b  \\r\\n\", 0], [\"c2, \", 0], [\"11\\n\", 1], [\"a,\", 0]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.049,"exit_code":0,"observations":[{"actual":[["12 X\n",1]],"check":"digits then letter","expected":[["12 X\n",1]],"passed":true},{"actual":[[".b\r\n",0],["1\r",0]],"check":"regression: trailing empty paragraph","expected":[[".b\r\n",0],["1\r",0]],"passed":true},{"actual":[["bXY.b\n",0],[" ",1]],"check":"partial-repair probe","expected":[["bXY.b\n",0],[" ",1]],"passed":true},{"actual":[["\n",1],["\r",1],["aa\r\n",0],["cY \r\n",0],[" ",1]],"check":"partial-repair probe","expected":[["\n",1],["\r",1],["aa\r\n",0],["cY \r\n",0],[" ",1]],"passed":true},{"actual":[["ab\r\n",0],["XY",1]],"check":"CRLF is one separator","expected":[["ab\r\n",0],["XY",1]],"passed":true},{"actual":[["a\n",0],["\n",1],["Z",1]],"check":"separator only paragraph","expected":[["a\n",0],["\n",1],["Z",1]],"passed":true},{"actual":[[".a1Y\r",0],["\r\n",0],["Y2a,,,\r\n",1],["2",0]],"check":"control layout","expected":[[".a1Y\r",0],["\r\n",0],["Y2a,,,\r\n",1],["2",0]],"passed":true},{"actual":[["b  \r\n",0],["c2, ",0],["11\n",1],["a,",0]],"check":"control layout","expected":[["b  \r\n",0],["c2, ",0],["11\n",1],["a,",0]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"digits then letter\", \"actual\": [[\"12 X\\n\", 1]], \"expected\": [[\"12 X\\n\", 1]], \"passed\": true}, {\"check\": \"regression: trailing empty paragraph\", \"actual\": [[\".b\\r\\n\", 0], [\"1\\r\", 0]], \"expected\": [[\".b\\r\\n\", 0], [\"1\\r\", 0]], \"passed\": true}, {\"check\": \"partial-repair probe\", \"actual\": [[\"bXY.b\\n\", 0], [\" \", 1]], \"expected\": [[\"bXY.b\\n\", 0], [\" \", 1]], \"passed\": true}, {\"check\": \"partial-repair probe\", \"actual\": [[\"\\n\", 1], [\"\\r\", 1], [\"aa\\r\\n\", 0], [\"cY \\r\\n\", 0], [\" \", 1]], \"expected\": [[\"\\n\", 1], [\"\\r\", 1], [\"aa\\r\\n\", 0], [\"cY \\r\\n\", 0], [\" \", 1]], \"passed\": true}, {\"check\": \"CRLF is one separator\", \"actual\": [[\"ab\\r\\n\", 0], [\"XY\", 1]], \"expected\": [[\"ab\\r\\n\", 0], [\"XY\", 1]], \"passed\": true}, {\"check\": \"separator only paragraph\", \"actual\": [[\"a\\n\", 0], [\"\\n\", 1], [\"Z\", 1]], \"expected\": [[\"a\\n\", 0], [\"\\n\", 1], [\"Z\", 1]], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [[\".a1Y\\r\", 0], [\"\\r\\n\", 0], [\"Y2a,,,\\r\\n\", 1], [\"2\", 0]], \"expected\": [[\".a1Y\\r\", 0], [\"\\r\\n\", 0], [\"Y2a,,,\\r\\n\", 1], [\"2\", 0]], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [[\"b  \\r\\n\", 0], [\"c2, \", 0], [\"11\\n\", 1], [\"a,\", 0]], \"expected\": [[\"b  \\r\\n\", 0], [\"c2, \", 0], [\"11\\n\", 1], [\"a,\", 0]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}