{"abstract":"The run after a PDI appears twice: joined and as its own sequence.","category":"Bidirectional text layout","checks":8,"contract":"Input [classes, levels, paragraph level]. Split into maximal level runs; chain a run ending in a matched isolate initiator (LRI/RLI/FSI) with the run starting at its matching PDI (stack matching; unmatched PDI ignored). For each sequence sos = parity of max(level of first char, level of preceding char or paragraph level); eos = parity of max(level of last char, level of following char or paragraph level), using the paragraph level when the last char is an isolate initiator. Return [[indices, sos, eos]].","evaluation_group":"w2-bidirectional-text-layout-isolating-sequences","failed_approach":"Marking the run end instead of its start does not prevent the duplicate.","family":"w2-bidirectional-text-layout-isolating-sequences-chained-run-bookkeeping","id":"FA-80766","implementations":{"attempt":{"sha256":"81b3680f755ebe41ef91172ec020a42d95c3ba714ea7493f6ada46905f0fb590","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    classes, levels, para = x\n    n = len(classes)\n    match = {}\n    stack = []\n    for i, c in enumerate(classes):\n        if c in ('LRI', 'RLI', 'FSI'):\n            stack.append(i)\n        elif c == 'PDI' and stack:\n            match[stack.pop()] = i\n    runs = []\n    for i in range(n):\n        if runs and levels[i] == levels[runs[-1][-1]]:\n            runs[-1].append(i)\n        else:\n            runs.append([i])\n    start_of = {r[0]: r for r in runs}\n    seqs = []\n    used = set()\n    for r in runs:\n        if r[0] in used:\n            continue\n        seq = list(r)\n        used.add(r[0])\n        while True:\n            tail = seq[-1]\n            if classes[tail] not in ('LRI', 'RLI', 'FSI') or tail not in match:\n                break\n            nxt = start_of.get(match[tail])\n            if nxt is None:\n                break\n            seq.extend(nxt)\n            used.add(nxt[-1])\n        seqs.append(seq)\n    out = []\n    for seq in seqs:\n        first, last = seq[0], seq[-1]\n        lv = levels[first]\n        prev = levels[first - 1] if first > 0 else para\n        sos = 'R' if max(lv, prev) % 2 else 'L'\n        if classes[last] in ('LRI', 'RLI', 'FSI'):\n            nxt_lv = para\n        else:\n            nxt_lv = levels[last + 1] if last + 1 < n else para\n        eos = 'R' if max(levels[last], nxt_lv) % 2 else 'L'\n        out.append([seq, sos, eos])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('isolate joins outer run', [['L', 'RLI', 'R', 'PDI', 'L'], [0, 0, 1, 0, 0], 0], [[[0, 1, 3, 4], 'L', 'L'], [[2], 'R', 'R']]), ('regression: chained run bookkeeping', [['L', 'FSI', 'LRI', 'ON', 'R', 'PDI', 'LRI', 'ON'], [2, 1, 2, 4, 4, 2, 2, 4], 1], [[[0], 'L', 'L'], [[1], 'L', 'R'], [[2, 5, 6], 'L', 'L'], [[3, 4], 'L', 'L'], [[7], 'L', 'L']]), ('regression: chained run bookkeeping', [['EN', 'PDI', 'FSI', 'LRI', 'L', 'L', 'LRI', 'ON', 'PDI', 'R', 'L', 'EN', 'L', 'R'], [1, 1, 1, 2, 4, 4, 4, 6, 4, 4, 4, 4, 4, 5], 1], [[[0, 1, 2], 'R', 'R'], [[3], 'L', 'L'], [[4, 5, 6, 8, 9, 10, 11, 12], 'L', 'R'], [[7], 'L', 'L'], [[13], 'R', 'R']]), ('nested isolates', [['R', 'LRI', 'L', 'RLI', 'R', 'PDI', 'PDI', 'R'], [1, 1, 2, 2, 3, 2, 1, 1], 1], [[[0, 1, 6, 7], 'R', 'R'], [[2, 3, 5], 'L', 'L'], [[4], 'R', 'R']]), ('unmatched initiator at end', [['L', 'R', 'RLI'], [0, 1, 1], 0], [[[0], 'L', 'R'], [[1, 2], 'R', 'R']]), ('control layout', [['R', 'R', 'PDI', 'PDI'], [1, 1, 1, 1], 1], [[[0, 1, 2, 3], 'R', 'R']]), ('control layout', [['EN', 'PDI', 'RLI', 'L', 'LRI', 'LRI', 'L', 'R', 'L'], [0, 0, 0, 1, 1, 2, 4, 4, 4], 0], [[[0, 1, 2], 'L', 'L'], [[3, 4], 'R', 'R'], [[5], 'L', 'L'], [[6, 7, 8], 'L', 'L']]), ('control layout', [['L', 'PDI', 'R', 'L', 'PDI', 'PDI', 'R', 'RLI'], [0, 0, 1, 0, 0, 0, 1, 0], 0], [[[0, 1], 'L', 'R'], [[2], 'R', 'R'], [[3, 4, 5], 'R', 'R'], [[6], 'R', 'R'], [[7], 'R', 'L']])], [('regression: chained run bookkeeping', [['EN', 'FSI', 'R', 'R', 'R', 'ON', 'PDI', 'ON'], [0, 0, 3, 2, 3, 2, 0, 0], 0], [[[0, 1, 6, 7], 'L', 'L'], [[2], 'R', 'R'], [[3], 'R', 'R'], [[4], 'R', 'R'], [[5], 'R', 'L']]), ('regression: chained run bookkeeping', [['L', 'L', 'PDI', 'ON', 'L', 'LRI', 'EN', 'EN', 'R', 'R', 'R', 'PDI', 'RLI', 'FSI'], [1, 2, 1, 1, 2, 1, 2, 2, 2, 3, 2, 1, 1, 3], 1], [[[0], 'R', 'L'], [[1], 'L', 'L'], [[2, 3], 'L', 'L'], [[4], 'L', 'L'], [[5, 11, 12], 'L', 'R'], [[6, 7, 8], 'L', 'R'], [[9], 'R', 'R'], [[10], 'R', 'L'], [[13], 'R', 'R']]), ('regression: chained run bookkeeping', [['RLI', 'FSI', 'RLI', 'EN', 'PDI', 'PDI', 'FSI', 'R', 'L'], [1, 3, 4, 5, 4, 3, 3, 5, 4], 1], [[[0], 'R', 'R'], [[1, 5, 6], 'R', 'R'], [[2, 4], 'L', 'L'], [[3], 'R', 'R'], [[7], 'R', 'R'], [[8], 'R', 'L']]), ('regression: chained run bookkeeping', [['PDI', 'RLI', 'L', 'L', 'EN', 'L', 'PDI', 'PDI', 'L', 'ON', 'R', 'FSI'], [1, 1, 3, 3, 4, 4, 1, 1, 2, 1, 1, 1], 1], [[[0, 1, 6, 7], 'R', 'L'], [[2, 3], 'R', 'L'], [[4, 5], 'L', 'L'], [[8], 'L', 'L'], [[9, 10, 11], 'L', 'R']]), ('isolate joins outer run', [['L', 'RLI', 'R', 'PDI', 'L'], [0, 0, 1, 0, 0], 0], [[[0, 1, 3, 4], 'L', 'L'], [[2], 'R', 'R']]), ('unmatched initiator at end', [['L', 'R', 'RLI'], [0, 1, 1], 0], [[[0], 'L', 'R'], [[1, 2], 'R', 'R']]), ('control layout', [['L', 'PDI', 'L', 'EN', 'L', 'PDI'], [0, 0, 0, 0, 0, 0], 0], [[[0, 1, 2, 3, 4, 5], 'L', 'L']]), ('control layout', [['L', 'L', 'EN', 'R', 'R', 'PDI', 'ON', 'L', 'R', 'ON', 'EN'], [1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2], 1], [[[0, 1, 2, 3, 4, 5, 6], 'R', 'L'], [[7], 'L', 'L'], [[8, 9], 'L', 'L'], [[10], 'L', 'L']])], [('regression: chained run bookkeeping', [['LRI', 'L', 'ON', 'ON', 'RLI', 'EN', 'EN', 'PDI'], [1, 2, 2, 2, 2, 3, 4, 2], 1], [[[0], 'R', 'R'], [[1, 2, 3, 4, 7], 'L', 'L'], [[5], 'R', 'L'], [[6], 'L', 'L']]), ('regression: chained run bookkeeping', [['RLI', 'RLI', 'R', 'PDI', 'EN', 'R', 'ON', 'PDI', 'L', 'L', 'EN', 'L', 'L'], [0, 1, 3, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0], 0], [[[0, 7, 8, 9, 10, 11, 12], 'L', 'L'], [[1, 3, 4, 5, 6], 'R', 'R'], [[2], 'R', 'R']]), ('regression: chained run bookkeeping', [['L', 'ON', 'PDI', 'L', 'R', 'PDI', 'EN', 'ON', 'ON', 'LRI', 'L', 'ON', 'PDI', 'FSI'], [2, 1, 1, 2, 1, 1, 2, 1, 1, 1, 2, 2, 1, 1], 1], [[[0], 'L', 'L'], [[1, 2], 'L', 'L'], [[3], 'L', 'L'], [[4, 5], 'L', 'L'], [[6], 'L', 'L'], [[7, 8, 9, 12, 13], 'L', 'R'], [[10, 11], 'L', 'L']]), ('regression: chained run bookkeeping', [['FSI', 'ON', 'EN', 'R', 'PDI', 'L', 'L', 'EN'], [0, 2, 2, 3, 0, 0, 0, 0], 0], [[[0, 4, 5, 6, 7], 'L', 'L'], [[1, 2], 'L', 'R'], [[3], 'R', 'R']]), ('isolate joins outer run', [['L', 'RLI', 'R', 'PDI', 'L'], [0, 0, 1, 0, 0], 0], [[[0, 1, 3, 4], 'L', 'L'], [[2], 'R', 'R']]), ('nested isolates', [['R', 'LRI', 'L', 'RLI', 'R', 'PDI', 'PDI', 'R'], [1, 1, 2, 2, 3, 2, 1, 1], 1], [[[0, 1, 6, 7], 'R', 'R'], [[2, 3, 5], 'L', 'L'], [[4], 'R', 'R']]), ('control layout', [['ON', 'R', 'PDI', 'ON', 'EN', 'RLI', 'L', 'LRI', 'ON'], [0, 1, 0, 0, 0, 0, 2, 1, 2], 0], [[[0], 'L', 'R'], [[1], 'R', 'R'], [[2, 3, 4, 5], 'R', 'L'], [[6], 'L', 'L'], [[7], 'L', 'R'], [[8], 'L', 'L']]), ('control layout', [['EN', 'PDI', 'R', 'EN', 'EN', 'ON', 'FSI'], [0, 0, 1, 0, 0, 0, 0], 0], [[[0, 1], 'L', 'R'], [[2], 'R', 'R'], [[3, 4, 5, 6], 'R', 'L']])], [('regression: chained run bookkeeping', [['R', 'L', 'LRI', 'EN', 'PDI', 'PDI', 'PDI', 'R'], [1, 2, 1, 2, 1, 1, 1, 1], 1], [[[0], 'R', 'L'], [[1], 'L', 'L'], [[2, 4, 5, 6, 7], 'L', 'R'], [[3], 'L', 'L']]), ('regression: chained run bookkeeping', [['ON', 'FSI', 'R', 'LRI', 'R', 'FSI', 'PDI', 'PDI'], [1, 1, 2, 2, 5, 4, 4, 2], 1], [[[0, 1], 'R', 'R'], [[2, 3, 7], 'L', 'L'], [[4], 'R', 'R'], [[5, 6], 'R', 'L']]), ('regression: chained run bookkeeping', [['FSI', 'FSI', 'FSI', 'PDI', 'LRI', 'PDI', 'LRI', 'R', 'ON', 'PDI', 'FSI', 'EN', 'PDI', 'EN'], [1, 2, 4, 4, 4, 4, 4, 7, 6, 4, 4, 6, 4, 4], 1], [[[0], 'R', 'R'], [[1], 'L', 'L'], [[2, 3, 4, 5, 6, 9, 10, 12, 13], 'L', 'L'], [[7], 'R', 'R'], [[8], 'R', 'L'], [[11], 'L', 'L']]), ('regression: chained run bookkeeping', [['L', 'LRI', 'FSI', 'L', 'RLI', 'PDI', 'L', 'ON', 'PDI', 'R', 'R'], [1, 1, 2, 4, 4, 4, 4, 4, 2, 2, 3], 1], [[[0, 1], 'R', 'R'], [[2, 8, 9], 'L', 'R'], [[3, 4, 5, 6, 7], 'L', 'L'], [[10], 'R', 'R']]), ('isolate joins outer run', [['L', 'RLI', 'R', 'PDI', 'L'], [0, 0, 1, 0, 0], 0], [[[0, 1, 3, 4], 'L', 'L'], [[2], 'R', 'R']]), ('nested isolates', [['R', 'LRI', 'L', 'RLI', 'R', 'PDI', 'PDI', 'R'], [1, 1, 2, 2, 3, 2, 1, 1], 1], [[[0, 1, 6, 7], 'R', 'R'], [[2, 3, 5], 'L', 'L'], [[4], 'R', 'R']]), ('control layout', [['ON', 'L', 'PDI', 'FSI', 'EN', 'RLI', 'EN'], [1, 2, 1, 1, 2, 2, 3], 1], [[[0], 'R', 'L'], [[1], 'L', 'L'], [[2, 3], 'L', 'R'], [[4, 5], 'L', 'L'], [[6], 'R', 'R']]), ('control layout', [['ON', 'PDI', 'ON', 'ON', 'RLI', 'EN', 'R', 'R'], [0, 0, 0, 0, 0, 2, 1, 1], 0], [[[0, 1, 2, 3, 4], 'L', 'L'], [[5], 'L', 'L'], [[6, 7], 'L', 'R']])], [('regression: chained run bookkeeping', [['ON', 'PDI', 'L', 'PDI', 'L', 'RLI', 'EN', 'PDI', 'LRI', 'EN', 'FSI'], [0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2], 0], [[[0, 1, 2, 3, 4, 5, 7, 8], 'L', 'L'], [[6], 'L', 'L'], [[9, 10], 'L', 'L']]), ('regression: chained run bookkeeping', [['R', 'R', 'RLI', 'L', 'PDI', 'ON', 'L', 'EN', 'L', 'EN', 'L'], [0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0], 0], [[[0], 'L', 'R'], [[1], 'R', 'R'], [[2, 4, 5, 6, 7, 8, 9, 10], 'R', 'L'], [[3], 'L', 'L']]), ('regression: chained run bookkeeping', [['FSI', 'R', 'RLI', 'L', 'LRI', 'R', 'PDI', 'RLI', 'EN', 'PDI'], [1, 3, 2, 4, 3, 5, 3, 3, 5, 3], 1], [[[0], 'R', 'R'], [[1], 'R', 'R'], [[2], 'R', 'L'], [[3], 'L', 'L'], [[4, 6, 7, 9], 'L', 'R'], [[5], 'R', 'R'], [[8], 'R', 'R']]), ('regression: chained run bookkeeping', [['RLI', 'RLI', 'L', 'RLI', 'EN', 'PDI', 'EN', 'PDI', 'PDI', 'EN', 'PDI', 'R'], [0, 1, 4, 3, 6, 3, 3, 1, 0, 0, 0, 1], 0], [[[0, 8, 9, 10], 'L', 'R'], [[1, 7], 'R', 'R'], [[2], 'L', 'L'], [[3, 5, 6], 'L', 'R'], [[4], 'L', 'L'], [[11], 'R', 'R']]), ('unmatched initiator at end', [['L', 'R', 'RLI'], [0, 1, 1], 0], [[[0], 'L', 'R'], [[1, 2], 'R', 'R']]), ('isolate joins outer run', [['L', 'RLI', 'R', 'PDI', 'L'], [0, 0, 1, 0, 0], 0], [[[0, 1, 3, 4], 'L', 'L'], [[2], 'R', 'R']]), ('control layout', [['ON', 'EN', 'PDI', 'L'], [1, 2, 1, 1], 1], [[[0], 'R', 'L'], [[1], 'L', 'L'], [[2, 3], 'L', 'R']]), ('control layout', [['LRI', 'PDI', 'PDI', 'R', 'R', 'PDI', 'EN', 'LRI', 'EN', 'FSI'], [0, 0, 0, 1, 1, 0, 0, 0, 2, 2], 0], [[[0, 1, 2], 'L', 'R'], [[3, 4], 'R', 'R'], [[5, 6, 7], 'R', 'L'], [[8, 9], 'L', 'L']])]]\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":"02a30ecefaf7736bccebc1bbbc35d4b83138211335c9221996a8ba7906b391ee","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    classes, levels, para = x\n    n = len(classes)\n    match = {}\n    stack = []\n    for i, c in enumerate(classes):\n        if c in ('LRI', 'RLI', 'FSI'):\n            stack.append(i)\n        elif c == 'PDI' and stack:\n            match[stack.pop()] = i\n    runs = []\n    for i in range(n):\n        if runs and levels[i] == levels[runs[-1][-1]]:\n            runs[-1].append(i)\n        else:\n            runs.append([i])\n    start_of = {r[0]: r for r in runs}\n    seqs = []\n    used = set()\n    for r in runs:\n        if r[0] in used:\n            continue\n        seq = list(r)\n        used.add(r[0])\n        while True:\n            tail = seq[-1]\n            if classes[tail] not in ('LRI', 'RLI', 'FSI') or tail not in match:\n                break\n            nxt = start_of.get(match[tail])\n            if nxt is None:\n                break\n            seq.extend(nxt)\n        seqs.append(seq)\n    out = []\n    for seq in seqs:\n        first, last = seq[0], seq[-1]\n        lv = levels[first]\n        prev = levels[first - 1] if first > 0 else para\n        sos = 'R' if max(lv, prev) % 2 else 'L'\n        if classes[last] in ('LRI', 'RLI', 'FSI'):\n            nxt_lv = para\n        else:\n            nxt_lv = levels[last + 1] if last + 1 < n else para\n        eos = 'R' if max(levels[last], nxt_lv) % 2 else 'L'\n        out.append([seq, sos, eos])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('isolate joins outer run', [['L', 'RLI', 'R', 'PDI', 'L'], [0, 0, 1, 0, 0], 0], [[[0, 1, 3, 4], 'L', 'L'], [[2], 'R', 'R']]), ('regression: chained run bookkeeping', [['L', 'FSI', 'LRI', 'ON', 'R', 'PDI', 'LRI', 'ON'], [2, 1, 2, 4, 4, 2, 2, 4], 1], [[[0], 'L', 'L'], [[1], 'L', 'R'], [[2, 5, 6], 'L', 'L'], [[3, 4], 'L', 'L'], [[7], 'L', 'L']]), ('regression: chained run bookkeeping', [['EN', 'PDI', 'FSI', 'LRI', 'L', 'L', 'LRI', 'ON', 'PDI', 'R', 'L', 'EN', 'L', 'R'], [1, 1, 1, 2, 4, 4, 4, 6, 4, 4, 4, 4, 4, 5], 1], [[[0, 1, 2], 'R', 'R'], [[3], 'L', 'L'], [[4, 5, 6, 8, 9, 10, 11, 12], 'L', 'R'], [[7], 'L', 'L'], [[13], 'R', 'R']]), ('nested isolates', [['R', 'LRI', 'L', 'RLI', 'R', 'PDI', 'PDI', 'R'], [1, 1, 2, 2, 3, 2, 1, 1], 1], [[[0, 1, 6, 7], 'R', 'R'], [[2, 3, 5], 'L', 'L'], [[4], 'R', 'R']]), ('unmatched initiator at end', [['L', 'R', 'RLI'], [0, 1, 1], 0], [[[0], 'L', 'R'], [[1, 2], 'R', 'R']]), ('control layout', [['R', 'R', 'PDI', 'PDI'], [1, 1, 1, 1], 1], [[[0, 1, 2, 3], 'R', 'R']]), ('control layout', [['EN', 'PDI', 'RLI', 'L', 'LRI', 'LRI', 'L', 'R', 'L'], [0, 0, 0, 1, 1, 2, 4, 4, 4], 0], [[[0, 1, 2], 'L', 'L'], [[3, 4], 'R', 'R'], [[5], 'L', 'L'], [[6, 7, 8], 'L', 'L']]), ('control layout', [['L', 'PDI', 'R', 'L', 'PDI', 'PDI', 'R', 'RLI'], [0, 0, 1, 0, 0, 0, 1, 0], 0], [[[0, 1], 'L', 'R'], [[2], 'R', 'R'], [[3, 4, 5], 'R', 'R'], [[6], 'R', 'R'], [[7], 'R', 'L']])], [('regression: chained run bookkeeping', [['EN', 'FSI', 'R', 'R', 'R', 'ON', 'PDI', 'ON'], [0, 0, 3, 2, 3, 2, 0, 0], 0], [[[0, 1, 6, 7], 'L', 'L'], [[2], 'R', 'R'], [[3], 'R', 'R'], [[4], 'R', 'R'], [[5], 'R', 'L']]), ('regression: chained run bookkeeping', [['L', 'L', 'PDI', 'ON', 'L', 'LRI', 'EN', 'EN', 'R', 'R', 'R', 'PDI', 'RLI', 'FSI'], [1, 2, 1, 1, 2, 1, 2, 2, 2, 3, 2, 1, 1, 3], 1], [[[0], 'R', 'L'], [[1], 'L', 'L'], [[2, 3], 'L', 'L'], [[4], 'L', 'L'], [[5, 11, 12], 'L', 'R'], [[6, 7, 8], 'L', 'R'], [[9], 'R', 'R'], [[10], 'R', 'L'], [[13], 'R', 'R']]), ('regression: chained run bookkeeping', [['RLI', 'FSI', 'RLI', 'EN', 'PDI', 'PDI', 'FSI', 'R', 'L'], [1, 3, 4, 5, 4, 3, 3, 5, 4], 1], [[[0], 'R', 'R'], [[1, 5, 6], 'R', 'R'], [[2, 4], 'L', 'L'], [[3], 'R', 'R'], [[7], 'R', 'R'], [[8], 'R', 'L']]), ('regression: chained run bookkeeping', [['PDI', 'RLI', 'L', 'L', 'EN', 'L', 'PDI', 'PDI', 'L', 'ON', 'R', 'FSI'], [1, 1, 3, 3, 4, 4, 1, 1, 2, 1, 1, 1], 1], [[[0, 1, 6, 7], 'R', 'L'], [[2, 3], 'R', 'L'], [[4, 5], 'L', 'L'], [[8], 'L', 'L'], [[9, 10, 11], 'L', 'R']]), ('isolate joins outer run', [['L', 'RLI', 'R', 'PDI', 'L'], [0, 0, 1, 0, 0], 0], [[[0, 1, 3, 4], 'L', 'L'], [[2], 'R', 'R']]), ('unmatched initiator at end', [['L', 'R', 'RLI'], [0, 1, 1], 0], [[[0], 'L', 'R'], [[1, 2], 'R', 'R']]), ('control layout', [['L', 'PDI', 'L', 'EN', 'L', 'PDI'], [0, 0, 0, 0, 0, 0], 0], [[[0, 1, 2, 3, 4, 5], 'L', 'L']]), ('control layout', [['L', 'L', 'EN', 'R', 'R', 'PDI', 'ON', 'L', 'R', 'ON', 'EN'], [1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2], 1], [[[0, 1, 2, 3, 4, 5, 6], 'R', 'L'], [[7], 'L', 'L'], [[8, 9], 'L', 'L'], [[10], 'L', 'L']])], [('regression: chained run bookkeeping', [['LRI', 'L', 'ON', 'ON', 'RLI', 'EN', 'EN', 'PDI'], [1, 2, 2, 2, 2, 3, 4, 2], 1], [[[0], 'R', 'R'], [[1, 2, 3, 4, 7], 'L', 'L'], [[5], 'R', 'L'], [[6], 'L', 'L']]), ('regression: chained run bookkeeping', [['RLI', 'RLI', 'R', 'PDI', 'EN', 'R', 'ON', 'PDI', 'L', 'L', 'EN', 'L', 'L'], [0, 1, 3, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0], 0], [[[0, 7, 8, 9, 10, 11, 12], 'L', 'L'], [[1, 3, 4, 5, 6], 'R', 'R'], [[2], 'R', 'R']]), ('regression: chained run bookkeeping', [['L', 'ON', 'PDI', 'L', 'R', 'PDI', 'EN', 'ON', 'ON', 'LRI', 'L', 'ON', 'PDI', 'FSI'], [2, 1, 1, 2, 1, 1, 2, 1, 1, 1, 2, 2, 1, 1], 1], [[[0], 'L', 'L'], [[1, 2], 'L', 'L'], [[3], 'L', 'L'], [[4, 5], 'L', 'L'], [[6], 'L', 'L'], [[7, 8, 9, 12, 13], 'L', 'R'], [[10, 11], 'L', 'L']]), ('regression: chained run bookkeeping', [['FSI', 'ON', 'EN', 'R', 'PDI', 'L', 'L', 'EN'], [0, 2, 2, 3, 0, 0, 0, 0], 0], [[[0, 4, 5, 6, 7], 'L', 'L'], [[1, 2], 'L', 'R'], [[3], 'R', 'R']]), ('isolate joins outer run', [['L', 'RLI', 'R', 'PDI', 'L'], [0, 0, 1, 0, 0], 0], [[[0, 1, 3, 4], 'L', 'L'], [[2], 'R', 'R']]), ('nested isolates', [['R', 'LRI', 'L', 'RLI', 'R', 'PDI', 'PDI', 'R'], [1, 1, 2, 2, 3, 2, 1, 1], 1], [[[0, 1, 6, 7], 'R', 'R'], [[2, 3, 5], 'L', 'L'], [[4], 'R', 'R']]), ('control layout', [['ON', 'R', 'PDI', 'ON', 'EN', 'RLI', 'L', 'LRI', 'ON'], [0, 1, 0, 0, 0, 0, 2, 1, 2], 0], [[[0], 'L', 'R'], [[1], 'R', 'R'], [[2, 3, 4, 5], 'R', 'L'], [[6], 'L', 'L'], [[7], 'L', 'R'], [[8], 'L', 'L']]), ('control layout', [['EN', 'PDI', 'R', 'EN', 'EN', 'ON', 'FSI'], [0, 0, 1, 0, 0, 0, 0], 0], [[[0, 1], 'L', 'R'], [[2], 'R', 'R'], [[3, 4, 5, 6], 'R', 'L']])], [('regression: chained run bookkeeping', [['R', 'L', 'LRI', 'EN', 'PDI', 'PDI', 'PDI', 'R'], [1, 2, 1, 2, 1, 1, 1, 1], 1], [[[0], 'R', 'L'], [[1], 'L', 'L'], [[2, 4, 5, 6, 7], 'L', 'R'], [[3], 'L', 'L']]), ('regression: chained run bookkeeping', [['ON', 'FSI', 'R', 'LRI', 'R', 'FSI', 'PDI', 'PDI'], [1, 1, 2, 2, 5, 4, 4, 2], 1], [[[0, 1], 'R', 'R'], [[2, 3, 7], 'L', 'L'], [[4], 'R', 'R'], [[5, 6], 'R', 'L']]), ('regression: chained run bookkeeping', [['FSI', 'FSI', 'FSI', 'PDI', 'LRI', 'PDI', 'LRI', 'R', 'ON', 'PDI', 'FSI', 'EN', 'PDI', 'EN'], [1, 2, 4, 4, 4, 4, 4, 7, 6, 4, 4, 6, 4, 4], 1], [[[0], 'R', 'R'], [[1], 'L', 'L'], [[2, 3, 4, 5, 6, 9, 10, 12, 13], 'L', 'L'], [[7], 'R', 'R'], [[8], 'R', 'L'], [[11], 'L', 'L']]), ('regression: chained run bookkeeping', [['L', 'LRI', 'FSI', 'L', 'RLI', 'PDI', 'L', 'ON', 'PDI', 'R', 'R'], [1, 1, 2, 4, 4, 4, 4, 4, 2, 2, 3], 1], [[[0, 1], 'R', 'R'], [[2, 8, 9], 'L', 'R'], [[3, 4, 5, 6, 7], 'L', 'L'], [[10], 'R', 'R']]), ('isolate joins outer run', [['L', 'RLI', 'R', 'PDI', 'L'], [0, 0, 1, 0, 0], 0], [[[0, 1, 3, 4], 'L', 'L'], [[2], 'R', 'R']]), ('nested isolates', [['R', 'LRI', 'L', 'RLI', 'R', 'PDI', 'PDI', 'R'], [1, 1, 2, 2, 3, 2, 1, 1], 1], [[[0, 1, 6, 7], 'R', 'R'], [[2, 3, 5], 'L', 'L'], [[4], 'R', 'R']]), ('control layout', [['ON', 'L', 'PDI', 'FSI', 'EN', 'RLI', 'EN'], [1, 2, 1, 1, 2, 2, 3], 1], [[[0], 'R', 'L'], [[1], 'L', 'L'], [[2, 3], 'L', 'R'], [[4, 5], 'L', 'L'], [[6], 'R', 'R']]), ('control layout', [['ON', 'PDI', 'ON', 'ON', 'RLI', 'EN', 'R', 'R'], [0, 0, 0, 0, 0, 2, 1, 1], 0], [[[0, 1, 2, 3, 4], 'L', 'L'], [[5], 'L', 'L'], [[6, 7], 'L', 'R']])], [('regression: chained run bookkeeping', [['ON', 'PDI', 'L', 'PDI', 'L', 'RLI', 'EN', 'PDI', 'LRI', 'EN', 'FSI'], [0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2], 0], [[[0, 1, 2, 3, 4, 5, 7, 8], 'L', 'L'], [[6], 'L', 'L'], [[9, 10], 'L', 'L']]), ('regression: chained run bookkeeping', [['R', 'R', 'RLI', 'L', 'PDI', 'ON', 'L', 'EN', 'L', 'EN', 'L'], [0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0], 0], [[[0], 'L', 'R'], [[1], 'R', 'R'], [[2, 4, 5, 6, 7, 8, 9, 10], 'R', 'L'], [[3], 'L', 'L']]), ('regression: chained run bookkeeping', [['FSI', 'R', 'RLI', 'L', 'LRI', 'R', 'PDI', 'RLI', 'EN', 'PDI'], [1, 3, 2, 4, 3, 5, 3, 3, 5, 3], 1], [[[0], 'R', 'R'], [[1], 'R', 'R'], [[2], 'R', 'L'], [[3], 'L', 'L'], [[4, 6, 7, 9], 'L', 'R'], [[5], 'R', 'R'], [[8], 'R', 'R']]), ('regression: chained run bookkeeping', [['RLI', 'RLI', 'L', 'RLI', 'EN', 'PDI', 'EN', 'PDI', 'PDI', 'EN', 'PDI', 'R'], [0, 1, 4, 3, 6, 3, 3, 1, 0, 0, 0, 1], 0], [[[0, 8, 9, 10], 'L', 'R'], [[1, 7], 'R', 'R'], [[2], 'L', 'L'], [[3, 5, 6], 'L', 'R'], [[4], 'L', 'L'], [[11], 'R', 'R']]), ('unmatched initiator at end', [['L', 'R', 'RLI'], [0, 1, 1], 0], [[[0], 'L', 'R'], [[1, 2], 'R', 'R']]), ('isolate joins outer run', [['L', 'RLI', 'R', 'PDI', 'L'], [0, 0, 1, 0, 0], 0], [[[0, 1, 3, 4], 'L', 'L'], [[2], 'R', 'R']]), ('control layout', [['ON', 'EN', 'PDI', 'L'], [1, 2, 1, 1], 1], [[[0], 'R', 'L'], [[1], 'L', 'L'], [[2, 3], 'L', 'R']]), ('control layout', [['LRI', 'PDI', 'PDI', 'R', 'R', 'PDI', 'EN', 'LRI', 'EN', 'FSI'], [0, 0, 0, 1, 1, 0, 0, 0, 2, 2], 0], [[[0, 1, 2], 'L', 'R'], [[3, 4], 'R', 'R'], [[5, 6, 7], 'R', 'L'], [[8, 9], 'L', 'L']])]]\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":"37a436369d8cf7a8cd36ed014be516531ec31bbfa48b72f38f62755ff299c497","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    classes, levels, para = x\n    n = len(classes)\n    match = {}\n    stack = []\n    for i, c in enumerate(classes):\n        if c in ('LRI', 'RLI', 'FSI'):\n            stack.append(i)\n        elif c == 'PDI' and stack:\n            match[stack.pop()] = i\n    runs = []\n    for i in range(n):\n        if runs and levels[i] == levels[runs[-1][-1]]:\n            runs[-1].append(i)\n        else:\n            runs.append([i])\n    start_of = {r[0]: r for r in runs}\n    seqs = []\n    used = set()\n    for r in runs:\n        if r[0] in used:\n            continue\n        seq = list(r)\n        used.add(r[0])\n        while True:\n            tail = seq[-1]\n            if classes[tail] not in ('LRI', 'RLI', 'FSI') or tail not in match:\n                break\n            nxt = start_of.get(match[tail])\n            if nxt is None:\n                break\n            seq.extend(nxt)\n            used.add(nxt[0])\n        seqs.append(seq)\n    out = []\n    for seq in seqs:\n        first, last = seq[0], seq[-1]\n        lv = levels[first]\n        prev = levels[first - 1] if first > 0 else para\n        sos = 'R' if max(lv, prev) % 2 else 'L'\n        if classes[last] in ('LRI', 'RLI', 'FSI'):\n            nxt_lv = para\n        else:\n            nxt_lv = levels[last + 1] if last + 1 < n else para\n        eos = 'R' if max(levels[last], nxt_lv) % 2 else 'L'\n        out.append([seq, sos, eos])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('isolate joins outer run', [['L', 'RLI', 'R', 'PDI', 'L'], [0, 0, 1, 0, 0], 0], [[[0, 1, 3, 4], 'L', 'L'], [[2], 'R', 'R']]), ('regression: chained run bookkeeping', [['L', 'FSI', 'LRI', 'ON', 'R', 'PDI', 'LRI', 'ON'], [2, 1, 2, 4, 4, 2, 2, 4], 1], [[[0], 'L', 'L'], [[1], 'L', 'R'], [[2, 5, 6], 'L', 'L'], [[3, 4], 'L', 'L'], [[7], 'L', 'L']]), ('regression: chained run bookkeeping', [['EN', 'PDI', 'FSI', 'LRI', 'L', 'L', 'LRI', 'ON', 'PDI', 'R', 'L', 'EN', 'L', 'R'], [1, 1, 1, 2, 4, 4, 4, 6, 4, 4, 4, 4, 4, 5], 1], [[[0, 1, 2], 'R', 'R'], [[3], 'L', 'L'], [[4, 5, 6, 8, 9, 10, 11, 12], 'L', 'R'], [[7], 'L', 'L'], [[13], 'R', 'R']]), ('nested isolates', [['R', 'LRI', 'L', 'RLI', 'R', 'PDI', 'PDI', 'R'], [1, 1, 2, 2, 3, 2, 1, 1], 1], [[[0, 1, 6, 7], 'R', 'R'], [[2, 3, 5], 'L', 'L'], [[4], 'R', 'R']]), ('unmatched initiator at end', [['L', 'R', 'RLI'], [0, 1, 1], 0], [[[0], 'L', 'R'], [[1, 2], 'R', 'R']]), ('control layout', [['R', 'R', 'PDI', 'PDI'], [1, 1, 1, 1], 1], [[[0, 1, 2, 3], 'R', 'R']]), ('control layout', [['EN', 'PDI', 'RLI', 'L', 'LRI', 'LRI', 'L', 'R', 'L'], [0, 0, 0, 1, 1, 2, 4, 4, 4], 0], [[[0, 1, 2], 'L', 'L'], [[3, 4], 'R', 'R'], [[5], 'L', 'L'], [[6, 7, 8], 'L', 'L']]), ('control layout', [['L', 'PDI', 'R', 'L', 'PDI', 'PDI', 'R', 'RLI'], [0, 0, 1, 0, 0, 0, 1, 0], 0], [[[0, 1], 'L', 'R'], [[2], 'R', 'R'], [[3, 4, 5], 'R', 'R'], [[6], 'R', 'R'], [[7], 'R', 'L']])], [('regression: chained run bookkeeping', [['EN', 'FSI', 'R', 'R', 'R', 'ON', 'PDI', 'ON'], [0, 0, 3, 2, 3, 2, 0, 0], 0], [[[0, 1, 6, 7], 'L', 'L'], [[2], 'R', 'R'], [[3], 'R', 'R'], [[4], 'R', 'R'], [[5], 'R', 'L']]), ('regression: chained run bookkeeping', [['L', 'L', 'PDI', 'ON', 'L', 'LRI', 'EN', 'EN', 'R', 'R', 'R', 'PDI', 'RLI', 'FSI'], [1, 2, 1, 1, 2, 1, 2, 2, 2, 3, 2, 1, 1, 3], 1], [[[0], 'R', 'L'], [[1], 'L', 'L'], [[2, 3], 'L', 'L'], [[4], 'L', 'L'], [[5, 11, 12], 'L', 'R'], [[6, 7, 8], 'L', 'R'], [[9], 'R', 'R'], [[10], 'R', 'L'], [[13], 'R', 'R']]), ('regression: chained run bookkeeping', [['RLI', 'FSI', 'RLI', 'EN', 'PDI', 'PDI', 'FSI', 'R', 'L'], [1, 3, 4, 5, 4, 3, 3, 5, 4], 1], [[[0], 'R', 'R'], [[1, 5, 6], 'R', 'R'], [[2, 4], 'L', 'L'], [[3], 'R', 'R'], [[7], 'R', 'R'], [[8], 'R', 'L']]), ('regression: chained run bookkeeping', [['PDI', 'RLI', 'L', 'L', 'EN', 'L', 'PDI', 'PDI', 'L', 'ON', 'R', 'FSI'], [1, 1, 3, 3, 4, 4, 1, 1, 2, 1, 1, 1], 1], [[[0, 1, 6, 7], 'R', 'L'], [[2, 3], 'R', 'L'], [[4, 5], 'L', 'L'], [[8], 'L', 'L'], [[9, 10, 11], 'L', 'R']]), ('isolate joins outer run', [['L', 'RLI', 'R', 'PDI', 'L'], [0, 0, 1, 0, 0], 0], [[[0, 1, 3, 4], 'L', 'L'], [[2], 'R', 'R']]), ('unmatched initiator at end', [['L', 'R', 'RLI'], [0, 1, 1], 0], [[[0], 'L', 'R'], [[1, 2], 'R', 'R']]), ('control layout', [['L', 'PDI', 'L', 'EN', 'L', 'PDI'], [0, 0, 0, 0, 0, 0], 0], [[[0, 1, 2, 3, 4, 5], 'L', 'L']]), ('control layout', [['L', 'L', 'EN', 'R', 'R', 'PDI', 'ON', 'L', 'R', 'ON', 'EN'], [1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2], 1], [[[0, 1, 2, 3, 4, 5, 6], 'R', 'L'], [[7], 'L', 'L'], [[8, 9], 'L', 'L'], [[10], 'L', 'L']])], [('regression: chained run bookkeeping', [['LRI', 'L', 'ON', 'ON', 'RLI', 'EN', 'EN', 'PDI'], [1, 2, 2, 2, 2, 3, 4, 2], 1], [[[0], 'R', 'R'], [[1, 2, 3, 4, 7], 'L', 'L'], [[5], 'R', 'L'], [[6], 'L', 'L']]), ('regression: chained run bookkeeping', [['RLI', 'RLI', 'R', 'PDI', 'EN', 'R', 'ON', 'PDI', 'L', 'L', 'EN', 'L', 'L'], [0, 1, 3, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0], 0], [[[0, 7, 8, 9, 10, 11, 12], 'L', 'L'], [[1, 3, 4, 5, 6], 'R', 'R'], [[2], 'R', 'R']]), ('regression: chained run bookkeeping', [['L', 'ON', 'PDI', 'L', 'R', 'PDI', 'EN', 'ON', 'ON', 'LRI', 'L', 'ON', 'PDI', 'FSI'], [2, 1, 1, 2, 1, 1, 2, 1, 1, 1, 2, 2, 1, 1], 1], [[[0], 'L', 'L'], [[1, 2], 'L', 'L'], [[3], 'L', 'L'], [[4, 5], 'L', 'L'], [[6], 'L', 'L'], [[7, 8, 9, 12, 13], 'L', 'R'], [[10, 11], 'L', 'L']]), ('regression: chained run bookkeeping', [['FSI', 'ON', 'EN', 'R', 'PDI', 'L', 'L', 'EN'], [0, 2, 2, 3, 0, 0, 0, 0], 0], [[[0, 4, 5, 6, 7], 'L', 'L'], [[1, 2], 'L', 'R'], [[3], 'R', 'R']]), ('isolate joins outer run', [['L', 'RLI', 'R', 'PDI', 'L'], [0, 0, 1, 0, 0], 0], [[[0, 1, 3, 4], 'L', 'L'], [[2], 'R', 'R']]), ('nested isolates', [['R', 'LRI', 'L', 'RLI', 'R', 'PDI', 'PDI', 'R'], [1, 1, 2, 2, 3, 2, 1, 1], 1], [[[0, 1, 6, 7], 'R', 'R'], [[2, 3, 5], 'L', 'L'], [[4], 'R', 'R']]), ('control layout', [['ON', 'R', 'PDI', 'ON', 'EN', 'RLI', 'L', 'LRI', 'ON'], [0, 1, 0, 0, 0, 0, 2, 1, 2], 0], [[[0], 'L', 'R'], [[1], 'R', 'R'], [[2, 3, 4, 5], 'R', 'L'], [[6], 'L', 'L'], [[7], 'L', 'R'], [[8], 'L', 'L']]), ('control layout', [['EN', 'PDI', 'R', 'EN', 'EN', 'ON', 'FSI'], [0, 0, 1, 0, 0, 0, 0], 0], [[[0, 1], 'L', 'R'], [[2], 'R', 'R'], [[3, 4, 5, 6], 'R', 'L']])], [('regression: chained run bookkeeping', [['R', 'L', 'LRI', 'EN', 'PDI', 'PDI', 'PDI', 'R'], [1, 2, 1, 2, 1, 1, 1, 1], 1], [[[0], 'R', 'L'], [[1], 'L', 'L'], [[2, 4, 5, 6, 7], 'L', 'R'], [[3], 'L', 'L']]), ('regression: chained run bookkeeping', [['ON', 'FSI', 'R', 'LRI', 'R', 'FSI', 'PDI', 'PDI'], [1, 1, 2, 2, 5, 4, 4, 2], 1], [[[0, 1], 'R', 'R'], [[2, 3, 7], 'L', 'L'], [[4], 'R', 'R'], [[5, 6], 'R', 'L']]), ('regression: chained run bookkeeping', [['FSI', 'FSI', 'FSI', 'PDI', 'LRI', 'PDI', 'LRI', 'R', 'ON', 'PDI', 'FSI', 'EN', 'PDI', 'EN'], [1, 2, 4, 4, 4, 4, 4, 7, 6, 4, 4, 6, 4, 4], 1], [[[0], 'R', 'R'], [[1], 'L', 'L'], [[2, 3, 4, 5, 6, 9, 10, 12, 13], 'L', 'L'], [[7], 'R', 'R'], [[8], 'R', 'L'], [[11], 'L', 'L']]), ('regression: chained run bookkeeping', [['L', 'LRI', 'FSI', 'L', 'RLI', 'PDI', 'L', 'ON', 'PDI', 'R', 'R'], [1, 1, 2, 4, 4, 4, 4, 4, 2, 2, 3], 1], [[[0, 1], 'R', 'R'], [[2, 8, 9], 'L', 'R'], [[3, 4, 5, 6, 7], 'L', 'L'], [[10], 'R', 'R']]), ('isolate joins outer run', [['L', 'RLI', 'R', 'PDI', 'L'], [0, 0, 1, 0, 0], 0], [[[0, 1, 3, 4], 'L', 'L'], [[2], 'R', 'R']]), ('nested isolates', [['R', 'LRI', 'L', 'RLI', 'R', 'PDI', 'PDI', 'R'], [1, 1, 2, 2, 3, 2, 1, 1], 1], [[[0, 1, 6, 7], 'R', 'R'], [[2, 3, 5], 'L', 'L'], [[4], 'R', 'R']]), ('control layout', [['ON', 'L', 'PDI', 'FSI', 'EN', 'RLI', 'EN'], [1, 2, 1, 1, 2, 2, 3], 1], [[[0], 'R', 'L'], [[1], 'L', 'L'], [[2, 3], 'L', 'R'], [[4, 5], 'L', 'L'], [[6], 'R', 'R']]), ('control layout', [['ON', 'PDI', 'ON', 'ON', 'RLI', 'EN', 'R', 'R'], [0, 0, 0, 0, 0, 2, 1, 1], 0], [[[0, 1, 2, 3, 4], 'L', 'L'], [[5], 'L', 'L'], [[6, 7], 'L', 'R']])], [('regression: chained run bookkeeping', [['ON', 'PDI', 'L', 'PDI', 'L', 'RLI', 'EN', 'PDI', 'LRI', 'EN', 'FSI'], [0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2], 0], [[[0, 1, 2, 3, 4, 5, 7, 8], 'L', 'L'], [[6], 'L', 'L'], [[9, 10], 'L', 'L']]), ('regression: chained run bookkeeping', [['R', 'R', 'RLI', 'L', 'PDI', 'ON', 'L', 'EN', 'L', 'EN', 'L'], [0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0], 0], [[[0], 'L', 'R'], [[1], 'R', 'R'], [[2, 4, 5, 6, 7, 8, 9, 10], 'R', 'L'], [[3], 'L', 'L']]), ('regression: chained run bookkeeping', [['FSI', 'R', 'RLI', 'L', 'LRI', 'R', 'PDI', 'RLI', 'EN', 'PDI'], [1, 3, 2, 4, 3, 5, 3, 3, 5, 3], 1], [[[0], 'R', 'R'], [[1], 'R', 'R'], [[2], 'R', 'L'], [[3], 'L', 'L'], [[4, 6, 7, 9], 'L', 'R'], [[5], 'R', 'R'], [[8], 'R', 'R']]), ('regression: chained run bookkeeping', [['RLI', 'RLI', 'L', 'RLI', 'EN', 'PDI', 'EN', 'PDI', 'PDI', 'EN', 'PDI', 'R'], [0, 1, 4, 3, 6, 3, 3, 1, 0, 0, 0, 1], 0], [[[0, 8, 9, 10], 'L', 'R'], [[1, 7], 'R', 'R'], [[2], 'L', 'L'], [[3, 5, 6], 'L', 'R'], [[4], 'L', 'L'], [[11], 'R', 'R']]), ('unmatched initiator at end', [['L', 'R', 'RLI'], [0, 1, 1], 0], [[[0], 'L', 'R'], [[1, 2], 'R', 'R']]), ('isolate joins outer run', [['L', 'RLI', 'R', 'PDI', 'L'], [0, 0, 1, 0, 0], 0], [[[0, 1, 3, 4], 'L', 'L'], [[2], 'R', 'R']]), ('control layout', [['ON', 'EN', 'PDI', 'L'], [1, 2, 1, 1], 1], [[[0], 'R', 'L'], [[1], 'L', 'L'], [[2, 3], 'L', 'R']]), ('control layout', [['LRI', 'PDI', 'PDI', 'R', 'R', 'PDI', 'EN', 'LRI', 'EN', 'FSI'], [0, 0, 0, 1, 1, 0, 0, 0, 2, 2], 0], [[[0, 1, 2], 'L', 'R'], [[3, 4], 'R', 'R'], [[5, 6, 7], 'R', 'L'], [[8, 9], 'L', 'L']])]]\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-isolating-sequences-chained-run-bookkeeping","generated_at":"2026-09-29T14:49:56.786420+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":"Mark the start of every chained run as used.","root_cause":"The chained run is not marked as used.","sha256":"ad67fa080e30b49da179a0f40a835587caa26b3ebbdae4c2d7af62c523eb5a92","title":"Isolating run sequences: chained run bookkeeping · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.662,"exit_code":1,"observations":[{"actual":[[[0,1,3,4],"L","L"],[[2],"R","R"],[[3,4],"R","L"]],"check":"isolate joins outer run","expected":[[[0,1,3,4],"L","L"],[[2],"R","R"]],"passed":false},{"actual":[[[0],"L","L"],[[1],"L","R"],[[2,5,6],"L","L"],[[3,4],"L","L"],[[5,6],"L","L"],[[7],"L","L"]],"check":"regression: chained run bookkeeping","expected":[[[0],"L","L"],[[1],"L","R"],[[2,5,6],"L","L"],[[3,4],"L","L"],[[7],"L","L"]],"passed":false},{"actual":[[[0,1,2],"R","R"],[[3],"L","L"],[[4,5,6,8,9,10,11,12],"L","R"],[[7],"L","L"],[[8,9,10,11,12],"L","R"],[[13],"R","R"]],"check":"regression: chained run bookkeeping","expected":[[[0,1,2],"R","R"],[[3],"L","L"],[[4,5,6,8,9,10,11,12],"L","R"],[[7],"L","L"],[[13],"R","R"]],"passed":false},{"actual":[[[0,1,6,7],"R","R"],[[2,3,5],"L","L"],[[4],"R","R"],[[6,7],"L","R"]],"check":"nested isolates","expected":[[[0,1,6,7],"R","R"],[[2,3,5],"L","L"],[[4],"R","R"]],"passed":false},{"actual":[[[0],"L","R"],[[1,2],"R","R"]],"check":"unmatched initiator at end","expected":[[[0],"L","R"],[[1,2],"R","R"]],"passed":true},{"actual":[[[0,1,2,3],"R","R"]],"check":"control layout","expected":[[[0,1,2,3],"R","R"]],"passed":true},{"actual":[[[0,1,2],"L","L"],[[3,4],"R","R"],[[5],"L","L"],[[6,7,8],"L","L"]],"check":"control layout","expected":[[[0,1,2],"L","L"],[[3,4],"R","R"],[[5],"L","L"],[[6,7,8],"L","L"]],"passed":true},{"actual":[[[0,1],"L","R"],[[2],"R","R"],[[3,4,5],"R","R"],[[6],"R","R"],[[7],"R","L"]],"check":"control layout","expected":[[[0,1],"L","R"],[[2],"R","R"],[[3,4,5],"R","R"],[[6],"R","R"],[[7],"R","L"]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"isolate joins outer run\", \"actual\": [[[0, 1, 3, 4], \"L\", \"L\"], [[2], \"R\", \"R\"], [[3, 4], \"R\", \"L\"]], \"expected\": [[[0, 1, 3, 4], \"L\", \"L\"], [[2], \"R\", \"R\"]], \"passed\": false}, {\"check\": \"regression: chained run bookkeeping\", \"actual\": [[[0], \"L\", \"L\"], [[1], \"L\", \"R\"], [[2, 5, 6], \"L\", \"L\"], [[3, 4], \"L\", \"L\"], [[5, 6], \"L\", \"L\"], [[7], \"L\", \"L\"]], \"expected\": [[[0], \"L\", \"L\"], [[1], \"L\", \"R\"], [[2, 5, 6], \"L\", \"L\"], [[3, 4], \"L\", \"L\"], [[7], \"L\", \"L\"]], \"passed\": false}, {\"check\": \"regression: chained run bookkeeping\", \"actual\": [[[0, 1, 2], \"R\", \"R\"], [[3], \"L\", \"L\"], [[4, 5, 6, 8, 9, 10, 11, 12], \"L\", \"R\"], [[7], \"L\", \"L\"], [[8, 9, 10, 11, 12], \"L\", \"R\"], [[13], \"R\", \"R\"]], \"expected\": [[[0, 1, 2], \"R\", \"R\"], [[3], \"L\", \"L\"], [[4, 5, 6, 8, 9, 10, 11, 12], \"L\", \"R\"], [[7], \"L\", \"L\"], [[13], \"R\", \"R\"]], \"passed\": false}, {\"check\": \"nested isolates\", \"actual\": [[[0, 1, 6, 7], \"R\", \"R\"], [[2, 3, 5], \"L\", \"L\"], [[4], \"R\", \"R\"], [[6, 7], \"L\", \"R\"]], \"expected\": [[[0, 1, 6, 7], \"R\", \"R\"], [[2, 3, 5], \"L\", \"L\"], [[4], \"R\", \"R\"]], \"passed\": false}, {\"check\": \"unmatched initiator at end\", \"actual\": [[[0], \"L\", \"R\"], [[1, 2], \"R\", \"R\"]], \"expected\": [[[0], \"L\", \"R\"], [[1, 2], \"R\", \"R\"]], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [[[0, 1, 2, 3], \"R\", \"R\"]], \"expected\": [[[0, 1, 2, 3], \"R\", \"R\"]], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [[[0, 1, 2], \"L\", \"L\"], [[3, 4], \"R\", \"R\"], [[5], \"L\", \"L\"], [[6, 7, 8], \"L\", \"L\"]], \"expected\": [[[0, 1, 2], \"L\", \"L\"], [[3, 4], \"R\", \"R\"], [[5], \"L\", \"L\"], [[6, 7, 8], \"L\", \"L\"]], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [[[0, 1], \"L\", \"R\"], [[2], \"R\", \"R\"], [[3, 4, 5], \"R\", \"R\"], [[6], \"R\", \"R\"], [[7], \"R\", \"L\"]], \"expected\": [[[0, 1], \"L\", \"R\"], [[2], \"R\", \"R\"], [[3, 4, 5], \"R\", \"R\"], [[6], \"R\", \"R\"], [[7], \"R\", \"L\"]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.009,"exit_code":1,"observations":[{"actual":[[[0,1,3,4],"L","L"],[[2],"R","R"],[[3,4],"R","L"]],"check":"isolate joins outer run","expected":[[[0,1,3,4],"L","L"],[[2],"R","R"]],"passed":false},{"actual":[[[0],"L","L"],[[1],"L","R"],[[2,5,6],"L","L"],[[3,4],"L","L"],[[5,6],"L","L"],[[7],"L","L"]],"check":"regression: chained run bookkeeping","expected":[[[0],"L","L"],[[1],"L","R"],[[2,5,6],"L","L"],[[3,4],"L","L"],[[7],"L","L"]],"passed":false},{"actual":[[[0,1,2],"R","R"],[[3],"L","L"],[[4,5,6,8,9,10,11,12],"L","R"],[[7],"L","L"],[[8,9,10,11,12],"L","R"],[[13],"R","R"]],"check":"regression: chained run bookkeeping","expected":[[[0,1,2],"R","R"],[[3],"L","L"],[[4,5,6,8,9,10,11,12],"L","R"],[[7],"L","L"],[[13],"R","R"]],"passed":false},{"actual":[[[0,1,6,7],"R","R"],[[2,3,5],"L","L"],[[4],"R","R"],[[5],"R","L"],[[6,7],"L","R"]],"check":"nested isolates","expected":[[[0,1,6,7],"R","R"],[[2,3,5],"L","L"],[[4],"R","R"]],"passed":false},{"actual":[[[0],"L","R"],[[1,2],"R","R"]],"check":"unmatched initiator at end","expected":[[[0],"L","R"],[[1,2],"R","R"]],"passed":true},{"actual":[[[0,1,2,3],"R","R"]],"check":"control layout","expected":[[[0,1,2,3],"R","R"]],"passed":true},{"actual":[[[0,1,2],"L","L"],[[3,4],"R","R"],[[5],"L","L"],[[6,7,8],"L","L"]],"check":"control layout","expected":[[[0,1,2],"L","L"],[[3,4],"R","R"],[[5],"L","L"],[[6,7,8],"L","L"]],"passed":true},{"actual":[[[0,1],"L","R"],[[2],"R","R"],[[3,4,5],"R","R"],[[6],"R","R"],[[7],"R","L"]],"check":"control layout","expected":[[[0,1],"L","R"],[[2],"R","R"],[[3,4,5],"R","R"],[[6],"R","R"],[[7],"R","L"]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"isolate joins outer run\", \"actual\": [[[0, 1, 3, 4], \"L\", \"L\"], [[2], \"R\", \"R\"], [[3, 4], \"R\", \"L\"]], \"expected\": [[[0, 1, 3, 4], \"L\", \"L\"], [[2], \"R\", \"R\"]], \"passed\": false}, {\"check\": \"regression: chained run bookkeeping\", \"actual\": [[[0], \"L\", \"L\"], [[1], \"L\", \"R\"], [[2, 5, 6], \"L\", \"L\"], [[3, 4], \"L\", \"L\"], [[5, 6], \"L\", \"L\"], [[7], \"L\", \"L\"]], \"expected\": [[[0], \"L\", \"L\"], [[1], \"L\", \"R\"], [[2, 5, 6], \"L\", \"L\"], [[3, 4], \"L\", \"L\"], [[7], \"L\", \"L\"]], \"passed\": false}, {\"check\": \"regression: chained run bookkeeping\", \"actual\": [[[0, 1, 2], \"R\", \"R\"], [[3], \"L\", \"L\"], [[4, 5, 6, 8, 9, 10, 11, 12], \"L\", \"R\"], [[7], \"L\", \"L\"], [[8, 9, 10, 11, 12], \"L\", \"R\"], [[13], \"R\", \"R\"]], \"expected\": [[[0, 1, 2], \"R\", \"R\"], [[3], \"L\", \"L\"], [[4, 5, 6, 8, 9, 10, 11, 12], \"L\", \"R\"], [[7], \"L\", \"L\"], [[13], \"R\", \"R\"]], \"passed\": false}, {\"check\": \"nested isolates\", \"actual\": [[[0, 1, 6, 7], \"R\", \"R\"], [[2, 3, 5], \"L\", \"L\"], [[4], \"R\", \"R\"], [[5], \"R\", \"L\"], [[6, 7], \"L\", \"R\"]], \"expected\": [[[0, 1, 6, 7], \"R\", \"R\"], [[2, 3, 5], \"L\", \"L\"], [[4], \"R\", \"R\"]], \"passed\": false}, {\"check\": \"unmatched initiator at end\", \"actual\": [[[0], \"L\", \"R\"], [[1, 2], \"R\", \"R\"]], \"expected\": [[[0], \"L\", \"R\"], [[1, 2], \"R\", \"R\"]], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [[[0, 1, 2, 3], \"R\", \"R\"]], \"expected\": [[[0, 1, 2, 3], \"R\", \"R\"]], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [[[0, 1, 2], \"L\", \"L\"], [[3, 4], \"R\", \"R\"], [[5], \"L\", \"L\"], [[6, 7, 8], \"L\", \"L\"]], \"expected\": [[[0, 1, 2], \"L\", \"L\"], [[3, 4], \"R\", \"R\"], [[5], \"L\", \"L\"], [[6, 7, 8], \"L\", \"L\"]], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [[[0, 1], \"L\", \"R\"], [[2], \"R\", \"R\"], [[3, 4, 5], \"R\", \"R\"], [[6], \"R\", \"R\"], [[7], \"R\", \"L\"]], \"expected\": [[[0, 1], \"L\", \"R\"], [[2], \"R\", \"R\"], [[3, 4, 5], \"R\", \"R\"], [[6], \"R\", \"R\"], [[7], \"R\", \"L\"]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.671,"exit_code":0,"observations":[{"actual":[[[0,1,3,4],"L","L"],[[2],"R","R"]],"check":"isolate joins outer run","expected":[[[0,1,3,4],"L","L"],[[2],"R","R"]],"passed":true},{"actual":[[[0],"L","L"],[[1],"L","R"],[[2,5,6],"L","L"],[[3,4],"L","L"],[[7],"L","L"]],"check":"regression: chained run bookkeeping","expected":[[[0],"L","L"],[[1],"L","R"],[[2,5,6],"L","L"],[[3,4],"L","L"],[[7],"L","L"]],"passed":true},{"actual":[[[0,1,2],"R","R"],[[3],"L","L"],[[4,5,6,8,9,10,11,12],"L","R"],[[7],"L","L"],[[13],"R","R"]],"check":"regression: chained run bookkeeping","expected":[[[0,1,2],"R","R"],[[3],"L","L"],[[4,5,6,8,9,10,11,12],"L","R"],[[7],"L","L"],[[13],"R","R"]],"passed":true},{"actual":[[[0,1,6,7],"R","R"],[[2,3,5],"L","L"],[[4],"R","R"]],"check":"nested isolates","expected":[[[0,1,6,7],"R","R"],[[2,3,5],"L","L"],[[4],"R","R"]],"passed":true},{"actual":[[[0],"L","R"],[[1,2],"R","R"]],"check":"unmatched initiator at end","expected":[[[0],"L","R"],[[1,2],"R","R"]],"passed":true},{"actual":[[[0,1,2,3],"R","R"]],"check":"control layout","expected":[[[0,1,2,3],"R","R"]],"passed":true},{"actual":[[[0,1,2],"L","L"],[[3,4],"R","R"],[[5],"L","L"],[[6,7,8],"L","L"]],"check":"control layout","expected":[[[0,1,2],"L","L"],[[3,4],"R","R"],[[5],"L","L"],[[6,7,8],"L","L"]],"passed":true},{"actual":[[[0,1],"L","R"],[[2],"R","R"],[[3,4,5],"R","R"],[[6],"R","R"],[[7],"R","L"]],"check":"control layout","expected":[[[0,1],"L","R"],[[2],"R","R"],[[3,4,5],"R","R"],[[6],"R","R"],[[7],"R","L"]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"isolate joins outer run\", \"actual\": [[[0, 1, 3, 4], \"L\", \"L\"], [[2], \"R\", \"R\"]], \"expected\": [[[0, 1, 3, 4], \"L\", \"L\"], [[2], \"R\", \"R\"]], \"passed\": true}, {\"check\": \"regression: chained run bookkeeping\", \"actual\": [[[0], \"L\", \"L\"], [[1], \"L\", \"R\"], [[2, 5, 6], \"L\", \"L\"], [[3, 4], \"L\", \"L\"], [[7], \"L\", \"L\"]], \"expected\": [[[0], \"L\", \"L\"], [[1], \"L\", \"R\"], [[2, 5, 6], \"L\", \"L\"], [[3, 4], \"L\", \"L\"], [[7], \"L\", \"L\"]], \"passed\": true}, {\"check\": \"regression: chained run bookkeeping\", \"actual\": [[[0, 1, 2], \"R\", \"R\"], [[3], \"L\", \"L\"], [[4, 5, 6, 8, 9, 10, 11, 12], \"L\", \"R\"], [[7], \"L\", \"L\"], [[13], \"R\", \"R\"]], \"expected\": [[[0, 1, 2], \"R\", \"R\"], [[3], \"L\", \"L\"], [[4, 5, 6, 8, 9, 10, 11, 12], \"L\", \"R\"], [[7], \"L\", \"L\"], [[13], \"R\", \"R\"]], \"passed\": true}, {\"check\": \"nested isolates\", \"actual\": [[[0, 1, 6, 7], \"R\", \"R\"], [[2, 3, 5], \"L\", \"L\"], [[4], \"R\", \"R\"]], \"expected\": [[[0, 1, 6, 7], \"R\", \"R\"], [[2, 3, 5], \"L\", \"L\"], [[4], \"R\", \"R\"]], \"passed\": true}, {\"check\": \"unmatched initiator at end\", \"actual\": [[[0], \"L\", \"R\"], [[1, 2], \"R\", \"R\"]], \"expected\": [[[0], \"L\", \"R\"], [[1, 2], \"R\", \"R\"]], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [[[0, 1, 2, 3], \"R\", \"R\"]], \"expected\": [[[0, 1, 2, 3], \"R\", \"R\"]], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [[[0, 1, 2], \"L\", \"L\"], [[3, 4], \"R\", \"R\"], [[5], \"L\", \"L\"], [[6, 7, 8], \"L\", \"L\"]], \"expected\": [[[0, 1, 2], \"L\", \"L\"], [[3, 4], \"R\", \"R\"], [[5], \"L\", \"L\"], [[6, 7, 8], \"L\", \"L\"]], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [[[0, 1], \"L\", \"R\"], [[2], \"R\", \"R\"], [[3, 4, 5], \"R\", \"R\"], [[6], \"R\", \"R\"], [[7], \"R\", \"L\"]], \"expected\": [[[0, 1], \"L\", \"R\"], [[2], \"R\", \"R\"], [[3, 4, 5], \"R\", \"R\"], [[6], \"R\", \"R\"], [[7], \"R\", \"L\"]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}