{"abstract":"Bracket pairs come back ordered by closing position.","category":"Bidirectional text layout","checks":8,"contract":"Input [text, classes, stack limit]. Only characters of class ON take part. Openers ( [ { are pushed; on overflow of the stack limit stop and keep pairs found so far. A closer searches the stack from the top for its opener; if found it pairs and discards that entry and everything above; otherwise it is ignored. Return pairs sorted by opener.","evaluation_group":"w2-bidirectional-text-layout-bracket-pairs","failed_approach":"Sorting by closer is still discovery order.","family":"w2-bidirectional-text-layout-bracket-pairs-pair-ordering","id":"FA-80591","implementations":{"attempt":{"sha256":"6f3c3d711a6e652130914fbfb918d30d4e6beade7a5338aa9ea3a8f3cd851023","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    text, classes, limit = x\n    OPEN = {'(': ')', '[': ']', '{': '}'}\n    CLOSE = {')', ']', '}'}\n    stack = []\n    pairs = []\n    for i, ch in enumerate(text):\n        if classes[i] != 'ON':\n            continue\n        if ch in OPEN:\n            if len(stack) >= limit:\n                break\n            stack.append((OPEN[ch], i))\n        elif ch in CLOSE:\n            for k in range(len(stack) - 1, -1, -1):\n                if stack[k][0] == ch:\n                    pairs.append([stack[k][1], i])\n                    del stack[k:]\n                    break\n    return sorted(pairs, key=lambda p: p[1])\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: pair ordering', [']({(}{()a}(})a', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'R', 'L', 'ON', 'ON', 'ON', 'R'], 4], [[1, 12], [2, 4], [5, 11]]), ('regression: pair ordering', ['{a([a)([()][)]', ['L', 'R', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 4], [[2, 5], [6, 12], [7, 10], [8, 9]]), ('regression: pair ordering', ['{[{)}((}(((', ['ON', 'ON', 'ON', 'R', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'ON'], 4], [[0, 7], [2, 4]]), ('regression: pair ordering', ['a}((())a{', ['R', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'R', 'L'], 4], [[2, 6], [3, 5]]), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('control layout', [')([((})}(a}{}(', ['ON', 'ON', 'ON', 'ON', 'R', 'ON', 'R', 'ON', 'ON', 'L', 'R', 'ON', 'ON', 'ON'], 2], []), ('control layout', ['({([[{{', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 1], [])], [('regression: pair ordering', [')]{(()}[[', ['R', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 4], [[2, 6], [4, 5]]), ('regression: pair ordering', ['((}}(){{){', ['ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 3], [[0, 8], [4, 5]]), ('regression: pair ordering', ['([)[{{}]}]({{', ['ON', 'R', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'R', 'ON', 'ON', 'L'], 2], [[0, 2], [4, 8], [5, 6]]), ('regression: pair ordering', ['a}((())a{', ['R', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'R', 'L'], 4], [[2, 6], [3, 5]]), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('control layout', ['((aa]{[(a{', ['R', 'ON', 'R', 'L', 'ON', 'ON', 'ON', 'R', 'R', 'ON'], 4], []), ('control layout', ['){}', ['ON', 'ON', 'L'], 2], [])], [('regression: pair ordering', ['))]{{])a{})}a)', ['ON', 'ON', 'R', 'R', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'R', 'ON'], 2], [[4, 11], [8, 9]]), ('regression: pair ordering', ['{[()}{]a', ['L', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'L'], 2], [[1, 6], [2, 3]]), ('regression: pair ordering', ['((][{]a{{)}', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'R', 'L', 'ON', 'R'], 4], [[1, 9], [3, 5]]), ('regression: pair ordering', [']({(}{()a}(})a', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'R', 'L', 'ON', 'ON', 'ON', 'R'], 4], [[1, 12], [2, 4], [5, 11]]), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('control layout', ['[[{({[}[)](', ['ON', 'ON', 'ON', 'ON', 'L', 'R', 'ON', 'ON', 'ON', 'ON', 'ON'], 1], []), ('control layout', ['a]]{)a((](a', ['R', 'ON', 'R', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'L'], 2], [])], [('regression: pair ordering', ['{(a)]]})a}(][[', ['ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'ON', 'ON'], 4], [[0, 6], [1, 3]]), ('regression: pair ordering', ['{a([a)([()][)]', ['L', 'R', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 4], [[2, 5], [6, 12], [7, 10], [8, 9]]), ('regression: pair ordering', ['((}}(){{){', ['ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 3], [[0, 8], [4, 5]]), ('regression: pair ordering', [')a{{a}]}({', ['L', 'L', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON'], 4], [[2, 7], [3, 5]]), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('control layout', ['()(}a}(', ['ON', 'ON', 'ON', 'ON', 'R', 'ON', 'ON'], 3], [[0, 1]]), ('control layout', ['(a)a(((()', ['ON', 'L', 'ON', 'R', 'ON', 'ON', 'ON', 'ON', 'ON'], 3], [[0, 2]])], [('regression: pair ordering', [')a{{a}]}({', ['L', 'L', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON'], 4], [[2, 7], [3, 5]]), ('regression: pair ordering', ['}[(]]([aa()(}]', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'ON', 'ON', 'ON', 'ON', 'ON'], 3], [[1, 3], [6, 13], [9, 10]]), ('regression: pair ordering', ['((}}(){{){', ['ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 3], [[0, 8], [4, 5]]), ('regression: pair ordering', [']({(}{()a}(})a', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'R', 'L', 'ON', 'ON', 'ON', 'R'], 4], [[1, 12], [2, 4], [5, 11]]), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('control layout', ['[[}{(](', ['R', 'ON', 'R', 'ON', 'L', 'ON', 'ON'], 4], [[1, 5]]), ('control layout', ['([(]}}))(}a(', ['L', 'R', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'R', 'ON'], 3], [[2, 6]])]]\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":"fda81e140977bdd95f92097cf90e732cba61dc4841cea3d28ef755c10a083b56","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    text, classes, limit = x\n    OPEN = {'(': ')', '[': ']', '{': '}'}\n    CLOSE = {')', ']', '}'}\n    stack = []\n    pairs = []\n    for i, ch in enumerate(text):\n        if classes[i] != 'ON':\n            continue\n        if ch in OPEN:\n            if len(stack) >= limit:\n                break\n            stack.append((OPEN[ch], i))\n        elif ch in CLOSE:\n            for k in range(len(stack) - 1, -1, -1):\n                if stack[k][0] == ch:\n                    pairs.append([stack[k][1], i])\n                    del stack[k:]\n                    break\n    return pairs\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: pair ordering', [']({(}{()a}(})a', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'R', 'L', 'ON', 'ON', 'ON', 'R'], 4], [[1, 12], [2, 4], [5, 11]]), ('regression: pair ordering', ['{a([a)([()][)]', ['L', 'R', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 4], [[2, 5], [6, 12], [7, 10], [8, 9]]), ('regression: pair ordering', ['{[{)}((}(((', ['ON', 'ON', 'ON', 'R', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'ON'], 4], [[0, 7], [2, 4]]), ('regression: pair ordering', ['a}((())a{', ['R', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'R', 'L'], 4], [[2, 6], [3, 5]]), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('control layout', [')([((})}(a}{}(', ['ON', 'ON', 'ON', 'ON', 'R', 'ON', 'R', 'ON', 'ON', 'L', 'R', 'ON', 'ON', 'ON'], 2], []), ('control layout', ['({([[{{', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 1], [])], [('regression: pair ordering', [')]{(()}[[', ['R', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 4], [[2, 6], [4, 5]]), ('regression: pair ordering', ['((}}(){{){', ['ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 3], [[0, 8], [4, 5]]), ('regression: pair ordering', ['([)[{{}]}]({{', ['ON', 'R', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'R', 'ON', 'ON', 'L'], 2], [[0, 2], [4, 8], [5, 6]]), ('regression: pair ordering', ['a}((())a{', ['R', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'R', 'L'], 4], [[2, 6], [3, 5]]), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('control layout', ['((aa]{[(a{', ['R', 'ON', 'R', 'L', 'ON', 'ON', 'ON', 'R', 'R', 'ON'], 4], []), ('control layout', ['){}', ['ON', 'ON', 'L'], 2], [])], [('regression: pair ordering', ['))]{{])a{})}a)', ['ON', 'ON', 'R', 'R', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'R', 'ON'], 2], [[4, 11], [8, 9]]), ('regression: pair ordering', ['{[()}{]a', ['L', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'L'], 2], [[1, 6], [2, 3]]), ('regression: pair ordering', ['((][{]a{{)}', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'R', 'L', 'ON', 'R'], 4], [[1, 9], [3, 5]]), ('regression: pair ordering', [']({(}{()a}(})a', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'R', 'L', 'ON', 'ON', 'ON', 'R'], 4], [[1, 12], [2, 4], [5, 11]]), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('control layout', ['[[{({[}[)](', ['ON', 'ON', 'ON', 'ON', 'L', 'R', 'ON', 'ON', 'ON', 'ON', 'ON'], 1], []), ('control layout', ['a]]{)a((](a', ['R', 'ON', 'R', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'L'], 2], [])], [('regression: pair ordering', ['{(a)]]})a}(][[', ['ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'ON', 'ON'], 4], [[0, 6], [1, 3]]), ('regression: pair ordering', ['{a([a)([()][)]', ['L', 'R', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 4], [[2, 5], [6, 12], [7, 10], [8, 9]]), ('regression: pair ordering', ['((}}(){{){', ['ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 3], [[0, 8], [4, 5]]), ('regression: pair ordering', [')a{{a}]}({', ['L', 'L', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON'], 4], [[2, 7], [3, 5]]), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('control layout', ['()(}a}(', ['ON', 'ON', 'ON', 'ON', 'R', 'ON', 'ON'], 3], [[0, 1]]), ('control layout', ['(a)a(((()', ['ON', 'L', 'ON', 'R', 'ON', 'ON', 'ON', 'ON', 'ON'], 3], [[0, 2]])], [('regression: pair ordering', [')a{{a}]}({', ['L', 'L', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON'], 4], [[2, 7], [3, 5]]), ('regression: pair ordering', ['}[(]]([aa()(}]', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'ON', 'ON', 'ON', 'ON', 'ON'], 3], [[1, 3], [6, 13], [9, 10]]), ('regression: pair ordering', ['((}}(){{){', ['ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 3], [[0, 8], [4, 5]]), ('regression: pair ordering', [']({(}{()a}(})a', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'R', 'L', 'ON', 'ON', 'ON', 'R'], 4], [[1, 12], [2, 4], [5, 11]]), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('control layout', ['[[}{(](', ['R', 'ON', 'R', 'ON', 'L', 'ON', 'ON'], 4], [[1, 5]]), ('control layout', ['([(]}}))(}a(', ['L', 'R', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'R', 'ON'], 3], [[2, 6]])]]\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":"a4a7db39414bd6caef31a9f50686c2ec2d929a8bad05d86452413759d4d0b49f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    text, classes, limit = x\n    OPEN = {'(': ')', '[': ']', '{': '}'}\n    CLOSE = {')', ']', '}'}\n    stack = []\n    pairs = []\n    for i, ch in enumerate(text):\n        if classes[i] != 'ON':\n            continue\n        if ch in OPEN:\n            if len(stack) >= limit:\n                break\n            stack.append((OPEN[ch], i))\n        elif ch in CLOSE:\n            for k in range(len(stack) - 1, -1, -1):\n                if stack[k][0] == ch:\n                    pairs.append([stack[k][1], i])\n                    del stack[k:]\n                    break\n    return sorted(pairs)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: pair ordering', [']({(}{()a}(})a', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'R', 'L', 'ON', 'ON', 'ON', 'R'], 4], [[1, 12], [2, 4], [5, 11]]), ('regression: pair ordering', ['{a([a)([()][)]', ['L', 'R', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 4], [[2, 5], [6, 12], [7, 10], [8, 9]]), ('regression: pair ordering', ['{[{)}((}(((', ['ON', 'ON', 'ON', 'R', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'ON'], 4], [[0, 7], [2, 4]]), ('regression: pair ordering', ['a}((())a{', ['R', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'R', 'L'], 4], [[2, 6], [3, 5]]), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('control layout', [')([((})}(a}{}(', ['ON', 'ON', 'ON', 'ON', 'R', 'ON', 'R', 'ON', 'ON', 'L', 'R', 'ON', 'ON', 'ON'], 2], []), ('control layout', ['({([[{{', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 1], [])], [('regression: pair ordering', [')]{(()}[[', ['R', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 4], [[2, 6], [4, 5]]), ('regression: pair ordering', ['((}}(){{){', ['ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 3], [[0, 8], [4, 5]]), ('regression: pair ordering', ['([)[{{}]}]({{', ['ON', 'R', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'R', 'ON', 'ON', 'L'], 2], [[0, 2], [4, 8], [5, 6]]), ('regression: pair ordering', ['a}((())a{', ['R', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'R', 'L'], 4], [[2, 6], [3, 5]]), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('control layout', ['((aa]{[(a{', ['R', 'ON', 'R', 'L', 'ON', 'ON', 'ON', 'R', 'R', 'ON'], 4], []), ('control layout', ['){}', ['ON', 'ON', 'L'], 2], [])], [('regression: pair ordering', ['))]{{])a{})}a)', ['ON', 'ON', 'R', 'R', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'R', 'ON'], 2], [[4, 11], [8, 9]]), ('regression: pair ordering', ['{[()}{]a', ['L', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'L'], 2], [[1, 6], [2, 3]]), ('regression: pair ordering', ['((][{]a{{)}', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'R', 'L', 'ON', 'R'], 4], [[1, 9], [3, 5]]), ('regression: pair ordering', [']({(}{()a}(})a', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'R', 'L', 'ON', 'ON', 'ON', 'R'], 4], [[1, 12], [2, 4], [5, 11]]), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('control layout', ['[[{({[}[)](', ['ON', 'ON', 'ON', 'ON', 'L', 'R', 'ON', 'ON', 'ON', 'ON', 'ON'], 1], []), ('control layout', ['a]]{)a((](a', ['R', 'ON', 'R', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'L'], 2], [])], [('regression: pair ordering', ['{(a)]]})a}(][[', ['ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'ON', 'ON'], 4], [[0, 6], [1, 3]]), ('regression: pair ordering', ['{a([a)([()][)]', ['L', 'R', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 4], [[2, 5], [6, 12], [7, 10], [8, 9]]), ('regression: pair ordering', ['((}}(){{){', ['ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 3], [[0, 8], [4, 5]]), ('regression: pair ordering', [')a{{a}]}({', ['L', 'L', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON'], 4], [[2, 7], [3, 5]]), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('control layout', ['()(}a}(', ['ON', 'ON', 'ON', 'ON', 'R', 'ON', 'ON'], 3], [[0, 1]]), ('control layout', ['(a)a(((()', ['ON', 'L', 'ON', 'R', 'ON', 'ON', 'ON', 'ON', 'ON'], 3], [[0, 2]])], [('regression: pair ordering', [')a{{a}]}({', ['L', 'L', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON'], 4], [[2, 7], [3, 5]]), ('regression: pair ordering', ['}[(]]([aa()(}]', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'ON', 'ON', 'ON', 'ON', 'ON'], 3], [[1, 3], [6, 13], [9, 10]]), ('regression: pair ordering', ['((}}(){{){', ['ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 3], [[0, 8], [4, 5]]), ('regression: pair ordering', [']({(}{()a}(})a', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'R', 'L', 'ON', 'ON', 'ON', 'R'], 4], [[1, 12], [2, 4], [5, 11]]), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('control layout', ['[[}{(](', ['R', 'ON', 'R', 'ON', 'L', 'ON', 'ON'], 4], [[1, 5]]), ('control layout', ['([(]}}))(}a(', ['L', 'R', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'R', 'ON'], 3], [[2, 6]])]]\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-bracket-pairs-pair-ordering","generated_at":"2026-09-29T14:49:55.430010+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":"Sort pairs by opener position.","root_cause":"The pair list is returned in discovery order.","sha256":"dac384a04c0d1a50115346959c8b41a31f0ed8117d605c6fea128193c99b5682","title":"Bracket pair identification: pair ordering · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.275,"exit_code":1,"observations":[{"actual":[[2,4],[5,11],[1,12]],"check":"regression: pair ordering","expected":[[1,12],[2,4],[5,11]],"passed":false},{"actual":[[2,5],[8,9],[7,10],[6,12]],"check":"regression: pair ordering","expected":[[2,5],[6,12],[7,10],[8,9]],"passed":false},{"actual":[[2,4],[0,7]],"check":"regression: pair ordering","expected":[[0,7],[2,4]],"passed":false},{"actual":[[3,5],[2,6]],"check":"regression: pair ordering","expected":[[2,6],[3,5]],"passed":false},{"actual":[],"check":"overridden bracket ignored","expected":[],"passed":true},{"actual":[],"check":"stack overflow stops","expected":[],"passed":true},{"actual":[],"check":"control layout","expected":[],"passed":true},{"actual":[],"check":"control layout","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: pair ordering\", \"actual\": [[2, 4], [5, 11], [1, 12]], \"expected\": [[1, 12], [2, 4], [5, 11]], \"passed\": false}, {\"check\": \"regression: pair ordering\", \"actual\": [[2, 5], [8, 9], [7, 10], [6, 12]], \"expected\": [[2, 5], [6, 12], [7, 10], [8, 9]], \"passed\": false}, {\"check\": \"regression: pair ordering\", \"actual\": [[2, 4], [0, 7]], \"expected\": [[0, 7], [2, 4]], \"passed\": false}, {\"check\": \"regression: pair ordering\", \"actual\": [[3, 5], [2, 6]], \"expected\": [[2, 6], [3, 5]], \"passed\": false}, {\"check\": \"overridden bracket ignored\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"stack overflow stops\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.396,"exit_code":1,"observations":[{"actual":[[2,4],[5,11],[1,12]],"check":"regression: pair ordering","expected":[[1,12],[2,4],[5,11]],"passed":false},{"actual":[[2,5],[8,9],[7,10],[6,12]],"check":"regression: pair ordering","expected":[[2,5],[6,12],[7,10],[8,9]],"passed":false},{"actual":[[2,4],[0,7]],"check":"regression: pair ordering","expected":[[0,7],[2,4]],"passed":false},{"actual":[[3,5],[2,6]],"check":"regression: pair ordering","expected":[[2,6],[3,5]],"passed":false},{"actual":[],"check":"overridden bracket ignored","expected":[],"passed":true},{"actual":[],"check":"stack overflow stops","expected":[],"passed":true},{"actual":[],"check":"control layout","expected":[],"passed":true},{"actual":[],"check":"control layout","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: pair ordering\", \"actual\": [[2, 4], [5, 11], [1, 12]], \"expected\": [[1, 12], [2, 4], [5, 11]], \"passed\": false}, {\"check\": \"regression: pair ordering\", \"actual\": [[2, 5], [8, 9], [7, 10], [6, 12]], \"expected\": [[2, 5], [6, 12], [7, 10], [8, 9]], \"passed\": false}, {\"check\": \"regression: pair ordering\", \"actual\": [[2, 4], [0, 7]], \"expected\": [[0, 7], [2, 4]], \"passed\": false}, {\"check\": \"regression: pair ordering\", \"actual\": [[3, 5], [2, 6]], \"expected\": [[2, 6], [3, 5]], \"passed\": false}, {\"check\": \"overridden bracket ignored\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"stack overflow stops\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.45,"exit_code":0,"observations":[{"actual":[[1,12],[2,4],[5,11]],"check":"regression: pair ordering","expected":[[1,12],[2,4],[5,11]],"passed":true},{"actual":[[2,5],[6,12],[7,10],[8,9]],"check":"regression: pair ordering","expected":[[2,5],[6,12],[7,10],[8,9]],"passed":true},{"actual":[[0,7],[2,4]],"check":"regression: pair ordering","expected":[[0,7],[2,4]],"passed":true},{"actual":[[2,6],[3,5]],"check":"regression: pair ordering","expected":[[2,6],[3,5]],"passed":true},{"actual":[],"check":"overridden bracket ignored","expected":[],"passed":true},{"actual":[],"check":"stack overflow stops","expected":[],"passed":true},{"actual":[],"check":"control layout","expected":[],"passed":true},{"actual":[],"check":"control layout","expected":[],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: pair ordering\", \"actual\": [[1, 12], [2, 4], [5, 11]], \"expected\": [[1, 12], [2, 4], [5, 11]], \"passed\": true}, {\"check\": \"regression: pair ordering\", \"actual\": [[2, 5], [6, 12], [7, 10], [8, 9]], \"expected\": [[2, 5], [6, 12], [7, 10], [8, 9]], \"passed\": true}, {\"check\": \"regression: pair ordering\", \"actual\": [[0, 7], [2, 4]], \"expected\": [[0, 7], [2, 4]], \"passed\": true}, {\"check\": \"regression: pair ordering\", \"actual\": [[2, 6], [3, 5]], \"expected\": [[2, 6], [3, 5]], \"passed\": true}, {\"check\": \"overridden bracket ignored\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"stack overflow stops\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}