{"abstract":"Deep even embeddings are treated like odd ones.","category":"Bidirectional text layout","checks":8,"contract":"Input [resolved classes L/R/EN/AN, embedding levels]. At even levels R goes up one and AN/EN up two; at odd levels L, EN and AN go up one. Return level runs [start, end exclusive, level] of equal final levels.","evaluation_group":"w2-bidirectional-text-layout-implicit-levels","failed_approach":"Treating levels below two as even misclassifies level 1.","family":"w2-bidirectional-text-layout-implicit-levels-level-parity-test","id":"FA-80456","implementations":{"attempt":{"sha256":"81661c588c659b2556f62c890e68d3bf1dfb35fbecd063a4d1b110a4ed18821b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    types, levels = x\n    out = []\n    for c, lv in zip(types, levels):\n        if lv < 2:\n            if c == 'R':\n                out.append(lv + 1)\n            elif c in ('AN', 'EN'):\n                out.append(lv + 2)\n            else:\n                out.append(lv)\n        else:\n            if c in ('L', 'EN', 'AN'):\n                out.append(lv + 1)\n            else:\n                out.append(lv)\n    runs = []\n    for i, lv in enumerate(out):\n        if runs and runs[-1][2] == lv:\n            runs[-1][1] = i + 1\n        else:\n            runs.append([i, i + 1, lv])\n    return runs\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('level two embedding', [['R', 'L'], [2, 2]], [[0, 1, 3], [1, 2, 2]]), ('regression: level parity test', [['AN', 'EN', 'L', 'R', 'L', 'L', 'AN', 'R', 'EN', 'EN', 'R', 'EN'], [3, 3, 3, 1, 1, 2, 2, 1, 1, 2, 2, 3]], [[0, 3, 4], [3, 4, 1], [4, 6, 2], [6, 7, 4], [7, 8, 1], [8, 9, 2], [9, 10, 4], [10, 11, 3], [11, 12, 4]]), ('regression: level parity test', [['EN', 'EN', 'L', 'R', 'AN', 'EN', 'R', 'R', 'AN'], [2, 2, 2, 2, 2, 3, 3, 3, 1]], [[0, 2, 4], [2, 3, 2], [3, 4, 3], [4, 6, 4], [6, 8, 3], [8, 9, 2]]), ('partial-repair probe', [['AN', 'AN', 'R', 'L', 'AN', 'L', 'EN', 'R'], [1, 3, 3, 3, 3, 1, 1, 1]], [[0, 1, 2], [1, 2, 4], [2, 3, 3], [3, 5, 4], [5, 7, 2], [7, 8, 1]]), ('number in RTL text', [['R', 'AN', 'R'], [1, 1, 1]], [[0, 1, 1], [1, 2, 2], [2, 3, 1]]), ('number in LTR text', [['L', 'EN', 'L'], [0, 0, 0]], [[0, 1, 0], [1, 2, 2], [2, 3, 0]]), ('control layout', [['EN', 'R', 'R', 'EN', 'L', 'AN'], [0, 0, 0, 0, 0, 0]], [[0, 1, 2], [1, 3, 1], [3, 4, 2], [4, 5, 0], [5, 6, 2]]), ('control layout', [['AN', 'AN', 'R', 'AN'], [0, 0, 0, 0]], [[0, 2, 2], [2, 3, 1], [3, 4, 2]])], [('regression: level parity test', [['EN', 'AN', 'AN', 'L', 'AN', 'EN', 'R'], [4, 2, 4, 4, 4, 2, 2]], [[0, 1, 6], [1, 2, 4], [2, 3, 6], [3, 4, 4], [4, 5, 6], [5, 6, 4], [6, 7, 3]]), ('regression: level parity test', [['R', 'L', 'R', 'EN', 'L', 'L', 'AN', 'L'], [2, 2, 1, 1, 0, 0, 0, 0]], [[0, 1, 3], [1, 2, 2], [2, 3, 1], [3, 4, 2], [4, 6, 0], [6, 7, 2], [7, 8, 0]]), ('regression: level parity test', [['R', 'AN', 'EN', 'AN'], [2, 2, 2, 2]], [[0, 1, 3], [1, 4, 4]]), ('regression: level parity test', [['L'], [2]], [[0, 1, 2]]), ('number in LTR text', [['L', 'EN', 'L'], [0, 0, 0]], [[0, 1, 0], [1, 2, 2], [2, 3, 0]]), ('number in RTL text', [['R', 'AN', 'R'], [1, 1, 1]], [[0, 1, 1], [1, 2, 2], [2, 3, 1]]), ('control layout', [['AN', 'AN', 'AN', 'EN', 'AN', 'AN', 'R', 'EN'], [3, 3, 3, 3, 0, 0, 0, 0]], [[0, 4, 4], [4, 6, 2], [6, 7, 1], [7, 8, 2]]), ('control layout', [['R'], [3]], [[0, 1, 3]])], [('regression: level parity test', [['L', 'EN', 'EN', 'EN', 'L', 'EN', 'L', 'R'], [2, 2, 2, 3, 3, 3, 2, 1]], [[0, 1, 2], [1, 6, 4], [6, 7, 2], [7, 8, 1]]), ('regression: level parity test', [['EN', 'L', 'AN', 'L', 'EN', 'EN', 'L'], [1, 1, 1, 2, 2, 4, 4]], [[0, 4, 2], [4, 5, 4], [5, 6, 6], [6, 7, 4]]), ('regression: level parity test', [['L', 'EN', 'AN', 'R', 'R', 'AN', 'AN', 'AN', 'EN', 'L'], [4, 4, 3, 3, 2, 1, 1, 4, 2, 2]], [[0, 1, 4], [1, 2, 6], [2, 3, 4], [3, 5, 3], [5, 7, 2], [7, 8, 6], [8, 9, 4], [9, 10, 2]]), ('regression: level parity test', [['R', 'R'], [4, 4]], [[0, 2, 5]]), ('number in RTL text', [['R', 'AN', 'R'], [1, 1, 1]], [[0, 1, 1], [1, 2, 2], [2, 3, 1]]), ('number in LTR text', [['L', 'EN', 'L'], [0, 0, 0]], [[0, 1, 0], [1, 2, 2], [2, 3, 0]]), ('control layout', [['R', 'AN', 'L'], [3, 3, 3]], [[0, 1, 3], [1, 3, 4]]), ('control layout', [['L', 'R', 'AN', 'AN'], [3, 3, 3, 3]], [[0, 1, 4], [1, 2, 3], [2, 4, 4]])], [('regression: level parity test', [['AN', 'R', 'EN', 'R', 'EN', 'EN', 'AN', 'AN'], [2, 2, 2, 2, 2, 2, 2, 2]], [[0, 1, 4], [1, 2, 3], [2, 3, 4], [3, 4, 3], [4, 8, 4]]), ('regression: level parity test', [['R', 'EN', 'AN', 'L', 'AN', 'L', 'EN', 'R', 'L', 'R', 'R'], [3, 4, 4, 4, 4, 2, 2, 4, 4, 4, 2]], [[0, 1, 3], [1, 3, 6], [3, 4, 4], [4, 5, 6], [5, 6, 2], [6, 7, 4], [7, 8, 5], [8, 9, 4], [9, 10, 5], [10, 11, 3]]), ('regression: level parity test', [['R', 'AN'], [2, 2]], [[0, 1, 3], [1, 2, 4]]), ('regression: level parity test', [['L', 'L', 'EN', 'L', 'L', 'L', 'L', 'AN', 'EN'], [2, 2, 3, 3, 3, 2, 3, 3, 3]], [[0, 2, 2], [2, 5, 4], [5, 6, 2], [6, 9, 4]]), ('number in LTR text', [['L', 'EN', 'L'], [0, 0, 0]], [[0, 1, 0], [1, 2, 2], [2, 3, 0]]), ('number in RTL text', [['R', 'AN', 'R'], [1, 1, 1]], [[0, 1, 1], [1, 2, 2], [2, 3, 1]]), ('control layout', [['R'], [3]], [[0, 1, 3]]), ('control layout', [['R', 'EN'], [0, 0]], [[0, 1, 1], [1, 2, 2]])], [('regression: level parity test', [['AN', 'L', 'AN', 'AN', 'EN', 'L', 'EN', 'L', 'R'], [4, 4, 2, 2, 1, 1, 1, 2, 2]], [[0, 1, 6], [1, 4, 4], [4, 8, 2], [8, 9, 3]]), ('regression: level parity test', [['R', 'L', 'EN', 'L', 'AN', 'AN'], [2, 2, 2, 2, 2, 1]], [[0, 1, 3], [1, 2, 2], [2, 3, 4], [3, 4, 2], [4, 5, 4], [5, 6, 2]]), ('partial-repair probe', [['EN', 'L', 'AN', 'AN', 'EN', 'EN'], [1, 1, 1, 0, 0, 1]], [[0, 6, 2]]), ('number in RTL text', [['R', 'AN', 'R'], [1, 1, 1]], [[0, 1, 1], [1, 2, 2], [2, 3, 1]]), ('number in LTR text', [['L', 'EN', 'L'], [0, 0, 0]], [[0, 1, 0], [1, 2, 2], [2, 3, 0]]), ('level two embedding', [['R', 'L'], [2, 2]], [[0, 1, 3], [1, 2, 2]]), ('control layout', [['R', 'AN', 'L'], [3, 3, 3]], [[0, 1, 3], [1, 3, 4]]), ('control layout', [['L', 'AN', 'R', 'R', 'R', 'L', 'EN'], [0, 0, 3, 3, 3, 0, 0]], [[0, 1, 0], [1, 2, 2], [2, 5, 3], [5, 6, 0], [6, 7, 2]])]]\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":"f3f4d5025f803103d7bdbcaa204a0f4a6137df6f7e58046b1608f08232fc9d4e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    types, levels = x\n    out = []\n    for c, lv in zip(types, levels):\n        if lv == 0:\n            if c == 'R':\n                out.append(lv + 1)\n            elif c in ('AN', 'EN'):\n                out.append(lv + 2)\n            else:\n                out.append(lv)\n        else:\n            if c in ('L', 'EN', 'AN'):\n                out.append(lv + 1)\n            else:\n                out.append(lv)\n    runs = []\n    for i, lv in enumerate(out):\n        if runs and runs[-1][2] == lv:\n            runs[-1][1] = i + 1\n        else:\n            runs.append([i, i + 1, lv])\n    return runs\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('level two embedding', [['R', 'L'], [2, 2]], [[0, 1, 3], [1, 2, 2]]), ('regression: level parity test', [['AN', 'EN', 'L', 'R', 'L', 'L', 'AN', 'R', 'EN', 'EN', 'R', 'EN'], [3, 3, 3, 1, 1, 2, 2, 1, 1, 2, 2, 3]], [[0, 3, 4], [3, 4, 1], [4, 6, 2], [6, 7, 4], [7, 8, 1], [8, 9, 2], [9, 10, 4], [10, 11, 3], [11, 12, 4]]), ('regression: level parity test', [['EN', 'EN', 'L', 'R', 'AN', 'EN', 'R', 'R', 'AN'], [2, 2, 2, 2, 2, 3, 3, 3, 1]], [[0, 2, 4], [2, 3, 2], [3, 4, 3], [4, 6, 4], [6, 8, 3], [8, 9, 2]]), ('partial-repair probe', [['AN', 'AN', 'R', 'L', 'AN', 'L', 'EN', 'R'], [1, 3, 3, 3, 3, 1, 1, 1]], [[0, 1, 2], [1, 2, 4], [2, 3, 3], [3, 5, 4], [5, 7, 2], [7, 8, 1]]), ('number in RTL text', [['R', 'AN', 'R'], [1, 1, 1]], [[0, 1, 1], [1, 2, 2], [2, 3, 1]]), ('number in LTR text', [['L', 'EN', 'L'], [0, 0, 0]], [[0, 1, 0], [1, 2, 2], [2, 3, 0]]), ('control layout', [['EN', 'R', 'R', 'EN', 'L', 'AN'], [0, 0, 0, 0, 0, 0]], [[0, 1, 2], [1, 3, 1], [3, 4, 2], [4, 5, 0], [5, 6, 2]]), ('control layout', [['AN', 'AN', 'R', 'AN'], [0, 0, 0, 0]], [[0, 2, 2], [2, 3, 1], [3, 4, 2]])], [('regression: level parity test', [['EN', 'AN', 'AN', 'L', 'AN', 'EN', 'R'], [4, 2, 4, 4, 4, 2, 2]], [[0, 1, 6], [1, 2, 4], [2, 3, 6], [3, 4, 4], [4, 5, 6], [5, 6, 4], [6, 7, 3]]), ('regression: level parity test', [['R', 'L', 'R', 'EN', 'L', 'L', 'AN', 'L'], [2, 2, 1, 1, 0, 0, 0, 0]], [[0, 1, 3], [1, 2, 2], [2, 3, 1], [3, 4, 2], [4, 6, 0], [6, 7, 2], [7, 8, 0]]), ('regression: level parity test', [['R', 'AN', 'EN', 'AN'], [2, 2, 2, 2]], [[0, 1, 3], [1, 4, 4]]), ('regression: level parity test', [['L'], [2]], [[0, 1, 2]]), ('number in LTR text', [['L', 'EN', 'L'], [0, 0, 0]], [[0, 1, 0], [1, 2, 2], [2, 3, 0]]), ('number in RTL text', [['R', 'AN', 'R'], [1, 1, 1]], [[0, 1, 1], [1, 2, 2], [2, 3, 1]]), ('control layout', [['AN', 'AN', 'AN', 'EN', 'AN', 'AN', 'R', 'EN'], [3, 3, 3, 3, 0, 0, 0, 0]], [[0, 4, 4], [4, 6, 2], [6, 7, 1], [7, 8, 2]]), ('control layout', [['R'], [3]], [[0, 1, 3]])], [('regression: level parity test', [['L', 'EN', 'EN', 'EN', 'L', 'EN', 'L', 'R'], [2, 2, 2, 3, 3, 3, 2, 1]], [[0, 1, 2], [1, 6, 4], [6, 7, 2], [7, 8, 1]]), ('regression: level parity test', [['EN', 'L', 'AN', 'L', 'EN', 'EN', 'L'], [1, 1, 1, 2, 2, 4, 4]], [[0, 4, 2], [4, 5, 4], [5, 6, 6], [6, 7, 4]]), ('regression: level parity test', [['L', 'EN', 'AN', 'R', 'R', 'AN', 'AN', 'AN', 'EN', 'L'], [4, 4, 3, 3, 2, 1, 1, 4, 2, 2]], [[0, 1, 4], [1, 2, 6], [2, 3, 4], [3, 5, 3], [5, 7, 2], [7, 8, 6], [8, 9, 4], [9, 10, 2]]), ('regression: level parity test', [['R', 'R'], [4, 4]], [[0, 2, 5]]), ('number in RTL text', [['R', 'AN', 'R'], [1, 1, 1]], [[0, 1, 1], [1, 2, 2], [2, 3, 1]]), ('number in LTR text', [['L', 'EN', 'L'], [0, 0, 0]], [[0, 1, 0], [1, 2, 2], [2, 3, 0]]), ('control layout', [['R', 'AN', 'L'], [3, 3, 3]], [[0, 1, 3], [1, 3, 4]]), ('control layout', [['L', 'R', 'AN', 'AN'], [3, 3, 3, 3]], [[0, 1, 4], [1, 2, 3], [2, 4, 4]])], [('regression: level parity test', [['AN', 'R', 'EN', 'R', 'EN', 'EN', 'AN', 'AN'], [2, 2, 2, 2, 2, 2, 2, 2]], [[0, 1, 4], [1, 2, 3], [2, 3, 4], [3, 4, 3], [4, 8, 4]]), ('regression: level parity test', [['R', 'EN', 'AN', 'L', 'AN', 'L', 'EN', 'R', 'L', 'R', 'R'], [3, 4, 4, 4, 4, 2, 2, 4, 4, 4, 2]], [[0, 1, 3], [1, 3, 6], [3, 4, 4], [4, 5, 6], [5, 6, 2], [6, 7, 4], [7, 8, 5], [8, 9, 4], [9, 10, 5], [10, 11, 3]]), ('regression: level parity test', [['R', 'AN'], [2, 2]], [[0, 1, 3], [1, 2, 4]]), ('regression: level parity test', [['L', 'L', 'EN', 'L', 'L', 'L', 'L', 'AN', 'EN'], [2, 2, 3, 3, 3, 2, 3, 3, 3]], [[0, 2, 2], [2, 5, 4], [5, 6, 2], [6, 9, 4]]), ('number in LTR text', [['L', 'EN', 'L'], [0, 0, 0]], [[0, 1, 0], [1, 2, 2], [2, 3, 0]]), ('number in RTL text', [['R', 'AN', 'R'], [1, 1, 1]], [[0, 1, 1], [1, 2, 2], [2, 3, 1]]), ('control layout', [['R'], [3]], [[0, 1, 3]]), ('control layout', [['R', 'EN'], [0, 0]], [[0, 1, 1], [1, 2, 2]])], [('regression: level parity test', [['AN', 'L', 'AN', 'AN', 'EN', 'L', 'EN', 'L', 'R'], [4, 4, 2, 2, 1, 1, 1, 2, 2]], [[0, 1, 6], [1, 4, 4], [4, 8, 2], [8, 9, 3]]), ('regression: level parity test', [['R', 'L', 'EN', 'L', 'AN', 'AN'], [2, 2, 2, 2, 2, 1]], [[0, 1, 3], [1, 2, 2], [2, 3, 4], [3, 4, 2], [4, 5, 4], [5, 6, 2]]), ('partial-repair probe', [['EN', 'L', 'AN', 'AN', 'EN', 'EN'], [1, 1, 1, 0, 0, 1]], [[0, 6, 2]]), ('number in RTL text', [['R', 'AN', 'R'], [1, 1, 1]], [[0, 1, 1], [1, 2, 2], [2, 3, 1]]), ('number in LTR text', [['L', 'EN', 'L'], [0, 0, 0]], [[0, 1, 0], [1, 2, 2], [2, 3, 0]]), ('level two embedding', [['R', 'L'], [2, 2]], [[0, 1, 3], [1, 2, 2]]), ('control layout', [['R', 'AN', 'L'], [3, 3, 3]], [[0, 1, 3], [1, 3, 4]]), ('control layout', [['L', 'AN', 'R', 'R', 'R', 'L', 'EN'], [0, 0, 3, 3, 3, 0, 0]], [[0, 1, 0], [1, 2, 2], [2, 5, 3], [5, 6, 0], [6, 7, 2]])]]\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":"a9ae2ddfd7c24068387a9957f204791eb84342b5dba85bea254148ec9a294420","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    types, levels = x\n    out = []\n    for c, lv in zip(types, levels):\n        if lv % 2 == 0:\n            if c == 'R':\n                out.append(lv + 1)\n            elif c in ('AN', 'EN'):\n                out.append(lv + 2)\n            else:\n                out.append(lv)\n        else:\n            if c in ('L', 'EN', 'AN'):\n                out.append(lv + 1)\n            else:\n                out.append(lv)\n    runs = []\n    for i, lv in enumerate(out):\n        if runs and runs[-1][2] == lv:\n            runs[-1][1] = i + 1\n        else:\n            runs.append([i, i + 1, lv])\n    return runs\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('level two embedding', [['R', 'L'], [2, 2]], [[0, 1, 3], [1, 2, 2]]), ('regression: level parity test', [['AN', 'EN', 'L', 'R', 'L', 'L', 'AN', 'R', 'EN', 'EN', 'R', 'EN'], [3, 3, 3, 1, 1, 2, 2, 1, 1, 2, 2, 3]], [[0, 3, 4], [3, 4, 1], [4, 6, 2], [6, 7, 4], [7, 8, 1], [8, 9, 2], [9, 10, 4], [10, 11, 3], [11, 12, 4]]), ('regression: level parity test', [['EN', 'EN', 'L', 'R', 'AN', 'EN', 'R', 'R', 'AN'], [2, 2, 2, 2, 2, 3, 3, 3, 1]], [[0, 2, 4], [2, 3, 2], [3, 4, 3], [4, 6, 4], [6, 8, 3], [8, 9, 2]]), ('partial-repair probe', [['AN', 'AN', 'R', 'L', 'AN', 'L', 'EN', 'R'], [1, 3, 3, 3, 3, 1, 1, 1]], [[0, 1, 2], [1, 2, 4], [2, 3, 3], [3, 5, 4], [5, 7, 2], [7, 8, 1]]), ('number in RTL text', [['R', 'AN', 'R'], [1, 1, 1]], [[0, 1, 1], [1, 2, 2], [2, 3, 1]]), ('number in LTR text', [['L', 'EN', 'L'], [0, 0, 0]], [[0, 1, 0], [1, 2, 2], [2, 3, 0]]), ('control layout', [['EN', 'R', 'R', 'EN', 'L', 'AN'], [0, 0, 0, 0, 0, 0]], [[0, 1, 2], [1, 3, 1], [3, 4, 2], [4, 5, 0], [5, 6, 2]]), ('control layout', [['AN', 'AN', 'R', 'AN'], [0, 0, 0, 0]], [[0, 2, 2], [2, 3, 1], [3, 4, 2]])], [('regression: level parity test', [['EN', 'AN', 'AN', 'L', 'AN', 'EN', 'R'], [4, 2, 4, 4, 4, 2, 2]], [[0, 1, 6], [1, 2, 4], [2, 3, 6], [3, 4, 4], [4, 5, 6], [5, 6, 4], [6, 7, 3]]), ('regression: level parity test', [['R', 'L', 'R', 'EN', 'L', 'L', 'AN', 'L'], [2, 2, 1, 1, 0, 0, 0, 0]], [[0, 1, 3], [1, 2, 2], [2, 3, 1], [3, 4, 2], [4, 6, 0], [6, 7, 2], [7, 8, 0]]), ('regression: level parity test', [['R', 'AN', 'EN', 'AN'], [2, 2, 2, 2]], [[0, 1, 3], [1, 4, 4]]), ('regression: level parity test', [['L'], [2]], [[0, 1, 2]]), ('number in LTR text', [['L', 'EN', 'L'], [0, 0, 0]], [[0, 1, 0], [1, 2, 2], [2, 3, 0]]), ('number in RTL text', [['R', 'AN', 'R'], [1, 1, 1]], [[0, 1, 1], [1, 2, 2], [2, 3, 1]]), ('control layout', [['AN', 'AN', 'AN', 'EN', 'AN', 'AN', 'R', 'EN'], [3, 3, 3, 3, 0, 0, 0, 0]], [[0, 4, 4], [4, 6, 2], [6, 7, 1], [7, 8, 2]]), ('control layout', [['R'], [3]], [[0, 1, 3]])], [('regression: level parity test', [['L', 'EN', 'EN', 'EN', 'L', 'EN', 'L', 'R'], [2, 2, 2, 3, 3, 3, 2, 1]], [[0, 1, 2], [1, 6, 4], [6, 7, 2], [7, 8, 1]]), ('regression: level parity test', [['EN', 'L', 'AN', 'L', 'EN', 'EN', 'L'], [1, 1, 1, 2, 2, 4, 4]], [[0, 4, 2], [4, 5, 4], [5, 6, 6], [6, 7, 4]]), ('regression: level parity test', [['L', 'EN', 'AN', 'R', 'R', 'AN', 'AN', 'AN', 'EN', 'L'], [4, 4, 3, 3, 2, 1, 1, 4, 2, 2]], [[0, 1, 4], [1, 2, 6], [2, 3, 4], [3, 5, 3], [5, 7, 2], [7, 8, 6], [8, 9, 4], [9, 10, 2]]), ('regression: level parity test', [['R', 'R'], [4, 4]], [[0, 2, 5]]), ('number in RTL text', [['R', 'AN', 'R'], [1, 1, 1]], [[0, 1, 1], [1, 2, 2], [2, 3, 1]]), ('number in LTR text', [['L', 'EN', 'L'], [0, 0, 0]], [[0, 1, 0], [1, 2, 2], [2, 3, 0]]), ('control layout', [['R', 'AN', 'L'], [3, 3, 3]], [[0, 1, 3], [1, 3, 4]]), ('control layout', [['L', 'R', 'AN', 'AN'], [3, 3, 3, 3]], [[0, 1, 4], [1, 2, 3], [2, 4, 4]])], [('regression: level parity test', [['AN', 'R', 'EN', 'R', 'EN', 'EN', 'AN', 'AN'], [2, 2, 2, 2, 2, 2, 2, 2]], [[0, 1, 4], [1, 2, 3], [2, 3, 4], [3, 4, 3], [4, 8, 4]]), ('regression: level parity test', [['R', 'EN', 'AN', 'L', 'AN', 'L', 'EN', 'R', 'L', 'R', 'R'], [3, 4, 4, 4, 4, 2, 2, 4, 4, 4, 2]], [[0, 1, 3], [1, 3, 6], [3, 4, 4], [4, 5, 6], [5, 6, 2], [6, 7, 4], [7, 8, 5], [8, 9, 4], [9, 10, 5], [10, 11, 3]]), ('regression: level parity test', [['R', 'AN'], [2, 2]], [[0, 1, 3], [1, 2, 4]]), ('regression: level parity test', [['L', 'L', 'EN', 'L', 'L', 'L', 'L', 'AN', 'EN'], [2, 2, 3, 3, 3, 2, 3, 3, 3]], [[0, 2, 2], [2, 5, 4], [5, 6, 2], [6, 9, 4]]), ('number in LTR text', [['L', 'EN', 'L'], [0, 0, 0]], [[0, 1, 0], [1, 2, 2], [2, 3, 0]]), ('number in RTL text', [['R', 'AN', 'R'], [1, 1, 1]], [[0, 1, 1], [1, 2, 2], [2, 3, 1]]), ('control layout', [['R'], [3]], [[0, 1, 3]]), ('control layout', [['R', 'EN'], [0, 0]], [[0, 1, 1], [1, 2, 2]])], [('regression: level parity test', [['AN', 'L', 'AN', 'AN', 'EN', 'L', 'EN', 'L', 'R'], [4, 4, 2, 2, 1, 1, 1, 2, 2]], [[0, 1, 6], [1, 4, 4], [4, 8, 2], [8, 9, 3]]), ('regression: level parity test', [['R', 'L', 'EN', 'L', 'AN', 'AN'], [2, 2, 2, 2, 2, 1]], [[0, 1, 3], [1, 2, 2], [2, 3, 4], [3, 4, 2], [4, 5, 4], [5, 6, 2]]), ('partial-repair probe', [['EN', 'L', 'AN', 'AN', 'EN', 'EN'], [1, 1, 1, 0, 0, 1]], [[0, 6, 2]]), ('number in RTL text', [['R', 'AN', 'R'], [1, 1, 1]], [[0, 1, 1], [1, 2, 2], [2, 3, 1]]), ('number in LTR text', [['L', 'EN', 'L'], [0, 0, 0]], [[0, 1, 0], [1, 2, 2], [2, 3, 0]]), ('level two embedding', [['R', 'L'], [2, 2]], [[0, 1, 3], [1, 2, 2]]), ('control layout', [['R', 'AN', 'L'], [3, 3, 3]], [[0, 1, 3], [1, 3, 4]]), ('control layout', [['L', 'AN', 'R', 'R', 'R', 'L', 'EN'], [0, 0, 3, 3, 3, 0, 0]], [[0, 1, 0], [1, 2, 2], [2, 5, 3], [5, 6, 0], [6, 7, 2]])]]\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-implicit-levels-level-parity-test","generated_at":"2026-09-29T14:49:54.138698+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":"Test level parity with modulo two.","root_cause":"Only level 0 is considered even.","sha256":"b64b9d5d28b8bcf6f66d4db7f2448ef8531e994ac167a1a896712d74dcd4ffa4","title":"Implicit level runs: level parity test · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.861,"exit_code":1,"observations":[{"actual":[[0,1,2],[1,2,3]],"check":"level two embedding","expected":[[0,1,3],[1,2,2]],"passed":false},{"actual":[[0,3,4],[3,4,2],[4,5,1],[5,7,3],[7,8,2],[8,10,3],[10,11,2],[11,12,4]],"check":"regression: level parity test","expected":[[0,3,4],[3,4,1],[4,6,2],[6,7,4],[7,8,1],[8,9,2],[9,10,4],[10,11,3],[11,12,4]],"passed":false},{"actual":[[0,3,3],[3,4,2],[4,5,3],[5,6,4],[6,9,3]],"check":"regression: level parity test","expected":[[0,2,4],[2,3,2],[3,4,3],[4,6,4],[6,8,3],[8,9,2]],"passed":false},{"actual":[[0,1,3],[1,2,4],[2,3,3],[3,5,4],[5,6,1],[6,7,3],[7,8,2]],"check":"partial-repair probe","expected":[[0,1,2],[1,2,4],[2,3,3],[3,5,4],[5,7,2],[7,8,1]],"passed":false},{"actual":[[0,1,2],[1,2,3],[2,3,2]],"check":"number in RTL text","expected":[[0,1,1],[1,2,2],[2,3,1]],"passed":false},{"actual":[[0,1,0],[1,2,2],[2,3,0]],"check":"number in LTR text","expected":[[0,1,0],[1,2,2],[2,3,0]],"passed":true},{"actual":[[0,1,2],[1,3,1],[3,4,2],[4,5,0],[5,6,2]],"check":"control layout","expected":[[0,1,2],[1,3,1],[3,4,2],[4,5,0],[5,6,2]],"passed":true},{"actual":[[0,2,2],[2,3,1],[3,4,2]],"check":"control layout","expected":[[0,2,2],[2,3,1],[3,4,2]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"level two embedding\", \"actual\": [[0, 1, 2], [1, 2, 3]], \"expected\": [[0, 1, 3], [1, 2, 2]], \"passed\": false}, {\"check\": \"regression: level parity test\", \"actual\": [[0, 3, 4], [3, 4, 2], [4, 5, 1], [5, 7, 3], [7, 8, 2], [8, 10, 3], [10, 11, 2], [11, 12, 4]], \"expected\": [[0, 3, 4], [3, 4, 1], [4, 6, 2], [6, 7, 4], [7, 8, 1], [8, 9, 2], [9, 10, 4], [10, 11, 3], [11, 12, 4]], \"passed\": false}, {\"check\": \"regression: level parity test\", \"actual\": [[0, 3, 3], [3, 4, 2], [4, 5, 3], [5, 6, 4], [6, 9, 3]], \"expected\": [[0, 2, 4], [2, 3, 2], [3, 4, 3], [4, 6, 4], [6, 8, 3], [8, 9, 2]], \"passed\": false}, {\"check\": \"partial-repair probe\", \"actual\": [[0, 1, 3], [1, 2, 4], [2, 3, 3], [3, 5, 4], [5, 6, 1], [6, 7, 3], [7, 8, 2]], \"expected\": [[0, 1, 2], [1, 2, 4], [2, 3, 3], [3, 5, 4], [5, 7, 2], [7, 8, 1]], \"passed\": false}, {\"check\": \"number in RTL text\", \"actual\": [[0, 1, 2], [1, 2, 3], [2, 3, 2]], \"expected\": [[0, 1, 1], [1, 2, 2], [2, 3, 1]], \"passed\": false}, {\"check\": \"number in LTR text\", \"actual\": [[0, 1, 0], [1, 2, 2], [2, 3, 0]], \"expected\": [[0, 1, 0], [1, 2, 2], [2, 3, 0]], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [[0, 1, 2], [1, 3, 1], [3, 4, 2], [4, 5, 0], [5, 6, 2]], \"expected\": [[0, 1, 2], [1, 3, 1], [3, 4, 2], [4, 5, 0], [5, 6, 2]], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [[0, 2, 2], [2, 3, 1], [3, 4, 2]], \"expected\": [[0, 2, 2], [2, 3, 1], [3, 4, 2]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.301,"exit_code":1,"observations":[{"actual":[[0,1,2],[1,2,3]],"check":"level two embedding","expected":[[0,1,3],[1,2,2]],"passed":false},{"actual":[[0,3,4],[3,4,1],[4,5,2],[5,7,3],[7,8,1],[8,9,2],[9,10,3],[10,11,2],[11,12,4]],"check":"regression: level parity test","expected":[[0,3,4],[3,4,1],[4,6,2],[6,7,4],[7,8,1],[8,9,2],[9,10,4],[10,11,3],[11,12,4]],"passed":false},{"actual":[[0,3,3],[3,4,2],[4,5,3],[5,6,4],[6,8,3],[8,9,2]],"check":"regression: level parity test","expected":[[0,2,4],[2,3,2],[3,4,3],[4,6,4],[6,8,3],[8,9,2]],"passed":false},{"actual":[[0,1,2],[1,2,4],[2,3,3],[3,5,4],[5,7,2],[7,8,1]],"check":"partial-repair probe","expected":[[0,1,2],[1,2,4],[2,3,3],[3,5,4],[5,7,2],[7,8,1]],"passed":true},{"actual":[[0,1,1],[1,2,2],[2,3,1]],"check":"number in RTL text","expected":[[0,1,1],[1,2,2],[2,3,1]],"passed":true},{"actual":[[0,1,0],[1,2,2],[2,3,0]],"check":"number in LTR text","expected":[[0,1,0],[1,2,2],[2,3,0]],"passed":true},{"actual":[[0,1,2],[1,3,1],[3,4,2],[4,5,0],[5,6,2]],"check":"control layout","expected":[[0,1,2],[1,3,1],[3,4,2],[4,5,0],[5,6,2]],"passed":true},{"actual":[[0,2,2],[2,3,1],[3,4,2]],"check":"control layout","expected":[[0,2,2],[2,3,1],[3,4,2]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"level two embedding\", \"actual\": [[0, 1, 2], [1, 2, 3]], \"expected\": [[0, 1, 3], [1, 2, 2]], \"passed\": false}, {\"check\": \"regression: level parity test\", \"actual\": [[0, 3, 4], [3, 4, 1], [4, 5, 2], [5, 7, 3], [7, 8, 1], [8, 9, 2], [9, 10, 3], [10, 11, 2], [11, 12, 4]], \"expected\": [[0, 3, 4], [3, 4, 1], [4, 6, 2], [6, 7, 4], [7, 8, 1], [8, 9, 2], [9, 10, 4], [10, 11, 3], [11, 12, 4]], \"passed\": false}, {\"check\": \"regression: level parity test\", \"actual\": [[0, 3, 3], [3, 4, 2], [4, 5, 3], [5, 6, 4], [6, 8, 3], [8, 9, 2]], \"expected\": [[0, 2, 4], [2, 3, 2], [3, 4, 3], [4, 6, 4], [6, 8, 3], [8, 9, 2]], \"passed\": false}, {\"check\": \"partial-repair probe\", \"actual\": [[0, 1, 2], [1, 2, 4], [2, 3, 3], [3, 5, 4], [5, 7, 2], [7, 8, 1]], \"expected\": [[0, 1, 2], [1, 2, 4], [2, 3, 3], [3, 5, 4], [5, 7, 2], [7, 8, 1]], \"passed\": true}, {\"check\": \"number in RTL text\", \"actual\": [[0, 1, 1], [1, 2, 2], [2, 3, 1]], \"expected\": [[0, 1, 1], [1, 2, 2], [2, 3, 1]], \"passed\": true}, {\"check\": \"number in LTR text\", \"actual\": [[0, 1, 0], [1, 2, 2], [2, 3, 0]], \"expected\": [[0, 1, 0], [1, 2, 2], [2, 3, 0]], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [[0, 1, 2], [1, 3, 1], [3, 4, 2], [4, 5, 0], [5, 6, 2]], \"expected\": [[0, 1, 2], [1, 3, 1], [3, 4, 2], [4, 5, 0], [5, 6, 2]], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [[0, 2, 2], [2, 3, 1], [3, 4, 2]], \"expected\": [[0, 2, 2], [2, 3, 1], [3, 4, 2]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.77,"exit_code":0,"observations":[{"actual":[[0,1,3],[1,2,2]],"check":"level two embedding","expected":[[0,1,3],[1,2,2]],"passed":true},{"actual":[[0,3,4],[3,4,1],[4,6,2],[6,7,4],[7,8,1],[8,9,2],[9,10,4],[10,11,3],[11,12,4]],"check":"regression: level parity test","expected":[[0,3,4],[3,4,1],[4,6,2],[6,7,4],[7,8,1],[8,9,2],[9,10,4],[10,11,3],[11,12,4]],"passed":true},{"actual":[[0,2,4],[2,3,2],[3,4,3],[4,6,4],[6,8,3],[8,9,2]],"check":"regression: level parity test","expected":[[0,2,4],[2,3,2],[3,4,3],[4,6,4],[6,8,3],[8,9,2]],"passed":true},{"actual":[[0,1,2],[1,2,4],[2,3,3],[3,5,4],[5,7,2],[7,8,1]],"check":"partial-repair probe","expected":[[0,1,2],[1,2,4],[2,3,3],[3,5,4],[5,7,2],[7,8,1]],"passed":true},{"actual":[[0,1,1],[1,2,2],[2,3,1]],"check":"number in RTL text","expected":[[0,1,1],[1,2,2],[2,3,1]],"passed":true},{"actual":[[0,1,0],[1,2,2],[2,3,0]],"check":"number in LTR text","expected":[[0,1,0],[1,2,2],[2,3,0]],"passed":true},{"actual":[[0,1,2],[1,3,1],[3,4,2],[4,5,0],[5,6,2]],"check":"control layout","expected":[[0,1,2],[1,3,1],[3,4,2],[4,5,0],[5,6,2]],"passed":true},{"actual":[[0,2,2],[2,3,1],[3,4,2]],"check":"control layout","expected":[[0,2,2],[2,3,1],[3,4,2]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"level two embedding\", \"actual\": [[0, 1, 3], [1, 2, 2]], \"expected\": [[0, 1, 3], [1, 2, 2]], \"passed\": true}, {\"check\": \"regression: level parity test\", \"actual\": [[0, 3, 4], [3, 4, 1], [4, 6, 2], [6, 7, 4], [7, 8, 1], [8, 9, 2], [9, 10, 4], [10, 11, 3], [11, 12, 4]], \"expected\": [[0, 3, 4], [3, 4, 1], [4, 6, 2], [6, 7, 4], [7, 8, 1], [8, 9, 2], [9, 10, 4], [10, 11, 3], [11, 12, 4]], \"passed\": true}, {\"check\": \"regression: level parity test\", \"actual\": [[0, 2, 4], [2, 3, 2], [3, 4, 3], [4, 6, 4], [6, 8, 3], [8, 9, 2]], \"expected\": [[0, 2, 4], [2, 3, 2], [3, 4, 3], [4, 6, 4], [6, 8, 3], [8, 9, 2]], \"passed\": true}, {\"check\": \"partial-repair probe\", \"actual\": [[0, 1, 2], [1, 2, 4], [2, 3, 3], [3, 5, 4], [5, 7, 2], [7, 8, 1]], \"expected\": [[0, 1, 2], [1, 2, 4], [2, 3, 3], [3, 5, 4], [5, 7, 2], [7, 8, 1]], \"passed\": true}, {\"check\": \"number in RTL text\", \"actual\": [[0, 1, 1], [1, 2, 2], [2, 3, 1]], \"expected\": [[0, 1, 1], [1, 2, 2], [2, 3, 1]], \"passed\": true}, {\"check\": \"number in LTR text\", \"actual\": [[0, 1, 0], [1, 2, 2], [2, 3, 0]], \"expected\": [[0, 1, 0], [1, 2, 2], [2, 3, 0]], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [[0, 1, 2], [1, 3, 1], [3, 4, 2], [4, 5, 0], [5, 6, 2]], \"expected\": [[0, 1, 2], [1, 3, 1], [3, 4, 2], [4, 5, 0], [5, 6, 2]], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [[0, 2, 2], [2, 3, 1], [3, 4, 2]], \"expected\": [[0, 2, 2], [2, 3, 1], [3, 4, 2]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}