broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(events):
    state = {}
    buffered = {}
    dead = set()
    for e in events:
        i = e['id']
        if e['op'] == 'delete':
            dead.add(i)
            state[i] = {'text': None, 'ver': e['ver']}
        elif i in dead and e['op'] == 'create':
            continue
        elif e['op'] == 'create':
            best = buffered.pop(i, None)
            state[i] = best if best and best['ver'] > e['ver'] else e
        elif i in state:
            if e['ver'] > state[i]['ver']:
                state[i] = e
        else:
            cur = buffered.get(i)
            if cur is None or e['ver'] > cur['ver']:
                buffered[i] = e
    return {i: v['text'] for i, v in sorted(state.items())}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
_CASES = {1: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 4, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 3, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 4, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 1, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}],), {'g0': 't0'})], 2: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 5, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 4, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 5, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 2, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}],), {'g0': 't0', 'g1': 't1'})], 3: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 6, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 5, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 6, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 3, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}, {'op': 'create', 'id': 'g2', 'ver': 1, 'text': 't2'}],), {'g0': 't0', 'g1': 't1', 'g2': 't2'})], 4: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 7, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 6, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 7, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 4, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}, {'op': 'create', 'id': 'g2', 'ver': 1, 'text': 't2'}, {'op': 'create', 'id': 'g3', 'ver': 1, 'text': 't3'}],), {'g0': 't0', 'g1': 't1', 'g2': 't2', 'g3': 't3'})], 5: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 8, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 7, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 8, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 5, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}, {'op': 'create', 'id': 'g2', 'ver': 1, 'text': 't2'}, {'op': 'create', 'id': 'g3', 'ver': 1, 'text': 't3'}, {'op': 'create', 'id': 'g4', 'ver': 1, 'text': 't4'}],), {'g0': 't0', 'g1': 't1', 'g2': 't2', 'g3': 't3', 'g4': 't4'})]}
for _label, _args, _expected in _CASES[N]:
    check(_label, solve(*_args), _expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(events):
    state = {}
    buffered = {}
    dead = set()
    for e in events:
        i = e['id']
        if e['op'] == 'delete':
            dead.add(i)
            state[i] = {'text': None, 'ver': e['ver']}
        elif i in dead and e['ver'] <= state[i]['ver']:
            continue
        elif e['op'] == 'create':
            best = buffered.pop(i, None)
            state[i] = best if best and best['ver'] > e['ver'] else e
        elif i in state:
            if e['ver'] > state[i]['ver']:
                state[i] = e
        else:
            cur = buffered.get(i)
            if cur is None or e['ver'] > cur['ver']:
                buffered[i] = e
    return {i: v['text'] for i, v in sorted(state.items())}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
_CASES = {1: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 4, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 3, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 4, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 1, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}],), {'g0': 't0'})], 2: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 5, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 4, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 5, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 2, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}],), {'g0': 't0', 'g1': 't1'})], 3: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 6, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 5, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 6, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 3, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}, {'op': 'create', 'id': 'g2', 'ver': 1, 'text': 't2'}],), {'g0': 't0', 'g1': 't1', 'g2': 't2'})], 4: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 7, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 6, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 7, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 4, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}, {'op': 'create', 'id': 'g2', 'ver': 1, 'text': 't2'}, {'op': 'create', 'id': 'g3', 'ver': 1, 'text': 't3'}],), {'g0': 't0', 'g1': 't1', 'g2': 't2', 'g3': 't3'})], 5: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 8, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 7, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 8, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 5, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}, {'op': 'create', 'id': 'g2', 'ver': 1, 'text': 't2'}, {'op': 'create', 'id': 'g3', 'ver': 1, 'text': 't3'}, {'op': 'create', 'id': 'g4', 'ver': 1, 'text': 't4'}],), {'g0': 't0', 'g1': 't1', 'g2': 't2', 'g3': 't3', 'g4': 't4'})]}
for _label, _args, _expected in _CASES[N]:
    check(_label, solve(*_args), _expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)

prompt:
A concurrent edit with a higher version resurrects a message that was deleted.

events {op, id, ver, text} arrive in any order and are processed in arrival order. Per id the highest version wins and an edit that only equals the current version is ignored; an edit that arrives before its create is buffered (highest buffered version kept) and applied if it is newer than the create. Delete is terminal: the id shows None and later creates and edits are ignored whatever their version. Result: id -> text (None for deleted) for created or deleted ids, sorted by id.

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(events):
    state = {}
    buffered = {}
    dead = set()
    for e in events:
        i = e['id']
        if e['op'] == 'delete':
            dead.add(i)
            state[i] = {'text': None, 'ver': e['ver']}
        elif i in dead:
            continue
        elif e['op'] == 'create':
            best = buffered.pop(i, None)
            state[i] = e
        elif i in state:
            if e['ver'] > state[i]['ver']:
                state[i] = e
        else:
            cur = buffered.get(i)
            if cur is None or e['ver'] > cur['ver']:
                buffered[i] = e
    return {i: v['text'] for i, v in sorted(state.items())}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
_CASES = {1: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 4, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 3, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 4, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 1, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}],), {'g0': 't0'})], 2: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 5, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 4, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 5, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 2, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}],), {'g0': 't0', 'g1': 't1'})], 3: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 6, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 5, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 6, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 3, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}, {'op': 'create', 'id': 'g2', 'ver': 1, 'text': 't2'}],), {'g0': 't0', 'g1': 't1', 'g2': 't2'})], 4: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 7, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 6, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 7, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 4, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}, {'op': 'create', 'id': 'g2', 'ver': 1, 'text': 't2'}, {'op': 'create', 'id': 'g3', 'ver': 1, 'text': 't3'}],), {'g0': 't0', 'g1': 't1', 'g2': 't2', 'g3': 't3'})], 5: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 8, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 7, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 8, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 5, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}, {'op': 'create', 'id': 'g2', 'ver': 1, 'text': 't2'}, {'op': 'create', 'id': 'g3', 'ver': 1, 'text': 't3'}, {'op': 'create', 'id': 'g4', 'ver': 1, 'text': 't4'}],), {'g0': 't0', 'g1': 't1', 'g2': 't2', 'g3': 't3', 'g4': 't4'})]}
for _label, _args, _expected in _CASES[N]:
    check(_label, solve(*_args), _expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)

meaning: Fixture-count band, not measured model difficulty

deps: stdlib

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(events):
    state = {}
    buffered = {}
    dead = set()
    for e in events:
        i = e['id']
        if e['op'] == 'delete':
            dead.add(i)
            state[i] = {'text': None, 'ver': e['ver']}
        elif i in dead:
            continue
        elif e['op'] == 'create':
            best = buffered.pop(i, None)
            state[i] = best or e
        elif i in state:
            if e['ver'] > state[i]['ver']:
                state[i] = e
        else:
            cur = buffered.get(i)
            if cur is None or e['ver'] > cur['ver']:
                buffered[i] = e
    return {i: v['text'] for i, v in sorted(state.items())}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
_CASES = {1: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 4, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 3, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 4, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 1, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}],), {'g0': 't0'})], 2: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 5, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 4, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 5, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 2, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}],), {'g0': 't0', 'g1': 't1'})], 3: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 6, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 5, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 6, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 3, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}, {'op': 'create', 'id': 'g2', 'ver': 1, 'text': 't2'}],), {'g0': 't0', 'g1': 't1', 'g2': 't2'})], 4: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 7, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 6, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 7, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 4, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}, {'op': 'create', 'id': 'g2', 'ver': 1, 'text': 't2'}, {'op': 'create', 'id': 'g3', 'ver': 1, 'text': 't3'}],), {'g0': 't0', 'g1': 't1', 'g2': 't2', 'g3': 't3'})], 5: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 8, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 7, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 8, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 5, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}, {'op': 'create', 'id': 'g2', 'ver': 1, 'text': 't2'}, {'op': 'create', 'id': 'g3', 'ver': 1, 'text': 't3'}, {'op': 'create', 'id': 'g4', 'ver': 1, 'text': 't4'}],), {'g0': 't0', 'g1': 't1', 'g2': 't2', 'g3': 't3', 'g4': 't4'})]}
for _label, _args, _expected in _CASES[N]:
    check(_label, solve(*_args), _expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)

prompt:
An edit that overtook its create is lost, so the original text stays visible.

events {op, id, ver, text} arrive in any order and are processed in arrival order. Per id the highest version wins and an edit that only equals the current version is ignored; an edit that arrives before its create is buffered (highest buffered version kept) and applied if it is newer than the create. Delete is terminal: the id shows None and later creates and edits are ignored whatever their version. Result: id -> text (None for deleted) for created or deleted ids, sorted by id.

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(events):
    state = {}
    buffered = {}
    dead = set()
    for e in events:
        i = e['id']
        if e['op'] == 'delete':
            dead.add(i)
            state[i] = {'text': None, 'ver': e['ver']}
        elif i in dead:
            continue
        elif e['op'] == 'create':
            best = buffered.pop(i, None)
            state[i] = best if best and best['ver'] > e['ver'] else e
        elif i in state:
            if e['ver'] != state[i]['ver']:
                state[i] = e
        else:
            cur = buffered.get(i)
            if cur is None or e['ver'] > cur['ver']:
                buffered[i] = e
    return {i: v['text'] for i, v in sorted(state.items())}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
_CASES = {1: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 4, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 3, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 4, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 1, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}],), {'g0': 't0'})], 2: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 5, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 4, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 5, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 2, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}],), {'g0': 't0', 'g1': 't1'})], 3: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 6, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 5, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 6, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 3, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}, {'op': 'create', 'id': 'g2', 'ver': 1, 'text': 't2'}],), {'g0': 't0', 'g1': 't1', 'g2': 't2'})], 4: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 7, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 6, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 7, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 4, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}, {'op': 'create', 'id': 'g2', 'ver': 1, 'text': 't2'}, {'op': 'create', 'id': 'g3', 'ver': 1, 'text': 't3'}],), {'g0': 't0', 'g1': 't1', 'g2': 't2', 'g3': 't3'})], 5: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 8, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 7, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 8, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 5, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}, {'op': 'create', 'id': 'g2', 'ver': 1, 'text': 't2'}, {'op': 'create', 'id': 'g3', 'ver': 1, 'text': 't3'}, {'op': 'create', 'id': 'g4', 'ver': 1, 'text': 't4'}],), {'g0': 't0', 'g1': 't1', 'g2': 't2', 'g3': 't3', 'g4': 't4'})]}
for _label, _args, _expected in _CASES[N]:
    check(_label, solve(*_args), _expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(events):
    state = {}
    buffered = {}
    dead = set()
    for e in events:
        i = e['id']
        if e['op'] == 'delete':
            dead.add(i)
            state[i] = {'text': None, 'ver': e['ver']}
        elif i in dead:
            continue
        elif e['op'] == 'create':
            best = buffered.pop(i, None)
            state[i] = best if best and best['ver'] > e['ver'] else e
        elif i in state:
            if e['ver'] > state[i]['ver'] - 1:
                state[i] = e
        else:
            cur = buffered.get(i)
            if cur is None or e['ver'] > cur['ver']:
                buffered[i] = e
    return {i: v['text'] for i, v in sorted(state.items())}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
_CASES = {1: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 4, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 3, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 4, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 1, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}],), {'g0': 't0'})], 2: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 5, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 4, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 5, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 2, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}],), {'g0': 't0', 'g1': 't1'})], 3: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 6, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 5, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 6, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 3, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}, {'op': 'create', 'id': 'g2', 'ver': 1, 'text': 't2'}],), {'g0': 't0', 'g1': 't1', 'g2': 't2'})], 4: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 7, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 6, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 7, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 4, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}, {'op': 'create', 'id': 'g2', 'ver': 1, 'text': 't2'}, {'op': 'create', 'id': 'g3', 'ver': 1, 'text': 't3'}],), {'g0': 't0', 'g1': 't1', 'g2': 't2', 'g3': 't3'})], 5: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 8, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 7, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 8, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 5, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}, {'op': 'create', 'id': 'g2', 'ver': 1, 'text': 't2'}, {'op': 'create', 'id': 'g3', 'ver': 1, 'text': 't3'}, {'op': 'create', 'id': 'g4', 'ver': 1, 'text': 't4'}],), {'g0': 't0', 'g1': 't1', 'g2': 't2', 'g3': 't3', 'g4': 't4'})]}
for _label, _args, _expected in _CASES[N]:
    check(_label, solve(*_args), _expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)

prompt:
A delayed older edit overwrites the newest text of a message.

events {op, id, ver, text} arrive in any order and are processed in arrival order. Per id the highest version wins and an edit that only equals the current version is ignored; an edit that arrives before its create is buffered (highest buffered version kept) and applied if it is newer than the create. Delete is terminal: the id shows None and later creates and edits are ignored whatever their version. Result: id -> text (None for deleted) for created or deleted ids, sorted by id.

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(events):
    state = {}
    buffered = {}
    dead = set()
    for e in events:
        i = e['id']
        if e['op'] == 'delete':
            dead.add(i)
            state[i] = {'text': None, 'ver': e['ver']}
        elif i in dead:
            continue
        elif e['op'] == 'create':
            best = buffered.pop(i, None)
            state[i] = best if best and best['ver'] > e['ver'] else e
        elif i in state:
            if e['ver'] > state[i]['ver']:
                state[i] = e
        else:
            cur = buffered.get(i)
            if cur is None:
                buffered[i] = e
    return {i: v['text'] for i, v in sorted(state.items())}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
_CASES = {1: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 4, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 3, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 4, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 1, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}],), {'g0': 't0'})], 2: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 5, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 4, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 5, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 2, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}],), {'g0': 't0', 'g1': 't1'})], 3: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 6, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 5, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 6, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 3, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}, {'op': 'create', 'id': 'g2', 'ver': 1, 'text': 't2'}],), {'g0': 't0', 'g1': 't1', 'g2': 't2'})], 4: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 7, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 6, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 7, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 4, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}, {'op': 'create', 'id': 'g2', 'ver': 1, 'text': 't2'}, {'op': 'create', 'id': 'g3', 'ver': 1, 'text': 't3'}],), {'g0': 't0', 'g1': 't1', 'g2': 't2', 'g3': 't3'})], 5: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 8, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 7, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 8, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 5, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}, {'op': 'create', 'id': 'g2', 'ver': 1, 'text': 't2'}, {'op': 'create', 'id': 'g3', 'ver': 1, 'text': 't3'}, {'op': 'create', 'id': 'g4', 'ver': 1, 'text': 't4'}],), {'g0': 't0', 'g1': 't1', 'g2': 't2', 'g3': 't3', 'g4': 't4'})]}
for _label, _args, _expected in _CASES[N]:
    check(_label, solve(*_args), _expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(events):
    state = {}
    buffered = {}
    dead = set()
    for e in events:
        i = e['id']
        if e['op'] == 'delete':
            dead.add(i)
            state[i] = {'text': None, 'ver': e['ver']}
        elif i in dead:
            continue
        elif e['op'] == 'create':
            best = buffered.pop(i, None)
            state[i] = best if best and best['ver'] > e['ver'] else e
        elif i in state:
            if e['ver'] > state[i]['ver']:
                state[i] = e
        else:
            cur = buffered.get(i)
            if cur is None or e['ver'] != cur['ver']:
                buffered[i] = e
    return {i: v['text'] for i, v in sorted(state.items())}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
_CASES = {1: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 4, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 3, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 4, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 1, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}],), {'g0': 't0'})], 2: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 5, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 4, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 5, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 2, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}],), {'g0': 't0', 'g1': 't1'})], 3: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 6, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 5, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 6, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 3, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}, {'op': 'create', 'id': 'g2', 'ver': 1, 'text': 't2'}],), {'g0': 't0', 'g1': 't1', 'g2': 't2'})], 4: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 7, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 6, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 7, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 4, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}, {'op': 'create', 'id': 'g2', 'ver': 1, 'text': 't2'}, {'op': 'create', 'id': 'g3', 'ver': 1, 'text': 't3'}],), {'g0': 't0', 'g1': 't1', 'g2': 't2', 'g3': 't3'})], 5: [('edit after delete with higher version', ([{'op': 'create', 'id': 'a', 'ver': 1, 'text': 'hi'}, {'op': 'delete', 'id': 'a', 'ver': 2, 'text': None}, {'op': 'edit', 'id': 'a', 'ver': 8, 'text': 'again'}],), {'a': None}), ('edit arrives before create', ([{'op': 'edit', 'id': 'b', 'ver': 2, 'text': 'fixed typo'}, {'op': 'create', 'id': 'b', 'ver': 1, 'text': 'fixd'}],), {'b': 'fixed typo'}), ('stale buffered edit', ([{'op': 'edit', 'id': 'c', 'ver': 1, 'text': 'old'}, {'op': 'create', 'id': 'c', 'ver': 7, 'text': 'new'}],), {'c': 'new'}), ('late stale edit', ([{'op': 'create', 'id': 'd', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'd', 'ver': 3, 'text': 'z'}, {'op': 'edit', 'id': 'd', 'ver': 2, 'text': 'y'}],), {'d': 'z'}), ('two buffered edits out of order', ([{'op': 'edit', 'id': 'e', 'ver': 3, 'text': 'v3'}, {'op': 'edit', 'id': 'e', 'ver': 2, 'text': 'v2'}, {'op': 'create', 'id': 'e', 'ver': 1, 'text': 'v1'}],), {'e': 'v3'}), ('two buffered edits in order', ([{'op': 'edit', 'id': 'h', 'ver': 2, 'text': 'w2'}, {'op': 'edit', 'id': 'h', 'ver': 8, 'text': 'w3'}, {'op': 'create', 'id': 'h', 'ver': 1, 'text': 'w1'}],), {'h': 'w3'}), ('conflicting edit with equal version', ([{'op': 'create', 'id': 'i', 'ver': 1, 'text': 'x'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'first'}, {'op': 'edit', 'id': 'i', 'ver': 2, 'text': 'second'}],), {'i': 'first'}), ('create after delete', ([{'op': 'delete', 'id': 'f', 'ver': 1, 'text': None}, {'op': 'create', 'id': 'f', 'ver': 5, 'text': 'ghost'}],), {'f': None}), ('plain messages', ([{'op': 'create', 'id': 'g0', 'ver': 1, 'text': 't0'}, {'op': 'create', 'id': 'g1', 'ver': 1, 'text': 't1'}, {'op': 'create', 'id': 'g2', 'ver': 1, 'text': 't2'}, {'op': 'create', 'id': 'g3', 'ver': 1, 'text': 't3'}, {'op': 'create', 'id': 'g4', 'ver': 1, 'text': 't4'}],), {'g0': 't0', 'g1': 't1', 'g2': 't2', 'g3': 't3', 'g4': 't4'})]}
for _label, _args, _expected in _CASES[N]:
    check(_label, solve(*_args), _expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)

prompt:
When two edits overtake their create, the wrong one is kept in the buffer.

events {op, id, ver, text} arrive in any order and are processed in arrival order. Per id the highest version wins and an edit that only equals the current version is ignored; an edit that arrives before its create is buffered (highest buffered version kept) and applied if it is newer than the create. Delete is terminal: the id shows None and later creates and edits are ignored whatever their version. Result: id -> text (None for deleted) for created or deleted ids, sorted by id.

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(events, viewer, limit):
    current = {}
    first = {}
    per_user = {}
    for seq, user, emoji, action in events:
        users = current.get(emoji, set())
        if action == 'add':
            if user in users or per_user.get(user, 0) >= limit:
                continue
            if not users:
                first[emoji] = seq
            users.add(user)
            current[emoji] = users
            per_user[user] = per_user.get(user, 0) + 1
        elif user in users:
            users.discard(user)
            per_user[user] = per_user.get(user, 0) - 1
    rows = [[e, len(u), viewer in u] for e, u in current.items() if u]
    rows.sort(key=lambda r: first[r[0]])
    return rows
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
_CASES = {1: [('remove delivered before add', ([[3, 'bo', 'up', 'remove'], [2, 'bo', 'up', 'add']], 'me', 3), []), ('emoji vanishes and returns', ([[1, 'bo', 'up', 'add'], [2, 'cy', 'ok', 'add'], [3, 'bo', 'up', 'remove'], [5, 'di', 'up', 'add']], 'me', 3), [['ok', 1, False], ['up', 1, False]]), ('second user joins an emoji', ([[1, 'bo', 'up', 'add'], [2, 'cy', 'ok', 'add'], [3, 'di', 'up', 'add']], 'di', 3), [['up', 2, True], ['ok', 1, False]]), ('only reaction removed', ([[1, 'me', 'up', 'add'], [2, 'me', 'up', 'remove']], 'me', 2), []), ('limit reached', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'b', 'add'], [3, 'bo', 'c', 'add']], 'bo', 2), [['a', 1, True], ['b', 1, True]]), ('stray remove does not free a slot', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'z', 'remove'], [3, 'bo', 'b', 'add']], 'me', 1), [['a', 1, False]]), ('removal frees a slot', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'a', 'remove'], [3, 'bo', 'b', 'add']], 'bo', 1), [['b', 1, True]])], 2: [('remove delivered before add', ([[4, 'bo', 'up', 'remove'], [3, 'bo', 'up', 'add']], 'me', 3), []), ('emoji vanishes and returns', ([[1, 'bo', 'up', 'add'], [2, 'cy', 'ok', 'add'], [3, 'bo', 'up', 'remove'], [6, 'di', 'up', 'add']], 'me', 3), [['ok', 1, False], ['up', 1, False]]), ('second user joins an emoji', ([[1, 'bo', 'up', 'add'], [2, 'cy', 'ok', 'add'], [3, 'di', 'up', 'add']], 'di', 3), [['up', 2, True], ['ok', 1, False]]), ('only reaction removed', ([[1, 'me', 'up', 'add'], [2, 'me', 'up', 'remove']], 'me', 2), []), ('limit reached', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'b', 'add'], [3, 'bo', 'c', 'add']], 'bo', 2), [['a', 1, True], ['b', 1, True]]), ('stray remove does not free a slot', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'z', 'remove'], [3, 'bo', 'b', 'add']], 'me', 1), [['a', 1, False]]), ('removal frees a slot', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'a', 'remove'], [3, 'bo', 'b', 'add']], 'bo', 1), [['b', 1, True]])], 3: [('remove delivered before add', ([[5, 'bo', 'up', 'remove'], [4, 'bo', 'up', 'add']], 'me', 3), []), ('emoji vanishes and returns', ([[1, 'bo', 'up', 'add'], [2, 'cy', 'ok', 'add'], [3, 'bo', 'up', 'remove'], [7, 'di', 'up', 'add']], 'me', 3), [['ok', 1, False], ['up', 1, False]]), ('second user joins an emoji', ([[1, 'bo', 'up', 'add'], [2, 'cy', 'ok', 'add'], [3, 'di', 'up', 'add']], 'di', 3), [['up', 2, True], ['ok', 1, False]]), ('only reaction removed', ([[1, 'me', 'up', 'add'], [2, 'me', 'up', 'remove']], 'me', 2), []), ('limit reached', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'b', 'add'], [3, 'bo', 'c', 'add']], 'bo', 2), [['a', 1, True], ['b', 1, True]]), ('stray remove does not free a slot', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'z', 'remove'], [3, 'bo', 'b', 'add']], 'me', 1), [['a', 1, False]]), ('removal frees a slot', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'a', 'remove'], [3, 'bo', 'b', 'add']], 'bo', 1), [['b', 1, True]])], 4: [('remove delivered before add', ([[6, 'bo', 'up', 'remove'], [5, 'bo', 'up', 'add']], 'me', 3), []), ('emoji vanishes and returns', ([[1, 'bo', 'up', 'add'], [2, 'cy', 'ok', 'add'], [3, 'bo', 'up', 'remove'], [8, 'di', 'up', 'add']], 'me', 3), [['ok', 1, False], ['up', 1, False]]), ('second user joins an emoji', ([[1, 'bo', 'up', 'add'], [2, 'cy', 'ok', 'add'], [3, 'di', 'up', 'add']], 'di', 3), [['up', 2, True], ['ok', 1, False]]), ('only reaction removed', ([[1, 'me', 'up', 'add'], [2, 'me', 'up', 'remove']], 'me', 2), []), ('limit reached', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'b', 'add'], [3, 'bo', 'c', 'add']], 'bo', 2), [['a', 1, True], ['b', 1, True]]), ('stray remove does not free a slot', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'z', 'remove'], [3, 'bo', 'b', 'add']], 'me', 1), [['a', 1, False]]), ('removal frees a slot', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'a', 'remove'], [3, 'bo', 'b', 'add']], 'bo', 1), [['b', 1, True]])], 5: [('remove delivered before add', ([[7, 'bo', 'up', 'remove'], [6, 'bo', 'up', 'add']], 'me', 3), []), ('emoji vanishes and returns', ([[1, 'bo', 'up', 'add'], [2, 'cy', 'ok', 'add'], [3, 'bo', 'up', 'remove'], [9, 'di', 'up', 'add']], 'me', 3), [['ok', 1, False], ['up', 1, False]]), ('second user joins an emoji', ([[1, 'bo', 'up', 'add'], [2, 'cy', 'ok', 'add'], [3, 'di', 'up', 'add']], 'di', 3), [['up', 2, True], ['ok', 1, False]]), ('only reaction removed', ([[1, 'me', 'up', 'add'], [2, 'me', 'up', 'remove']], 'me', 2), []), ('limit reached', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'b', 'add'], [3, 'bo', 'c', 'add']], 'bo', 2), [['a', 1, True], ['b', 1, True]]), ('stray remove does not free a slot', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'z', 'remove'], [3, 'bo', 'b', 'add']], 'me', 1), [['a', 1, False]]), ('removal frees a slot', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'a', 'remove'], [3, 'bo', 'b', 'add']], 'bo', 1), [['b', 1, True]])]}
for _label, _args, _expected in _CASES[N]:
    check(_label, solve(*_args), _expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(events, viewer, limit):
    current = {}
    first = {}
    per_user = {}
    for seq, user, emoji, action in sorted(events, key=lambda e: e[3]):
        users = current.get(emoji, set())
        if action == 'add':
            if user in users or per_user.get(user, 0) >= limit:
                continue
            if not users:
                first[emoji] = seq
            users.add(user)
            current[emoji] = users
            per_user[user] = per_user.get(user, 0) + 1
        elif user in users:
            users.discard(user)
            per_user[user] = per_user.get(user, 0) - 1
    rows = [[e, len(u), viewer in u] for e, u in current.items() if u]
    rows.sort(key=lambda r: first[r[0]])
    return rows
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
_CASES = {1: [('remove delivered before add', ([[3, 'bo', 'up', 'remove'], [2, 'bo', 'up', 'add']], 'me', 3), []), ('emoji vanishes and returns', ([[1, 'bo', 'up', 'add'], [2, 'cy', 'ok', 'add'], [3, 'bo', 'up', 'remove'], [5, 'di', 'up', 'add']], 'me', 3), [['ok', 1, False], ['up', 1, False]]), ('second user joins an emoji', ([[1, 'bo', 'up', 'add'], [2, 'cy', 'ok', 'add'], [3, 'di', 'up', 'add']], 'di', 3), [['up', 2, True], ['ok', 1, False]]), ('only reaction removed', ([[1, 'me', 'up', 'add'], [2, 'me', 'up', 'remove']], 'me', 2), []), ('limit reached', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'b', 'add'], [3, 'bo', 'c', 'add']], 'bo', 2), [['a', 1, True], ['b', 1, True]]), ('stray remove does not free a slot', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'z', 'remove'], [3, 'bo', 'b', 'add']], 'me', 1), [['a', 1, False]]), ('removal frees a slot', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'a', 'remove'], [3, 'bo', 'b', 'add']], 'bo', 1), [['b', 1, True]])], 2: [('remove delivered before add', ([[4, 'bo', 'up', 'remove'], [3, 'bo', 'up', 'add']], 'me', 3), []), ('emoji vanishes and returns', ([[1, 'bo', 'up', 'add'], [2, 'cy', 'ok', 'add'], [3, 'bo', 'up', 'remove'], [6, 'di', 'up', 'add']], 'me', 3), [['ok', 1, False], ['up', 1, False]]), ('second user joins an emoji', ([[1, 'bo', 'up', 'add'], [2, 'cy', 'ok', 'add'], [3, 'di', 'up', 'add']], 'di', 3), [['up', 2, True], ['ok', 1, False]]), ('only reaction removed', ([[1, 'me', 'up', 'add'], [2, 'me', 'up', 'remove']], 'me', 2), []), ('limit reached', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'b', 'add'], [3, 'bo', 'c', 'add']], 'bo', 2), [['a', 1, True], ['b', 1, True]]), ('stray remove does not free a slot', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'z', 'remove'], [3, 'bo', 'b', 'add']], 'me', 1), [['a', 1, False]]), ('removal frees a slot', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'a', 'remove'], [3, 'bo', 'b', 'add']], 'bo', 1), [['b', 1, True]])], 3: [('remove delivered before add', ([[5, 'bo', 'up', 'remove'], [4, 'bo', 'up', 'add']], 'me', 3), []), ('emoji vanishes and returns', ([[1, 'bo', 'up', 'add'], [2, 'cy', 'ok', 'add'], [3, 'bo', 'up', 'remove'], [7, 'di', 'up', 'add']], 'me', 3), [['ok', 1, False], ['up', 1, False]]), ('second user joins an emoji', ([[1, 'bo', 'up', 'add'], [2, 'cy', 'ok', 'add'], [3, 'di', 'up', 'add']], 'di', 3), [['up', 2, True], ['ok', 1, False]]), ('only reaction removed', ([[1, 'me', 'up', 'add'], [2, 'me', 'up', 'remove']], 'me', 2), []), ('limit reached', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'b', 'add'], [3, 'bo', 'c', 'add']], 'bo', 2), [['a', 1, True], ['b', 1, True]]), ('stray remove does not free a slot', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'z', 'remove'], [3, 'bo', 'b', 'add']], 'me', 1), [['a', 1, False]]), ('removal frees a slot', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'a', 'remove'], [3, 'bo', 'b', 'add']], 'bo', 1), [['b', 1, True]])], 4: [('remove delivered before add', ([[6, 'bo', 'up', 'remove'], [5, 'bo', 'up', 'add']], 'me', 3), []), ('emoji vanishes and returns', ([[1, 'bo', 'up', 'add'], [2, 'cy', 'ok', 'add'], [3, 'bo', 'up', 'remove'], [8, 'di', 'up', 'add']], 'me', 3), [['ok', 1, False], ['up', 1, False]]), ('second user joins an emoji', ([[1, 'bo', 'up', 'add'], [2, 'cy', 'ok', 'add'], [3, 'di', 'up', 'add']], 'di', 3), [['up', 2, True], ['ok', 1, False]]), ('only reaction removed', ([[1, 'me', 'up', 'add'], [2, 'me', 'up', 'remove']], 'me', 2), []), ('limit reached', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'b', 'add'], [3, 'bo', 'c', 'add']], 'bo', 2), [['a', 1, True], ['b', 1, True]]), ('stray remove does not free a slot', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'z', 'remove'], [3, 'bo', 'b', 'add']], 'me', 1), [['a', 1, False]]), ('removal frees a slot', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'a', 'remove'], [3, 'bo', 'b', 'add']], 'bo', 1), [['b', 1, True]])], 5: [('remove delivered before add', ([[7, 'bo', 'up', 'remove'], [6, 'bo', 'up', 'add']], 'me', 3), []), ('emoji vanishes and returns', ([[1, 'bo', 'up', 'add'], [2, 'cy', 'ok', 'add'], [3, 'bo', 'up', 'remove'], [9, 'di', 'up', 'add']], 'me', 3), [['ok', 1, False], ['up', 1, False]]), ('second user joins an emoji', ([[1, 'bo', 'up', 'add'], [2, 'cy', 'ok', 'add'], [3, 'di', 'up', 'add']], 'di', 3), [['up', 2, True], ['ok', 1, False]]), ('only reaction removed', ([[1, 'me', 'up', 'add'], [2, 'me', 'up', 'remove']], 'me', 2), []), ('limit reached', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'b', 'add'], [3, 'bo', 'c', 'add']], 'bo', 2), [['a', 1, True], ['b', 1, True]]), ('stray remove does not free a slot', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'z', 'remove'], [3, 'bo', 'b', 'add']], 'me', 1), [['a', 1, False]]), ('removal frees a slot', ([[1, 'bo', 'a', 'add'], [2, 'bo', 'a', 'remove'], [3, 'bo', 'b', 'add']], 'bo', 1), [['b', 1, True]])]}
for _label, _args, _expected in _CASES[N]:
    check(_label, solve(*_args), _expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)

prompt:
A remove that overtook its add leaves the reaction stuck on the message.

events [seq, user, emoji, action] are applied in seq order. A user holds each emoji at most once and at most `limit` distinct emoji per message; an add beyond the limit is ignored. A remove only releases a reaction the user holds. Result rows [emoji, count, mine] for emoji with at least one user, ordered by the seq at which the emoji most recently went from zero to one user.

split: open-access