{"abstract":"While idle, event invitation produces connected/open_media instead of incoming/ring_local.","category":"Protocols","checks":14,"contract":"For the stipulated Intercom call-signaling 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-call_control","failed_approach":"The partial repair chooses incoming/notify_remote_ring, which still violates this phase-specific event contract.","family":"s3-protocols-call_control-idle-invitation","id":"FA-19111","implementations":{"attempt":{"sha256":"de006e1cf6f2e0036cf21ad8472a5ce38709336fabbd81984819c25b55094be2","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 = {'tx': phase in ('connected','held'), 'rx': phase in ('connected','held'), 'bell': phase=='incoming', 'muted': phase=='held', 'status': [], 'call': seed}\n    frames = []\n    observed = []\n    table = {('idle', 'dial'): ('outgoing', 'send_invitation'), ('outgoing', 'ringing'): ('alerting', 'notify_remote_ring'), ('alerting', 'answered'): ('connected', 'open_media'), ('outgoing', 'busy'): ('idle', 'report_busy'), ('idle', 'invitation'): ('incoming', 'notify_remote_ring'), ('incoming', 'accept'): ('connected', 'answer_open_media'), ('incoming', 'decline'): ('idle', 'send_decline_stop_ring'), ('connected', 'hold'): ('held', 'mute_send_hold'), ('held', 'resume'): ('connected', 'unmute_send_resume'), ('connected', 'hangup'): ('idle', 'close_media_send_bye')}\n    for event in events:\n        phase, action = table.get((phase, event), (phase, \"reject\"))\n        if action == 'send_invitation':\n            frames.append(['INVITE',seed])\n        elif action == 'notify_remote_ring':\n            r['status'].append('remote_ringing')\n        elif action == 'open_media':\n            r['tx']=True; r['rx']=True\n        elif action == 'report_busy':\n            r['status'].append('busy')\n        elif action == 'ring_local':\n            r['bell']=True\n        elif action == 'answer_open_media':\n            frames.append(['ANSWER',seed]); r['bell']=False; r['tx']=True; r['rx']=True\n        elif action == 'send_decline_stop_ring':\n            frames.append(['DECLINE',seed]); r['bell']=False\n        elif action == 'mute_send_hold':\n            r['muted']=True; frames.append(['HOLD',seed])\n        elif action == 'unmute_send_resume':\n            r['muted']=False; frames.append(['RESUME',seed])\n        elif action == 'close_media_send_bye':\n            r['tx']=False; r['rx']=False; frames.append(['BYE',seed])\n        elif action == 'open_receive_only':\n            r['rx']=True\n        elif action == 'report_no_answer':\n            r['status'].append('no_answer')\n        elif action == 'send_answer_only':\n            frames.append(['ANSWER',seed])\n        elif action == 'stop_ring_only':\n            r['bell']=False\n        elif action == 'mute_only':\n            r['muted']=True\n        elif action == 'send_hold_only':\n            frames.append(['HOLD',seed])\n        elif action == 'unmute_only':\n            r['muted']=False\n        elif action == 'send_resume_only':\n            frames.append(['RESUME',seed])\n        elif action == 'close_media_only':\n            r['tx']=False; r['rx']=False\n        elif action == 'send_bye_only':\n            frames.append(['BYE',seed])\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: [('idle/dial', 'idle', ['dial'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 1}, 'frames': [['INVITE', 1]]}]), ('outgoing/ringing', 'outgoing', ['ringing'], [{'phase': 'alerting', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['remote_ringing'], 'call': 1}, 'frames': []}]), ('alerting/answered', 'alerting', ['answered'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 1}, 'frames': []}]), ('outgoing/busy', 'outgoing', ['busy'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 1}, 'frames': []}]), ('idle/invitation', 'idle', ['invitation'], [{'phase': 'incoming', 'registers': {'tx': False, 'rx': False, 'bell': True, 'muted': False, 'status': [], 'call': 1}, 'frames': []}]), ('incoming/accept', 'incoming', ['accept'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 1}, 'frames': [['ANSWER', 1]]}]), ('incoming/decline', 'incoming', ['decline'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 1}, 'frames': [['DECLINE', 1]]}]), ('connected/hold', 'connected', ['hold'], [{'phase': 'held', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': True, 'status': [], 'call': 1}, 'frames': [['HOLD', 1]]}]), ('held/resume', 'held', ['resume'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 1}, 'frames': [['RESUME', 1]]}]), ('connected/hangup', 'connected', ['hangup'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 1}, 'frames': [['BYE', 1]]}]), ('ordered trace 0', 'idle', ['dial', 'busy', 'dial', 'busy'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 1}, 'frames': [['INVITE', 1]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 1}, 'frames': [['INVITE', 1]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 1}, 'frames': [['INVITE', 1], ['INVITE', 1]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 1}, 'frames': [['INVITE', 1], ['INVITE', 1]]}]), ('ordered trace 3', 'outgoing', ['busy', 'dial', 'busy', 'dial'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 1}, 'frames': []}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 1}, 'frames': [['INVITE', 1]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 1}, 'frames': [['INVITE', 1]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 1}, 'frames': [['INVITE', 1], ['INVITE', 1]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 1}, 'frames': [['reject', [1, 2, 3]]]}])], 2: [('idle/dial', 'idle', ['dial'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 2}, 'frames': [['INVITE', 2]]}]), ('outgoing/ringing', 'outgoing', ['ringing'], [{'phase': 'alerting', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['remote_ringing'], 'call': 2}, 'frames': []}]), ('alerting/answered', 'alerting', ['answered'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 2}, 'frames': []}]), ('outgoing/busy', 'outgoing', ['busy'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 2}, 'frames': []}]), ('idle/invitation', 'idle', ['invitation'], [{'phase': 'incoming', 'registers': {'tx': False, 'rx': False, 'bell': True, 'muted': False, 'status': [], 'call': 2}, 'frames': []}]), ('incoming/accept', 'incoming', ['accept'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 2}, 'frames': [['ANSWER', 2]]}]), ('incoming/decline', 'incoming', ['decline'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 2}, 'frames': [['DECLINE', 2]]}]), ('connected/hold', 'connected', ['hold'], [{'phase': 'held', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': True, 'status': [], 'call': 2}, 'frames': [['HOLD', 2]]}]), ('held/resume', 'held', ['resume'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 2}, 'frames': [['RESUME', 2]]}]), ('connected/hangup', 'connected', ['hangup'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 2}, 'frames': [['BYE', 2]]}]), ('ordered trace 0', 'idle', ['dial', 'busy', 'dial', 'busy', 'dial'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 2}, 'frames': [['INVITE', 2]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 2}, 'frames': [['INVITE', 2]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 2}, 'frames': [['INVITE', 2], ['INVITE', 2]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 2}, 'frames': [['INVITE', 2], ['INVITE', 2]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 2}, 'frames': [['INVITE', 2], ['INVITE', 2], ['INVITE', 2]]}]), ('ordered trace 3', 'outgoing', ['busy', 'dial', 'busy', 'dial', 'busy'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 2}, 'frames': []}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 2}, 'frames': [['INVITE', 2]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 2}, 'frames': [['INVITE', 2]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 2}, 'frames': [['INVITE', 2], ['INVITE', 2]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 2}, 'frames': [['INVITE', 2], ['INVITE', 2]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 2}, 'frames': [['reject', [2, 3, 4, 5]]]}])], 3: [('idle/dial', 'idle', ['dial'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 3}, 'frames': [['INVITE', 3]]}]), ('outgoing/ringing', 'outgoing', ['ringing'], [{'phase': 'alerting', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['remote_ringing'], 'call': 3}, 'frames': []}]), ('alerting/answered', 'alerting', ['answered'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 3}, 'frames': []}]), ('outgoing/busy', 'outgoing', ['busy'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 3}, 'frames': []}]), ('idle/invitation', 'idle', ['invitation'], [{'phase': 'incoming', 'registers': {'tx': False, 'rx': False, 'bell': True, 'muted': False, 'status': [], 'call': 3}, 'frames': []}]), ('incoming/accept', 'incoming', ['accept'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 3}, 'frames': [['ANSWER', 3]]}]), ('incoming/decline', 'incoming', ['decline'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 3}, 'frames': [['DECLINE', 3]]}]), ('connected/hold', 'connected', ['hold'], [{'phase': 'held', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': True, 'status': [], 'call': 3}, 'frames': [['HOLD', 3]]}]), ('held/resume', 'held', ['resume'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 3}, 'frames': [['RESUME', 3]]}]), ('connected/hangup', 'connected', ['hangup'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 3}, 'frames': [['BYE', 3]]}]), ('ordered trace 0', 'idle', ['dial', 'busy', 'dial', 'busy', 'dial', 'busy'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 3}, 'frames': [['INVITE', 3]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 3}, 'frames': [['INVITE', 3]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 3}, 'frames': [['INVITE', 3], ['INVITE', 3]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 3}, 'frames': [['INVITE', 3], ['INVITE', 3]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 3}, 'frames': [['INVITE', 3], ['INVITE', 3], ['INVITE', 3]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 3}, 'frames': [['INVITE', 3], ['INVITE', 3], ['INVITE', 3]]}]), ('ordered trace 3', 'outgoing', ['busy', 'dial', 'busy', 'dial', 'busy', 'dial'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 3}, 'frames': []}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 3}, 'frames': [['INVITE', 3]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 3}, 'frames': [['INVITE', 3]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 3}, 'frames': [['INVITE', 3], ['INVITE', 3]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 3}, 'frames': [['INVITE', 3], ['INVITE', 3]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 3}, 'frames': [['INVITE', 3], ['INVITE', 3], ['INVITE', 3]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 3}, 'frames': [['reject', [3, 4, 5, 6, 7]]]}])], 4: [('idle/dial', 'idle', ['dial'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 4}, 'frames': [['INVITE', 4]]}]), ('outgoing/ringing', 'outgoing', ['ringing'], [{'phase': 'alerting', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['remote_ringing'], 'call': 4}, 'frames': []}]), ('alerting/answered', 'alerting', ['answered'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 4}, 'frames': []}]), ('outgoing/busy', 'outgoing', ['busy'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 4}, 'frames': []}]), ('idle/invitation', 'idle', ['invitation'], [{'phase': 'incoming', 'registers': {'tx': False, 'rx': False, 'bell': True, 'muted': False, 'status': [], 'call': 4}, 'frames': []}]), ('incoming/accept', 'incoming', ['accept'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 4}, 'frames': [['ANSWER', 4]]}]), ('incoming/decline', 'incoming', ['decline'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 4}, 'frames': [['DECLINE', 4]]}]), ('connected/hold', 'connected', ['hold'], [{'phase': 'held', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': True, 'status': [], 'call': 4}, 'frames': [['HOLD', 4]]}]), ('held/resume', 'held', ['resume'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 4}, 'frames': [['RESUME', 4]]}]), ('connected/hangup', 'connected', ['hangup'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 4}, 'frames': [['BYE', 4]]}]), ('ordered trace 0', 'idle', ['dial', 'busy', 'dial', 'busy', 'dial', 'busy', 'dial'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 4}, 'frames': [['INVITE', 4]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 4}, 'frames': [['INVITE', 4]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4], ['INVITE', 4]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4], ['INVITE', 4]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4], ['INVITE', 4], ['INVITE', 4]]}]), ('ordered trace 3', 'outgoing', ['busy', 'dial', 'busy', 'dial', 'busy', 'dial', 'busy'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 4}, 'frames': []}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 4}, 'frames': [['INVITE', 4]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4], ['INVITE', 4]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4], ['INVITE', 4]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 4}, 'frames': [['reject', [4, 5, 6, 7, 8, 9]]]}])], 5: [('idle/dial', 'idle', ['dial'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 5}, 'frames': [['INVITE', 5]]}]), ('outgoing/ringing', 'outgoing', ['ringing'], [{'phase': 'alerting', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['remote_ringing'], 'call': 5}, 'frames': []}]), ('alerting/answered', 'alerting', ['answered'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 5}, 'frames': []}]), ('outgoing/busy', 'outgoing', ['busy'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 5}, 'frames': []}]), ('idle/invitation', 'idle', ['invitation'], [{'phase': 'incoming', 'registers': {'tx': False, 'rx': False, 'bell': True, 'muted': False, 'status': [], 'call': 5}, 'frames': []}]), ('incoming/accept', 'incoming', ['accept'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 5}, 'frames': [['ANSWER', 5]]}]), ('incoming/decline', 'incoming', ['decline'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 5}, 'frames': [['DECLINE', 5]]}]), ('connected/hold', 'connected', ['hold'], [{'phase': 'held', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': True, 'status': [], 'call': 5}, 'frames': [['HOLD', 5]]}]), ('held/resume', 'held', ['resume'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 5}, 'frames': [['RESUME', 5]]}]), ('connected/hangup', 'connected', ['hangup'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 5}, 'frames': [['BYE', 5]]}]), ('ordered trace 0', 'idle', ['dial', 'busy', 'dial', 'busy', 'dial', 'busy', 'dial', 'busy'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 5}, 'frames': [['INVITE', 5]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 5}, 'frames': [['INVITE', 5]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5], ['INVITE', 5]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5], ['INVITE', 5]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5], ['INVITE', 5], ['INVITE', 5]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5], ['INVITE', 5], ['INVITE', 5]]}]), ('ordered trace 3', 'outgoing', ['busy', 'dial', 'busy', 'dial', 'busy', 'dial', 'busy', 'dial'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 5}, 'frames': []}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 5}, 'frames': [['INVITE', 5]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5], ['INVITE', 5]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5], ['INVITE', 5]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5], ['INVITE', 5], ['INVITE', 5]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 5}, '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":"91c65a7473876ae68c900ea04e3ff2307bbd278ee7808e6fe32ac71c3a27dac8","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 = {'tx': phase in ('connected','held'), 'rx': phase in ('connected','held'), 'bell': phase=='incoming', 'muted': phase=='held', 'status': [], 'call': seed}\n    frames = []\n    observed = []\n    table = {('idle', 'dial'): ('outgoing', 'send_invitation'), ('outgoing', 'ringing'): ('alerting', 'notify_remote_ring'), ('alerting', 'answered'): ('connected', 'open_media'), ('outgoing', 'busy'): ('idle', 'report_busy'), ('idle', 'invitation'): ('connected', 'open_media'), ('incoming', 'accept'): ('connected', 'answer_open_media'), ('incoming', 'decline'): ('idle', 'send_decline_stop_ring'), ('connected', 'hold'): ('held', 'mute_send_hold'), ('held', 'resume'): ('connected', 'unmute_send_resume'), ('connected', 'hangup'): ('idle', 'close_media_send_bye')}\n    for event in events:\n        phase, action = table.get((phase, event), (phase, \"reject\"))\n        if action == 'send_invitation':\n            frames.append(['INVITE',seed])\n        elif action == 'notify_remote_ring':\n            r['status'].append('remote_ringing')\n        elif action == 'open_media':\n            r['tx']=True; r['rx']=True\n        elif action == 'report_busy':\n            r['status'].append('busy')\n        elif action == 'ring_local':\n            r['bell']=True\n        elif action == 'answer_open_media':\n            frames.append(['ANSWER',seed]); r['bell']=False; r['tx']=True; r['rx']=True\n        elif action == 'send_decline_stop_ring':\n            frames.append(['DECLINE',seed]); r['bell']=False\n        elif action == 'mute_send_hold':\n            r['muted']=True; frames.append(['HOLD',seed])\n        elif action == 'unmute_send_resume':\n            r['muted']=False; frames.append(['RESUME',seed])\n        elif action == 'close_media_send_bye':\n            r['tx']=False; r['rx']=False; frames.append(['BYE',seed])\n        elif action == 'open_receive_only':\n            r['rx']=True\n        elif action == 'report_no_answer':\n            r['status'].append('no_answer')\n        elif action == 'send_answer_only':\n            frames.append(['ANSWER',seed])\n        elif action == 'stop_ring_only':\n            r['bell']=False\n        elif action == 'mute_only':\n            r['muted']=True\n        elif action == 'send_hold_only':\n            frames.append(['HOLD',seed])\n        elif action == 'unmute_only':\n            r['muted']=False\n        elif action == 'send_resume_only':\n            frames.append(['RESUME',seed])\n        elif action == 'close_media_only':\n            r['tx']=False; r['rx']=False\n        elif action == 'send_bye_only':\n            frames.append(['BYE',seed])\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: [('idle/dial', 'idle', ['dial'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 1}, 'frames': [['INVITE', 1]]}]), ('outgoing/ringing', 'outgoing', ['ringing'], [{'phase': 'alerting', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['remote_ringing'], 'call': 1}, 'frames': []}]), ('alerting/answered', 'alerting', ['answered'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 1}, 'frames': []}]), ('outgoing/busy', 'outgoing', ['busy'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 1}, 'frames': []}]), ('idle/invitation', 'idle', ['invitation'], [{'phase': 'incoming', 'registers': {'tx': False, 'rx': False, 'bell': True, 'muted': False, 'status': [], 'call': 1}, 'frames': []}]), ('incoming/accept', 'incoming', ['accept'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 1}, 'frames': [['ANSWER', 1]]}]), ('incoming/decline', 'incoming', ['decline'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 1}, 'frames': [['DECLINE', 1]]}]), ('connected/hold', 'connected', ['hold'], [{'phase': 'held', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': True, 'status': [], 'call': 1}, 'frames': [['HOLD', 1]]}]), ('held/resume', 'held', ['resume'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 1}, 'frames': [['RESUME', 1]]}]), ('connected/hangup', 'connected', ['hangup'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 1}, 'frames': [['BYE', 1]]}]), ('ordered trace 0', 'idle', ['dial', 'busy', 'dial', 'busy'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 1}, 'frames': [['INVITE', 1]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 1}, 'frames': [['INVITE', 1]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 1}, 'frames': [['INVITE', 1], ['INVITE', 1]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 1}, 'frames': [['INVITE', 1], ['INVITE', 1]]}]), ('ordered trace 3', 'outgoing', ['busy', 'dial', 'busy', 'dial'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 1}, 'frames': []}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 1}, 'frames': [['INVITE', 1]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 1}, 'frames': [['INVITE', 1]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 1}, 'frames': [['INVITE', 1], ['INVITE', 1]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 1}, 'frames': [['reject', [1, 2, 3]]]}])], 2: [('idle/dial', 'idle', ['dial'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 2}, 'frames': [['INVITE', 2]]}]), ('outgoing/ringing', 'outgoing', ['ringing'], [{'phase': 'alerting', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['remote_ringing'], 'call': 2}, 'frames': []}]), ('alerting/answered', 'alerting', ['answered'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 2}, 'frames': []}]), ('outgoing/busy', 'outgoing', ['busy'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 2}, 'frames': []}]), ('idle/invitation', 'idle', ['invitation'], [{'phase': 'incoming', 'registers': {'tx': False, 'rx': False, 'bell': True, 'muted': False, 'status': [], 'call': 2}, 'frames': []}]), ('incoming/accept', 'incoming', ['accept'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 2}, 'frames': [['ANSWER', 2]]}]), ('incoming/decline', 'incoming', ['decline'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 2}, 'frames': [['DECLINE', 2]]}]), ('connected/hold', 'connected', ['hold'], [{'phase': 'held', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': True, 'status': [], 'call': 2}, 'frames': [['HOLD', 2]]}]), ('held/resume', 'held', ['resume'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 2}, 'frames': [['RESUME', 2]]}]), ('connected/hangup', 'connected', ['hangup'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 2}, 'frames': [['BYE', 2]]}]), ('ordered trace 0', 'idle', ['dial', 'busy', 'dial', 'busy', 'dial'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 2}, 'frames': [['INVITE', 2]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 2}, 'frames': [['INVITE', 2]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 2}, 'frames': [['INVITE', 2], ['INVITE', 2]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 2}, 'frames': [['INVITE', 2], ['INVITE', 2]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 2}, 'frames': [['INVITE', 2], ['INVITE', 2], ['INVITE', 2]]}]), ('ordered trace 3', 'outgoing', ['busy', 'dial', 'busy', 'dial', 'busy'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 2}, 'frames': []}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 2}, 'frames': [['INVITE', 2]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 2}, 'frames': [['INVITE', 2]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 2}, 'frames': [['INVITE', 2], ['INVITE', 2]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 2}, 'frames': [['INVITE', 2], ['INVITE', 2]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 2}, 'frames': [['reject', [2, 3, 4, 5]]]}])], 3: [('idle/dial', 'idle', ['dial'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 3}, 'frames': [['INVITE', 3]]}]), ('outgoing/ringing', 'outgoing', ['ringing'], [{'phase': 'alerting', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['remote_ringing'], 'call': 3}, 'frames': []}]), ('alerting/answered', 'alerting', ['answered'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 3}, 'frames': []}]), ('outgoing/busy', 'outgoing', ['busy'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 3}, 'frames': []}]), ('idle/invitation', 'idle', ['invitation'], [{'phase': 'incoming', 'registers': {'tx': False, 'rx': False, 'bell': True, 'muted': False, 'status': [], 'call': 3}, 'frames': []}]), ('incoming/accept', 'incoming', ['accept'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 3}, 'frames': [['ANSWER', 3]]}]), ('incoming/decline', 'incoming', ['decline'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 3}, 'frames': [['DECLINE', 3]]}]), ('connected/hold', 'connected', ['hold'], [{'phase': 'held', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': True, 'status': [], 'call': 3}, 'frames': [['HOLD', 3]]}]), ('held/resume', 'held', ['resume'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 3}, 'frames': [['RESUME', 3]]}]), ('connected/hangup', 'connected', ['hangup'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 3}, 'frames': [['BYE', 3]]}]), ('ordered trace 0', 'idle', ['dial', 'busy', 'dial', 'busy', 'dial', 'busy'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 3}, 'frames': [['INVITE', 3]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 3}, 'frames': [['INVITE', 3]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 3}, 'frames': [['INVITE', 3], ['INVITE', 3]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 3}, 'frames': [['INVITE', 3], ['INVITE', 3]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 3}, 'frames': [['INVITE', 3], ['INVITE', 3], ['INVITE', 3]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 3}, 'frames': [['INVITE', 3], ['INVITE', 3], ['INVITE', 3]]}]), ('ordered trace 3', 'outgoing', ['busy', 'dial', 'busy', 'dial', 'busy', 'dial'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 3}, 'frames': []}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 3}, 'frames': [['INVITE', 3]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 3}, 'frames': [['INVITE', 3]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 3}, 'frames': [['INVITE', 3], ['INVITE', 3]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 3}, 'frames': [['INVITE', 3], ['INVITE', 3]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 3}, 'frames': [['INVITE', 3], ['INVITE', 3], ['INVITE', 3]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 3}, 'frames': [['reject', [3, 4, 5, 6, 7]]]}])], 4: [('idle/dial', 'idle', ['dial'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 4}, 'frames': [['INVITE', 4]]}]), ('outgoing/ringing', 'outgoing', ['ringing'], [{'phase': 'alerting', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['remote_ringing'], 'call': 4}, 'frames': []}]), ('alerting/answered', 'alerting', ['answered'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 4}, 'frames': []}]), ('outgoing/busy', 'outgoing', ['busy'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 4}, 'frames': []}]), ('idle/invitation', 'idle', ['invitation'], [{'phase': 'incoming', 'registers': {'tx': False, 'rx': False, 'bell': True, 'muted': False, 'status': [], 'call': 4}, 'frames': []}]), ('incoming/accept', 'incoming', ['accept'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 4}, 'frames': [['ANSWER', 4]]}]), ('incoming/decline', 'incoming', ['decline'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 4}, 'frames': [['DECLINE', 4]]}]), ('connected/hold', 'connected', ['hold'], [{'phase': 'held', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': True, 'status': [], 'call': 4}, 'frames': [['HOLD', 4]]}]), ('held/resume', 'held', ['resume'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 4}, 'frames': [['RESUME', 4]]}]), ('connected/hangup', 'connected', ['hangup'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 4}, 'frames': [['BYE', 4]]}]), ('ordered trace 0', 'idle', ['dial', 'busy', 'dial', 'busy', 'dial', 'busy', 'dial'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 4}, 'frames': [['INVITE', 4]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 4}, 'frames': [['INVITE', 4]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4], ['INVITE', 4]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4], ['INVITE', 4]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4], ['INVITE', 4], ['INVITE', 4]]}]), ('ordered trace 3', 'outgoing', ['busy', 'dial', 'busy', 'dial', 'busy', 'dial', 'busy'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 4}, 'frames': []}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 4}, 'frames': [['INVITE', 4]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4], ['INVITE', 4]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4], ['INVITE', 4]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 4}, 'frames': [['reject', [4, 5, 6, 7, 8, 9]]]}])], 5: [('idle/dial', 'idle', ['dial'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 5}, 'frames': [['INVITE', 5]]}]), ('outgoing/ringing', 'outgoing', ['ringing'], [{'phase': 'alerting', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['remote_ringing'], 'call': 5}, 'frames': []}]), ('alerting/answered', 'alerting', ['answered'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 5}, 'frames': []}]), ('outgoing/busy', 'outgoing', ['busy'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 5}, 'frames': []}]), ('idle/invitation', 'idle', ['invitation'], [{'phase': 'incoming', 'registers': {'tx': False, 'rx': False, 'bell': True, 'muted': False, 'status': [], 'call': 5}, 'frames': []}]), ('incoming/accept', 'incoming', ['accept'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 5}, 'frames': [['ANSWER', 5]]}]), ('incoming/decline', 'incoming', ['decline'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 5}, 'frames': [['DECLINE', 5]]}]), ('connected/hold', 'connected', ['hold'], [{'phase': 'held', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': True, 'status': [], 'call': 5}, 'frames': [['HOLD', 5]]}]), ('held/resume', 'held', ['resume'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 5}, 'frames': [['RESUME', 5]]}]), ('connected/hangup', 'connected', ['hangup'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 5}, 'frames': [['BYE', 5]]}]), ('ordered trace 0', 'idle', ['dial', 'busy', 'dial', 'busy', 'dial', 'busy', 'dial', 'busy'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 5}, 'frames': [['INVITE', 5]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 5}, 'frames': [['INVITE', 5]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5], ['INVITE', 5]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5], ['INVITE', 5]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5], ['INVITE', 5], ['INVITE', 5]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5], ['INVITE', 5], ['INVITE', 5]]}]), ('ordered trace 3', 'outgoing', ['busy', 'dial', 'busy', 'dial', 'busy', 'dial', 'busy', 'dial'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 5}, 'frames': []}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 5}, 'frames': [['INVITE', 5]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5], ['INVITE', 5]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5], ['INVITE', 5]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5], ['INVITE', 5], ['INVITE', 5]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 5}, '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":"dd12687105779c5489b24a58aefe8f933a8fad4682acee15a7fd29ad5e93bb4e","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 = {'tx': phase in ('connected','held'), 'rx': phase in ('connected','held'), 'bell': phase=='incoming', 'muted': phase=='held', 'status': [], 'call': seed}\n    frames = []\n    observed = []\n    table = {('idle', 'dial'): ('outgoing', 'send_invitation'), ('outgoing', 'ringing'): ('alerting', 'notify_remote_ring'), ('alerting', 'answered'): ('connected', 'open_media'), ('outgoing', 'busy'): ('idle', 'report_busy'), ('idle', 'invitation'): ('incoming', 'ring_local'), ('incoming', 'accept'): ('connected', 'answer_open_media'), ('incoming', 'decline'): ('idle', 'send_decline_stop_ring'), ('connected', 'hold'): ('held', 'mute_send_hold'), ('held', 'resume'): ('connected', 'unmute_send_resume'), ('connected', 'hangup'): ('idle', 'close_media_send_bye')}\n    for event in events:\n        phase, action = table.get((phase, event), (phase, \"reject\"))\n        if action == 'send_invitation':\n            frames.append(['INVITE',seed])\n        elif action == 'notify_remote_ring':\n            r['status'].append('remote_ringing')\n        elif action == 'open_media':\n            r['tx']=True; r['rx']=True\n        elif action == 'report_busy':\n            r['status'].append('busy')\n        elif action == 'ring_local':\n            r['bell']=True\n        elif action == 'answer_open_media':\n            frames.append(['ANSWER',seed]); r['bell']=False; r['tx']=True; r['rx']=True\n        elif action == 'send_decline_stop_ring':\n            frames.append(['DECLINE',seed]); r['bell']=False\n        elif action == 'mute_send_hold':\n            r['muted']=True; frames.append(['HOLD',seed])\n        elif action == 'unmute_send_resume':\n            r['muted']=False; frames.append(['RESUME',seed])\n        elif action == 'close_media_send_bye':\n            r['tx']=False; r['rx']=False; frames.append(['BYE',seed])\n        elif action == 'open_receive_only':\n            r['rx']=True\n        elif action == 'report_no_answer':\n            r['status'].append('no_answer')\n        elif action == 'send_answer_only':\n            frames.append(['ANSWER',seed])\n        elif action == 'stop_ring_only':\n            r['bell']=False\n        elif action == 'mute_only':\n            r['muted']=True\n        elif action == 'send_hold_only':\n            frames.append(['HOLD',seed])\n        elif action == 'unmute_only':\n            r['muted']=False\n        elif action == 'send_resume_only':\n            frames.append(['RESUME',seed])\n        elif action == 'close_media_only':\n            r['tx']=False; r['rx']=False\n        elif action == 'send_bye_only':\n            frames.append(['BYE',seed])\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: [('idle/dial', 'idle', ['dial'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 1}, 'frames': [['INVITE', 1]]}]), ('outgoing/ringing', 'outgoing', ['ringing'], [{'phase': 'alerting', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['remote_ringing'], 'call': 1}, 'frames': []}]), ('alerting/answered', 'alerting', ['answered'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 1}, 'frames': []}]), ('outgoing/busy', 'outgoing', ['busy'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 1}, 'frames': []}]), ('idle/invitation', 'idle', ['invitation'], [{'phase': 'incoming', 'registers': {'tx': False, 'rx': False, 'bell': True, 'muted': False, 'status': [], 'call': 1}, 'frames': []}]), ('incoming/accept', 'incoming', ['accept'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 1}, 'frames': [['ANSWER', 1]]}]), ('incoming/decline', 'incoming', ['decline'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 1}, 'frames': [['DECLINE', 1]]}]), ('connected/hold', 'connected', ['hold'], [{'phase': 'held', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': True, 'status': [], 'call': 1}, 'frames': [['HOLD', 1]]}]), ('held/resume', 'held', ['resume'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 1}, 'frames': [['RESUME', 1]]}]), ('connected/hangup', 'connected', ['hangup'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 1}, 'frames': [['BYE', 1]]}]), ('ordered trace 0', 'idle', ['dial', 'busy', 'dial', 'busy'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 1}, 'frames': [['INVITE', 1]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 1}, 'frames': [['INVITE', 1]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 1}, 'frames': [['INVITE', 1], ['INVITE', 1]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 1}, 'frames': [['INVITE', 1], ['INVITE', 1]]}]), ('ordered trace 3', 'outgoing', ['busy', 'dial', 'busy', 'dial'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 1}, 'frames': []}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 1}, 'frames': [['INVITE', 1]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 1}, 'frames': [['INVITE', 1]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 1}, 'frames': [['INVITE', 1], ['INVITE', 1]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 1}, 'frames': [['reject', [1, 2, 3]]]}])], 2: [('idle/dial', 'idle', ['dial'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 2}, 'frames': [['INVITE', 2]]}]), ('outgoing/ringing', 'outgoing', ['ringing'], [{'phase': 'alerting', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['remote_ringing'], 'call': 2}, 'frames': []}]), ('alerting/answered', 'alerting', ['answered'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 2}, 'frames': []}]), ('outgoing/busy', 'outgoing', ['busy'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 2}, 'frames': []}]), ('idle/invitation', 'idle', ['invitation'], [{'phase': 'incoming', 'registers': {'tx': False, 'rx': False, 'bell': True, 'muted': False, 'status': [], 'call': 2}, 'frames': []}]), ('incoming/accept', 'incoming', ['accept'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 2}, 'frames': [['ANSWER', 2]]}]), ('incoming/decline', 'incoming', ['decline'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 2}, 'frames': [['DECLINE', 2]]}]), ('connected/hold', 'connected', ['hold'], [{'phase': 'held', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': True, 'status': [], 'call': 2}, 'frames': [['HOLD', 2]]}]), ('held/resume', 'held', ['resume'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 2}, 'frames': [['RESUME', 2]]}]), ('connected/hangup', 'connected', ['hangup'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 2}, 'frames': [['BYE', 2]]}]), ('ordered trace 0', 'idle', ['dial', 'busy', 'dial', 'busy', 'dial'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 2}, 'frames': [['INVITE', 2]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 2}, 'frames': [['INVITE', 2]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 2}, 'frames': [['INVITE', 2], ['INVITE', 2]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 2}, 'frames': [['INVITE', 2], ['INVITE', 2]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 2}, 'frames': [['INVITE', 2], ['INVITE', 2], ['INVITE', 2]]}]), ('ordered trace 3', 'outgoing', ['busy', 'dial', 'busy', 'dial', 'busy'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 2}, 'frames': []}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 2}, 'frames': [['INVITE', 2]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 2}, 'frames': [['INVITE', 2]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 2}, 'frames': [['INVITE', 2], ['INVITE', 2]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 2}, 'frames': [['INVITE', 2], ['INVITE', 2]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 2}, 'frames': [['reject', [2, 3, 4, 5]]]}])], 3: [('idle/dial', 'idle', ['dial'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 3}, 'frames': [['INVITE', 3]]}]), ('outgoing/ringing', 'outgoing', ['ringing'], [{'phase': 'alerting', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['remote_ringing'], 'call': 3}, 'frames': []}]), ('alerting/answered', 'alerting', ['answered'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 3}, 'frames': []}]), ('outgoing/busy', 'outgoing', ['busy'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 3}, 'frames': []}]), ('idle/invitation', 'idle', ['invitation'], [{'phase': 'incoming', 'registers': {'tx': False, 'rx': False, 'bell': True, 'muted': False, 'status': [], 'call': 3}, 'frames': []}]), ('incoming/accept', 'incoming', ['accept'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 3}, 'frames': [['ANSWER', 3]]}]), ('incoming/decline', 'incoming', ['decline'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 3}, 'frames': [['DECLINE', 3]]}]), ('connected/hold', 'connected', ['hold'], [{'phase': 'held', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': True, 'status': [], 'call': 3}, 'frames': [['HOLD', 3]]}]), ('held/resume', 'held', ['resume'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 3}, 'frames': [['RESUME', 3]]}]), ('connected/hangup', 'connected', ['hangup'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 3}, 'frames': [['BYE', 3]]}]), ('ordered trace 0', 'idle', ['dial', 'busy', 'dial', 'busy', 'dial', 'busy'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 3}, 'frames': [['INVITE', 3]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 3}, 'frames': [['INVITE', 3]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 3}, 'frames': [['INVITE', 3], ['INVITE', 3]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 3}, 'frames': [['INVITE', 3], ['INVITE', 3]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 3}, 'frames': [['INVITE', 3], ['INVITE', 3], ['INVITE', 3]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 3}, 'frames': [['INVITE', 3], ['INVITE', 3], ['INVITE', 3]]}]), ('ordered trace 3', 'outgoing', ['busy', 'dial', 'busy', 'dial', 'busy', 'dial'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 3}, 'frames': []}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 3}, 'frames': [['INVITE', 3]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 3}, 'frames': [['INVITE', 3]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 3}, 'frames': [['INVITE', 3], ['INVITE', 3]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 3}, 'frames': [['INVITE', 3], ['INVITE', 3]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 3}, 'frames': [['INVITE', 3], ['INVITE', 3], ['INVITE', 3]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 3}, 'frames': [['reject', [3, 4, 5, 6, 7]]]}])], 4: [('idle/dial', 'idle', ['dial'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 4}, 'frames': [['INVITE', 4]]}]), ('outgoing/ringing', 'outgoing', ['ringing'], [{'phase': 'alerting', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['remote_ringing'], 'call': 4}, 'frames': []}]), ('alerting/answered', 'alerting', ['answered'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 4}, 'frames': []}]), ('outgoing/busy', 'outgoing', ['busy'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 4}, 'frames': []}]), ('idle/invitation', 'idle', ['invitation'], [{'phase': 'incoming', 'registers': {'tx': False, 'rx': False, 'bell': True, 'muted': False, 'status': [], 'call': 4}, 'frames': []}]), ('incoming/accept', 'incoming', ['accept'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 4}, 'frames': [['ANSWER', 4]]}]), ('incoming/decline', 'incoming', ['decline'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 4}, 'frames': [['DECLINE', 4]]}]), ('connected/hold', 'connected', ['hold'], [{'phase': 'held', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': True, 'status': [], 'call': 4}, 'frames': [['HOLD', 4]]}]), ('held/resume', 'held', ['resume'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 4}, 'frames': [['RESUME', 4]]}]), ('connected/hangup', 'connected', ['hangup'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 4}, 'frames': [['BYE', 4]]}]), ('ordered trace 0', 'idle', ['dial', 'busy', 'dial', 'busy', 'dial', 'busy', 'dial'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 4}, 'frames': [['INVITE', 4]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 4}, 'frames': [['INVITE', 4]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4], ['INVITE', 4]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4], ['INVITE', 4]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4], ['INVITE', 4], ['INVITE', 4]]}]), ('ordered trace 3', 'outgoing', ['busy', 'dial', 'busy', 'dial', 'busy', 'dial', 'busy'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 4}, 'frames': []}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 4}, 'frames': [['INVITE', 4]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4], ['INVITE', 4]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy', 'busy'], 'call': 4}, 'frames': [['INVITE', 4], ['INVITE', 4], ['INVITE', 4]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 4}, 'frames': [['reject', [4, 5, 6, 7, 8, 9]]]}])], 5: [('idle/dial', 'idle', ['dial'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 5}, 'frames': [['INVITE', 5]]}]), ('outgoing/ringing', 'outgoing', ['ringing'], [{'phase': 'alerting', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['remote_ringing'], 'call': 5}, 'frames': []}]), ('alerting/answered', 'alerting', ['answered'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 5}, 'frames': []}]), ('outgoing/busy', 'outgoing', ['busy'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 5}, 'frames': []}]), ('idle/invitation', 'idle', ['invitation'], [{'phase': 'incoming', 'registers': {'tx': False, 'rx': False, 'bell': True, 'muted': False, 'status': [], 'call': 5}, 'frames': []}]), ('incoming/accept', 'incoming', ['accept'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 5}, 'frames': [['ANSWER', 5]]}]), ('incoming/decline', 'incoming', ['decline'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 5}, 'frames': [['DECLINE', 5]]}]), ('connected/hold', 'connected', ['hold'], [{'phase': 'held', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': True, 'status': [], 'call': 5}, 'frames': [['HOLD', 5]]}]), ('held/resume', 'held', ['resume'], [{'phase': 'connected', 'registers': {'tx': True, 'rx': True, 'bell': False, 'muted': False, 'status': [], 'call': 5}, 'frames': [['RESUME', 5]]}]), ('connected/hangup', 'connected', ['hangup'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 5}, 'frames': [['BYE', 5]]}]), ('ordered trace 0', 'idle', ['dial', 'busy', 'dial', 'busy', 'dial', 'busy', 'dial', 'busy'], [{'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 5}, 'frames': [['INVITE', 5]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 5}, 'frames': [['INVITE', 5]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5], ['INVITE', 5]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5], ['INVITE', 5]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5], ['INVITE', 5], ['INVITE', 5]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5], ['INVITE', 5], ['INVITE', 5]]}]), ('ordered trace 3', 'outgoing', ['busy', 'dial', 'busy', 'dial', 'busy', 'dial', 'busy', 'dial'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 5}, 'frames': []}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy'], 'call': 5}, 'frames': [['INVITE', 5]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5], ['INVITE', 5]]}, {'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5], ['INVITE', 5]]}, {'phase': 'outgoing', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': ['busy', 'busy', 'busy', 'busy'], 'call': 5}, 'frames': [['INVITE', 5], ['INVITE', 5], ['INVITE', 5], ['INVITE', 5]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'tx': False, 'rx': False, 'bell': False, 'muted': False, 'status': [], 'call': 5}, '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-call_control-idle-invitation","generated_at":"2026-09-29T14:40:04.583357+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 idle, classify invitation as transition to incoming and emit ring_local.","root_cause":"In idle, the invitation handler runs open media and enters connected; it must instead run ring local and enter incoming.","sha256":"09cba742adfee15fefd5a5050689b3b8d1de652c955d0c5d76ddab8d761cd59a","title":"Intercom call-signaling controller: idle / invitation · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":47.476,"exit_code":1,"observations":[{"actual":[{"frames":[["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"check":"idle/dial","expected":[{"frames":[["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"passed":true},{"actual":[{"frames":[],"phase":"alerting","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["remote_ringing"],"tx":false}}],"check":"outgoing/ringing","expected":[{"frames":[],"phase":"alerting","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["remote_ringing"],"tx":false}}],"passed":true},{"actual":[{"frames":[],"phase":"connected","registers":{"bell":false,"call":1,"muted":false,"rx":true,"status":[],"tx":true}}],"check":"alerting/answered","expected":[{"frames":[],"phase":"connected","registers":{"bell":false,"call":1,"muted":false,"rx":true,"status":[],"tx":true}}],"passed":true},{"actual":[{"frames":[],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}}],"check":"outgoing/busy","expected":[{"frames":[],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}}],"passed":true},{"actual":[{"frames":[],"phase":"incoming","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["remote_ringing"],"tx":false}}],"check":"idle/invitation","expected":[{"frames":[],"phase":"incoming","registers":{"bell":true,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"passed":false},{"actual":[{"frames":[["ANSWER",1]],"phase":"connected","registers":{"bell":false,"call":1,"muted":false,"rx":true,"status":[],"tx":true}}],"check":"incoming/accept","expected":[{"frames":[["ANSWER",1]],"phase":"connected","registers":{"bell":false,"call":1,"muted":false,"rx":true,"status":[],"tx":true}}],"passed":true},{"actual":[{"frames":[["DECLINE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"check":"incoming/decline","expected":[{"frames":[["DECLINE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"passed":true},{"actual":[{"frames":[["HOLD",1]],"phase":"held","registers":{"bell":false,"call":1,"muted":true,"rx":true,"status":[],"tx":true}}],"check":"connected/hold","expected":[{"frames":[["HOLD",1]],"phase":"held","registers":{"bell":false,"call":1,"muted":true,"rx":true,"status":[],"tx":true}}],"passed":true},{"actual":[{"frames":[["RESUME",1]],"phase":"connected","registers":{"bell":false,"call":1,"muted":false,"rx":true,"status":[],"tx":true}}],"check":"held/resume","expected":[{"frames":[["RESUME",1]],"phase":"connected","registers":{"bell":false,"call":1,"muted":false,"rx":true,"status":[],"tx":true}}],"passed":true},{"actual":[{"frames":[["BYE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"check":"connected/hangup","expected":[{"frames":[["BYE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"passed":true},{"actual":[{"frames":[["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}},{"frames":[["INVITE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}},{"frames":[["INVITE",1],["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}},{"frames":[["INVITE",1],["INVITE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy","busy"],"tx":false}}],"check":"ordered trace 0","expected":[{"frames":[["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}},{"frames":[["INVITE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}},{"frames":[["INVITE",1],["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}},{"frames":[["INVITE",1],["INVITE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy","busy"],"tx":false}}],"passed":true},{"actual":[{"frames":[],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}},{"frames":[["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}},{"frames":[["INVITE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy","busy"],"tx":false}},{"frames":[["INVITE",1],["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy","busy"],"tx":false}}],"check":"ordered trace 3","expected":[{"frames":[],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}},{"frames":[["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}},{"frames":[["INVITE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy","busy"],"tx":false}},{"frames":[["INVITE",1],["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy","busy"],"tx":false}}],"passed":true},{"actual":[],"check":"empty input","expected":[],"passed":true},{"actual":[{"frames":[["reject",[1,2,3]]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"check":"unknown event","expected":[{"frames":[["reject",[1,2,3]]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"idle/dial\", \"actual\": [{\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}], \"expected\": [{\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}], \"passed\": true}, {\"check\": \"outgoing/ringing\", \"actual\": [{\"phase\": \"alerting\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"remote_ringing\"], \"call\": 1}, \"frames\": []}], \"expected\": [{\"phase\": \"alerting\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"remote_ringing\"], \"call\": 1}, \"frames\": []}], \"passed\": true}, {\"check\": \"alerting/answered\", \"actual\": [{\"phase\": \"connected\", \"registers\": {\"tx\": true, \"rx\": true, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": []}], \"expected\": [{\"phase\": \"connected\", \"registers\": {\"tx\": true, \"rx\": true, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": []}], \"passed\": true}, {\"check\": \"outgoing/busy\", \"actual\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": []}], \"expected\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": []}], \"passed\": true}, {\"check\": \"idle/invitation\", \"actual\": [{\"phase\": \"incoming\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"remote_ringing\"], \"call\": 1}, \"frames\": []}], \"expected\": [{\"phase\": \"incoming\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": true, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": []}], \"passed\": false}, {\"check\": \"incoming/accept\", \"actual\": [{\"phase\": \"connected\", \"registers\": {\"tx\": true, \"rx\": true, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"ANSWER\", 1]]}], \"expected\": [{\"phase\": \"connected\", \"registers\": {\"tx\": true, \"rx\": true, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"ANSWER\", 1]]}], \"passed\": true}, {\"check\": \"incoming/decline\", \"actual\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"DECLINE\", 1]]}], \"expected\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"DECLINE\", 1]]}], \"passed\": true}, {\"check\": \"connected/hold\", \"actual\": [{\"phase\": \"held\", \"registers\": {\"tx\": true, \"rx\": true, \"bell\": false, \"muted\": true, \"status\": [], \"call\": 1}, \"frames\": [[\"HOLD\", 1]]}], \"expected\": [{\"phase\": \"held\", \"registers\": {\"tx\": true, \"rx\": true, \"bell\": false, \"muted\": true, \"status\": [], \"call\": 1}, \"frames\": [[\"HOLD\", 1]]}], \"passed\": true}, {\"check\": \"held/resume\", \"actual\": [{\"phase\": \"connected\", \"registers\": {\"tx\": true, \"rx\": true, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"RESUME\", 1]]}], \"expected\": [{\"phase\": \"connected\", \"registers\": {\"tx\": true, \"rx\": true, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"RESUME\", 1]]}], \"passed\": true}, {\"check\": \"connected/hangup\", \"actual\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"BYE\", 1]]}], \"expected\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"BYE\", 1]]}], \"passed\": true}, {\"check\": \"ordered trace 0\", \"actual\": [{\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}, {\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}, {\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1], [\"INVITE\", 1]]}, {\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\", \"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1], [\"INVITE\", 1]]}], \"expected\": [{\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}, {\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}, {\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1], [\"INVITE\", 1]]}, {\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\", \"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1], [\"INVITE\", 1]]}], \"passed\": true}, {\"check\": \"ordered trace 3\", \"actual\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": []}, {\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}, {\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\", \"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}, {\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\", \"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1], [\"INVITE\", 1]]}], \"expected\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": []}, {\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}, {\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\", \"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}, {\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\", \"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1], [\"INVITE\", 1]]}], \"passed\": true}, {\"check\": \"empty input\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unknown event\", \"actual\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"expected\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":48.585,"exit_code":1,"observations":[{"actual":[{"frames":[["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"check":"idle/dial","expected":[{"frames":[["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"passed":true},{"actual":[{"frames":[],"phase":"alerting","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["remote_ringing"],"tx":false}}],"check":"outgoing/ringing","expected":[{"frames":[],"phase":"alerting","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["remote_ringing"],"tx":false}}],"passed":true},{"actual":[{"frames":[],"phase":"connected","registers":{"bell":false,"call":1,"muted":false,"rx":true,"status":[],"tx":true}}],"check":"alerting/answered","expected":[{"frames":[],"phase":"connected","registers":{"bell":false,"call":1,"muted":false,"rx":true,"status":[],"tx":true}}],"passed":true},{"actual":[{"frames":[],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}}],"check":"outgoing/busy","expected":[{"frames":[],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}}],"passed":true},{"actual":[{"frames":[],"phase":"connected","registers":{"bell":false,"call":1,"muted":false,"rx":true,"status":[],"tx":true}}],"check":"idle/invitation","expected":[{"frames":[],"phase":"incoming","registers":{"bell":true,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"passed":false},{"actual":[{"frames":[["ANSWER",1]],"phase":"connected","registers":{"bell":false,"call":1,"muted":false,"rx":true,"status":[],"tx":true}}],"check":"incoming/accept","expected":[{"frames":[["ANSWER",1]],"phase":"connected","registers":{"bell":false,"call":1,"muted":false,"rx":true,"status":[],"tx":true}}],"passed":true},{"actual":[{"frames":[["DECLINE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"check":"incoming/decline","expected":[{"frames":[["DECLINE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"passed":true},{"actual":[{"frames":[["HOLD",1]],"phase":"held","registers":{"bell":false,"call":1,"muted":true,"rx":true,"status":[],"tx":true}}],"check":"connected/hold","expected":[{"frames":[["HOLD",1]],"phase":"held","registers":{"bell":false,"call":1,"muted":true,"rx":true,"status":[],"tx":true}}],"passed":true},{"actual":[{"frames":[["RESUME",1]],"phase":"connected","registers":{"bell":false,"call":1,"muted":false,"rx":true,"status":[],"tx":true}}],"check":"held/resume","expected":[{"frames":[["RESUME",1]],"phase":"connected","registers":{"bell":false,"call":1,"muted":false,"rx":true,"status":[],"tx":true}}],"passed":true},{"actual":[{"frames":[["BYE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"check":"connected/hangup","expected":[{"frames":[["BYE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"passed":true},{"actual":[{"frames":[["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}},{"frames":[["INVITE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}},{"frames":[["INVITE",1],["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}},{"frames":[["INVITE",1],["INVITE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy","busy"],"tx":false}}],"check":"ordered trace 0","expected":[{"frames":[["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}},{"frames":[["INVITE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}},{"frames":[["INVITE",1],["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}},{"frames":[["INVITE",1],["INVITE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy","busy"],"tx":false}}],"passed":true},{"actual":[{"frames":[],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}},{"frames":[["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}},{"frames":[["INVITE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy","busy"],"tx":false}},{"frames":[["INVITE",1],["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy","busy"],"tx":false}}],"check":"ordered trace 3","expected":[{"frames":[],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}},{"frames":[["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}},{"frames":[["INVITE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy","busy"],"tx":false}},{"frames":[["INVITE",1],["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy","busy"],"tx":false}}],"passed":true},{"actual":[],"check":"empty input","expected":[],"passed":true},{"actual":[{"frames":[["reject",[1,2,3]]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"check":"unknown event","expected":[{"frames":[["reject",[1,2,3]]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"idle/dial\", \"actual\": [{\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}], \"expected\": [{\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}], \"passed\": true}, {\"check\": \"outgoing/ringing\", \"actual\": [{\"phase\": \"alerting\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"remote_ringing\"], \"call\": 1}, \"frames\": []}], \"expected\": [{\"phase\": \"alerting\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"remote_ringing\"], \"call\": 1}, \"frames\": []}], \"passed\": true}, {\"check\": \"alerting/answered\", \"actual\": [{\"phase\": \"connected\", \"registers\": {\"tx\": true, \"rx\": true, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": []}], \"expected\": [{\"phase\": \"connected\", \"registers\": {\"tx\": true, \"rx\": true, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": []}], \"passed\": true}, {\"check\": \"outgoing/busy\", \"actual\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": []}], \"expected\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": []}], \"passed\": true}, {\"check\": \"idle/invitation\", \"actual\": [{\"phase\": \"connected\", \"registers\": {\"tx\": true, \"rx\": true, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": []}], \"expected\": [{\"phase\": \"incoming\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": true, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": []}], \"passed\": false}, {\"check\": \"incoming/accept\", \"actual\": [{\"phase\": \"connected\", \"registers\": {\"tx\": true, \"rx\": true, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"ANSWER\", 1]]}], \"expected\": [{\"phase\": \"connected\", \"registers\": {\"tx\": true, \"rx\": true, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"ANSWER\", 1]]}], \"passed\": true}, {\"check\": \"incoming/decline\", \"actual\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"DECLINE\", 1]]}], \"expected\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"DECLINE\", 1]]}], \"passed\": true}, {\"check\": \"connected/hold\", \"actual\": [{\"phase\": \"held\", \"registers\": {\"tx\": true, \"rx\": true, \"bell\": false, \"muted\": true, \"status\": [], \"call\": 1}, \"frames\": [[\"HOLD\", 1]]}], \"expected\": [{\"phase\": \"held\", \"registers\": {\"tx\": true, \"rx\": true, \"bell\": false, \"muted\": true, \"status\": [], \"call\": 1}, \"frames\": [[\"HOLD\", 1]]}], \"passed\": true}, {\"check\": \"held/resume\", \"actual\": [{\"phase\": \"connected\", \"registers\": {\"tx\": true, \"rx\": true, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"RESUME\", 1]]}], \"expected\": [{\"phase\": \"connected\", \"registers\": {\"tx\": true, \"rx\": true, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"RESUME\", 1]]}], \"passed\": true}, {\"check\": \"connected/hangup\", \"actual\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"BYE\", 1]]}], \"expected\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"BYE\", 1]]}], \"passed\": true}, {\"check\": \"ordered trace 0\", \"actual\": [{\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}, {\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}, {\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1], [\"INVITE\", 1]]}, {\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\", \"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1], [\"INVITE\", 1]]}], \"expected\": [{\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}, {\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}, {\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1], [\"INVITE\", 1]]}, {\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\", \"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1], [\"INVITE\", 1]]}], \"passed\": true}, {\"check\": \"ordered trace 3\", \"actual\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": []}, {\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}, {\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\", \"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}, {\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\", \"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1], [\"INVITE\", 1]]}], \"expected\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": []}, {\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}, {\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\", \"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}, {\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\", \"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1], [\"INVITE\", 1]]}], \"passed\": true}, {\"check\": \"empty input\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unknown event\", \"actual\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"expected\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":47.137,"exit_code":0,"observations":[{"actual":[{"frames":[["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"check":"idle/dial","expected":[{"frames":[["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"passed":true},{"actual":[{"frames":[],"phase":"alerting","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["remote_ringing"],"tx":false}}],"check":"outgoing/ringing","expected":[{"frames":[],"phase":"alerting","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["remote_ringing"],"tx":false}}],"passed":true},{"actual":[{"frames":[],"phase":"connected","registers":{"bell":false,"call":1,"muted":false,"rx":true,"status":[],"tx":true}}],"check":"alerting/answered","expected":[{"frames":[],"phase":"connected","registers":{"bell":false,"call":1,"muted":false,"rx":true,"status":[],"tx":true}}],"passed":true},{"actual":[{"frames":[],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}}],"check":"outgoing/busy","expected":[{"frames":[],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}}],"passed":true},{"actual":[{"frames":[],"phase":"incoming","registers":{"bell":true,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"check":"idle/invitation","expected":[{"frames":[],"phase":"incoming","registers":{"bell":true,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"passed":true},{"actual":[{"frames":[["ANSWER",1]],"phase":"connected","registers":{"bell":false,"call":1,"muted":false,"rx":true,"status":[],"tx":true}}],"check":"incoming/accept","expected":[{"frames":[["ANSWER",1]],"phase":"connected","registers":{"bell":false,"call":1,"muted":false,"rx":true,"status":[],"tx":true}}],"passed":true},{"actual":[{"frames":[["DECLINE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"check":"incoming/decline","expected":[{"frames":[["DECLINE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"passed":true},{"actual":[{"frames":[["HOLD",1]],"phase":"held","registers":{"bell":false,"call":1,"muted":true,"rx":true,"status":[],"tx":true}}],"check":"connected/hold","expected":[{"frames":[["HOLD",1]],"phase":"held","registers":{"bell":false,"call":1,"muted":true,"rx":true,"status":[],"tx":true}}],"passed":true},{"actual":[{"frames":[["RESUME",1]],"phase":"connected","registers":{"bell":false,"call":1,"muted":false,"rx":true,"status":[],"tx":true}}],"check":"held/resume","expected":[{"frames":[["RESUME",1]],"phase":"connected","registers":{"bell":false,"call":1,"muted":false,"rx":true,"status":[],"tx":true}}],"passed":true},{"actual":[{"frames":[["BYE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"check":"connected/hangup","expected":[{"frames":[["BYE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"passed":true},{"actual":[{"frames":[["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}},{"frames":[["INVITE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}},{"frames":[["INVITE",1],["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}},{"frames":[["INVITE",1],["INVITE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy","busy"],"tx":false}}],"check":"ordered trace 0","expected":[{"frames":[["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}},{"frames":[["INVITE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}},{"frames":[["INVITE",1],["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}},{"frames":[["INVITE",1],["INVITE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy","busy"],"tx":false}}],"passed":true},{"actual":[{"frames":[],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}},{"frames":[["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}},{"frames":[["INVITE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy","busy"],"tx":false}},{"frames":[["INVITE",1],["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy","busy"],"tx":false}}],"check":"ordered trace 3","expected":[{"frames":[],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}},{"frames":[["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy"],"tx":false}},{"frames":[["INVITE",1]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy","busy"],"tx":false}},{"frames":[["INVITE",1],["INVITE",1]],"phase":"outgoing","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":["busy","busy"],"tx":false}}],"passed":true},{"actual":[],"check":"empty input","expected":[],"passed":true},{"actual":[{"frames":[["reject",[1,2,3]]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"check":"unknown event","expected":[{"frames":[["reject",[1,2,3]]],"phase":"idle","registers":{"bell":false,"call":1,"muted":false,"rx":false,"status":[],"tx":false}}],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"idle/dial\", \"actual\": [{\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}], \"expected\": [{\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}], \"passed\": true}, {\"check\": \"outgoing/ringing\", \"actual\": [{\"phase\": \"alerting\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"remote_ringing\"], \"call\": 1}, \"frames\": []}], \"expected\": [{\"phase\": \"alerting\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"remote_ringing\"], \"call\": 1}, \"frames\": []}], \"passed\": true}, {\"check\": \"alerting/answered\", \"actual\": [{\"phase\": \"connected\", \"registers\": {\"tx\": true, \"rx\": true, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": []}], \"expected\": [{\"phase\": \"connected\", \"registers\": {\"tx\": true, \"rx\": true, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": []}], \"passed\": true}, {\"check\": \"outgoing/busy\", \"actual\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": []}], \"expected\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": []}], \"passed\": true}, {\"check\": \"idle/invitation\", \"actual\": [{\"phase\": \"incoming\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": true, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": []}], \"expected\": [{\"phase\": \"incoming\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": true, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": []}], \"passed\": true}, {\"check\": \"incoming/accept\", \"actual\": [{\"phase\": \"connected\", \"registers\": {\"tx\": true, \"rx\": true, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"ANSWER\", 1]]}], \"expected\": [{\"phase\": \"connected\", \"registers\": {\"tx\": true, \"rx\": true, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"ANSWER\", 1]]}], \"passed\": true}, {\"check\": \"incoming/decline\", \"actual\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"DECLINE\", 1]]}], \"expected\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"DECLINE\", 1]]}], \"passed\": true}, {\"check\": \"connected/hold\", \"actual\": [{\"phase\": \"held\", \"registers\": {\"tx\": true, \"rx\": true, \"bell\": false, \"muted\": true, \"status\": [], \"call\": 1}, \"frames\": [[\"HOLD\", 1]]}], \"expected\": [{\"phase\": \"held\", \"registers\": {\"tx\": true, \"rx\": true, \"bell\": false, \"muted\": true, \"status\": [], \"call\": 1}, \"frames\": [[\"HOLD\", 1]]}], \"passed\": true}, {\"check\": \"held/resume\", \"actual\": [{\"phase\": \"connected\", \"registers\": {\"tx\": true, \"rx\": true, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"RESUME\", 1]]}], \"expected\": [{\"phase\": \"connected\", \"registers\": {\"tx\": true, \"rx\": true, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"RESUME\", 1]]}], \"passed\": true}, {\"check\": \"connected/hangup\", \"actual\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"BYE\", 1]]}], \"expected\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"BYE\", 1]]}], \"passed\": true}, {\"check\": \"ordered trace 0\", \"actual\": [{\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}, {\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}, {\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1], [\"INVITE\", 1]]}, {\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\", \"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1], [\"INVITE\", 1]]}], \"expected\": [{\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}, {\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}, {\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1], [\"INVITE\", 1]]}, {\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\", \"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1], [\"INVITE\", 1]]}], \"passed\": true}, {\"check\": \"ordered trace 3\", \"actual\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": []}, {\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}, {\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\", \"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}, {\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\", \"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1], [\"INVITE\", 1]]}], \"expected\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": []}, {\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}, {\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\", \"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1]]}, {\"phase\": \"outgoing\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [\"busy\", \"busy\"], \"call\": 1}, \"frames\": [[\"INVITE\", 1], [\"INVITE\", 1]]}], \"passed\": true}, {\"check\": \"empty input\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unknown event\", \"actual\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"expected\": [{\"phase\": \"idle\", \"registers\": {\"tx\": false, \"rx\": false, \"bell\": false, \"muted\": false, \"status\": [], \"call\": 1}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}