{"abstract":"While probing, event target_ready produces away/switch_target instead of draining/freeze_home_sequence.","category":"Protocols","checks":14,"contract":"For the stipulated Application stream endpoint migration 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-stream_migration","failed_approach":"The partial repair chooses draining/reset_sequence, which still violates this phase-specific event contract.","family":"s3-protocols-stream_migration-probing-target_ready","id":"FA-19846","implementations":{"attempt":{"sha256":"19485b66376ed0eacad6e6cdfb2824e0926c0930b6fe29cbbe4804e6bdc6deed","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 = {'endpoint': 'target' if phase=='away' else 'home', 'home_open': phase not in ('away','suspended'), 'sequence': seed+3, 'boundary': None, 'target_checked': False, 'queue': payload[:], 'delivered': []}\n    frames = []\n    observed = []\n    table = {('home', 'move_offer'): ('probing', 'probe_target'), ('probing', 'target_ready'): ('draining', 'reset_sequence'), ('probing', 'target_rejected'): ('home', 'discard_target'), ('draining', 'home_flushed'): ('switching', 'send_boundary'), ('switching', 'boundary_ack'): ('away', 'switch_target'), ('switching', 'old_endpoint_data'): ('switching', 'accept_before_boundary'), ('away', 'old_endpoint_data'): ('away', 'reject_old_endpoint'), ('away', 'target_lost'): ('suspended', 'report_unavailable'), ('home', 'unsolicited_boundary_ack'): ('home', 'reject_unoffered'), ('draining', 'new_application_data'): ('draining', 'queue_after_boundary')}\n    for event in events:\n        phase, action = table.get((phase, event), (phase, \"reject\"))\n        if action == 'probe_target':\n            r['target_checked']=True; frames.append(['PROBE_TARGET',seed])\n        elif action == 'freeze_home_sequence':\n            r['boundary']=r['sequence']\n        elif action == 'discard_target':\n            r['target_checked']=False\n        elif action == 'send_boundary':\n            frames.append(['BOUNDARY',r['sequence']])\n        elif action == 'switch_target':\n            r['endpoint']='target'; r['home_open']=False\n        elif action == 'accept_before_boundary':\n            r['delivered'].extend([x for x in payload if x<r['sequence']])\n        elif action == 'reject_old_endpoint':\n            frames.append(['OLD_ENDPOINT',seed])\n        elif action == 'report_unavailable':\n            frames.append(['UNAVAILABLE',seed])\n        elif action == 'reject_unoffered':\n            frames.append(['NO_MIGRATION',seed])\n        elif action == 'queue_after_boundary':\n            r['queue'].extend(payload)\n        elif action == 'stop_home':\n            r['home_open']=False\n        elif action == 'reset_sequence':\n            r['sequence']=0\n        elif action == 'send_zero_boundary':\n            frames.append(['BOUNDARY',0])\n        elif action == 'resume_home':\n            r['endpoint']='home'; r['home_open']=True\n        elif action == 'send_on_both':\n            frames.extend([['HOME',payload],['TARGET',payload]])\n        elif action == 'drop_all':\n            r['delivered']=[]\n        elif action == 'accept_all':\n            r['delivered'].extend(payload)\n        elif action == 'deliver':\n            r['delivered'].extend(payload)\n        elif action == 'silent_drop':\n            r['queue']=[]\n        elif action == 'send_home':\n            frames.append(['HOME',payload])\n        elif action == 'send_target':\n            frames.append(['TARGET',payload])\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: [('home/move_offer', 'home', ['move_offer'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': True, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['PROBE_TARGET', 1]]}]), ('probing/target_ready', 'probing', ['target_ready'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': 4, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': []}]), ('probing/target_rejected', 'probing', ['target_rejected'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': []}]), ('draining/home_flushed', 'draining', ['home_flushed'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['BOUNDARY', 4]]}]), ('switching/boundary_ack', 'switching', ['boundary_ack'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': []}]), ('switching/old_endpoint_data', 'switching', ['old_endpoint_data'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': [1, 2, 3]}, 'frames': []}]), ('away/old_endpoint_data', 'away', ['old_endpoint_data'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['OLD_ENDPOINT', 1]]}]), ('away/target_lost', 'away', ['target_lost'], [{'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['UNAVAILABLE', 1]]}]), ('home/unsolicited_boundary_ack', 'home', ['unsolicited_boundary_ack'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['NO_MIGRATION', 1]]}]), ('draining/new_application_data', 'draining', ['new_application_data'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3, 1, 2, 3], 'delivered': []}, 'frames': []}]), ('ordered trace 0', 'home', ['move_offer', 'target_rejected', 'move_offer', 'target_rejected'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': True, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['PROBE_TARGET', 1]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['PROBE_TARGET', 1]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': True, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['PROBE_TARGET', 1], ['PROBE_TARGET', 1]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['PROBE_TARGET', 1], ['PROBE_TARGET', 1]]}]), ('ordered trace 3', 'draining', ['new_application_data', 'home_flushed', 'old_endpoint_data', 'boundary_ack'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3, 1, 2, 3], 'delivered': []}, 'frames': []}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3, 1, 2, 3], 'delivered': []}, 'frames': [['BOUNDARY', 4]]}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3, 1, 2, 3], 'delivered': [1, 2, 3]}, 'frames': [['BOUNDARY', 4]]}, {'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3, 1, 2, 3], 'delivered': [1, 2, 3]}, 'frames': [['BOUNDARY', 4]]}]), ('empty input', 'home', [], []), ('unknown event', 'home', ['unsupported'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['reject', [1, 2, 3]]]}])], 2: [('home/move_offer', 'home', ['move_offer'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': True, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['PROBE_TARGET', 2]]}]), ('probing/target_ready', 'probing', ['target_ready'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': 5, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': []}]), ('probing/target_rejected', 'probing', ['target_rejected'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': []}]), ('draining/home_flushed', 'draining', ['home_flushed'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['BOUNDARY', 5]]}]), ('switching/boundary_ack', 'switching', ['boundary_ack'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': []}]), ('switching/old_endpoint_data', 'switching', ['old_endpoint_data'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': [2, 3, 4]}, 'frames': []}]), ('away/old_endpoint_data', 'away', ['old_endpoint_data'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['OLD_ENDPOINT', 2]]}]), ('away/target_lost', 'away', ['target_lost'], [{'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['UNAVAILABLE', 2]]}]), ('home/unsolicited_boundary_ack', 'home', ['unsolicited_boundary_ack'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['NO_MIGRATION', 2]]}]), ('draining/new_application_data', 'draining', ['new_application_data'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5, 2, 3, 4, 5], 'delivered': []}, 'frames': []}]), ('ordered trace 0', 'home', ['move_offer', 'target_rejected', 'move_offer', 'target_rejected', 'move_offer'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': True, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['PROBE_TARGET', 2]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['PROBE_TARGET', 2]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': True, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['PROBE_TARGET', 2], ['PROBE_TARGET', 2]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['PROBE_TARGET', 2], ['PROBE_TARGET', 2]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': True, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['PROBE_TARGET', 2], ['PROBE_TARGET', 2], ['PROBE_TARGET', 2]]}]), ('ordered trace 3', 'draining', ['new_application_data', 'home_flushed', 'old_endpoint_data', 'boundary_ack', 'target_lost'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5, 2, 3, 4, 5], 'delivered': []}, 'frames': []}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5, 2, 3, 4, 5], 'delivered': []}, 'frames': [['BOUNDARY', 5]]}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5, 2, 3, 4, 5], 'delivered': [2, 3, 4]}, 'frames': [['BOUNDARY', 5]]}, {'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5, 2, 3, 4, 5], 'delivered': [2, 3, 4]}, 'frames': [['BOUNDARY', 5]]}, {'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5, 2, 3, 4, 5], 'delivered': [2, 3, 4]}, 'frames': [['BOUNDARY', 5], ['UNAVAILABLE', 2]]}]), ('empty input', 'home', [], []), ('unknown event', 'home', ['unsupported'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['reject', [2, 3, 4, 5]]]}])], 3: [('home/move_offer', 'home', ['move_offer'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': True, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['PROBE_TARGET', 3]]}]), ('probing/target_ready', 'probing', ['target_ready'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': 6, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': []}]), ('probing/target_rejected', 'probing', ['target_rejected'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': []}]), ('draining/home_flushed', 'draining', ['home_flushed'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['BOUNDARY', 6]]}]), ('switching/boundary_ack', 'switching', ['boundary_ack'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': []}]), ('switching/old_endpoint_data', 'switching', ['old_endpoint_data'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': [3, 4, 5]}, 'frames': []}]), ('away/old_endpoint_data', 'away', ['old_endpoint_data'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['OLD_ENDPOINT', 3]]}]), ('away/target_lost', 'away', ['target_lost'], [{'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['UNAVAILABLE', 3]]}]), ('home/unsolicited_boundary_ack', 'home', ['unsolicited_boundary_ack'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['NO_MIGRATION', 3]]}]), ('draining/new_application_data', 'draining', ['new_application_data'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'delivered': []}, 'frames': []}]), ('ordered trace 0', 'home', ['move_offer', 'target_rejected', 'move_offer', 'target_rejected', 'move_offer', 'target_rejected'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': True, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['PROBE_TARGET', 3]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['PROBE_TARGET', 3]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': True, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['PROBE_TARGET', 3], ['PROBE_TARGET', 3]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['PROBE_TARGET', 3], ['PROBE_TARGET', 3]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': True, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['PROBE_TARGET', 3], ['PROBE_TARGET', 3], ['PROBE_TARGET', 3]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['PROBE_TARGET', 3], ['PROBE_TARGET', 3], ['PROBE_TARGET', 3]]}]), ('ordered trace 3', 'draining', ['new_application_data', 'home_flushed', 'old_endpoint_data', 'boundary_ack', 'target_lost'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'delivered': []}, 'frames': []}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['BOUNDARY', 6]]}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'delivered': [3, 4, 5]}, 'frames': [['BOUNDARY', 6]]}, {'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'delivered': [3, 4, 5]}, 'frames': [['BOUNDARY', 6]]}, {'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'delivered': [3, 4, 5]}, 'frames': [['BOUNDARY', 6], ['UNAVAILABLE', 3]]}]), ('empty input', 'home', [], []), ('unknown event', 'home', ['unsupported'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['reject', [3, 4, 5, 6, 7]]]}])], 4: [('home/move_offer', 'home', ['move_offer'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': True, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['PROBE_TARGET', 4]]}]), ('probing/target_ready', 'probing', ['target_ready'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': 7, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': []}]), ('probing/target_rejected', 'probing', ['target_rejected'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': []}]), ('draining/home_flushed', 'draining', ['home_flushed'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['BOUNDARY', 7]]}]), ('switching/boundary_ack', 'switching', ['boundary_ack'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': []}]), ('switching/old_endpoint_data', 'switching', ['old_endpoint_data'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': [4, 5, 6]}, 'frames': []}]), ('away/old_endpoint_data', 'away', ['old_endpoint_data'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['OLD_ENDPOINT', 4]]}]), ('away/target_lost', 'away', ['target_lost'], [{'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['UNAVAILABLE', 4]]}]), ('home/unsolicited_boundary_ack', 'home', ['unsolicited_boundary_ack'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['NO_MIGRATION', 4]]}]), ('draining/new_application_data', 'draining', ['new_application_data'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': []}]), ('ordered trace 0', 'home', ['move_offer', 'target_rejected', 'move_offer', 'target_rejected', 'move_offer', 'target_rejected', 'move_offer'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': True, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['PROBE_TARGET', 4]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['PROBE_TARGET', 4]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': True, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['PROBE_TARGET', 4], ['PROBE_TARGET', 4]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['PROBE_TARGET', 4], ['PROBE_TARGET', 4]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': True, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['PROBE_TARGET', 4], ['PROBE_TARGET', 4], ['PROBE_TARGET', 4]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['PROBE_TARGET', 4], ['PROBE_TARGET', 4], ['PROBE_TARGET', 4]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': True, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['PROBE_TARGET', 4], ['PROBE_TARGET', 4], ['PROBE_TARGET', 4], ['PROBE_TARGET', 4]]}]), ('ordered trace 3', 'draining', ['new_application_data', 'home_flushed', 'old_endpoint_data', 'boundary_ack', 'target_lost'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': []}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['BOUNDARY', 7]]}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'delivered': [4, 5, 6]}, 'frames': [['BOUNDARY', 7]]}, {'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'delivered': [4, 5, 6]}, 'frames': [['BOUNDARY', 7]]}, {'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'delivered': [4, 5, 6]}, 'frames': [['BOUNDARY', 7], ['UNAVAILABLE', 4]]}]), ('empty input', 'home', [], []), ('unknown event', 'home', ['unsupported'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['reject', [4, 5, 6, 7, 8, 9]]]}])], 5: [('home/move_offer', 'home', ['move_offer'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': True, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5]]}]), ('probing/target_ready', 'probing', ['target_ready'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': 8, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': []}]), ('probing/target_rejected', 'probing', ['target_rejected'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': []}]), ('draining/home_flushed', 'draining', ['home_flushed'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['BOUNDARY', 8]]}]), ('switching/boundary_ack', 'switching', ['boundary_ack'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': []}]), ('switching/old_endpoint_data', 'switching', ['old_endpoint_data'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': [5, 6, 7]}, 'frames': []}]), ('away/old_endpoint_data', 'away', ['old_endpoint_data'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['OLD_ENDPOINT', 5]]}]), ('away/target_lost', 'away', ['target_lost'], [{'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['UNAVAILABLE', 5]]}]), ('home/unsolicited_boundary_ack', 'home', ['unsolicited_boundary_ack'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['NO_MIGRATION', 5]]}]), ('draining/new_application_data', 'draining', ['new_application_data'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': []}]), ('ordered trace 0', 'home', ['move_offer', 'target_rejected', 'move_offer', 'target_rejected', 'move_offer', 'target_rejected', 'move_offer', 'target_rejected'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': True, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': True, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5], ['PROBE_TARGET', 5]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5], ['PROBE_TARGET', 5]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': True, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5], ['PROBE_TARGET', 5], ['PROBE_TARGET', 5]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5], ['PROBE_TARGET', 5], ['PROBE_TARGET', 5]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': True, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5], ['PROBE_TARGET', 5], ['PROBE_TARGET', 5], ['PROBE_TARGET', 5]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5], ['PROBE_TARGET', 5], ['PROBE_TARGET', 5], ['PROBE_TARGET', 5]]}]), ('ordered trace 3', 'draining', ['new_application_data', 'home_flushed', 'old_endpoint_data', 'boundary_ack', 'target_lost'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': []}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['BOUNDARY', 8]]}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'delivered': [5, 6, 7]}, 'frames': [['BOUNDARY', 8]]}, {'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'delivered': [5, 6, 7]}, 'frames': [['BOUNDARY', 8]]}, {'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'delivered': [5, 6, 7]}, 'frames': [['BOUNDARY', 8], ['UNAVAILABLE', 5]]}]), ('empty input', 'home', [], []), ('unknown event', 'home', ['unsupported'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, '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":"ea7e1b1b79f0fedcd43838c6804f571a3df804dc77cadb4ecb435ce77e56cb62","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 = {'endpoint': 'target' if phase=='away' else 'home', 'home_open': phase not in ('away','suspended'), 'sequence': seed+3, 'boundary': None, 'target_checked': False, 'queue': payload[:], 'delivered': []}\n    frames = []\n    observed = []\n    table = {('home', 'move_offer'): ('probing', 'probe_target'), ('probing', 'target_ready'): ('away', 'switch_target'), ('probing', 'target_rejected'): ('home', 'discard_target'), ('draining', 'home_flushed'): ('switching', 'send_boundary'), ('switching', 'boundary_ack'): ('away', 'switch_target'), ('switching', 'old_endpoint_data'): ('switching', 'accept_before_boundary'), ('away', 'old_endpoint_data'): ('away', 'reject_old_endpoint'), ('away', 'target_lost'): ('suspended', 'report_unavailable'), ('home', 'unsolicited_boundary_ack'): ('home', 'reject_unoffered'), ('draining', 'new_application_data'): ('draining', 'queue_after_boundary')}\n    for event in events:\n        phase, action = table.get((phase, event), (phase, \"reject\"))\n        if action == 'probe_target':\n            r['target_checked']=True; frames.append(['PROBE_TARGET',seed])\n        elif action == 'freeze_home_sequence':\n            r['boundary']=r['sequence']\n        elif action == 'discard_target':\n            r['target_checked']=False\n        elif action == 'send_boundary':\n            frames.append(['BOUNDARY',r['sequence']])\n        elif action == 'switch_target':\n            r['endpoint']='target'; r['home_open']=False\n        elif action == 'accept_before_boundary':\n            r['delivered'].extend([x for x in payload if x<r['sequence']])\n        elif action == 'reject_old_endpoint':\n            frames.append(['OLD_ENDPOINT',seed])\n        elif action == 'report_unavailable':\n            frames.append(['UNAVAILABLE',seed])\n        elif action == 'reject_unoffered':\n            frames.append(['NO_MIGRATION',seed])\n        elif action == 'queue_after_boundary':\n            r['queue'].extend(payload)\n        elif action == 'stop_home':\n            r['home_open']=False\n        elif action == 'reset_sequence':\n            r['sequence']=0\n        elif action == 'send_zero_boundary':\n            frames.append(['BOUNDARY',0])\n        elif action == 'resume_home':\n            r['endpoint']='home'; r['home_open']=True\n        elif action == 'send_on_both':\n            frames.extend([['HOME',payload],['TARGET',payload]])\n        elif action == 'drop_all':\n            r['delivered']=[]\n        elif action == 'accept_all':\n            r['delivered'].extend(payload)\n        elif action == 'deliver':\n            r['delivered'].extend(payload)\n        elif action == 'silent_drop':\n            r['queue']=[]\n        elif action == 'send_home':\n            frames.append(['HOME',payload])\n        elif action == 'send_target':\n            frames.append(['TARGET',payload])\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: [('home/move_offer', 'home', ['move_offer'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': True, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['PROBE_TARGET', 1]]}]), ('probing/target_ready', 'probing', ['target_ready'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': 4, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': []}]), ('probing/target_rejected', 'probing', ['target_rejected'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': []}]), ('draining/home_flushed', 'draining', ['home_flushed'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['BOUNDARY', 4]]}]), ('switching/boundary_ack', 'switching', ['boundary_ack'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': []}]), ('switching/old_endpoint_data', 'switching', ['old_endpoint_data'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': [1, 2, 3]}, 'frames': []}]), ('away/old_endpoint_data', 'away', ['old_endpoint_data'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['OLD_ENDPOINT', 1]]}]), ('away/target_lost', 'away', ['target_lost'], [{'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['UNAVAILABLE', 1]]}]), ('home/unsolicited_boundary_ack', 'home', ['unsolicited_boundary_ack'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['NO_MIGRATION', 1]]}]), ('draining/new_application_data', 'draining', ['new_application_data'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3, 1, 2, 3], 'delivered': []}, 'frames': []}]), ('ordered trace 0', 'home', ['move_offer', 'target_rejected', 'move_offer', 'target_rejected'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': True, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['PROBE_TARGET', 1]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['PROBE_TARGET', 1]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': True, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['PROBE_TARGET', 1], ['PROBE_TARGET', 1]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['PROBE_TARGET', 1], ['PROBE_TARGET', 1]]}]), ('ordered trace 3', 'draining', ['new_application_data', 'home_flushed', 'old_endpoint_data', 'boundary_ack'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3, 1, 2, 3], 'delivered': []}, 'frames': []}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3, 1, 2, 3], 'delivered': []}, 'frames': [['BOUNDARY', 4]]}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3, 1, 2, 3], 'delivered': [1, 2, 3]}, 'frames': [['BOUNDARY', 4]]}, {'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3, 1, 2, 3], 'delivered': [1, 2, 3]}, 'frames': [['BOUNDARY', 4]]}]), ('empty input', 'home', [], []), ('unknown event', 'home', ['unsupported'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['reject', [1, 2, 3]]]}])], 2: [('home/move_offer', 'home', ['move_offer'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': True, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['PROBE_TARGET', 2]]}]), ('probing/target_ready', 'probing', ['target_ready'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': 5, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': []}]), ('probing/target_rejected', 'probing', ['target_rejected'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': []}]), ('draining/home_flushed', 'draining', ['home_flushed'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['BOUNDARY', 5]]}]), ('switching/boundary_ack', 'switching', ['boundary_ack'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': []}]), ('switching/old_endpoint_data', 'switching', ['old_endpoint_data'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': [2, 3, 4]}, 'frames': []}]), ('away/old_endpoint_data', 'away', ['old_endpoint_data'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['OLD_ENDPOINT', 2]]}]), ('away/target_lost', 'away', ['target_lost'], [{'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['UNAVAILABLE', 2]]}]), ('home/unsolicited_boundary_ack', 'home', ['unsolicited_boundary_ack'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['NO_MIGRATION', 2]]}]), ('draining/new_application_data', 'draining', ['new_application_data'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5, 2, 3, 4, 5], 'delivered': []}, 'frames': []}]), ('ordered trace 0', 'home', ['move_offer', 'target_rejected', 'move_offer', 'target_rejected', 'move_offer'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': True, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['PROBE_TARGET', 2]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['PROBE_TARGET', 2]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': True, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['PROBE_TARGET', 2], ['PROBE_TARGET', 2]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['PROBE_TARGET', 2], ['PROBE_TARGET', 2]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': True, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['PROBE_TARGET', 2], ['PROBE_TARGET', 2], ['PROBE_TARGET', 2]]}]), ('ordered trace 3', 'draining', ['new_application_data', 'home_flushed', 'old_endpoint_data', 'boundary_ack', 'target_lost'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5, 2, 3, 4, 5], 'delivered': []}, 'frames': []}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5, 2, 3, 4, 5], 'delivered': []}, 'frames': [['BOUNDARY', 5]]}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5, 2, 3, 4, 5], 'delivered': [2, 3, 4]}, 'frames': [['BOUNDARY', 5]]}, {'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5, 2, 3, 4, 5], 'delivered': [2, 3, 4]}, 'frames': [['BOUNDARY', 5]]}, {'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5, 2, 3, 4, 5], 'delivered': [2, 3, 4]}, 'frames': [['BOUNDARY', 5], ['UNAVAILABLE', 2]]}]), ('empty input', 'home', [], []), ('unknown event', 'home', ['unsupported'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['reject', [2, 3, 4, 5]]]}])], 3: [('home/move_offer', 'home', ['move_offer'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': True, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['PROBE_TARGET', 3]]}]), ('probing/target_ready', 'probing', ['target_ready'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': 6, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': []}]), ('probing/target_rejected', 'probing', ['target_rejected'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': []}]), ('draining/home_flushed', 'draining', ['home_flushed'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['BOUNDARY', 6]]}]), ('switching/boundary_ack', 'switching', ['boundary_ack'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': []}]), ('switching/old_endpoint_data', 'switching', ['old_endpoint_data'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': [3, 4, 5]}, 'frames': []}]), ('away/old_endpoint_data', 'away', ['old_endpoint_data'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['OLD_ENDPOINT', 3]]}]), ('away/target_lost', 'away', ['target_lost'], [{'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['UNAVAILABLE', 3]]}]), ('home/unsolicited_boundary_ack', 'home', ['unsolicited_boundary_ack'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['NO_MIGRATION', 3]]}]), ('draining/new_application_data', 'draining', ['new_application_data'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'delivered': []}, 'frames': []}]), ('ordered trace 0', 'home', ['move_offer', 'target_rejected', 'move_offer', 'target_rejected', 'move_offer', 'target_rejected'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': True, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['PROBE_TARGET', 3]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['PROBE_TARGET', 3]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': True, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['PROBE_TARGET', 3], ['PROBE_TARGET', 3]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['PROBE_TARGET', 3], ['PROBE_TARGET', 3]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': True, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['PROBE_TARGET', 3], ['PROBE_TARGET', 3], ['PROBE_TARGET', 3]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['PROBE_TARGET', 3], ['PROBE_TARGET', 3], ['PROBE_TARGET', 3]]}]), ('ordered trace 3', 'draining', ['new_application_data', 'home_flushed', 'old_endpoint_data', 'boundary_ack', 'target_lost'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'delivered': []}, 'frames': []}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['BOUNDARY', 6]]}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'delivered': [3, 4, 5]}, 'frames': [['BOUNDARY', 6]]}, {'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'delivered': [3, 4, 5]}, 'frames': [['BOUNDARY', 6]]}, {'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'delivered': [3, 4, 5]}, 'frames': [['BOUNDARY', 6], ['UNAVAILABLE', 3]]}]), ('empty input', 'home', [], []), ('unknown event', 'home', ['unsupported'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['reject', [3, 4, 5, 6, 7]]]}])], 4: [('home/move_offer', 'home', ['move_offer'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': True, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['PROBE_TARGET', 4]]}]), ('probing/target_ready', 'probing', ['target_ready'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': 7, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': []}]), ('probing/target_rejected', 'probing', ['target_rejected'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': []}]), ('draining/home_flushed', 'draining', ['home_flushed'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['BOUNDARY', 7]]}]), ('switching/boundary_ack', 'switching', ['boundary_ack'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': []}]), ('switching/old_endpoint_data', 'switching', ['old_endpoint_data'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': [4, 5, 6]}, 'frames': []}]), ('away/old_endpoint_data', 'away', ['old_endpoint_data'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['OLD_ENDPOINT', 4]]}]), ('away/target_lost', 'away', ['target_lost'], [{'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['UNAVAILABLE', 4]]}]), ('home/unsolicited_boundary_ack', 'home', ['unsolicited_boundary_ack'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['NO_MIGRATION', 4]]}]), ('draining/new_application_data', 'draining', ['new_application_data'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': []}]), ('ordered trace 0', 'home', ['move_offer', 'target_rejected', 'move_offer', 'target_rejected', 'move_offer', 'target_rejected', 'move_offer'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': True, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['PROBE_TARGET', 4]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['PROBE_TARGET', 4]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': True, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['PROBE_TARGET', 4], ['PROBE_TARGET', 4]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['PROBE_TARGET', 4], ['PROBE_TARGET', 4]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': True, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['PROBE_TARGET', 4], ['PROBE_TARGET', 4], ['PROBE_TARGET', 4]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['PROBE_TARGET', 4], ['PROBE_TARGET', 4], ['PROBE_TARGET', 4]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': True, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['PROBE_TARGET', 4], ['PROBE_TARGET', 4], ['PROBE_TARGET', 4], ['PROBE_TARGET', 4]]}]), ('ordered trace 3', 'draining', ['new_application_data', 'home_flushed', 'old_endpoint_data', 'boundary_ack', 'target_lost'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': []}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['BOUNDARY', 7]]}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'delivered': [4, 5, 6]}, 'frames': [['BOUNDARY', 7]]}, {'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'delivered': [4, 5, 6]}, 'frames': [['BOUNDARY', 7]]}, {'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'delivered': [4, 5, 6]}, 'frames': [['BOUNDARY', 7], ['UNAVAILABLE', 4]]}]), ('empty input', 'home', [], []), ('unknown event', 'home', ['unsupported'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['reject', [4, 5, 6, 7, 8, 9]]]}])], 5: [('home/move_offer', 'home', ['move_offer'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': True, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5]]}]), ('probing/target_ready', 'probing', ['target_ready'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': 8, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': []}]), ('probing/target_rejected', 'probing', ['target_rejected'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': []}]), ('draining/home_flushed', 'draining', ['home_flushed'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['BOUNDARY', 8]]}]), ('switching/boundary_ack', 'switching', ['boundary_ack'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': []}]), ('switching/old_endpoint_data', 'switching', ['old_endpoint_data'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': [5, 6, 7]}, 'frames': []}]), ('away/old_endpoint_data', 'away', ['old_endpoint_data'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['OLD_ENDPOINT', 5]]}]), ('away/target_lost', 'away', ['target_lost'], [{'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['UNAVAILABLE', 5]]}]), ('home/unsolicited_boundary_ack', 'home', ['unsolicited_boundary_ack'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['NO_MIGRATION', 5]]}]), ('draining/new_application_data', 'draining', ['new_application_data'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': []}]), ('ordered trace 0', 'home', ['move_offer', 'target_rejected', 'move_offer', 'target_rejected', 'move_offer', 'target_rejected', 'move_offer', 'target_rejected'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': True, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': True, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5], ['PROBE_TARGET', 5]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5], ['PROBE_TARGET', 5]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': True, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5], ['PROBE_TARGET', 5], ['PROBE_TARGET', 5]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5], ['PROBE_TARGET', 5], ['PROBE_TARGET', 5]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': True, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5], ['PROBE_TARGET', 5], ['PROBE_TARGET', 5], ['PROBE_TARGET', 5]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5], ['PROBE_TARGET', 5], ['PROBE_TARGET', 5], ['PROBE_TARGET', 5]]}]), ('ordered trace 3', 'draining', ['new_application_data', 'home_flushed', 'old_endpoint_data', 'boundary_ack', 'target_lost'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': []}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['BOUNDARY', 8]]}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'delivered': [5, 6, 7]}, 'frames': [['BOUNDARY', 8]]}, {'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'delivered': [5, 6, 7]}, 'frames': [['BOUNDARY', 8]]}, {'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'delivered': [5, 6, 7]}, 'frames': [['BOUNDARY', 8], ['UNAVAILABLE', 5]]}]), ('empty input', 'home', [], []), ('unknown event', 'home', ['unsupported'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, '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":"f526d2a5ec1fb917fccc9c15de528aa60feb36094306551324730835cb357eed","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 = {'endpoint': 'target' if phase=='away' else 'home', 'home_open': phase not in ('away','suspended'), 'sequence': seed+3, 'boundary': None, 'target_checked': False, 'queue': payload[:], 'delivered': []}\n    frames = []\n    observed = []\n    table = {('home', 'move_offer'): ('probing', 'probe_target'), ('probing', 'target_ready'): ('draining', 'freeze_home_sequence'), ('probing', 'target_rejected'): ('home', 'discard_target'), ('draining', 'home_flushed'): ('switching', 'send_boundary'), ('switching', 'boundary_ack'): ('away', 'switch_target'), ('switching', 'old_endpoint_data'): ('switching', 'accept_before_boundary'), ('away', 'old_endpoint_data'): ('away', 'reject_old_endpoint'), ('away', 'target_lost'): ('suspended', 'report_unavailable'), ('home', 'unsolicited_boundary_ack'): ('home', 'reject_unoffered'), ('draining', 'new_application_data'): ('draining', 'queue_after_boundary')}\n    for event in events:\n        phase, action = table.get((phase, event), (phase, \"reject\"))\n        if action == 'probe_target':\n            r['target_checked']=True; frames.append(['PROBE_TARGET',seed])\n        elif action == 'freeze_home_sequence':\n            r['boundary']=r['sequence']\n        elif action == 'discard_target':\n            r['target_checked']=False\n        elif action == 'send_boundary':\n            frames.append(['BOUNDARY',r['sequence']])\n        elif action == 'switch_target':\n            r['endpoint']='target'; r['home_open']=False\n        elif action == 'accept_before_boundary':\n            r['delivered'].extend([x for x in payload if x<r['sequence']])\n        elif action == 'reject_old_endpoint':\n            frames.append(['OLD_ENDPOINT',seed])\n        elif action == 'report_unavailable':\n            frames.append(['UNAVAILABLE',seed])\n        elif action == 'reject_unoffered':\n            frames.append(['NO_MIGRATION',seed])\n        elif action == 'queue_after_boundary':\n            r['queue'].extend(payload)\n        elif action == 'stop_home':\n            r['home_open']=False\n        elif action == 'reset_sequence':\n            r['sequence']=0\n        elif action == 'send_zero_boundary':\n            frames.append(['BOUNDARY',0])\n        elif action == 'resume_home':\n            r['endpoint']='home'; r['home_open']=True\n        elif action == 'send_on_both':\n            frames.extend([['HOME',payload],['TARGET',payload]])\n        elif action == 'drop_all':\n            r['delivered']=[]\n        elif action == 'accept_all':\n            r['delivered'].extend(payload)\n        elif action == 'deliver':\n            r['delivered'].extend(payload)\n        elif action == 'silent_drop':\n            r['queue']=[]\n        elif action == 'send_home':\n            frames.append(['HOME',payload])\n        elif action == 'send_target':\n            frames.append(['TARGET',payload])\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: [('home/move_offer', 'home', ['move_offer'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': True, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['PROBE_TARGET', 1]]}]), ('probing/target_ready', 'probing', ['target_ready'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': 4, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': []}]), ('probing/target_rejected', 'probing', ['target_rejected'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': []}]), ('draining/home_flushed', 'draining', ['home_flushed'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['BOUNDARY', 4]]}]), ('switching/boundary_ack', 'switching', ['boundary_ack'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': []}]), ('switching/old_endpoint_data', 'switching', ['old_endpoint_data'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': [1, 2, 3]}, 'frames': []}]), ('away/old_endpoint_data', 'away', ['old_endpoint_data'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['OLD_ENDPOINT', 1]]}]), ('away/target_lost', 'away', ['target_lost'], [{'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['UNAVAILABLE', 1]]}]), ('home/unsolicited_boundary_ack', 'home', ['unsolicited_boundary_ack'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['NO_MIGRATION', 1]]}]), ('draining/new_application_data', 'draining', ['new_application_data'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3, 1, 2, 3], 'delivered': []}, 'frames': []}]), ('ordered trace 0', 'home', ['move_offer', 'target_rejected', 'move_offer', 'target_rejected'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': True, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['PROBE_TARGET', 1]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['PROBE_TARGET', 1]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': True, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['PROBE_TARGET', 1], ['PROBE_TARGET', 1]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['PROBE_TARGET', 1], ['PROBE_TARGET', 1]]}]), ('ordered trace 3', 'draining', ['new_application_data', 'home_flushed', 'old_endpoint_data', 'boundary_ack'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3, 1, 2, 3], 'delivered': []}, 'frames': []}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3, 1, 2, 3], 'delivered': []}, 'frames': [['BOUNDARY', 4]]}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3, 1, 2, 3], 'delivered': [1, 2, 3]}, 'frames': [['BOUNDARY', 4]]}, {'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3, 1, 2, 3], 'delivered': [1, 2, 3]}, 'frames': [['BOUNDARY', 4]]}]), ('empty input', 'home', [], []), ('unknown event', 'home', ['unsupported'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 4, 'boundary': None, 'target_checked': False, 'queue': [1, 2, 3], 'delivered': []}, 'frames': [['reject', [1, 2, 3]]]}])], 2: [('home/move_offer', 'home', ['move_offer'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': True, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['PROBE_TARGET', 2]]}]), ('probing/target_ready', 'probing', ['target_ready'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': 5, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': []}]), ('probing/target_rejected', 'probing', ['target_rejected'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': []}]), ('draining/home_flushed', 'draining', ['home_flushed'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['BOUNDARY', 5]]}]), ('switching/boundary_ack', 'switching', ['boundary_ack'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': []}]), ('switching/old_endpoint_data', 'switching', ['old_endpoint_data'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': [2, 3, 4]}, 'frames': []}]), ('away/old_endpoint_data', 'away', ['old_endpoint_data'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['OLD_ENDPOINT', 2]]}]), ('away/target_lost', 'away', ['target_lost'], [{'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['UNAVAILABLE', 2]]}]), ('home/unsolicited_boundary_ack', 'home', ['unsolicited_boundary_ack'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['NO_MIGRATION', 2]]}]), ('draining/new_application_data', 'draining', ['new_application_data'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5, 2, 3, 4, 5], 'delivered': []}, 'frames': []}]), ('ordered trace 0', 'home', ['move_offer', 'target_rejected', 'move_offer', 'target_rejected', 'move_offer'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': True, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['PROBE_TARGET', 2]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['PROBE_TARGET', 2]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': True, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['PROBE_TARGET', 2], ['PROBE_TARGET', 2]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['PROBE_TARGET', 2], ['PROBE_TARGET', 2]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': True, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['PROBE_TARGET', 2], ['PROBE_TARGET', 2], ['PROBE_TARGET', 2]]}]), ('ordered trace 3', 'draining', ['new_application_data', 'home_flushed', 'old_endpoint_data', 'boundary_ack', 'target_lost'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5, 2, 3, 4, 5], 'delivered': []}, 'frames': []}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5, 2, 3, 4, 5], 'delivered': []}, 'frames': [['BOUNDARY', 5]]}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5, 2, 3, 4, 5], 'delivered': [2, 3, 4]}, 'frames': [['BOUNDARY', 5]]}, {'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5, 2, 3, 4, 5], 'delivered': [2, 3, 4]}, 'frames': [['BOUNDARY', 5]]}, {'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5, 2, 3, 4, 5], 'delivered': [2, 3, 4]}, 'frames': [['BOUNDARY', 5], ['UNAVAILABLE', 2]]}]), ('empty input', 'home', [], []), ('unknown event', 'home', ['unsupported'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 5, 'boundary': None, 'target_checked': False, 'queue': [2, 3, 4, 5], 'delivered': []}, 'frames': [['reject', [2, 3, 4, 5]]]}])], 3: [('home/move_offer', 'home', ['move_offer'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': True, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['PROBE_TARGET', 3]]}]), ('probing/target_ready', 'probing', ['target_ready'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': 6, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': []}]), ('probing/target_rejected', 'probing', ['target_rejected'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': []}]), ('draining/home_flushed', 'draining', ['home_flushed'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['BOUNDARY', 6]]}]), ('switching/boundary_ack', 'switching', ['boundary_ack'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': []}]), ('switching/old_endpoint_data', 'switching', ['old_endpoint_data'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': [3, 4, 5]}, 'frames': []}]), ('away/old_endpoint_data', 'away', ['old_endpoint_data'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['OLD_ENDPOINT', 3]]}]), ('away/target_lost', 'away', ['target_lost'], [{'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['UNAVAILABLE', 3]]}]), ('home/unsolicited_boundary_ack', 'home', ['unsolicited_boundary_ack'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['NO_MIGRATION', 3]]}]), ('draining/new_application_data', 'draining', ['new_application_data'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'delivered': []}, 'frames': []}]), ('ordered trace 0', 'home', ['move_offer', 'target_rejected', 'move_offer', 'target_rejected', 'move_offer', 'target_rejected'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': True, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['PROBE_TARGET', 3]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['PROBE_TARGET', 3]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': True, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['PROBE_TARGET', 3], ['PROBE_TARGET', 3]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['PROBE_TARGET', 3], ['PROBE_TARGET', 3]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': True, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['PROBE_TARGET', 3], ['PROBE_TARGET', 3], ['PROBE_TARGET', 3]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['PROBE_TARGET', 3], ['PROBE_TARGET', 3], ['PROBE_TARGET', 3]]}]), ('ordered trace 3', 'draining', ['new_application_data', 'home_flushed', 'old_endpoint_data', 'boundary_ack', 'target_lost'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'delivered': []}, 'frames': []}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['BOUNDARY', 6]]}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'delivered': [3, 4, 5]}, 'frames': [['BOUNDARY', 6]]}, {'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'delivered': [3, 4, 5]}, 'frames': [['BOUNDARY', 6]]}, {'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7, 3, 4, 5, 6, 7], 'delivered': [3, 4, 5]}, 'frames': [['BOUNDARY', 6], ['UNAVAILABLE', 3]]}]), ('empty input', 'home', [], []), ('unknown event', 'home', ['unsupported'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 6, 'boundary': None, 'target_checked': False, 'queue': [3, 4, 5, 6, 7], 'delivered': []}, 'frames': [['reject', [3, 4, 5, 6, 7]]]}])], 4: [('home/move_offer', 'home', ['move_offer'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': True, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['PROBE_TARGET', 4]]}]), ('probing/target_ready', 'probing', ['target_ready'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': 7, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': []}]), ('probing/target_rejected', 'probing', ['target_rejected'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': []}]), ('draining/home_flushed', 'draining', ['home_flushed'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['BOUNDARY', 7]]}]), ('switching/boundary_ack', 'switching', ['boundary_ack'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': []}]), ('switching/old_endpoint_data', 'switching', ['old_endpoint_data'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': [4, 5, 6]}, 'frames': []}]), ('away/old_endpoint_data', 'away', ['old_endpoint_data'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['OLD_ENDPOINT', 4]]}]), ('away/target_lost', 'away', ['target_lost'], [{'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['UNAVAILABLE', 4]]}]), ('home/unsolicited_boundary_ack', 'home', ['unsolicited_boundary_ack'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['NO_MIGRATION', 4]]}]), ('draining/new_application_data', 'draining', ['new_application_data'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': []}]), ('ordered trace 0', 'home', ['move_offer', 'target_rejected', 'move_offer', 'target_rejected', 'move_offer', 'target_rejected', 'move_offer'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': True, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['PROBE_TARGET', 4]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['PROBE_TARGET', 4]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': True, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['PROBE_TARGET', 4], ['PROBE_TARGET', 4]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['PROBE_TARGET', 4], ['PROBE_TARGET', 4]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': True, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['PROBE_TARGET', 4], ['PROBE_TARGET', 4], ['PROBE_TARGET', 4]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['PROBE_TARGET', 4], ['PROBE_TARGET', 4], ['PROBE_TARGET', 4]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': True, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['PROBE_TARGET', 4], ['PROBE_TARGET', 4], ['PROBE_TARGET', 4], ['PROBE_TARGET', 4]]}]), ('ordered trace 3', 'draining', ['new_application_data', 'home_flushed', 'old_endpoint_data', 'boundary_ack', 'target_lost'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': []}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['BOUNDARY', 7]]}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'delivered': [4, 5, 6]}, 'frames': [['BOUNDARY', 7]]}, {'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'delivered': [4, 5, 6]}, 'frames': [['BOUNDARY', 7]]}, {'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9], 'delivered': [4, 5, 6]}, 'frames': [['BOUNDARY', 7], ['UNAVAILABLE', 4]]}]), ('empty input', 'home', [], []), ('unknown event', 'home', ['unsupported'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 7, 'boundary': None, 'target_checked': False, 'queue': [4, 5, 6, 7, 8, 9], 'delivered': []}, 'frames': [['reject', [4, 5, 6, 7, 8, 9]]]}])], 5: [('home/move_offer', 'home', ['move_offer'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': True, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5]]}]), ('probing/target_ready', 'probing', ['target_ready'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': 8, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': []}]), ('probing/target_rejected', 'probing', ['target_rejected'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': []}]), ('draining/home_flushed', 'draining', ['home_flushed'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['BOUNDARY', 8]]}]), ('switching/boundary_ack', 'switching', ['boundary_ack'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': []}]), ('switching/old_endpoint_data', 'switching', ['old_endpoint_data'], [{'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': [5, 6, 7]}, 'frames': []}]), ('away/old_endpoint_data', 'away', ['old_endpoint_data'], [{'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['OLD_ENDPOINT', 5]]}]), ('away/target_lost', 'away', ['target_lost'], [{'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['UNAVAILABLE', 5]]}]), ('home/unsolicited_boundary_ack', 'home', ['unsolicited_boundary_ack'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['NO_MIGRATION', 5]]}]), ('draining/new_application_data', 'draining', ['new_application_data'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': []}]), ('ordered trace 0', 'home', ['move_offer', 'target_rejected', 'move_offer', 'target_rejected', 'move_offer', 'target_rejected', 'move_offer', 'target_rejected'], [{'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': True, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': True, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5], ['PROBE_TARGET', 5]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5], ['PROBE_TARGET', 5]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': True, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5], ['PROBE_TARGET', 5], ['PROBE_TARGET', 5]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5], ['PROBE_TARGET', 5], ['PROBE_TARGET', 5]]}, {'phase': 'probing', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': True, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5], ['PROBE_TARGET', 5], ['PROBE_TARGET', 5], ['PROBE_TARGET', 5]]}, {'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['PROBE_TARGET', 5], ['PROBE_TARGET', 5], ['PROBE_TARGET', 5], ['PROBE_TARGET', 5]]}]), ('ordered trace 3', 'draining', ['new_application_data', 'home_flushed', 'old_endpoint_data', 'boundary_ack', 'target_lost'], [{'phase': 'draining', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': []}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'delivered': []}, 'frames': [['BOUNDARY', 8]]}, {'phase': 'switching', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'delivered': [5, 6, 7]}, 'frames': [['BOUNDARY', 8]]}, {'phase': 'away', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'delivered': [5, 6, 7]}, 'frames': [['BOUNDARY', 8]]}, {'phase': 'suspended', 'registers': {'endpoint': 'target', 'home_open': False, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11], 'delivered': [5, 6, 7]}, 'frames': [['BOUNDARY', 8], ['UNAVAILABLE', 5]]}]), ('empty input', 'home', [], []), ('unknown event', 'home', ['unsupported'], [{'phase': 'home', 'registers': {'endpoint': 'home', 'home_open': True, 'sequence': 8, 'boundary': None, 'target_checked': False, 'queue': [5, 6, 7, 8, 9, 10, 11], 'delivered': []}, '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-stream_migration-probing-target_ready","generated_at":"2026-09-29T14:40:12.622085+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 probing, classify target_ready as transition to draining and emit freeze_home_sequence.","root_cause":"In probing, the target ready handler runs switch target and enters away; it must instead run freeze home sequence and enter draining.","sha256":"ce9d06832ac7ced1425d693f392c4918a4b6dc9eaf7f479f9644b795e56bd2fe","title":"Application stream endpoint migration controller: probing / target ready · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":45.599,"exit_code":1,"observations":[{"actual":[{"frames":[["PROBE_TARGET",1]],"phase":"probing","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":true}}],"check":"home/move_offer","expected":[{"frames":[["PROBE_TARGET",1]],"phase":"probing","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":true}}],"passed":true},{"actual":[{"frames":[],"phase":"draining","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":0,"target_checked":false}}],"check":"probing/target_ready","expected":[{"frames":[],"phase":"draining","registers":{"boundary":4,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":false},{"actual":[{"frames":[],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"probing/target_rejected","expected":[{"frames":[],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[["BOUNDARY",4]],"phase":"switching","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"draining/home_flushed","expected":[{"frames":[["BOUNDARY",4]],"phase":"switching","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[],"phase":"away","registers":{"boundary":null,"delivered":[],"endpoint":"target","home_open":false,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"switching/boundary_ack","expected":[{"frames":[],"phase":"away","registers":{"boundary":null,"delivered":[],"endpoint":"target","home_open":false,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[],"phase":"switching","registers":{"boundary":null,"delivered":[1,2,3],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"switching/old_endpoint_data","expected":[{"frames":[],"phase":"switching","registers":{"boundary":null,"delivered":[1,2,3],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[["OLD_ENDPOINT",1]],"phase":"away","registers":{"boundary":null,"delivered":[],"endpoint":"target","home_open":false,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"away/old_endpoint_data","expected":[{"frames":[["OLD_ENDPOINT",1]],"phase":"away","registers":{"boundary":null,"delivered":[],"endpoint":"target","home_open":false,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[["UNAVAILABLE",1]],"phase":"suspended","registers":{"boundary":null,"delivered":[],"endpoint":"target","home_open":false,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"away/target_lost","expected":[{"frames":[["UNAVAILABLE",1]],"phase":"suspended","registers":{"boundary":null,"delivered":[],"endpoint":"target","home_open":false,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[["NO_MIGRATION",1]],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"home/unsolicited_boundary_ack","expected":[{"frames":[["NO_MIGRATION",1]],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[],"phase":"draining","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}}],"check":"draining/new_application_data","expected":[{"frames":[],"phase":"draining","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[["PROBE_TARGET",1]],"phase":"probing","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":true}},{"frames":[["PROBE_TARGET",1]],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}},{"frames":[["PROBE_TARGET",1],["PROBE_TARGET",1]],"phase":"probing","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":true}},{"frames":[["PROBE_TARGET",1],["PROBE_TARGET",1]],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"ordered trace 0","expected":[{"frames":[["PROBE_TARGET",1]],"phase":"probing","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":true}},{"frames":[["PROBE_TARGET",1]],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}},{"frames":[["PROBE_TARGET",1],["PROBE_TARGET",1]],"phase":"probing","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":true}},{"frames":[["PROBE_TARGET",1],["PROBE_TARGET",1]],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[],"phase":"draining","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}},{"frames":[["BOUNDARY",4]],"phase":"switching","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}},{"frames":[["BOUNDARY",4]],"phase":"switching","registers":{"boundary":null,"delivered":[1,2,3],"endpoint":"home","home_open":true,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}},{"frames":[["BOUNDARY",4]],"phase":"away","registers":{"boundary":null,"delivered":[1,2,3],"endpoint":"target","home_open":false,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}}],"check":"ordered trace 3","expected":[{"frames":[],"phase":"draining","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}},{"frames":[["BOUNDARY",4]],"phase":"switching","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}},{"frames":[["BOUNDARY",4]],"phase":"switching","registers":{"boundary":null,"delivered":[1,2,3],"endpoint":"home","home_open":true,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}},{"frames":[["BOUNDARY",4]],"phase":"away","registers":{"boundary":null,"delivered":[1,2,3],"endpoint":"target","home_open":false,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[],"check":"empty input","expected":[],"passed":true},{"actual":[{"frames":[["reject",[1,2,3]]],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"unknown event","expected":[{"frames":[["reject",[1,2,3]]],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"home/move_offer\", \"actual\": [{\"phase\": \"probing\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": true, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1]]}], \"expected\": [{\"phase\": \"probing\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": true, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1]]}], \"passed\": true}, {\"check\": \"probing/target_ready\", \"actual\": [{\"phase\": \"draining\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 0, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": []}], \"expected\": [{\"phase\": \"draining\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": 4, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": []}], \"passed\": false}, {\"check\": \"probing/target_rejected\", \"actual\": [{\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": []}], \"expected\": [{\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": []}], \"passed\": true}, {\"check\": \"draining/home_flushed\", \"actual\": [{\"phase\": \"switching\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"BOUNDARY\", 4]]}], \"expected\": [{\"phase\": \"switching\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"BOUNDARY\", 4]]}], \"passed\": true}, {\"check\": \"switching/boundary_ack\", \"actual\": [{\"phase\": \"away\", \"registers\": {\"endpoint\": \"target\", \"home_open\": false, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": []}], \"expected\": [{\"phase\": \"away\", \"registers\": {\"endpoint\": \"target\", \"home_open\": false, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": []}], \"passed\": true}, {\"check\": \"switching/old_endpoint_data\", \"actual\": [{\"phase\": \"switching\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": [1, 2, 3]}, \"frames\": []}], \"expected\": [{\"phase\": \"switching\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": [1, 2, 3]}, \"frames\": []}], \"passed\": true}, {\"check\": \"away/old_endpoint_data\", \"actual\": [{\"phase\": \"away\", \"registers\": {\"endpoint\": \"target\", \"home_open\": false, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"OLD_ENDPOINT\", 1]]}], \"expected\": [{\"phase\": \"away\", \"registers\": {\"endpoint\": \"target\", \"home_open\": false, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"OLD_ENDPOINT\", 1]]}], \"passed\": true}, {\"check\": \"away/target_lost\", \"actual\": [{\"phase\": \"suspended\", \"registers\": {\"endpoint\": \"target\", \"home_open\": false, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"UNAVAILABLE\", 1]]}], \"expected\": [{\"phase\": \"suspended\", \"registers\": {\"endpoint\": \"target\", \"home_open\": false, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"UNAVAILABLE\", 1]]}], \"passed\": true}, {\"check\": \"home/unsolicited_boundary_ack\", \"actual\": [{\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"NO_MIGRATION\", 1]]}], \"expected\": [{\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"NO_MIGRATION\", 1]]}], \"passed\": true}, {\"check\": \"draining/new_application_data\", \"actual\": [{\"phase\": \"draining\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": []}, \"frames\": []}], \"expected\": [{\"phase\": \"draining\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": []}, \"frames\": []}], \"passed\": true}, {\"check\": \"ordered trace 0\", \"actual\": [{\"phase\": \"probing\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": true, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1]]}, {\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1]]}, {\"phase\": \"probing\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": true, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1], [\"PROBE_TARGET\", 1]]}, {\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1], [\"PROBE_TARGET\", 1]]}], \"expected\": [{\"phase\": \"probing\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": true, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1]]}, {\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1]]}, {\"phase\": \"probing\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": true, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1], [\"PROBE_TARGET\", 1]]}, {\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1], [\"PROBE_TARGET\", 1]]}], \"passed\": true}, {\"check\": \"ordered trace 3\", \"actual\": [{\"phase\": \"draining\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": []}, \"frames\": []}, {\"phase\": \"switching\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": []}, \"frames\": [[\"BOUNDARY\", 4]]}, {\"phase\": \"switching\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": [1, 2, 3]}, \"frames\": [[\"BOUNDARY\", 4]]}, {\"phase\": \"away\", \"registers\": {\"endpoint\": \"target\", \"home_open\": false, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": [1, 2, 3]}, \"frames\": [[\"BOUNDARY\", 4]]}], \"expected\": [{\"phase\": \"draining\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": []}, \"frames\": []}, {\"phase\": \"switching\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": []}, \"frames\": [[\"BOUNDARY\", 4]]}, {\"phase\": \"switching\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": [1, 2, 3]}, \"frames\": [[\"BOUNDARY\", 4]]}, {\"phase\": \"away\", \"registers\": {\"endpoint\": \"target\", \"home_open\": false, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": [1, 2, 3]}, \"frames\": [[\"BOUNDARY\", 4]]}], \"passed\": true}, {\"check\": \"empty input\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unknown event\", \"actual\": [{\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"expected\": [{\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":47.121,"exit_code":1,"observations":[{"actual":[{"frames":[["PROBE_TARGET",1]],"phase":"probing","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":true}}],"check":"home/move_offer","expected":[{"frames":[["PROBE_TARGET",1]],"phase":"probing","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":true}}],"passed":true},{"actual":[{"frames":[],"phase":"away","registers":{"boundary":null,"delivered":[],"endpoint":"target","home_open":false,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"probing/target_ready","expected":[{"frames":[],"phase":"draining","registers":{"boundary":4,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":false},{"actual":[{"frames":[],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"probing/target_rejected","expected":[{"frames":[],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[["BOUNDARY",4]],"phase":"switching","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"draining/home_flushed","expected":[{"frames":[["BOUNDARY",4]],"phase":"switching","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[],"phase":"away","registers":{"boundary":null,"delivered":[],"endpoint":"target","home_open":false,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"switching/boundary_ack","expected":[{"frames":[],"phase":"away","registers":{"boundary":null,"delivered":[],"endpoint":"target","home_open":false,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[],"phase":"switching","registers":{"boundary":null,"delivered":[1,2,3],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"switching/old_endpoint_data","expected":[{"frames":[],"phase":"switching","registers":{"boundary":null,"delivered":[1,2,3],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[["OLD_ENDPOINT",1]],"phase":"away","registers":{"boundary":null,"delivered":[],"endpoint":"target","home_open":false,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"away/old_endpoint_data","expected":[{"frames":[["OLD_ENDPOINT",1]],"phase":"away","registers":{"boundary":null,"delivered":[],"endpoint":"target","home_open":false,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[["UNAVAILABLE",1]],"phase":"suspended","registers":{"boundary":null,"delivered":[],"endpoint":"target","home_open":false,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"away/target_lost","expected":[{"frames":[["UNAVAILABLE",1]],"phase":"suspended","registers":{"boundary":null,"delivered":[],"endpoint":"target","home_open":false,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[["NO_MIGRATION",1]],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"home/unsolicited_boundary_ack","expected":[{"frames":[["NO_MIGRATION",1]],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[],"phase":"draining","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}}],"check":"draining/new_application_data","expected":[{"frames":[],"phase":"draining","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[["PROBE_TARGET",1]],"phase":"probing","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":true}},{"frames":[["PROBE_TARGET",1]],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}},{"frames":[["PROBE_TARGET",1],["PROBE_TARGET",1]],"phase":"probing","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":true}},{"frames":[["PROBE_TARGET",1],["PROBE_TARGET",1]],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"ordered trace 0","expected":[{"frames":[["PROBE_TARGET",1]],"phase":"probing","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":true}},{"frames":[["PROBE_TARGET",1]],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}},{"frames":[["PROBE_TARGET",1],["PROBE_TARGET",1]],"phase":"probing","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":true}},{"frames":[["PROBE_TARGET",1],["PROBE_TARGET",1]],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[],"phase":"draining","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}},{"frames":[["BOUNDARY",4]],"phase":"switching","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}},{"frames":[["BOUNDARY",4]],"phase":"switching","registers":{"boundary":null,"delivered":[1,2,3],"endpoint":"home","home_open":true,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}},{"frames":[["BOUNDARY",4]],"phase":"away","registers":{"boundary":null,"delivered":[1,2,3],"endpoint":"target","home_open":false,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}}],"check":"ordered trace 3","expected":[{"frames":[],"phase":"draining","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}},{"frames":[["BOUNDARY",4]],"phase":"switching","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}},{"frames":[["BOUNDARY",4]],"phase":"switching","registers":{"boundary":null,"delivered":[1,2,3],"endpoint":"home","home_open":true,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}},{"frames":[["BOUNDARY",4]],"phase":"away","registers":{"boundary":null,"delivered":[1,2,3],"endpoint":"target","home_open":false,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[],"check":"empty input","expected":[],"passed":true},{"actual":[{"frames":[["reject",[1,2,3]]],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"unknown event","expected":[{"frames":[["reject",[1,2,3]]],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"home/move_offer\", \"actual\": [{\"phase\": \"probing\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": true, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1]]}], \"expected\": [{\"phase\": \"probing\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": true, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1]]}], \"passed\": true}, {\"check\": \"probing/target_ready\", \"actual\": [{\"phase\": \"away\", \"registers\": {\"endpoint\": \"target\", \"home_open\": false, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": []}], \"expected\": [{\"phase\": \"draining\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": 4, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": []}], \"passed\": false}, {\"check\": \"probing/target_rejected\", \"actual\": [{\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": []}], \"expected\": [{\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": []}], \"passed\": true}, {\"check\": \"draining/home_flushed\", \"actual\": [{\"phase\": \"switching\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"BOUNDARY\", 4]]}], \"expected\": [{\"phase\": \"switching\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"BOUNDARY\", 4]]}], \"passed\": true}, {\"check\": \"switching/boundary_ack\", \"actual\": [{\"phase\": \"away\", \"registers\": {\"endpoint\": \"target\", \"home_open\": false, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": []}], \"expected\": [{\"phase\": \"away\", \"registers\": {\"endpoint\": \"target\", \"home_open\": false, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": []}], \"passed\": true}, {\"check\": \"switching/old_endpoint_data\", \"actual\": [{\"phase\": \"switching\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": [1, 2, 3]}, \"frames\": []}], \"expected\": [{\"phase\": \"switching\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": [1, 2, 3]}, \"frames\": []}], \"passed\": true}, {\"check\": \"away/old_endpoint_data\", \"actual\": [{\"phase\": \"away\", \"registers\": {\"endpoint\": \"target\", \"home_open\": false, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"OLD_ENDPOINT\", 1]]}], \"expected\": [{\"phase\": \"away\", \"registers\": {\"endpoint\": \"target\", \"home_open\": false, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"OLD_ENDPOINT\", 1]]}], \"passed\": true}, {\"check\": \"away/target_lost\", \"actual\": [{\"phase\": \"suspended\", \"registers\": {\"endpoint\": \"target\", \"home_open\": false, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"UNAVAILABLE\", 1]]}], \"expected\": [{\"phase\": \"suspended\", \"registers\": {\"endpoint\": \"target\", \"home_open\": false, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"UNAVAILABLE\", 1]]}], \"passed\": true}, {\"check\": \"home/unsolicited_boundary_ack\", \"actual\": [{\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"NO_MIGRATION\", 1]]}], \"expected\": [{\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"NO_MIGRATION\", 1]]}], \"passed\": true}, {\"check\": \"draining/new_application_data\", \"actual\": [{\"phase\": \"draining\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": []}, \"frames\": []}], \"expected\": [{\"phase\": \"draining\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": []}, \"frames\": []}], \"passed\": true}, {\"check\": \"ordered trace 0\", \"actual\": [{\"phase\": \"probing\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": true, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1]]}, {\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1]]}, {\"phase\": \"probing\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": true, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1], [\"PROBE_TARGET\", 1]]}, {\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1], [\"PROBE_TARGET\", 1]]}], \"expected\": [{\"phase\": \"probing\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": true, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1]]}, {\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1]]}, {\"phase\": \"probing\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": true, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1], [\"PROBE_TARGET\", 1]]}, {\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1], [\"PROBE_TARGET\", 1]]}], \"passed\": true}, {\"check\": \"ordered trace 3\", \"actual\": [{\"phase\": \"draining\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": []}, \"frames\": []}, {\"phase\": \"switching\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": []}, \"frames\": [[\"BOUNDARY\", 4]]}, {\"phase\": \"switching\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": [1, 2, 3]}, \"frames\": [[\"BOUNDARY\", 4]]}, {\"phase\": \"away\", \"registers\": {\"endpoint\": \"target\", \"home_open\": false, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": [1, 2, 3]}, \"frames\": [[\"BOUNDARY\", 4]]}], \"expected\": [{\"phase\": \"draining\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": []}, \"frames\": []}, {\"phase\": \"switching\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": []}, \"frames\": [[\"BOUNDARY\", 4]]}, {\"phase\": \"switching\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": [1, 2, 3]}, \"frames\": [[\"BOUNDARY\", 4]]}, {\"phase\": \"away\", \"registers\": {\"endpoint\": \"target\", \"home_open\": false, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": [1, 2, 3]}, \"frames\": [[\"BOUNDARY\", 4]]}], \"passed\": true}, {\"check\": \"empty input\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unknown event\", \"actual\": [{\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"expected\": [{\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":48.213,"exit_code":0,"observations":[{"actual":[{"frames":[["PROBE_TARGET",1]],"phase":"probing","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":true}}],"check":"home/move_offer","expected":[{"frames":[["PROBE_TARGET",1]],"phase":"probing","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":true}}],"passed":true},{"actual":[{"frames":[],"phase":"draining","registers":{"boundary":4,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"probing/target_ready","expected":[{"frames":[],"phase":"draining","registers":{"boundary":4,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"probing/target_rejected","expected":[{"frames":[],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[["BOUNDARY",4]],"phase":"switching","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"draining/home_flushed","expected":[{"frames":[["BOUNDARY",4]],"phase":"switching","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[],"phase":"away","registers":{"boundary":null,"delivered":[],"endpoint":"target","home_open":false,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"switching/boundary_ack","expected":[{"frames":[],"phase":"away","registers":{"boundary":null,"delivered":[],"endpoint":"target","home_open":false,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[],"phase":"switching","registers":{"boundary":null,"delivered":[1,2,3],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"switching/old_endpoint_data","expected":[{"frames":[],"phase":"switching","registers":{"boundary":null,"delivered":[1,2,3],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[["OLD_ENDPOINT",1]],"phase":"away","registers":{"boundary":null,"delivered":[],"endpoint":"target","home_open":false,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"away/old_endpoint_data","expected":[{"frames":[["OLD_ENDPOINT",1]],"phase":"away","registers":{"boundary":null,"delivered":[],"endpoint":"target","home_open":false,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[["UNAVAILABLE",1]],"phase":"suspended","registers":{"boundary":null,"delivered":[],"endpoint":"target","home_open":false,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"away/target_lost","expected":[{"frames":[["UNAVAILABLE",1]],"phase":"suspended","registers":{"boundary":null,"delivered":[],"endpoint":"target","home_open":false,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[["NO_MIGRATION",1]],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"home/unsolicited_boundary_ack","expected":[{"frames":[["NO_MIGRATION",1]],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[],"phase":"draining","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}}],"check":"draining/new_application_data","expected":[{"frames":[],"phase":"draining","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[["PROBE_TARGET",1]],"phase":"probing","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":true}},{"frames":[["PROBE_TARGET",1]],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}},{"frames":[["PROBE_TARGET",1],["PROBE_TARGET",1]],"phase":"probing","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":true}},{"frames":[["PROBE_TARGET",1],["PROBE_TARGET",1]],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"ordered trace 0","expected":[{"frames":[["PROBE_TARGET",1]],"phase":"probing","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":true}},{"frames":[["PROBE_TARGET",1]],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}},{"frames":[["PROBE_TARGET",1],["PROBE_TARGET",1]],"phase":"probing","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":true}},{"frames":[["PROBE_TARGET",1],["PROBE_TARGET",1]],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[{"frames":[],"phase":"draining","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}},{"frames":[["BOUNDARY",4]],"phase":"switching","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}},{"frames":[["BOUNDARY",4]],"phase":"switching","registers":{"boundary":null,"delivered":[1,2,3],"endpoint":"home","home_open":true,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}},{"frames":[["BOUNDARY",4]],"phase":"away","registers":{"boundary":null,"delivered":[1,2,3],"endpoint":"target","home_open":false,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}}],"check":"ordered trace 3","expected":[{"frames":[],"phase":"draining","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}},{"frames":[["BOUNDARY",4]],"phase":"switching","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}},{"frames":[["BOUNDARY",4]],"phase":"switching","registers":{"boundary":null,"delivered":[1,2,3],"endpoint":"home","home_open":true,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}},{"frames":[["BOUNDARY",4]],"phase":"away","registers":{"boundary":null,"delivered":[1,2,3],"endpoint":"target","home_open":false,"queue":[1,2,3,1,2,3],"sequence":4,"target_checked":false}}],"passed":true},{"actual":[],"check":"empty input","expected":[],"passed":true},{"actual":[{"frames":[["reject",[1,2,3]]],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"check":"unknown event","expected":[{"frames":[["reject",[1,2,3]]],"phase":"home","registers":{"boundary":null,"delivered":[],"endpoint":"home","home_open":true,"queue":[1,2,3],"sequence":4,"target_checked":false}}],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"home/move_offer\", \"actual\": [{\"phase\": \"probing\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": true, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1]]}], \"expected\": [{\"phase\": \"probing\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": true, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1]]}], \"passed\": true}, {\"check\": \"probing/target_ready\", \"actual\": [{\"phase\": \"draining\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": 4, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": []}], \"expected\": [{\"phase\": \"draining\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": 4, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": []}], \"passed\": true}, {\"check\": \"probing/target_rejected\", \"actual\": [{\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": []}], \"expected\": [{\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": []}], \"passed\": true}, {\"check\": \"draining/home_flushed\", \"actual\": [{\"phase\": \"switching\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"BOUNDARY\", 4]]}], \"expected\": [{\"phase\": \"switching\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"BOUNDARY\", 4]]}], \"passed\": true}, {\"check\": \"switching/boundary_ack\", \"actual\": [{\"phase\": \"away\", \"registers\": {\"endpoint\": \"target\", \"home_open\": false, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": []}], \"expected\": [{\"phase\": \"away\", \"registers\": {\"endpoint\": \"target\", \"home_open\": false, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": []}], \"passed\": true}, {\"check\": \"switching/old_endpoint_data\", \"actual\": [{\"phase\": \"switching\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": [1, 2, 3]}, \"frames\": []}], \"expected\": [{\"phase\": \"switching\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": [1, 2, 3]}, \"frames\": []}], \"passed\": true}, {\"check\": \"away/old_endpoint_data\", \"actual\": [{\"phase\": \"away\", \"registers\": {\"endpoint\": \"target\", \"home_open\": false, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"OLD_ENDPOINT\", 1]]}], \"expected\": [{\"phase\": \"away\", \"registers\": {\"endpoint\": \"target\", \"home_open\": false, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"OLD_ENDPOINT\", 1]]}], \"passed\": true}, {\"check\": \"away/target_lost\", \"actual\": [{\"phase\": \"suspended\", \"registers\": {\"endpoint\": \"target\", \"home_open\": false, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"UNAVAILABLE\", 1]]}], \"expected\": [{\"phase\": \"suspended\", \"registers\": {\"endpoint\": \"target\", \"home_open\": false, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"UNAVAILABLE\", 1]]}], \"passed\": true}, {\"check\": \"home/unsolicited_boundary_ack\", \"actual\": [{\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"NO_MIGRATION\", 1]]}], \"expected\": [{\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"NO_MIGRATION\", 1]]}], \"passed\": true}, {\"check\": \"draining/new_application_data\", \"actual\": [{\"phase\": \"draining\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": []}, \"frames\": []}], \"expected\": [{\"phase\": \"draining\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": []}, \"frames\": []}], \"passed\": true}, {\"check\": \"ordered trace 0\", \"actual\": [{\"phase\": \"probing\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": true, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1]]}, {\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1]]}, {\"phase\": \"probing\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": true, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1], [\"PROBE_TARGET\", 1]]}, {\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1], [\"PROBE_TARGET\", 1]]}], \"expected\": [{\"phase\": \"probing\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": true, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1]]}, {\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1]]}, {\"phase\": \"probing\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": true, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1], [\"PROBE_TARGET\", 1]]}, {\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"PROBE_TARGET\", 1], [\"PROBE_TARGET\", 1]]}], \"passed\": true}, {\"check\": \"ordered trace 3\", \"actual\": [{\"phase\": \"draining\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": []}, \"frames\": []}, {\"phase\": \"switching\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": []}, \"frames\": [[\"BOUNDARY\", 4]]}, {\"phase\": \"switching\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": [1, 2, 3]}, \"frames\": [[\"BOUNDARY\", 4]]}, {\"phase\": \"away\", \"registers\": {\"endpoint\": \"target\", \"home_open\": false, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": [1, 2, 3]}, \"frames\": [[\"BOUNDARY\", 4]]}], \"expected\": [{\"phase\": \"draining\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": []}, \"frames\": []}, {\"phase\": \"switching\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": []}, \"frames\": [[\"BOUNDARY\", 4]]}, {\"phase\": \"switching\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": [1, 2, 3]}, \"frames\": [[\"BOUNDARY\", 4]]}, {\"phase\": \"away\", \"registers\": {\"endpoint\": \"target\", \"home_open\": false, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3, 1, 2, 3], \"delivered\": [1, 2, 3]}, \"frames\": [[\"BOUNDARY\", 4]]}], \"passed\": true}, {\"check\": \"empty input\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unknown event\", \"actual\": [{\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"expected\": [{\"phase\": \"home\", \"registers\": {\"endpoint\": \"home\", \"home_open\": true, \"sequence\": 4, \"boundary\": null, \"target_checked\": false, \"queue\": [1, 2, 3], \"delivered\": []}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}