{"abstract":"While paused, event resume_accepted produces live/deliver_delta instead of catchup/request_after_cursor.","category":"Protocols","checks":14,"contract":"For the stipulated Resumable event subscription controller, initialize the explicitly shown resource registers from seed (1..5), then consume classified events sequentially. After each event return a deep snapshot of phase, resource registers, and cumulative emitted control frames. The explicit ten phase/event rules and their resource effects define admission and response semantics. Unlisted events preserve phase and emit rejection. Payload is the consecutive integers seed through 2*seed+1. Empty event input returns no observations.","evaluation_group":"s3-protocols-subscription_resume","failed_approach":"The partial repair chooses catchup/request_from_start, which still violates this phase-specific event contract.","family":"s3-protocols-subscription_resume-paused-resume_accepted","id":"FA-19176","implementations":{"attempt":{"sha256":"5eb4a5b36ac14e9bb0efda1772b824d7165e6fca6a85f604afd050782fa905ed","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(phase, events, seed):\n    payload = list(range(seed, seed * 2 + 2))\n    r = {'baseline': [seed-1], 'buffer': payload[:], 'cursor': seed, 'subscription': True, 'published': [], 'ready': False}\n    frames = []\n    observed = []\n    table = {('new', 'subscribe'): ('pending', 'request_snapshot'), ('pending', 'snapshot_begin'): ('snapshot', 'reset_baseline'), ('snapshot', 'snapshot_end'): ('catchup', 'seal_baseline'), ('catchup', 'caught_up'): ('live', 'publish_ready'), ('live', 'gap'): ('resync', 'request_baseline'), ('resync', 'snapshot_begin'): ('snapshot', 'replace_baseline'), ('live', 'disconnect'): ('paused', 'save_cursor'), ('paused', 'resume_accepted'): ('catchup', 'request_from_start'), ('paused', 'cursor_expired'): ('pending', 'request_snapshot'), ('live', 'unsubscribe'): ('closed', 'release_subscription')}\n    for event in events:\n        phase, action = table.get((phase, event), (phase, \"reject\"))\n        if action == 'request_snapshot':\n            frames.append(['SNAPSHOT',seed])\n        elif action == 'reset_baseline':\n            r['baseline']=[]\n        elif action == 'seal_baseline':\n            r['baseline']=payload[:]\n        elif action == 'publish_ready':\n            r['published'].extend(r['baseline']+r['buffer']); r['buffer']=[]; r['ready']=True\n        elif action == 'request_baseline':\n            r['ready']=False; frames.append(['SNAPSHOT',seed])\n        elif action == 'replace_baseline':\n            r['baseline']=[]; r['published']=[]\n        elif action == 'save_cursor':\n            r['cursor']=seed\n        elif action == 'request_after_cursor':\n            frames.append(['RESUME_AFTER',r['cursor']])\n        elif action == 'release_subscription':\n            r['subscription']=False\n        elif action == 'merge_old':\n            r['baseline'].extend(payload)\n        elif action == 'deliver_delta':\n            r['published'].extend(payload)\n        elif action == 'publish':\n            r['published'].extend(r['baseline'])\n        elif action == 'drop_buffer':\n            r['buffer']=[]; r['ready']=True\n        elif action == 'keep_delivering':\n            r['published'].extend(payload)\n        elif action == 'forget_cursor':\n            r['cursor']=None\n        elif action == 'advance_cursor':\n            r['cursor']=seed+len(payload)\n        elif action == 'request_from_start':\n            frames.append(['RESUME_AFTER',0])\n        elif action == 'retry_cursor':\n            frames.append(['RESUME_AFTER',r['cursor']])\n        elif action == 'retain_subscription':\n            r['ready']=False\n        else:\n            if action not in (\"wait\", \"ignore\", \"keep\", \"retain\", \"keep_peer\", \"keep_offer\", \"keep_hold\", \"keep_batch\", \"retain_staging\", \"keep_staging\", \"keep_local_owner\", \"keep_old_session\", \"keep_address\", \"keep_old_expiry\", \"ignore_conflict\", \"keep_service\", \"keep_subscription\", \"retain_shadow\", \"keep_live\", \"keep_suspicion\", \"keep_roles\", \"keep_staged\"):\n                frames.append([action, payload[:]])\n        observed.append(json.loads(json.dumps({\"phase\": phase, \"registers\": r, \"frames\": frames})))\n    return observed\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {1: [('new/subscribe', 'new', ['subscribe'], [{'phase': 'pending', 'registers': {'baseline': [0], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 1]]}]), ('pending/snapshot_begin', 'pending', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('snapshot/snapshot_end', 'snapshot', ['snapshot_end'], [{'phase': 'catchup', 'registers': {'baseline': [1, 2, 3], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('catchup/caught_up', 'catchup', ['caught_up'], [{'phase': 'live', 'registers': {'baseline': [0], 'buffer': [], 'cursor': 1, 'subscription': True, 'published': [0, 1, 2, 3], 'ready': True}, 'frames': []}]), ('live/gap', 'live', ['gap'], [{'phase': 'resync', 'registers': {'baseline': [0], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 1]]}]), ('resync/snapshot_begin', 'resync', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('live/disconnect', 'live', ['disconnect'], [{'phase': 'paused', 'registers': {'baseline': [0], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('paused/resume_accepted', 'paused', ['resume_accepted'], [{'phase': 'catchup', 'registers': {'baseline': [0], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['RESUME_AFTER', 1]]}]), ('paused/cursor_expired', 'paused', ['cursor_expired'], [{'phase': 'pending', 'registers': {'baseline': [0], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 1]]}]), ('live/unsubscribe', 'live', ['unsubscribe'], [{'phase': 'closed', 'registers': {'baseline': [0], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': False, 'published': [], 'ready': False}, 'frames': []}]), ('ordered trace 0', 'new', ['subscribe', 'snapshot_begin', 'snapshot_end', 'caught_up'], [{'phase': 'pending', 'registers': {'baseline': [0], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 1]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 1]]}, {'phase': 'catchup', 'registers': {'baseline': [1, 2, 3], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 1]]}, {'phase': 'live', 'registers': {'baseline': [1, 2, 3], 'buffer': [], 'cursor': 1, 'subscription': True, 'published': [1, 2, 3, 1, 2, 3], 'ready': True}, 'frames': [['SNAPSHOT', 1]]}]), ('ordered trace 3', 'catchup', ['caught_up', 'disconnect', 'cursor_expired', 'snapshot_begin'], [{'phase': 'live', 'registers': {'baseline': [0], 'buffer': [], 'cursor': 1, 'subscription': True, 'published': [0, 1, 2, 3], 'ready': True}, 'frames': []}, {'phase': 'paused', 'registers': {'baseline': [0], 'buffer': [], 'cursor': 1, 'subscription': True, 'published': [0, 1, 2, 3], 'ready': True}, 'frames': []}, {'phase': 'pending', 'registers': {'baseline': [0], 'buffer': [], 'cursor': 1, 'subscription': True, 'published': [0, 1, 2, 3], 'ready': True}, 'frames': [['SNAPSHOT', 1]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [], 'cursor': 1, 'subscription': True, 'published': [0, 1, 2, 3], 'ready': True}, 'frames': [['SNAPSHOT', 1]]}]), ('empty input', 'new', [], []), ('unknown event', 'new', ['unsupported'], [{'phase': 'new', 'registers': {'baseline': [0], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['reject', [1, 2, 3]]]}])], 2: [('new/subscribe', 'new', ['subscribe'], [{'phase': 'pending', 'registers': {'baseline': [1], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 2]]}]), ('pending/snapshot_begin', 'pending', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('snapshot/snapshot_end', 'snapshot', ['snapshot_end'], [{'phase': 'catchup', 'registers': {'baseline': [2, 3, 4, 5], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('catchup/caught_up', 'catchup', ['caught_up'], [{'phase': 'live', 'registers': {'baseline': [1], 'buffer': [], 'cursor': 2, 'subscription': True, 'published': [1, 2, 3, 4, 5], 'ready': True}, 'frames': []}]), ('live/gap', 'live', ['gap'], [{'phase': 'resync', 'registers': {'baseline': [1], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 2]]}]), ('resync/snapshot_begin', 'resync', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('live/disconnect', 'live', ['disconnect'], [{'phase': 'paused', 'registers': {'baseline': [1], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('paused/resume_accepted', 'paused', ['resume_accepted'], [{'phase': 'catchup', 'registers': {'baseline': [1], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['RESUME_AFTER', 2]]}]), ('paused/cursor_expired', 'paused', ['cursor_expired'], [{'phase': 'pending', 'registers': {'baseline': [1], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 2]]}]), ('live/unsubscribe', 'live', ['unsubscribe'], [{'phase': 'closed', 'registers': {'baseline': [1], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': False, 'published': [], 'ready': False}, 'frames': []}]), ('ordered trace 0', 'new', ['subscribe', 'snapshot_begin', 'snapshot_end', 'caught_up', 'disconnect'], [{'phase': 'pending', 'registers': {'baseline': [1], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 2]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 2]]}, {'phase': 'catchup', 'registers': {'baseline': [2, 3, 4, 5], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 2]]}, {'phase': 'live', 'registers': {'baseline': [2, 3, 4, 5], 'buffer': [], 'cursor': 2, 'subscription': True, 'published': [2, 3, 4, 5, 2, 3, 4, 5], 'ready': True}, 'frames': [['SNAPSHOT', 2]]}, {'phase': 'paused', 'registers': {'baseline': [2, 3, 4, 5], 'buffer': [], 'cursor': 2, 'subscription': True, 'published': [2, 3, 4, 5, 2, 3, 4, 5], 'ready': True}, 'frames': [['SNAPSHOT', 2]]}]), ('ordered trace 3', 'catchup', ['caught_up', 'disconnect', 'cursor_expired', 'snapshot_begin', 'snapshot_end'], [{'phase': 'live', 'registers': {'baseline': [1], 'buffer': [], 'cursor': 2, 'subscription': True, 'published': [1, 2, 3, 4, 5], 'ready': True}, 'frames': []}, {'phase': 'paused', 'registers': {'baseline': [1], 'buffer': [], 'cursor': 2, 'subscription': True, 'published': [1, 2, 3, 4, 5], 'ready': True}, 'frames': []}, {'phase': 'pending', 'registers': {'baseline': [1], 'buffer': [], 'cursor': 2, 'subscription': True, 'published': [1, 2, 3, 4, 5], 'ready': True}, 'frames': [['SNAPSHOT', 2]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [], 'cursor': 2, 'subscription': True, 'published': [1, 2, 3, 4, 5], 'ready': True}, 'frames': [['SNAPSHOT', 2]]}, {'phase': 'catchup', 'registers': {'baseline': [2, 3, 4, 5], 'buffer': [], 'cursor': 2, 'subscription': True, 'published': [1, 2, 3, 4, 5], 'ready': True}, 'frames': [['SNAPSHOT', 2]]}]), ('empty input', 'new', [], []), ('unknown event', 'new', ['unsupported'], [{'phase': 'new', 'registers': {'baseline': [1], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['reject', [2, 3, 4, 5]]]}])], 3: [('new/subscribe', 'new', ['subscribe'], [{'phase': 'pending', 'registers': {'baseline': [2], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 3]]}]), ('pending/snapshot_begin', 'pending', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('snapshot/snapshot_end', 'snapshot', ['snapshot_end'], [{'phase': 'catchup', 'registers': {'baseline': [3, 4, 5, 6, 7], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('catchup/caught_up', 'catchup', ['caught_up'], [{'phase': 'live', 'registers': {'baseline': [2], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [2, 3, 4, 5, 6, 7], 'ready': True}, 'frames': []}]), ('live/gap', 'live', ['gap'], [{'phase': 'resync', 'registers': {'baseline': [2], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 3]]}]), ('resync/snapshot_begin', 'resync', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('live/disconnect', 'live', ['disconnect'], [{'phase': 'paused', 'registers': {'baseline': [2], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('paused/resume_accepted', 'paused', ['resume_accepted'], [{'phase': 'catchup', 'registers': {'baseline': [2], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['RESUME_AFTER', 3]]}]), ('paused/cursor_expired', 'paused', ['cursor_expired'], [{'phase': 'pending', 'registers': {'baseline': [2], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 3]]}]), ('live/unsubscribe', 'live', ['unsubscribe'], [{'phase': 'closed', 'registers': {'baseline': [2], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': False, 'published': [], 'ready': False}, 'frames': []}]), ('ordered trace 0', 'new', ['subscribe', 'snapshot_begin', 'snapshot_end', 'caught_up', 'disconnect', 'cursor_expired'], [{'phase': 'pending', 'registers': {'baseline': [2], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 3]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 3]]}, {'phase': 'catchup', 'registers': {'baseline': [3, 4, 5, 6, 7], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 3]]}, {'phase': 'live', 'registers': {'baseline': [3, 4, 5, 6, 7], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'ready': True}, 'frames': [['SNAPSHOT', 3]]}, {'phase': 'paused', 'registers': {'baseline': [3, 4, 5, 6, 7], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'ready': True}, 'frames': [['SNAPSHOT', 3]]}, {'phase': 'pending', 'registers': {'baseline': [3, 4, 5, 6, 7], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'ready': True}, 'frames': [['SNAPSHOT', 3], ['SNAPSHOT', 3]]}]), ('ordered trace 3', 'catchup', ['caught_up', 'disconnect', 'cursor_expired', 'snapshot_begin', 'snapshot_end', 'caught_up'], [{'phase': 'live', 'registers': {'baseline': [2], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [2, 3, 4, 5, 6, 7], 'ready': True}, 'frames': []}, {'phase': 'paused', 'registers': {'baseline': [2], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [2, 3, 4, 5, 6, 7], 'ready': True}, 'frames': []}, {'phase': 'pending', 'registers': {'baseline': [2], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [2, 3, 4, 5, 6, 7], 'ready': True}, 'frames': [['SNAPSHOT', 3]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [2, 3, 4, 5, 6, 7], 'ready': True}, 'frames': [['SNAPSHOT', 3]]}, {'phase': 'catchup', 'registers': {'baseline': [3, 4, 5, 6, 7], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [2, 3, 4, 5, 6, 7], 'ready': True}, 'frames': [['SNAPSHOT', 3]]}, {'phase': 'live', 'registers': {'baseline': [3, 4, 5, 6, 7], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [2, 3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'ready': True}, 'frames': [['SNAPSHOT', 3]]}]), ('empty input', 'new', [], []), ('unknown event', 'new', ['unsupported'], [{'phase': 'new', 'registers': {'baseline': [2], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['reject', [3, 4, 5, 6, 7]]]}])], 4: [('new/subscribe', 'new', ['subscribe'], [{'phase': 'pending', 'registers': {'baseline': [3], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 4]]}]), ('pending/snapshot_begin', 'pending', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('snapshot/snapshot_end', 'snapshot', ['snapshot_end'], [{'phase': 'catchup', 'registers': {'baseline': [4, 5, 6, 7, 8, 9], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('catchup/caught_up', 'catchup', ['caught_up'], [{'phase': 'live', 'registers': {'baseline': [3], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [3, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': []}]), ('live/gap', 'live', ['gap'], [{'phase': 'resync', 'registers': {'baseline': [3], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 4]]}]), ('resync/snapshot_begin', 'resync', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('live/disconnect', 'live', ['disconnect'], [{'phase': 'paused', 'registers': {'baseline': [3], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('paused/resume_accepted', 'paused', ['resume_accepted'], [{'phase': 'catchup', 'registers': {'baseline': [3], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['RESUME_AFTER', 4]]}]), ('paused/cursor_expired', 'paused', ['cursor_expired'], [{'phase': 'pending', 'registers': {'baseline': [3], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 4]]}]), ('live/unsubscribe', 'live', ['unsubscribe'], [{'phase': 'closed', 'registers': {'baseline': [3], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': False, 'published': [], 'ready': False}, 'frames': []}]), ('ordered trace 0', 'new', ['subscribe', 'snapshot_begin', 'snapshot_end', 'caught_up', 'disconnect', 'cursor_expired', 'snapshot_begin'], [{'phase': 'pending', 'registers': {'baseline': [3], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'catchup', 'registers': {'baseline': [4, 5, 6, 7, 8, 9], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'live', 'registers': {'baseline': [4, 5, 6, 7, 8, 9], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'paused', 'registers': {'baseline': [4, 5, 6, 7, 8, 9], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'pending', 'registers': {'baseline': [4, 5, 6, 7, 8, 9], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': [['SNAPSHOT', 4], ['SNAPSHOT', 4]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': [['SNAPSHOT', 4], ['SNAPSHOT', 4]]}]), ('ordered trace 3', 'catchup', ['caught_up', 'disconnect', 'cursor_expired', 'snapshot_begin', 'snapshot_end', 'caught_up', 'gap'], [{'phase': 'live', 'registers': {'baseline': [3], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [3, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': []}, {'phase': 'paused', 'registers': {'baseline': [3], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [3, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': []}, {'phase': 'pending', 'registers': {'baseline': [3], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [3, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [3, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'catchup', 'registers': {'baseline': [4, 5, 6, 7, 8, 9], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [3, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'live', 'registers': {'baseline': [4, 5, 6, 7, 8, 9], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [3, 4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'resync', 'registers': {'baseline': [4, 5, 6, 7, 8, 9], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [3, 4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'ready': False}, 'frames': [['SNAPSHOT', 4], ['SNAPSHOT', 4]]}]), ('empty input', 'new', [], []), ('unknown event', 'new', ['unsupported'], [{'phase': 'new', 'registers': {'baseline': [3], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['reject', [4, 5, 6, 7, 8, 9]]]}])], 5: [('new/subscribe', 'new', ['subscribe'], [{'phase': 'pending', 'registers': {'baseline': [4], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 5]]}]), ('pending/snapshot_begin', 'pending', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('snapshot/snapshot_end', 'snapshot', ['snapshot_end'], [{'phase': 'catchup', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('catchup/caught_up', 'catchup', ['caught_up'], [{'phase': 'live', 'registers': {'baseline': [4], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': []}]), ('live/gap', 'live', ['gap'], [{'phase': 'resync', 'registers': {'baseline': [4], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 5]]}]), ('resync/snapshot_begin', 'resync', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('live/disconnect', 'live', ['disconnect'], [{'phase': 'paused', 'registers': {'baseline': [4], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('paused/resume_accepted', 'paused', ['resume_accepted'], [{'phase': 'catchup', 'registers': {'baseline': [4], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['RESUME_AFTER', 5]]}]), ('paused/cursor_expired', 'paused', ['cursor_expired'], [{'phase': 'pending', 'registers': {'baseline': [4], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 5]]}]), ('live/unsubscribe', 'live', ['unsubscribe'], [{'phase': 'closed', 'registers': {'baseline': [4], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': False, 'published': [], 'ready': False}, 'frames': []}]), ('ordered trace 0', 'new', ['subscribe', 'snapshot_begin', 'snapshot_end', 'caught_up', 'disconnect', 'cursor_expired', 'snapshot_begin', 'snapshot_end'], [{'phase': 'pending', 'registers': {'baseline': [4], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'catchup', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'live', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'paused', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'pending', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5], ['SNAPSHOT', 5]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5], ['SNAPSHOT', 5]]}, {'phase': 'catchup', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5], ['SNAPSHOT', 5]]}]), ('ordered trace 3', 'catchup', ['caught_up', 'disconnect', 'cursor_expired', 'snapshot_begin', 'snapshot_end', 'caught_up', 'gap', 'snapshot_begin'], [{'phase': 'live', 'registers': {'baseline': [4], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': []}, {'phase': 'paused', 'registers': {'baseline': [4], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': []}, {'phase': 'pending', 'registers': {'baseline': [4], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'catchup', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'live', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'resync', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'ready': False}, 'frames': [['SNAPSHOT', 5], ['SNAPSHOT', 5]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 5], ['SNAPSHOT', 5]]}]), ('empty input', 'new', [], []), ('unknown event', 'new', ['unsupported'], [{'phase': 'new', 'registers': {'baseline': [4], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['reject', [5, 6, 7, 8, 9, 10, 11]]]}])]}\nfor label, phase, events, expected in cases[N]:\n    check(label, solve(phase, events, N), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"7e57bea7c9d7c570d8dc220300674e1db307525ae0d0ffce50ac76c711b6e900","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(phase, events, seed):\n    payload = list(range(seed, seed * 2 + 2))\n    r = {'baseline': [seed-1], 'buffer': payload[:], 'cursor': seed, 'subscription': True, 'published': [], 'ready': False}\n    frames = []\n    observed = []\n    table = {('new', 'subscribe'): ('pending', 'request_snapshot'), ('pending', 'snapshot_begin'): ('snapshot', 'reset_baseline'), ('snapshot', 'snapshot_end'): ('catchup', 'seal_baseline'), ('catchup', 'caught_up'): ('live', 'publish_ready'), ('live', 'gap'): ('resync', 'request_baseline'), ('resync', 'snapshot_begin'): ('snapshot', 'replace_baseline'), ('live', 'disconnect'): ('paused', 'save_cursor'), ('paused', 'resume_accepted'): ('live', 'deliver_delta'), ('paused', 'cursor_expired'): ('pending', 'request_snapshot'), ('live', 'unsubscribe'): ('closed', 'release_subscription')}\n    for event in events:\n        phase, action = table.get((phase, event), (phase, \"reject\"))\n        if action == 'request_snapshot':\n            frames.append(['SNAPSHOT',seed])\n        elif action == 'reset_baseline':\n            r['baseline']=[]\n        elif action == 'seal_baseline':\n            r['baseline']=payload[:]\n        elif action == 'publish_ready':\n            r['published'].extend(r['baseline']+r['buffer']); r['buffer']=[]; r['ready']=True\n        elif action == 'request_baseline':\n            r['ready']=False; frames.append(['SNAPSHOT',seed])\n        elif action == 'replace_baseline':\n            r['baseline']=[]; r['published']=[]\n        elif action == 'save_cursor':\n            r['cursor']=seed\n        elif action == 'request_after_cursor':\n            frames.append(['RESUME_AFTER',r['cursor']])\n        elif action == 'release_subscription':\n            r['subscription']=False\n        elif action == 'merge_old':\n            r['baseline'].extend(payload)\n        elif action == 'deliver_delta':\n            r['published'].extend(payload)\n        elif action == 'publish':\n            r['published'].extend(r['baseline'])\n        elif action == 'drop_buffer':\n            r['buffer']=[]; r['ready']=True\n        elif action == 'keep_delivering':\n            r['published'].extend(payload)\n        elif action == 'forget_cursor':\n            r['cursor']=None\n        elif action == 'advance_cursor':\n            r['cursor']=seed+len(payload)\n        elif action == 'request_from_start':\n            frames.append(['RESUME_AFTER',0])\n        elif action == 'retry_cursor':\n            frames.append(['RESUME_AFTER',r['cursor']])\n        elif action == 'retain_subscription':\n            r['ready']=False\n        else:\n            if action not in (\"wait\", \"ignore\", \"keep\", \"retain\", \"keep_peer\", \"keep_offer\", \"keep_hold\", \"keep_batch\", \"retain_staging\", \"keep_staging\", \"keep_local_owner\", \"keep_old_session\", \"keep_address\", \"keep_old_expiry\", \"ignore_conflict\", \"keep_service\", \"keep_subscription\", \"retain_shadow\", \"keep_live\", \"keep_suspicion\", \"keep_roles\", \"keep_staged\"):\n                frames.append([action, payload[:]])\n        observed.append(json.loads(json.dumps({\"phase\": phase, \"registers\": r, \"frames\": frames})))\n    return observed\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {1: [('new/subscribe', 'new', ['subscribe'], [{'phase': 'pending', 'registers': {'baseline': [0], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 1]]}]), ('pending/snapshot_begin', 'pending', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('snapshot/snapshot_end', 'snapshot', ['snapshot_end'], [{'phase': 'catchup', 'registers': {'baseline': [1, 2, 3], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('catchup/caught_up', 'catchup', ['caught_up'], [{'phase': 'live', 'registers': {'baseline': [0], 'buffer': [], 'cursor': 1, 'subscription': True, 'published': [0, 1, 2, 3], 'ready': True}, 'frames': []}]), ('live/gap', 'live', ['gap'], [{'phase': 'resync', 'registers': {'baseline': [0], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 1]]}]), ('resync/snapshot_begin', 'resync', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('live/disconnect', 'live', ['disconnect'], [{'phase': 'paused', 'registers': {'baseline': [0], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('paused/resume_accepted', 'paused', ['resume_accepted'], [{'phase': 'catchup', 'registers': {'baseline': [0], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['RESUME_AFTER', 1]]}]), ('paused/cursor_expired', 'paused', ['cursor_expired'], [{'phase': 'pending', 'registers': {'baseline': [0], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 1]]}]), ('live/unsubscribe', 'live', ['unsubscribe'], [{'phase': 'closed', 'registers': {'baseline': [0], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': False, 'published': [], 'ready': False}, 'frames': []}]), ('ordered trace 0', 'new', ['subscribe', 'snapshot_begin', 'snapshot_end', 'caught_up'], [{'phase': 'pending', 'registers': {'baseline': [0], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 1]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 1]]}, {'phase': 'catchup', 'registers': {'baseline': [1, 2, 3], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 1]]}, {'phase': 'live', 'registers': {'baseline': [1, 2, 3], 'buffer': [], 'cursor': 1, 'subscription': True, 'published': [1, 2, 3, 1, 2, 3], 'ready': True}, 'frames': [['SNAPSHOT', 1]]}]), ('ordered trace 3', 'catchup', ['caught_up', 'disconnect', 'cursor_expired', 'snapshot_begin'], [{'phase': 'live', 'registers': {'baseline': [0], 'buffer': [], 'cursor': 1, 'subscription': True, 'published': [0, 1, 2, 3], 'ready': True}, 'frames': []}, {'phase': 'paused', 'registers': {'baseline': [0], 'buffer': [], 'cursor': 1, 'subscription': True, 'published': [0, 1, 2, 3], 'ready': True}, 'frames': []}, {'phase': 'pending', 'registers': {'baseline': [0], 'buffer': [], 'cursor': 1, 'subscription': True, 'published': [0, 1, 2, 3], 'ready': True}, 'frames': [['SNAPSHOT', 1]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [], 'cursor': 1, 'subscription': True, 'published': [0, 1, 2, 3], 'ready': True}, 'frames': [['SNAPSHOT', 1]]}]), ('empty input', 'new', [], []), ('unknown event', 'new', ['unsupported'], [{'phase': 'new', 'registers': {'baseline': [0], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['reject', [1, 2, 3]]]}])], 2: [('new/subscribe', 'new', ['subscribe'], [{'phase': 'pending', 'registers': {'baseline': [1], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 2]]}]), ('pending/snapshot_begin', 'pending', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('snapshot/snapshot_end', 'snapshot', ['snapshot_end'], [{'phase': 'catchup', 'registers': {'baseline': [2, 3, 4, 5], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('catchup/caught_up', 'catchup', ['caught_up'], [{'phase': 'live', 'registers': {'baseline': [1], 'buffer': [], 'cursor': 2, 'subscription': True, 'published': [1, 2, 3, 4, 5], 'ready': True}, 'frames': []}]), ('live/gap', 'live', ['gap'], [{'phase': 'resync', 'registers': {'baseline': [1], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 2]]}]), ('resync/snapshot_begin', 'resync', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('live/disconnect', 'live', ['disconnect'], [{'phase': 'paused', 'registers': {'baseline': [1], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('paused/resume_accepted', 'paused', ['resume_accepted'], [{'phase': 'catchup', 'registers': {'baseline': [1], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['RESUME_AFTER', 2]]}]), ('paused/cursor_expired', 'paused', ['cursor_expired'], [{'phase': 'pending', 'registers': {'baseline': [1], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 2]]}]), ('live/unsubscribe', 'live', ['unsubscribe'], [{'phase': 'closed', 'registers': {'baseline': [1], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': False, 'published': [], 'ready': False}, 'frames': []}]), ('ordered trace 0', 'new', ['subscribe', 'snapshot_begin', 'snapshot_end', 'caught_up', 'disconnect'], [{'phase': 'pending', 'registers': {'baseline': [1], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 2]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 2]]}, {'phase': 'catchup', 'registers': {'baseline': [2, 3, 4, 5], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 2]]}, {'phase': 'live', 'registers': {'baseline': [2, 3, 4, 5], 'buffer': [], 'cursor': 2, 'subscription': True, 'published': [2, 3, 4, 5, 2, 3, 4, 5], 'ready': True}, 'frames': [['SNAPSHOT', 2]]}, {'phase': 'paused', 'registers': {'baseline': [2, 3, 4, 5], 'buffer': [], 'cursor': 2, 'subscription': True, 'published': [2, 3, 4, 5, 2, 3, 4, 5], 'ready': True}, 'frames': [['SNAPSHOT', 2]]}]), ('ordered trace 3', 'catchup', ['caught_up', 'disconnect', 'cursor_expired', 'snapshot_begin', 'snapshot_end'], [{'phase': 'live', 'registers': {'baseline': [1], 'buffer': [], 'cursor': 2, 'subscription': True, 'published': [1, 2, 3, 4, 5], 'ready': True}, 'frames': []}, {'phase': 'paused', 'registers': {'baseline': [1], 'buffer': [], 'cursor': 2, 'subscription': True, 'published': [1, 2, 3, 4, 5], 'ready': True}, 'frames': []}, {'phase': 'pending', 'registers': {'baseline': [1], 'buffer': [], 'cursor': 2, 'subscription': True, 'published': [1, 2, 3, 4, 5], 'ready': True}, 'frames': [['SNAPSHOT', 2]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [], 'cursor': 2, 'subscription': True, 'published': [1, 2, 3, 4, 5], 'ready': True}, 'frames': [['SNAPSHOT', 2]]}, {'phase': 'catchup', 'registers': {'baseline': [2, 3, 4, 5], 'buffer': [], 'cursor': 2, 'subscription': True, 'published': [1, 2, 3, 4, 5], 'ready': True}, 'frames': [['SNAPSHOT', 2]]}]), ('empty input', 'new', [], []), ('unknown event', 'new', ['unsupported'], [{'phase': 'new', 'registers': {'baseline': [1], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['reject', [2, 3, 4, 5]]]}])], 3: [('new/subscribe', 'new', ['subscribe'], [{'phase': 'pending', 'registers': {'baseline': [2], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 3]]}]), ('pending/snapshot_begin', 'pending', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('snapshot/snapshot_end', 'snapshot', ['snapshot_end'], [{'phase': 'catchup', 'registers': {'baseline': [3, 4, 5, 6, 7], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('catchup/caught_up', 'catchup', ['caught_up'], [{'phase': 'live', 'registers': {'baseline': [2], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [2, 3, 4, 5, 6, 7], 'ready': True}, 'frames': []}]), ('live/gap', 'live', ['gap'], [{'phase': 'resync', 'registers': {'baseline': [2], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 3]]}]), ('resync/snapshot_begin', 'resync', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('live/disconnect', 'live', ['disconnect'], [{'phase': 'paused', 'registers': {'baseline': [2], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('paused/resume_accepted', 'paused', ['resume_accepted'], [{'phase': 'catchup', 'registers': {'baseline': [2], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['RESUME_AFTER', 3]]}]), ('paused/cursor_expired', 'paused', ['cursor_expired'], [{'phase': 'pending', 'registers': {'baseline': [2], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 3]]}]), ('live/unsubscribe', 'live', ['unsubscribe'], [{'phase': 'closed', 'registers': {'baseline': [2], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': False, 'published': [], 'ready': False}, 'frames': []}]), ('ordered trace 0', 'new', ['subscribe', 'snapshot_begin', 'snapshot_end', 'caught_up', 'disconnect', 'cursor_expired'], [{'phase': 'pending', 'registers': {'baseline': [2], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 3]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 3]]}, {'phase': 'catchup', 'registers': {'baseline': [3, 4, 5, 6, 7], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 3]]}, {'phase': 'live', 'registers': {'baseline': [3, 4, 5, 6, 7], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'ready': True}, 'frames': [['SNAPSHOT', 3]]}, {'phase': 'paused', 'registers': {'baseline': [3, 4, 5, 6, 7], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'ready': True}, 'frames': [['SNAPSHOT', 3]]}, {'phase': 'pending', 'registers': {'baseline': [3, 4, 5, 6, 7], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'ready': True}, 'frames': [['SNAPSHOT', 3], ['SNAPSHOT', 3]]}]), ('ordered trace 3', 'catchup', ['caught_up', 'disconnect', 'cursor_expired', 'snapshot_begin', 'snapshot_end', 'caught_up'], [{'phase': 'live', 'registers': {'baseline': [2], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [2, 3, 4, 5, 6, 7], 'ready': True}, 'frames': []}, {'phase': 'paused', 'registers': {'baseline': [2], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [2, 3, 4, 5, 6, 7], 'ready': True}, 'frames': []}, {'phase': 'pending', 'registers': {'baseline': [2], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [2, 3, 4, 5, 6, 7], 'ready': True}, 'frames': [['SNAPSHOT', 3]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [2, 3, 4, 5, 6, 7], 'ready': True}, 'frames': [['SNAPSHOT', 3]]}, {'phase': 'catchup', 'registers': {'baseline': [3, 4, 5, 6, 7], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [2, 3, 4, 5, 6, 7], 'ready': True}, 'frames': [['SNAPSHOT', 3]]}, {'phase': 'live', 'registers': {'baseline': [3, 4, 5, 6, 7], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [2, 3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'ready': True}, 'frames': [['SNAPSHOT', 3]]}]), ('empty input', 'new', [], []), ('unknown event', 'new', ['unsupported'], [{'phase': 'new', 'registers': {'baseline': [2], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['reject', [3, 4, 5, 6, 7]]]}])], 4: [('new/subscribe', 'new', ['subscribe'], [{'phase': 'pending', 'registers': {'baseline': [3], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 4]]}]), ('pending/snapshot_begin', 'pending', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('snapshot/snapshot_end', 'snapshot', ['snapshot_end'], [{'phase': 'catchup', 'registers': {'baseline': [4, 5, 6, 7, 8, 9], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('catchup/caught_up', 'catchup', ['caught_up'], [{'phase': 'live', 'registers': {'baseline': [3], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [3, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': []}]), ('live/gap', 'live', ['gap'], [{'phase': 'resync', 'registers': {'baseline': [3], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 4]]}]), ('resync/snapshot_begin', 'resync', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('live/disconnect', 'live', ['disconnect'], [{'phase': 'paused', 'registers': {'baseline': [3], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('paused/resume_accepted', 'paused', ['resume_accepted'], [{'phase': 'catchup', 'registers': {'baseline': [3], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['RESUME_AFTER', 4]]}]), ('paused/cursor_expired', 'paused', ['cursor_expired'], [{'phase': 'pending', 'registers': {'baseline': [3], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 4]]}]), ('live/unsubscribe', 'live', ['unsubscribe'], [{'phase': 'closed', 'registers': {'baseline': [3], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': False, 'published': [], 'ready': False}, 'frames': []}]), ('ordered trace 0', 'new', ['subscribe', 'snapshot_begin', 'snapshot_end', 'caught_up', 'disconnect', 'cursor_expired', 'snapshot_begin'], [{'phase': 'pending', 'registers': {'baseline': [3], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'catchup', 'registers': {'baseline': [4, 5, 6, 7, 8, 9], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'live', 'registers': {'baseline': [4, 5, 6, 7, 8, 9], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'paused', 'registers': {'baseline': [4, 5, 6, 7, 8, 9], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'pending', 'registers': {'baseline': [4, 5, 6, 7, 8, 9], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': [['SNAPSHOT', 4], ['SNAPSHOT', 4]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': [['SNAPSHOT', 4], ['SNAPSHOT', 4]]}]), ('ordered trace 3', 'catchup', ['caught_up', 'disconnect', 'cursor_expired', 'snapshot_begin', 'snapshot_end', 'caught_up', 'gap'], [{'phase': 'live', 'registers': {'baseline': [3], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [3, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': []}, {'phase': 'paused', 'registers': {'baseline': [3], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [3, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': []}, {'phase': 'pending', 'registers': {'baseline': [3], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [3, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [3, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'catchup', 'registers': {'baseline': [4, 5, 6, 7, 8, 9], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [3, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'live', 'registers': {'baseline': [4, 5, 6, 7, 8, 9], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [3, 4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'resync', 'registers': {'baseline': [4, 5, 6, 7, 8, 9], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [3, 4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'ready': False}, 'frames': [['SNAPSHOT', 4], ['SNAPSHOT', 4]]}]), ('empty input', 'new', [], []), ('unknown event', 'new', ['unsupported'], [{'phase': 'new', 'registers': {'baseline': [3], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['reject', [4, 5, 6, 7, 8, 9]]]}])], 5: [('new/subscribe', 'new', ['subscribe'], [{'phase': 'pending', 'registers': {'baseline': [4], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 5]]}]), ('pending/snapshot_begin', 'pending', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('snapshot/snapshot_end', 'snapshot', ['snapshot_end'], [{'phase': 'catchup', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('catchup/caught_up', 'catchup', ['caught_up'], [{'phase': 'live', 'registers': {'baseline': [4], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': []}]), ('live/gap', 'live', ['gap'], [{'phase': 'resync', 'registers': {'baseline': [4], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 5]]}]), ('resync/snapshot_begin', 'resync', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('live/disconnect', 'live', ['disconnect'], [{'phase': 'paused', 'registers': {'baseline': [4], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('paused/resume_accepted', 'paused', ['resume_accepted'], [{'phase': 'catchup', 'registers': {'baseline': [4], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['RESUME_AFTER', 5]]}]), ('paused/cursor_expired', 'paused', ['cursor_expired'], [{'phase': 'pending', 'registers': {'baseline': [4], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 5]]}]), ('live/unsubscribe', 'live', ['unsubscribe'], [{'phase': 'closed', 'registers': {'baseline': [4], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': False, 'published': [], 'ready': False}, 'frames': []}]), ('ordered trace 0', 'new', ['subscribe', 'snapshot_begin', 'snapshot_end', 'caught_up', 'disconnect', 'cursor_expired', 'snapshot_begin', 'snapshot_end'], [{'phase': 'pending', 'registers': {'baseline': [4], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'catchup', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'live', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'paused', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'pending', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5], ['SNAPSHOT', 5]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5], ['SNAPSHOT', 5]]}, {'phase': 'catchup', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5], ['SNAPSHOT', 5]]}]), ('ordered trace 3', 'catchup', ['caught_up', 'disconnect', 'cursor_expired', 'snapshot_begin', 'snapshot_end', 'caught_up', 'gap', 'snapshot_begin'], [{'phase': 'live', 'registers': {'baseline': [4], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': []}, {'phase': 'paused', 'registers': {'baseline': [4], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': []}, {'phase': 'pending', 'registers': {'baseline': [4], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'catchup', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'live', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'resync', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'ready': False}, 'frames': [['SNAPSHOT', 5], ['SNAPSHOT', 5]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 5], ['SNAPSHOT', 5]]}]), ('empty input', 'new', [], []), ('unknown event', 'new', ['unsupported'], [{'phase': 'new', 'registers': {'baseline': [4], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['reject', [5, 6, 7, 8, 9, 10, 11]]]}])]}\nfor label, phase, events, expected in cases[N]:\n    check(label, solve(phase, events, N), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"d096f14ecbc284adc89df1cffc219df221576c9a8e3e8ed453602fa0ef288754","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(phase, events, seed):\n    payload = list(range(seed, seed * 2 + 2))\n    r = {'baseline': [seed-1], 'buffer': payload[:], 'cursor': seed, 'subscription': True, 'published': [], 'ready': False}\n    frames = []\n    observed = []\n    table = {('new', 'subscribe'): ('pending', 'request_snapshot'), ('pending', 'snapshot_begin'): ('snapshot', 'reset_baseline'), ('snapshot', 'snapshot_end'): ('catchup', 'seal_baseline'), ('catchup', 'caught_up'): ('live', 'publish_ready'), ('live', 'gap'): ('resync', 'request_baseline'), ('resync', 'snapshot_begin'): ('snapshot', 'replace_baseline'), ('live', 'disconnect'): ('paused', 'save_cursor'), ('paused', 'resume_accepted'): ('catchup', 'request_after_cursor'), ('paused', 'cursor_expired'): ('pending', 'request_snapshot'), ('live', 'unsubscribe'): ('closed', 'release_subscription')}\n    for event in events:\n        phase, action = table.get((phase, event), (phase, \"reject\"))\n        if action == 'request_snapshot':\n            frames.append(['SNAPSHOT',seed])\n        elif action == 'reset_baseline':\n            r['baseline']=[]\n        elif action == 'seal_baseline':\n            r['baseline']=payload[:]\n        elif action == 'publish_ready':\n            r['published'].extend(r['baseline']+r['buffer']); r['buffer']=[]; r['ready']=True\n        elif action == 'request_baseline':\n            r['ready']=False; frames.append(['SNAPSHOT',seed])\n        elif action == 'replace_baseline':\n            r['baseline']=[]; r['published']=[]\n        elif action == 'save_cursor':\n            r['cursor']=seed\n        elif action == 'request_after_cursor':\n            frames.append(['RESUME_AFTER',r['cursor']])\n        elif action == 'release_subscription':\n            r['subscription']=False\n        elif action == 'merge_old':\n            r['baseline'].extend(payload)\n        elif action == 'deliver_delta':\n            r['published'].extend(payload)\n        elif action == 'publish':\n            r['published'].extend(r['baseline'])\n        elif action == 'drop_buffer':\n            r['buffer']=[]; r['ready']=True\n        elif action == 'keep_delivering':\n            r['published'].extend(payload)\n        elif action == 'forget_cursor':\n            r['cursor']=None\n        elif action == 'advance_cursor':\n            r['cursor']=seed+len(payload)\n        elif action == 'request_from_start':\n            frames.append(['RESUME_AFTER',0])\n        elif action == 'retry_cursor':\n            frames.append(['RESUME_AFTER',r['cursor']])\n        elif action == 'retain_subscription':\n            r['ready']=False\n        else:\n            if action not in (\"wait\", \"ignore\", \"keep\", \"retain\", \"keep_peer\", \"keep_offer\", \"keep_hold\", \"keep_batch\", \"retain_staging\", \"keep_staging\", \"keep_local_owner\", \"keep_old_session\", \"keep_address\", \"keep_old_expiry\", \"ignore_conflict\", \"keep_service\", \"keep_subscription\", \"retain_shadow\", \"keep_live\", \"keep_suspicion\", \"keep_roles\", \"keep_staged\"):\n                frames.append([action, payload[:]])\n        observed.append(json.loads(json.dumps({\"phase\": phase, \"registers\": r, \"frames\": frames})))\n    return observed\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {1: [('new/subscribe', 'new', ['subscribe'], [{'phase': 'pending', 'registers': {'baseline': [0], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 1]]}]), ('pending/snapshot_begin', 'pending', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('snapshot/snapshot_end', 'snapshot', ['snapshot_end'], [{'phase': 'catchup', 'registers': {'baseline': [1, 2, 3], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('catchup/caught_up', 'catchup', ['caught_up'], [{'phase': 'live', 'registers': {'baseline': [0], 'buffer': [], 'cursor': 1, 'subscription': True, 'published': [0, 1, 2, 3], 'ready': True}, 'frames': []}]), ('live/gap', 'live', ['gap'], [{'phase': 'resync', 'registers': {'baseline': [0], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 1]]}]), ('resync/snapshot_begin', 'resync', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('live/disconnect', 'live', ['disconnect'], [{'phase': 'paused', 'registers': {'baseline': [0], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('paused/resume_accepted', 'paused', ['resume_accepted'], [{'phase': 'catchup', 'registers': {'baseline': [0], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['RESUME_AFTER', 1]]}]), ('paused/cursor_expired', 'paused', ['cursor_expired'], [{'phase': 'pending', 'registers': {'baseline': [0], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 1]]}]), ('live/unsubscribe', 'live', ['unsubscribe'], [{'phase': 'closed', 'registers': {'baseline': [0], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': False, 'published': [], 'ready': False}, 'frames': []}]), ('ordered trace 0', 'new', ['subscribe', 'snapshot_begin', 'snapshot_end', 'caught_up'], [{'phase': 'pending', 'registers': {'baseline': [0], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 1]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 1]]}, {'phase': 'catchup', 'registers': {'baseline': [1, 2, 3], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 1]]}, {'phase': 'live', 'registers': {'baseline': [1, 2, 3], 'buffer': [], 'cursor': 1, 'subscription': True, 'published': [1, 2, 3, 1, 2, 3], 'ready': True}, 'frames': [['SNAPSHOT', 1]]}]), ('ordered trace 3', 'catchup', ['caught_up', 'disconnect', 'cursor_expired', 'snapshot_begin'], [{'phase': 'live', 'registers': {'baseline': [0], 'buffer': [], 'cursor': 1, 'subscription': True, 'published': [0, 1, 2, 3], 'ready': True}, 'frames': []}, {'phase': 'paused', 'registers': {'baseline': [0], 'buffer': [], 'cursor': 1, 'subscription': True, 'published': [0, 1, 2, 3], 'ready': True}, 'frames': []}, {'phase': 'pending', 'registers': {'baseline': [0], 'buffer': [], 'cursor': 1, 'subscription': True, 'published': [0, 1, 2, 3], 'ready': True}, 'frames': [['SNAPSHOT', 1]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [], 'cursor': 1, 'subscription': True, 'published': [0, 1, 2, 3], 'ready': True}, 'frames': [['SNAPSHOT', 1]]}]), ('empty input', 'new', [], []), ('unknown event', 'new', ['unsupported'], [{'phase': 'new', 'registers': {'baseline': [0], 'buffer': [1, 2, 3], 'cursor': 1, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['reject', [1, 2, 3]]]}])], 2: [('new/subscribe', 'new', ['subscribe'], [{'phase': 'pending', 'registers': {'baseline': [1], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 2]]}]), ('pending/snapshot_begin', 'pending', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('snapshot/snapshot_end', 'snapshot', ['snapshot_end'], [{'phase': 'catchup', 'registers': {'baseline': [2, 3, 4, 5], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('catchup/caught_up', 'catchup', ['caught_up'], [{'phase': 'live', 'registers': {'baseline': [1], 'buffer': [], 'cursor': 2, 'subscription': True, 'published': [1, 2, 3, 4, 5], 'ready': True}, 'frames': []}]), ('live/gap', 'live', ['gap'], [{'phase': 'resync', 'registers': {'baseline': [1], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 2]]}]), ('resync/snapshot_begin', 'resync', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('live/disconnect', 'live', ['disconnect'], [{'phase': 'paused', 'registers': {'baseline': [1], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('paused/resume_accepted', 'paused', ['resume_accepted'], [{'phase': 'catchup', 'registers': {'baseline': [1], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['RESUME_AFTER', 2]]}]), ('paused/cursor_expired', 'paused', ['cursor_expired'], [{'phase': 'pending', 'registers': {'baseline': [1], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 2]]}]), ('live/unsubscribe', 'live', ['unsubscribe'], [{'phase': 'closed', 'registers': {'baseline': [1], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': False, 'published': [], 'ready': False}, 'frames': []}]), ('ordered trace 0', 'new', ['subscribe', 'snapshot_begin', 'snapshot_end', 'caught_up', 'disconnect'], [{'phase': 'pending', 'registers': {'baseline': [1], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 2]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 2]]}, {'phase': 'catchup', 'registers': {'baseline': [2, 3, 4, 5], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 2]]}, {'phase': 'live', 'registers': {'baseline': [2, 3, 4, 5], 'buffer': [], 'cursor': 2, 'subscription': True, 'published': [2, 3, 4, 5, 2, 3, 4, 5], 'ready': True}, 'frames': [['SNAPSHOT', 2]]}, {'phase': 'paused', 'registers': {'baseline': [2, 3, 4, 5], 'buffer': [], 'cursor': 2, 'subscription': True, 'published': [2, 3, 4, 5, 2, 3, 4, 5], 'ready': True}, 'frames': [['SNAPSHOT', 2]]}]), ('ordered trace 3', 'catchup', ['caught_up', 'disconnect', 'cursor_expired', 'snapshot_begin', 'snapshot_end'], [{'phase': 'live', 'registers': {'baseline': [1], 'buffer': [], 'cursor': 2, 'subscription': True, 'published': [1, 2, 3, 4, 5], 'ready': True}, 'frames': []}, {'phase': 'paused', 'registers': {'baseline': [1], 'buffer': [], 'cursor': 2, 'subscription': True, 'published': [1, 2, 3, 4, 5], 'ready': True}, 'frames': []}, {'phase': 'pending', 'registers': {'baseline': [1], 'buffer': [], 'cursor': 2, 'subscription': True, 'published': [1, 2, 3, 4, 5], 'ready': True}, 'frames': [['SNAPSHOT', 2]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [], 'cursor': 2, 'subscription': True, 'published': [1, 2, 3, 4, 5], 'ready': True}, 'frames': [['SNAPSHOT', 2]]}, {'phase': 'catchup', 'registers': {'baseline': [2, 3, 4, 5], 'buffer': [], 'cursor': 2, 'subscription': True, 'published': [1, 2, 3, 4, 5], 'ready': True}, 'frames': [['SNAPSHOT', 2]]}]), ('empty input', 'new', [], []), ('unknown event', 'new', ['unsupported'], [{'phase': 'new', 'registers': {'baseline': [1], 'buffer': [2, 3, 4, 5], 'cursor': 2, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['reject', [2, 3, 4, 5]]]}])], 3: [('new/subscribe', 'new', ['subscribe'], [{'phase': 'pending', 'registers': {'baseline': [2], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 3]]}]), ('pending/snapshot_begin', 'pending', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('snapshot/snapshot_end', 'snapshot', ['snapshot_end'], [{'phase': 'catchup', 'registers': {'baseline': [3, 4, 5, 6, 7], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('catchup/caught_up', 'catchup', ['caught_up'], [{'phase': 'live', 'registers': {'baseline': [2], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [2, 3, 4, 5, 6, 7], 'ready': True}, 'frames': []}]), ('live/gap', 'live', ['gap'], [{'phase': 'resync', 'registers': {'baseline': [2], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 3]]}]), ('resync/snapshot_begin', 'resync', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('live/disconnect', 'live', ['disconnect'], [{'phase': 'paused', 'registers': {'baseline': [2], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('paused/resume_accepted', 'paused', ['resume_accepted'], [{'phase': 'catchup', 'registers': {'baseline': [2], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['RESUME_AFTER', 3]]}]), ('paused/cursor_expired', 'paused', ['cursor_expired'], [{'phase': 'pending', 'registers': {'baseline': [2], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 3]]}]), ('live/unsubscribe', 'live', ['unsubscribe'], [{'phase': 'closed', 'registers': {'baseline': [2], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': False, 'published': [], 'ready': False}, 'frames': []}]), ('ordered trace 0', 'new', ['subscribe', 'snapshot_begin', 'snapshot_end', 'caught_up', 'disconnect', 'cursor_expired'], [{'phase': 'pending', 'registers': {'baseline': [2], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 3]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 3]]}, {'phase': 'catchup', 'registers': {'baseline': [3, 4, 5, 6, 7], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 3]]}, {'phase': 'live', 'registers': {'baseline': [3, 4, 5, 6, 7], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'ready': True}, 'frames': [['SNAPSHOT', 3]]}, {'phase': 'paused', 'registers': {'baseline': [3, 4, 5, 6, 7], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'ready': True}, 'frames': [['SNAPSHOT', 3]]}, {'phase': 'pending', 'registers': {'baseline': [3, 4, 5, 6, 7], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'ready': True}, 'frames': [['SNAPSHOT', 3], ['SNAPSHOT', 3]]}]), ('ordered trace 3', 'catchup', ['caught_up', 'disconnect', 'cursor_expired', 'snapshot_begin', 'snapshot_end', 'caught_up'], [{'phase': 'live', 'registers': {'baseline': [2], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [2, 3, 4, 5, 6, 7], 'ready': True}, 'frames': []}, {'phase': 'paused', 'registers': {'baseline': [2], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [2, 3, 4, 5, 6, 7], 'ready': True}, 'frames': []}, {'phase': 'pending', 'registers': {'baseline': [2], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [2, 3, 4, 5, 6, 7], 'ready': True}, 'frames': [['SNAPSHOT', 3]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [2, 3, 4, 5, 6, 7], 'ready': True}, 'frames': [['SNAPSHOT', 3]]}, {'phase': 'catchup', 'registers': {'baseline': [3, 4, 5, 6, 7], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [2, 3, 4, 5, 6, 7], 'ready': True}, 'frames': [['SNAPSHOT', 3]]}, {'phase': 'live', 'registers': {'baseline': [3, 4, 5, 6, 7], 'buffer': [], 'cursor': 3, 'subscription': True, 'published': [2, 3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'ready': True}, 'frames': [['SNAPSHOT', 3]]}]), ('empty input', 'new', [], []), ('unknown event', 'new', ['unsupported'], [{'phase': 'new', 'registers': {'baseline': [2], 'buffer': [3, 4, 5, 6, 7], 'cursor': 3, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['reject', [3, 4, 5, 6, 7]]]}])], 4: [('new/subscribe', 'new', ['subscribe'], [{'phase': 'pending', 'registers': {'baseline': [3], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 4]]}]), ('pending/snapshot_begin', 'pending', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('snapshot/snapshot_end', 'snapshot', ['snapshot_end'], [{'phase': 'catchup', 'registers': {'baseline': [4, 5, 6, 7, 8, 9], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('catchup/caught_up', 'catchup', ['caught_up'], [{'phase': 'live', 'registers': {'baseline': [3], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [3, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': []}]), ('live/gap', 'live', ['gap'], [{'phase': 'resync', 'registers': {'baseline': [3], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 4]]}]), ('resync/snapshot_begin', 'resync', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('live/disconnect', 'live', ['disconnect'], [{'phase': 'paused', 'registers': {'baseline': [3], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('paused/resume_accepted', 'paused', ['resume_accepted'], [{'phase': 'catchup', 'registers': {'baseline': [3], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['RESUME_AFTER', 4]]}]), ('paused/cursor_expired', 'paused', ['cursor_expired'], [{'phase': 'pending', 'registers': {'baseline': [3], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 4]]}]), ('live/unsubscribe', 'live', ['unsubscribe'], [{'phase': 'closed', 'registers': {'baseline': [3], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': False, 'published': [], 'ready': False}, 'frames': []}]), ('ordered trace 0', 'new', ['subscribe', 'snapshot_begin', 'snapshot_end', 'caught_up', 'disconnect', 'cursor_expired', 'snapshot_begin'], [{'phase': 'pending', 'registers': {'baseline': [3], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'catchup', 'registers': {'baseline': [4, 5, 6, 7, 8, 9], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'live', 'registers': {'baseline': [4, 5, 6, 7, 8, 9], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'paused', 'registers': {'baseline': [4, 5, 6, 7, 8, 9], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'pending', 'registers': {'baseline': [4, 5, 6, 7, 8, 9], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': [['SNAPSHOT', 4], ['SNAPSHOT', 4]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': [['SNAPSHOT', 4], ['SNAPSHOT', 4]]}]), ('ordered trace 3', 'catchup', ['caught_up', 'disconnect', 'cursor_expired', 'snapshot_begin', 'snapshot_end', 'caught_up', 'gap'], [{'phase': 'live', 'registers': {'baseline': [3], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [3, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': []}, {'phase': 'paused', 'registers': {'baseline': [3], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [3, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': []}, {'phase': 'pending', 'registers': {'baseline': [3], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [3, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [3, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'catchup', 'registers': {'baseline': [4, 5, 6, 7, 8, 9], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [3, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'live', 'registers': {'baseline': [4, 5, 6, 7, 8, 9], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [3, 4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'ready': True}, 'frames': [['SNAPSHOT', 4]]}, {'phase': 'resync', 'registers': {'baseline': [4, 5, 6, 7, 8, 9], 'buffer': [], 'cursor': 4, 'subscription': True, 'published': [3, 4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'ready': False}, 'frames': [['SNAPSHOT', 4], ['SNAPSHOT', 4]]}]), ('empty input', 'new', [], []), ('unknown event', 'new', ['unsupported'], [{'phase': 'new', 'registers': {'baseline': [3], 'buffer': [4, 5, 6, 7, 8, 9], 'cursor': 4, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['reject', [4, 5, 6, 7, 8, 9]]]}])], 5: [('new/subscribe', 'new', ['subscribe'], [{'phase': 'pending', 'registers': {'baseline': [4], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 5]]}]), ('pending/snapshot_begin', 'pending', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('snapshot/snapshot_end', 'snapshot', ['snapshot_end'], [{'phase': 'catchup', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('catchup/caught_up', 'catchup', ['caught_up'], [{'phase': 'live', 'registers': {'baseline': [4], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': []}]), ('live/gap', 'live', ['gap'], [{'phase': 'resync', 'registers': {'baseline': [4], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 5]]}]), ('resync/snapshot_begin', 'resync', ['snapshot_begin'], [{'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('live/disconnect', 'live', ['disconnect'], [{'phase': 'paused', 'registers': {'baseline': [4], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': []}]), ('paused/resume_accepted', 'paused', ['resume_accepted'], [{'phase': 'catchup', 'registers': {'baseline': [4], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['RESUME_AFTER', 5]]}]), ('paused/cursor_expired', 'paused', ['cursor_expired'], [{'phase': 'pending', 'registers': {'baseline': [4], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 5]]}]), ('live/unsubscribe', 'live', ['unsubscribe'], [{'phase': 'closed', 'registers': {'baseline': [4], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': False, 'published': [], 'ready': False}, 'frames': []}]), ('ordered trace 0', 'new', ['subscribe', 'snapshot_begin', 'snapshot_end', 'caught_up', 'disconnect', 'cursor_expired', 'snapshot_begin', 'snapshot_end'], [{'phase': 'pending', 'registers': {'baseline': [4], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'catchup', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'live', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'paused', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'pending', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5], ['SNAPSHOT', 5]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5], ['SNAPSHOT', 5]]}, {'phase': 'catchup', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5], ['SNAPSHOT', 5]]}]), ('ordered trace 3', 'catchup', ['caught_up', 'disconnect', 'cursor_expired', 'snapshot_begin', 'snapshot_end', 'caught_up', 'gap', 'snapshot_begin'], [{'phase': 'live', 'registers': {'baseline': [4], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': []}, {'phase': 'paused', 'registers': {'baseline': [4], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': []}, {'phase': 'pending', 'registers': {'baseline': [4], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'catchup', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'live', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'ready': True}, 'frames': [['SNAPSHOT', 5]]}, {'phase': 'resync', 'registers': {'baseline': [5, 6, 7, 8, 9, 10, 11], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [4, 5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'ready': False}, 'frames': [['SNAPSHOT', 5], ['SNAPSHOT', 5]]}, {'phase': 'snapshot', 'registers': {'baseline': [], 'buffer': [], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['SNAPSHOT', 5], ['SNAPSHOT', 5]]}]), ('empty input', 'new', [], []), ('unknown event', 'new', ['unsupported'], [{'phase': 'new', 'registers': {'baseline': [4], 'buffer': [5, 6, 7, 8, 9, 10, 11], 'cursor': 5, 'subscription': True, 'published': [], 'ready': False}, 'frames': [['reject', [5, 6, 7, 8, 9, 10, 11]]]}])]}\nfor label, phase, events, expected in cases[N]:\n    check(label, solve(phase, events, N), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"Bounded offline control-plane abstraction with prescribed initial registers and classified events. Not a named protocol implementation or conformance test; excludes wire parsing, transport retries, physical execution, authentication, crash persistence, and timing. Related event faults share the full corrected controller and evaluation group. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"s3-protocols-subscription_resume-paused-resume_accepted","generated_at":"2026-09-29T14:40:05.273990+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Incorrect event admission now changes concrete queued data, resource ownership, or emitted protocol frames and subsequent trace behavior.","repair":"In phase paused, classify resume_accepted as transition to catchup and emit request_after_cursor.","root_cause":"In paused, the resume accepted handler runs deliver delta and enters live; it must instead run request after cursor and enter catchup.","sha256":"5f0f4bcc2a7e79c740eed931cab3f276e39d9d9fb928c6b04d2ee4fb8b26aa42","title":"Resumable event subscription controller: paused / resume accepted · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":46.965,"exit_code":1,"observations":[{"actual":[{"frames":[["SNAPSHOT",1]],"phase":"pending","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"check":"new/subscribe","expected":[{"frames":[["SNAPSHOT",1]],"phase":"pending","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":true},{"actual":[{"frames":[],"phase":"snapshot","registers":{"baseline":[],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"check":"pending/snapshot_begin","expected":[{"frames":[],"phase":"snapshot","registers":{"baseline":[],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":true},{"actual":[{"frames":[],"phase":"catchup","registers":{"baseline":[1,2,3],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"check":"snapshot/snapshot_end","expected":[{"frames":[],"phase":"catchup","registers":{"baseline":[1,2,3],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":true},{"actual":[{"frames":[],"phase":"live","registers":{"baseline":[0],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}}],"check":"catchup/caught_up","expected":[{"frames":[],"phase":"live","registers":{"baseline":[0],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}}],"passed":true},{"actual":[{"frames":[["SNAPSHOT",1]],"phase":"resync","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"check":"live/gap","expected":[{"frames":[["SNAPSHOT",1]],"phase":"resync","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":true},{"actual":[{"frames":[],"phase":"snapshot","registers":{"baseline":[],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"check":"resync/snapshot_begin","expected":[{"frames":[],"phase":"snapshot","registers":{"baseline":[],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":true},{"actual":[{"frames":[],"phase":"paused","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"check":"live/disconnect","expected":[{"frames":[],"phase":"paused","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":true},{"actual":[{"frames":[["RESUME_AFTER",0]],"phase":"catchup","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"check":"paused/resume_accepted","expected":[{"frames":[["RESUME_AFTER",1]],"phase":"catchup","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":false},{"actual":[{"frames":[["SNAPSHOT",1]],"phase":"pending","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"check":"paused/cursor_expired","expected":[{"frames":[["SNAPSHOT",1]],"phase":"pending","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":true},{"actual":[{"frames":[],"phase":"closed","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":false}}],"check":"live/unsubscribe","expected":[{"frames":[],"phase":"closed","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":false}}],"passed":true},{"actual":[{"frames":[["SNAPSHOT",1]],"phase":"pending","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"snapshot","registers":{"baseline":[],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"catchup","registers":{"baseline":[1,2,3],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"live","registers":{"baseline":[1,2,3],"buffer":[],"cursor":1,"published":[1,2,3,1,2,3],"ready":true,"subscription":true}}],"check":"ordered trace 0","expected":[{"frames":[["SNAPSHOT",1]],"phase":"pending","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"snapshot","registers":{"baseline":[],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"catchup","registers":{"baseline":[1,2,3],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"live","registers":{"baseline":[1,2,3],"buffer":[],"cursor":1,"published":[1,2,3,1,2,3],"ready":true,"subscription":true}}],"passed":true},{"actual":[{"frames":[],"phase":"live","registers":{"baseline":[0],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}},{"frames":[],"phase":"paused","registers":{"baseline":[0],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"pending","registers":{"baseline":[0],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"snapshot","registers":{"baseline":[],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}}],"check":"ordered trace 3","expected":[{"frames":[],"phase":"live","registers":{"baseline":[0],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}},{"frames":[],"phase":"paused","registers":{"baseline":[0],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"pending","registers":{"baseline":[0],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"snapshot","registers":{"baseline":[],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}}],"passed":true},{"actual":[],"check":"empty input","expected":[],"passed":true},{"actual":[{"frames":[["reject",[1,2,3]]],"phase":"new","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"check":"unknown event","expected":[{"frames":[["reject",[1,2,3]]],"phase":"new","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"new/subscribe\", \"actual\": [{\"phase\": \"pending\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"expected\": [{\"phase\": \"pending\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"passed\": true}, {\"check\": \"pending/snapshot_begin\", \"actual\": [{\"phase\": \"snapshot\", \"registers\": {\"baseline\": [], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"snapshot\", \"registers\": {\"baseline\": [], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"snapshot/snapshot_end\", \"actual\": [{\"phase\": \"catchup\", \"registers\": {\"baseline\": [1, 2, 3], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"catchup\", \"registers\": {\"baseline\": [1, 2, 3], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"catchup/caught_up\", \"actual\": [{\"phase\": \"live\", \"registers\": {\"baseline\": [0], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"live\", \"registers\": {\"baseline\": [0], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"live/gap\", \"actual\": [{\"phase\": \"resync\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"expected\": [{\"phase\": \"resync\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"passed\": true}, {\"check\": \"resync/snapshot_begin\", \"actual\": [{\"phase\": \"snapshot\", \"registers\": {\"baseline\": [], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"snapshot\", \"registers\": {\"baseline\": [], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"live/disconnect\", \"actual\": [{\"phase\": \"paused\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"paused\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"paused/resume_accepted\", \"actual\": [{\"phase\": \"catchup\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"RESUME_AFTER\", 0]]}], \"expected\": [{\"phase\": \"catchup\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"RESUME_AFTER\", 1]]}], \"passed\": false}, {\"check\": \"paused/cursor_expired\", \"actual\": [{\"phase\": \"pending\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"expected\": [{\"phase\": \"pending\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"passed\": true}, {\"check\": \"live/unsubscribe\", \"actual\": [{\"phase\": \"closed\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": false, \"published\": [], \"ready\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"closed\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": false, \"published\": [], \"ready\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"ordered trace 0\", \"actual\": [{\"phase\": \"pending\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}, {\"phase\": \"snapshot\", \"registers\": {\"baseline\": [], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}, {\"phase\": \"catchup\", \"registers\": {\"baseline\": [1, 2, 3], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}, {\"phase\": \"live\", \"registers\": {\"baseline\": [1, 2, 3], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [1, 2, 3, 1, 2, 3], \"ready\": true}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"expected\": [{\"phase\": \"pending\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}, {\"phase\": \"snapshot\", \"registers\": {\"baseline\": [], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}, {\"phase\": \"catchup\", \"registers\": {\"baseline\": [1, 2, 3], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}, {\"phase\": \"live\", \"registers\": {\"baseline\": [1, 2, 3], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [1, 2, 3, 1, 2, 3], \"ready\": true}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"passed\": true}, {\"check\": \"ordered trace 3\", \"actual\": [{\"phase\": \"live\", \"registers\": {\"baseline\": [0], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": []}, {\"phase\": \"paused\", \"registers\": {\"baseline\": [0], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": []}, {\"phase\": \"pending\", \"registers\": {\"baseline\": [0], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": [[\"SNAPSHOT\", 1]]}, {\"phase\": \"snapshot\", \"registers\": {\"baseline\": [], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"expected\": [{\"phase\": \"live\", \"registers\": {\"baseline\": [0], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": []}, {\"phase\": \"paused\", \"registers\": {\"baseline\": [0], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": []}, {\"phase\": \"pending\", \"registers\": {\"baseline\": [0], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": [[\"SNAPSHOT\", 1]]}, {\"phase\": \"snapshot\", \"registers\": {\"baseline\": [], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"passed\": true}, {\"check\": \"empty input\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unknown event\", \"actual\": [{\"phase\": \"new\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"expected\": [{\"phase\": \"new\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":48.804,"exit_code":1,"observations":[{"actual":[{"frames":[["SNAPSHOT",1]],"phase":"pending","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"check":"new/subscribe","expected":[{"frames":[["SNAPSHOT",1]],"phase":"pending","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":true},{"actual":[{"frames":[],"phase":"snapshot","registers":{"baseline":[],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"check":"pending/snapshot_begin","expected":[{"frames":[],"phase":"snapshot","registers":{"baseline":[],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":true},{"actual":[{"frames":[],"phase":"catchup","registers":{"baseline":[1,2,3],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"check":"snapshot/snapshot_end","expected":[{"frames":[],"phase":"catchup","registers":{"baseline":[1,2,3],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":true},{"actual":[{"frames":[],"phase":"live","registers":{"baseline":[0],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}}],"check":"catchup/caught_up","expected":[{"frames":[],"phase":"live","registers":{"baseline":[0],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}}],"passed":true},{"actual":[{"frames":[["SNAPSHOT",1]],"phase":"resync","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"check":"live/gap","expected":[{"frames":[["SNAPSHOT",1]],"phase":"resync","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":true},{"actual":[{"frames":[],"phase":"snapshot","registers":{"baseline":[],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"check":"resync/snapshot_begin","expected":[{"frames":[],"phase":"snapshot","registers":{"baseline":[],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":true},{"actual":[{"frames":[],"phase":"paused","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"check":"live/disconnect","expected":[{"frames":[],"phase":"paused","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":true},{"actual":[{"frames":[],"phase":"live","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[1,2,3],"ready":false,"subscription":true}}],"check":"paused/resume_accepted","expected":[{"frames":[["RESUME_AFTER",1]],"phase":"catchup","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":false},{"actual":[{"frames":[["SNAPSHOT",1]],"phase":"pending","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"check":"paused/cursor_expired","expected":[{"frames":[["SNAPSHOT",1]],"phase":"pending","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":true},{"actual":[{"frames":[],"phase":"closed","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":false}}],"check":"live/unsubscribe","expected":[{"frames":[],"phase":"closed","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":false}}],"passed":true},{"actual":[{"frames":[["SNAPSHOT",1]],"phase":"pending","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"snapshot","registers":{"baseline":[],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"catchup","registers":{"baseline":[1,2,3],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"live","registers":{"baseline":[1,2,3],"buffer":[],"cursor":1,"published":[1,2,3,1,2,3],"ready":true,"subscription":true}}],"check":"ordered trace 0","expected":[{"frames":[["SNAPSHOT",1]],"phase":"pending","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"snapshot","registers":{"baseline":[],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"catchup","registers":{"baseline":[1,2,3],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"live","registers":{"baseline":[1,2,3],"buffer":[],"cursor":1,"published":[1,2,3,1,2,3],"ready":true,"subscription":true}}],"passed":true},{"actual":[{"frames":[],"phase":"live","registers":{"baseline":[0],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}},{"frames":[],"phase":"paused","registers":{"baseline":[0],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"pending","registers":{"baseline":[0],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"snapshot","registers":{"baseline":[],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}}],"check":"ordered trace 3","expected":[{"frames":[],"phase":"live","registers":{"baseline":[0],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}},{"frames":[],"phase":"paused","registers":{"baseline":[0],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"pending","registers":{"baseline":[0],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"snapshot","registers":{"baseline":[],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}}],"passed":true},{"actual":[],"check":"empty input","expected":[],"passed":true},{"actual":[{"frames":[["reject",[1,2,3]]],"phase":"new","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"check":"unknown event","expected":[{"frames":[["reject",[1,2,3]]],"phase":"new","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"new/subscribe\", \"actual\": [{\"phase\": \"pending\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"expected\": [{\"phase\": \"pending\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"passed\": true}, {\"check\": \"pending/snapshot_begin\", \"actual\": [{\"phase\": \"snapshot\", \"registers\": {\"baseline\": [], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"snapshot\", \"registers\": {\"baseline\": [], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"snapshot/snapshot_end\", \"actual\": [{\"phase\": \"catchup\", \"registers\": {\"baseline\": [1, 2, 3], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"catchup\", \"registers\": {\"baseline\": [1, 2, 3], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"catchup/caught_up\", \"actual\": [{\"phase\": \"live\", \"registers\": {\"baseline\": [0], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"live\", \"registers\": {\"baseline\": [0], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"live/gap\", \"actual\": [{\"phase\": \"resync\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"expected\": [{\"phase\": \"resync\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"passed\": true}, {\"check\": \"resync/snapshot_begin\", \"actual\": [{\"phase\": \"snapshot\", \"registers\": {\"baseline\": [], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"snapshot\", \"registers\": {\"baseline\": [], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"live/disconnect\", \"actual\": [{\"phase\": \"paused\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"paused\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"paused/resume_accepted\", \"actual\": [{\"phase\": \"live\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [1, 2, 3], \"ready\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"catchup\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"RESUME_AFTER\", 1]]}], \"passed\": false}, {\"check\": \"paused/cursor_expired\", \"actual\": [{\"phase\": \"pending\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"expected\": [{\"phase\": \"pending\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"passed\": true}, {\"check\": \"live/unsubscribe\", \"actual\": [{\"phase\": \"closed\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": false, \"published\": [], \"ready\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"closed\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": false, \"published\": [], \"ready\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"ordered trace 0\", \"actual\": [{\"phase\": \"pending\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}, {\"phase\": \"snapshot\", \"registers\": {\"baseline\": [], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}, {\"phase\": \"catchup\", \"registers\": {\"baseline\": [1, 2, 3], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}, {\"phase\": \"live\", \"registers\": {\"baseline\": [1, 2, 3], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [1, 2, 3, 1, 2, 3], \"ready\": true}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"expected\": [{\"phase\": \"pending\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}, {\"phase\": \"snapshot\", \"registers\": {\"baseline\": [], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}, {\"phase\": \"catchup\", \"registers\": {\"baseline\": [1, 2, 3], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}, {\"phase\": \"live\", \"registers\": {\"baseline\": [1, 2, 3], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [1, 2, 3, 1, 2, 3], \"ready\": true}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"passed\": true}, {\"check\": \"ordered trace 3\", \"actual\": [{\"phase\": \"live\", \"registers\": {\"baseline\": [0], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": []}, {\"phase\": \"paused\", \"registers\": {\"baseline\": [0], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": []}, {\"phase\": \"pending\", \"registers\": {\"baseline\": [0], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": [[\"SNAPSHOT\", 1]]}, {\"phase\": \"snapshot\", \"registers\": {\"baseline\": [], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"expected\": [{\"phase\": \"live\", \"registers\": {\"baseline\": [0], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": []}, {\"phase\": \"paused\", \"registers\": {\"baseline\": [0], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": []}, {\"phase\": \"pending\", \"registers\": {\"baseline\": [0], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": [[\"SNAPSHOT\", 1]]}, {\"phase\": \"snapshot\", \"registers\": {\"baseline\": [], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"passed\": true}, {\"check\": \"empty input\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unknown event\", \"actual\": [{\"phase\": \"new\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"expected\": [{\"phase\": \"new\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":44.956,"exit_code":0,"observations":[{"actual":[{"frames":[["SNAPSHOT",1]],"phase":"pending","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"check":"new/subscribe","expected":[{"frames":[["SNAPSHOT",1]],"phase":"pending","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":true},{"actual":[{"frames":[],"phase":"snapshot","registers":{"baseline":[],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"check":"pending/snapshot_begin","expected":[{"frames":[],"phase":"snapshot","registers":{"baseline":[],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":true},{"actual":[{"frames":[],"phase":"catchup","registers":{"baseline":[1,2,3],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"check":"snapshot/snapshot_end","expected":[{"frames":[],"phase":"catchup","registers":{"baseline":[1,2,3],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":true},{"actual":[{"frames":[],"phase":"live","registers":{"baseline":[0],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}}],"check":"catchup/caught_up","expected":[{"frames":[],"phase":"live","registers":{"baseline":[0],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}}],"passed":true},{"actual":[{"frames":[["SNAPSHOT",1]],"phase":"resync","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"check":"live/gap","expected":[{"frames":[["SNAPSHOT",1]],"phase":"resync","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":true},{"actual":[{"frames":[],"phase":"snapshot","registers":{"baseline":[],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"check":"resync/snapshot_begin","expected":[{"frames":[],"phase":"snapshot","registers":{"baseline":[],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":true},{"actual":[{"frames":[],"phase":"paused","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"check":"live/disconnect","expected":[{"frames":[],"phase":"paused","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":true},{"actual":[{"frames":[["RESUME_AFTER",1]],"phase":"catchup","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"check":"paused/resume_accepted","expected":[{"frames":[["RESUME_AFTER",1]],"phase":"catchup","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":true},{"actual":[{"frames":[["SNAPSHOT",1]],"phase":"pending","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"check":"paused/cursor_expired","expected":[{"frames":[["SNAPSHOT",1]],"phase":"pending","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":true},{"actual":[{"frames":[],"phase":"closed","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":false}}],"check":"live/unsubscribe","expected":[{"frames":[],"phase":"closed","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":false}}],"passed":true},{"actual":[{"frames":[["SNAPSHOT",1]],"phase":"pending","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"snapshot","registers":{"baseline":[],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"catchup","registers":{"baseline":[1,2,3],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"live","registers":{"baseline":[1,2,3],"buffer":[],"cursor":1,"published":[1,2,3,1,2,3],"ready":true,"subscription":true}}],"check":"ordered trace 0","expected":[{"frames":[["SNAPSHOT",1]],"phase":"pending","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"snapshot","registers":{"baseline":[],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"catchup","registers":{"baseline":[1,2,3],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"live","registers":{"baseline":[1,2,3],"buffer":[],"cursor":1,"published":[1,2,3,1,2,3],"ready":true,"subscription":true}}],"passed":true},{"actual":[{"frames":[],"phase":"live","registers":{"baseline":[0],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}},{"frames":[],"phase":"paused","registers":{"baseline":[0],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"pending","registers":{"baseline":[0],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"snapshot","registers":{"baseline":[],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}}],"check":"ordered trace 3","expected":[{"frames":[],"phase":"live","registers":{"baseline":[0],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}},{"frames":[],"phase":"paused","registers":{"baseline":[0],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"pending","registers":{"baseline":[0],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}},{"frames":[["SNAPSHOT",1]],"phase":"snapshot","registers":{"baseline":[],"buffer":[],"cursor":1,"published":[0,1,2,3],"ready":true,"subscription":true}}],"passed":true},{"actual":[],"check":"empty input","expected":[],"passed":true},{"actual":[{"frames":[["reject",[1,2,3]]],"phase":"new","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"check":"unknown event","expected":[{"frames":[["reject",[1,2,3]]],"phase":"new","registers":{"baseline":[0],"buffer":[1,2,3],"cursor":1,"published":[],"ready":false,"subscription":true}}],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"new/subscribe\", \"actual\": [{\"phase\": \"pending\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"expected\": [{\"phase\": \"pending\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"passed\": true}, {\"check\": \"pending/snapshot_begin\", \"actual\": [{\"phase\": \"snapshot\", \"registers\": {\"baseline\": [], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"snapshot\", \"registers\": {\"baseline\": [], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"snapshot/snapshot_end\", \"actual\": [{\"phase\": \"catchup\", \"registers\": {\"baseline\": [1, 2, 3], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"catchup\", \"registers\": {\"baseline\": [1, 2, 3], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"catchup/caught_up\", \"actual\": [{\"phase\": \"live\", \"registers\": {\"baseline\": [0], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"live\", \"registers\": {\"baseline\": [0], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"live/gap\", \"actual\": [{\"phase\": \"resync\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"expected\": [{\"phase\": \"resync\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"passed\": true}, {\"check\": \"resync/snapshot_begin\", \"actual\": [{\"phase\": \"snapshot\", \"registers\": {\"baseline\": [], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"snapshot\", \"registers\": {\"baseline\": [], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"live/disconnect\", \"actual\": [{\"phase\": \"paused\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"paused\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"paused/resume_accepted\", \"actual\": [{\"phase\": \"catchup\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"RESUME_AFTER\", 1]]}], \"expected\": [{\"phase\": \"catchup\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"RESUME_AFTER\", 1]]}], \"passed\": true}, {\"check\": \"paused/cursor_expired\", \"actual\": [{\"phase\": \"pending\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"expected\": [{\"phase\": \"pending\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"passed\": true}, {\"check\": \"live/unsubscribe\", \"actual\": [{\"phase\": \"closed\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": false, \"published\": [], \"ready\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"closed\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": false, \"published\": [], \"ready\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"ordered trace 0\", \"actual\": [{\"phase\": \"pending\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}, {\"phase\": \"snapshot\", \"registers\": {\"baseline\": [], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}, {\"phase\": \"catchup\", \"registers\": {\"baseline\": [1, 2, 3], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}, {\"phase\": \"live\", \"registers\": {\"baseline\": [1, 2, 3], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [1, 2, 3, 1, 2, 3], \"ready\": true}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"expected\": [{\"phase\": \"pending\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}, {\"phase\": \"snapshot\", \"registers\": {\"baseline\": [], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}, {\"phase\": \"catchup\", \"registers\": {\"baseline\": [1, 2, 3], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"SNAPSHOT\", 1]]}, {\"phase\": \"live\", \"registers\": {\"baseline\": [1, 2, 3], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [1, 2, 3, 1, 2, 3], \"ready\": true}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"passed\": true}, {\"check\": \"ordered trace 3\", \"actual\": [{\"phase\": \"live\", \"registers\": {\"baseline\": [0], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": []}, {\"phase\": \"paused\", \"registers\": {\"baseline\": [0], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": []}, {\"phase\": \"pending\", \"registers\": {\"baseline\": [0], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": [[\"SNAPSHOT\", 1]]}, {\"phase\": \"snapshot\", \"registers\": {\"baseline\": [], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"expected\": [{\"phase\": \"live\", \"registers\": {\"baseline\": [0], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": []}, {\"phase\": \"paused\", \"registers\": {\"baseline\": [0], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": []}, {\"phase\": \"pending\", \"registers\": {\"baseline\": [0], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": [[\"SNAPSHOT\", 1]]}, {\"phase\": \"snapshot\", \"registers\": {\"baseline\": [], \"buffer\": [], \"cursor\": 1, \"subscription\": true, \"published\": [0, 1, 2, 3], \"ready\": true}, \"frames\": [[\"SNAPSHOT\", 1]]}], \"passed\": true}, {\"check\": \"empty input\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unknown event\", \"actual\": [{\"phase\": \"new\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"expected\": [{\"phase\": \"new\", \"registers\": {\"baseline\": [0], \"buffer\": [1, 2, 3], \"cursor\": 1, \"subscription\": true, \"published\": [], \"ready\": false}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}