{"abstract":"While renewing, event expired produces bound/use_address instead of unassigned/clear_address.","category":"Protocols","checks":14,"contract":"For the stipulated Scoped address assignment 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-address_lease","failed_approach":"The partial repair chooses unassigned/announce_address, which still violates this phase-specific event contract.","family":"s3-protocols-address_lease-renewing-expired","id":"FA-19926","implementations":{"attempt":{"sha256":"7079d4c32e5a97de9b840514528359725d55d6d97e0d04af45693534564467fa","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 = {'address': seed if phase in ('bound','renewing') else None, 'expiry': seed+2 if phase in ('bound','renewing') else None, 'selected': seed+1 if phase!='unassigned' else None, 'offers': [seed+1,seed+2], 'announced': phase in ('bound','renewing'), 'released': False}\n    frames = []\n    observed = []\n    table = {('unassigned', 'solicit'): ('discovering', 'send_discovery'), ('discovering', 'offer'): ('offered', 'record_offer'), ('offered', 'select'): ('requesting', 'request_selected'), ('requesting', 'ack'): ('bound', 'install_lease'), ('requesting', 'nack'): ('unassigned', 'discard_offer'), ('bound', 'renew_due'): ('renewing', 'request_renewal'), ('renewing', 'renew_ack'): ('bound', 'replace_expiry'), ('renewing', 'expired'): ('unassigned', 'announce_address'), ('bound', 'conflict_detected'): ('unassigned', 'decline_clear'), ('bound', 'release'): ('unassigned', 'release_clear')}\n    for event in events:\n        phase, action = table.get((phase, event), (phase, \"reject\"))\n        if action == 'send_discovery':\n            frames.append(['DISCOVER',seed])\n        elif action == 'record_offer':\n            r['selected']=seed+1\n        elif action == 'request_selected':\n            frames.append(['REQUEST_ADDRESS',r['selected']])\n        elif action == 'install_lease':\n            r['address']=r['selected']; r['expiry']=seed+len(payload)+2\n        elif action == 'discard_offer':\n            r['address']=None; r['selected']=None\n        elif action == 'request_renewal':\n            frames.append(['RENEW_ADDRESS',r['address']])\n        elif action == 'replace_expiry':\n            r['expiry']=seed+len(payload)+2\n        elif action == 'clear_address':\n            r['address']=None; r['announced']=False\n        elif action == 'decline_clear':\n            frames.append(['DECLINE',r['address']]); r['address']=None; r['announced']=False\n        elif action == 'release_clear':\n            frames.append(['RELEASE',r['address']]); r['address']=None; r['announced']=False; r['released']=True\n        elif action == 'use_default':\n            r['address']=0\n        elif action == 'send_payload':\n            frames.append(['DATA',r['address'],payload])\n        elif action == 'use_address':\n            frames.append(['DATA',r['address'],payload])\n        elif action == 'announce_address':\n            r['announced']=True; frames.append(['ANNOUNCE',r['address']])\n        elif action == 'request_all_offers':\n            frames.extend([['REQUEST_ADDRESS',a] for a in r['offers']])\n        elif action == 'install_offer_without_lifetime':\n            r['address']=r['selected']; r['expiry']=None\n        elif action == 'stop_using_address':\n            r['address']=None\n        elif action == 'clear_without_decline':\n            r['address']=None; r['announced']=False\n        elif action == 'clear_without_release':\n            r['address']=None; r['announced']=False\n        else:\n            if action not in (\"wait\", \"ignore\", \"keep\", \"retain\", \"keep_peer\", \"keep_offer\", \"keep_hold\", \"keep_batch\", \"retain_staging\", \"keep_staging\", \"keep_local_owner\", \"keep_old_session\", \"keep_address\", \"keep_old_expiry\", \"ignore_conflict\", \"keep_service\", \"keep_subscription\", \"retain_shadow\", \"keep_live\", \"keep_suspicion\", \"keep_roles\", \"keep_staged\"):\n                frames.append([action, payload[:]])\n        observed.append(json.loads(json.dumps({\"phase\": phase, \"registers\": r, \"frames\": frames})))\n    return observed\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {1: [('unassigned/solicit', 'unassigned', ['solicit'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 1]]}]), ('discovering/offer', 'discovering', ['offer'], [{'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': []}]), ('offered/select', 'offered', ['select'], [{'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['REQUEST_ADDRESS', 2]]}]), ('requesting/ack', 'requesting', ['ack'], [{'phase': 'bound', 'registers': {'address': 2, 'expiry': 6, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': []}]), ('requesting/nack', 'requesting', ['nack'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': []}]), ('bound/renew_due', 'bound', ['renew_due'], [{'phase': 'renewing', 'registers': {'address': 1, 'expiry': 3, 'selected': 2, 'offers': [2, 3], 'announced': True, 'released': False}, 'frames': [['RENEW_ADDRESS', 1]]}]), ('renewing/renew_ack', 'renewing', ['renew_ack'], [{'phase': 'bound', 'registers': {'address': 1, 'expiry': 6, 'selected': 2, 'offers': [2, 3], 'announced': True, 'released': False}, 'frames': []}]), ('renewing/expired', 'renewing', ['expired'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 3, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': []}]), ('bound/conflict_detected', 'bound', ['conflict_detected'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 3, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DECLINE', 1]]}]), ('bound/release', 'bound', ['release'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 3, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': True}, 'frames': [['RELEASE', 1]]}]), ('ordered trace 0', 'unassigned', ['solicit', 'offer', 'select', 'nack'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 1]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 1]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 1], ['REQUEST_ADDRESS', 2]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 1], ['REQUEST_ADDRESS', 2]]}]), ('ordered trace 3', 'requesting', ['nack', 'solicit', 'offer', 'select'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': []}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 1]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 1]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 1], ['REQUEST_ADDRESS', 2]]}]), ('empty input', 'unassigned', [], []), ('unknown event', 'unassigned', ['unsupported'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['reject', [1, 2, 3]]]}])], 2: [('unassigned/solicit', 'unassigned', ['solicit'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2]]}]), ('discovering/offer', 'discovering', ['offer'], [{'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': []}]), ('offered/select', 'offered', ['select'], [{'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['REQUEST_ADDRESS', 3]]}]), ('requesting/ack', 'requesting', ['ack'], [{'phase': 'bound', 'registers': {'address': 3, 'expiry': 8, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': []}]), ('requesting/nack', 'requesting', ['nack'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': []}]), ('bound/renew_due', 'bound', ['renew_due'], [{'phase': 'renewing', 'registers': {'address': 2, 'expiry': 4, 'selected': 3, 'offers': [3, 4], 'announced': True, 'released': False}, 'frames': [['RENEW_ADDRESS', 2]]}]), ('renewing/renew_ack', 'renewing', ['renew_ack'], [{'phase': 'bound', 'registers': {'address': 2, 'expiry': 8, 'selected': 3, 'offers': [3, 4], 'announced': True, 'released': False}, 'frames': []}]), ('renewing/expired', 'renewing', ['expired'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 4, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': []}]), ('bound/conflict_detected', 'bound', ['conflict_detected'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 4, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DECLINE', 2]]}]), ('bound/release', 'bound', ['release'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 4, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': True}, 'frames': [['RELEASE', 2]]}]), ('ordered trace 0', 'unassigned', ['solicit', 'offer', 'select', 'nack', 'solicit'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2], ['REQUEST_ADDRESS', 3]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2], ['REQUEST_ADDRESS', 3]]}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2], ['REQUEST_ADDRESS', 3], ['DISCOVER', 2]]}]), ('ordered trace 3', 'requesting', ['nack', 'solicit', 'offer', 'select', 'nack'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': []}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2], ['REQUEST_ADDRESS', 3]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2], ['REQUEST_ADDRESS', 3]]}]), ('empty input', 'unassigned', [], []), ('unknown event', 'unassigned', ['unsupported'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['reject', [2, 3, 4, 5]]]}])], 3: [('unassigned/solicit', 'unassigned', ['solicit'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3]]}]), ('discovering/offer', 'discovering', ['offer'], [{'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': []}]), ('offered/select', 'offered', ['select'], [{'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['REQUEST_ADDRESS', 4]]}]), ('requesting/ack', 'requesting', ['ack'], [{'phase': 'bound', 'registers': {'address': 4, 'expiry': 10, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': []}]), ('requesting/nack', 'requesting', ['nack'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': []}]), ('bound/renew_due', 'bound', ['renew_due'], [{'phase': 'renewing', 'registers': {'address': 3, 'expiry': 5, 'selected': 4, 'offers': [4, 5], 'announced': True, 'released': False}, 'frames': [['RENEW_ADDRESS', 3]]}]), ('renewing/renew_ack', 'renewing', ['renew_ack'], [{'phase': 'bound', 'registers': {'address': 3, 'expiry': 10, 'selected': 4, 'offers': [4, 5], 'announced': True, 'released': False}, 'frames': []}]), ('renewing/expired', 'renewing', ['expired'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 5, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': []}]), ('bound/conflict_detected', 'bound', ['conflict_detected'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 5, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DECLINE', 3]]}]), ('bound/release', 'bound', ['release'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 5, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': True}, 'frames': [['RELEASE', 3]]}]), ('ordered trace 0', 'unassigned', ['solicit', 'offer', 'select', 'nack', 'solicit', 'offer'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3], ['REQUEST_ADDRESS', 4]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3], ['REQUEST_ADDRESS', 4]]}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3], ['REQUEST_ADDRESS', 4], ['DISCOVER', 3]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3], ['REQUEST_ADDRESS', 4], ['DISCOVER', 3]]}]), ('ordered trace 3', 'requesting', ['nack', 'solicit', 'offer', 'select', 'nack', 'solicit'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': []}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3], ['REQUEST_ADDRESS', 4]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3], ['REQUEST_ADDRESS', 4]]}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3], ['REQUEST_ADDRESS', 4], ['DISCOVER', 3]]}]), ('empty input', 'unassigned', [], []), ('unknown event', 'unassigned', ['unsupported'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['reject', [3, 4, 5, 6, 7]]]}])], 4: [('unassigned/solicit', 'unassigned', ['solicit'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4]]}]), ('discovering/offer', 'discovering', ['offer'], [{'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': []}]), ('offered/select', 'offered', ['select'], [{'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['REQUEST_ADDRESS', 5]]}]), ('requesting/ack', 'requesting', ['ack'], [{'phase': 'bound', 'registers': {'address': 5, 'expiry': 12, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': []}]), ('requesting/nack', 'requesting', ['nack'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': []}]), ('bound/renew_due', 'bound', ['renew_due'], [{'phase': 'renewing', 'registers': {'address': 4, 'expiry': 6, 'selected': 5, 'offers': [5, 6], 'announced': True, 'released': False}, 'frames': [['RENEW_ADDRESS', 4]]}]), ('renewing/renew_ack', 'renewing', ['renew_ack'], [{'phase': 'bound', 'registers': {'address': 4, 'expiry': 12, 'selected': 5, 'offers': [5, 6], 'announced': True, 'released': False}, 'frames': []}]), ('renewing/expired', 'renewing', ['expired'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 6, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': []}]), ('bound/conflict_detected', 'bound', ['conflict_detected'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 6, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DECLINE', 4]]}]), ('bound/release', 'bound', ['release'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 6, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': True}, 'frames': [['RELEASE', 4]]}]), ('ordered trace 0', 'unassigned', ['solicit', 'offer', 'select', 'nack', 'solicit', 'offer', 'select'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5]]}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5], ['DISCOVER', 4]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5], ['DISCOVER', 4]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5], ['DISCOVER', 4], ['REQUEST_ADDRESS', 5]]}]), ('ordered trace 3', 'requesting', ['nack', 'solicit', 'offer', 'select', 'nack', 'solicit', 'offer'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': []}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5]]}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5], ['DISCOVER', 4]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5], ['DISCOVER', 4]]}]), ('empty input', 'unassigned', [], []), ('unknown event', 'unassigned', ['unsupported'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['reject', [4, 5, 6, 7, 8, 9]]]}])], 5: [('unassigned/solicit', 'unassigned', ['solicit'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5]]}]), ('discovering/offer', 'discovering', ['offer'], [{'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': []}]), ('offered/select', 'offered', ['select'], [{'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['REQUEST_ADDRESS', 6]]}]), ('requesting/ack', 'requesting', ['ack'], [{'phase': 'bound', 'registers': {'address': 6, 'expiry': 14, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': []}]), ('requesting/nack', 'requesting', ['nack'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': []}]), ('bound/renew_due', 'bound', ['renew_due'], [{'phase': 'renewing', 'registers': {'address': 5, 'expiry': 7, 'selected': 6, 'offers': [6, 7], 'announced': True, 'released': False}, 'frames': [['RENEW_ADDRESS', 5]]}]), ('renewing/renew_ack', 'renewing', ['renew_ack'], [{'phase': 'bound', 'registers': {'address': 5, 'expiry': 14, 'selected': 6, 'offers': [6, 7], 'announced': True, 'released': False}, 'frames': []}]), ('renewing/expired', 'renewing', ['expired'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 7, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': []}]), ('bound/conflict_detected', 'bound', ['conflict_detected'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 7, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DECLINE', 5]]}]), ('bound/release', 'bound', ['release'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 7, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': True}, 'frames': [['RELEASE', 5]]}]), ('ordered trace 0', 'unassigned', ['solicit', 'offer', 'select', 'nack', 'solicit', 'offer', 'select', 'nack'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6]]}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6], ['DISCOVER', 5]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6], ['DISCOVER', 5]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6], ['DISCOVER', 5], ['REQUEST_ADDRESS', 6]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6], ['DISCOVER', 5], ['REQUEST_ADDRESS', 6]]}]), ('ordered trace 3', 'requesting', ['nack', 'solicit', 'offer', 'select', 'nack', 'solicit', 'offer', 'select'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': []}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6]]}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6], ['DISCOVER', 5]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6], ['DISCOVER', 5]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6], ['DISCOVER', 5], ['REQUEST_ADDRESS', 6]]}]), ('empty input', 'unassigned', [], []), ('unknown event', 'unassigned', ['unsupported'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['reject', [5, 6, 7, 8, 9, 10, 11]]]}])]}\nfor label, phase, events, expected in cases[N]:\n    check(label, solve(phase, events, N), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"9a706171b155633cf503480e4e782063e461b741c7ddf2365d13601ffe79c503","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 = {'address': seed if phase in ('bound','renewing') else None, 'expiry': seed+2 if phase in ('bound','renewing') else None, 'selected': seed+1 if phase!='unassigned' else None, 'offers': [seed+1,seed+2], 'announced': phase in ('bound','renewing'), 'released': False}\n    frames = []\n    observed = []\n    table = {('unassigned', 'solicit'): ('discovering', 'send_discovery'), ('discovering', 'offer'): ('offered', 'record_offer'), ('offered', 'select'): ('requesting', 'request_selected'), ('requesting', 'ack'): ('bound', 'install_lease'), ('requesting', 'nack'): ('unassigned', 'discard_offer'), ('bound', 'renew_due'): ('renewing', 'request_renewal'), ('renewing', 'renew_ack'): ('bound', 'replace_expiry'), ('renewing', 'expired'): ('bound', 'use_address'), ('bound', 'conflict_detected'): ('unassigned', 'decline_clear'), ('bound', 'release'): ('unassigned', 'release_clear')}\n    for event in events:\n        phase, action = table.get((phase, event), (phase, \"reject\"))\n        if action == 'send_discovery':\n            frames.append(['DISCOVER',seed])\n        elif action == 'record_offer':\n            r['selected']=seed+1\n        elif action == 'request_selected':\n            frames.append(['REQUEST_ADDRESS',r['selected']])\n        elif action == 'install_lease':\n            r['address']=r['selected']; r['expiry']=seed+len(payload)+2\n        elif action == 'discard_offer':\n            r['address']=None; r['selected']=None\n        elif action == 'request_renewal':\n            frames.append(['RENEW_ADDRESS',r['address']])\n        elif action == 'replace_expiry':\n            r['expiry']=seed+len(payload)+2\n        elif action == 'clear_address':\n            r['address']=None; r['announced']=False\n        elif action == 'decline_clear':\n            frames.append(['DECLINE',r['address']]); r['address']=None; r['announced']=False\n        elif action == 'release_clear':\n            frames.append(['RELEASE',r['address']]); r['address']=None; r['announced']=False; r['released']=True\n        elif action == 'use_default':\n            r['address']=0\n        elif action == 'send_payload':\n            frames.append(['DATA',r['address'],payload])\n        elif action == 'use_address':\n            frames.append(['DATA',r['address'],payload])\n        elif action == 'announce_address':\n            r['announced']=True; frames.append(['ANNOUNCE',r['address']])\n        elif action == 'request_all_offers':\n            frames.extend([['REQUEST_ADDRESS',a] for a in r['offers']])\n        elif action == 'install_offer_without_lifetime':\n            r['address']=r['selected']; r['expiry']=None\n        elif action == 'stop_using_address':\n            r['address']=None\n        elif action == 'clear_without_decline':\n            r['address']=None; r['announced']=False\n        elif action == 'clear_without_release':\n            r['address']=None; r['announced']=False\n        else:\n            if action not in (\"wait\", \"ignore\", \"keep\", \"retain\", \"keep_peer\", \"keep_offer\", \"keep_hold\", \"keep_batch\", \"retain_staging\", \"keep_staging\", \"keep_local_owner\", \"keep_old_session\", \"keep_address\", \"keep_old_expiry\", \"ignore_conflict\", \"keep_service\", \"keep_subscription\", \"retain_shadow\", \"keep_live\", \"keep_suspicion\", \"keep_roles\", \"keep_staged\"):\n                frames.append([action, payload[:]])\n        observed.append(json.loads(json.dumps({\"phase\": phase, \"registers\": r, \"frames\": frames})))\n    return observed\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {1: [('unassigned/solicit', 'unassigned', ['solicit'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 1]]}]), ('discovering/offer', 'discovering', ['offer'], [{'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': []}]), ('offered/select', 'offered', ['select'], [{'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['REQUEST_ADDRESS', 2]]}]), ('requesting/ack', 'requesting', ['ack'], [{'phase': 'bound', 'registers': {'address': 2, 'expiry': 6, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': []}]), ('requesting/nack', 'requesting', ['nack'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': []}]), ('bound/renew_due', 'bound', ['renew_due'], [{'phase': 'renewing', 'registers': {'address': 1, 'expiry': 3, 'selected': 2, 'offers': [2, 3], 'announced': True, 'released': False}, 'frames': [['RENEW_ADDRESS', 1]]}]), ('renewing/renew_ack', 'renewing', ['renew_ack'], [{'phase': 'bound', 'registers': {'address': 1, 'expiry': 6, 'selected': 2, 'offers': [2, 3], 'announced': True, 'released': False}, 'frames': []}]), ('renewing/expired', 'renewing', ['expired'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 3, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': []}]), ('bound/conflict_detected', 'bound', ['conflict_detected'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 3, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DECLINE', 1]]}]), ('bound/release', 'bound', ['release'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 3, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': True}, 'frames': [['RELEASE', 1]]}]), ('ordered trace 0', 'unassigned', ['solicit', 'offer', 'select', 'nack'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 1]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 1]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 1], ['REQUEST_ADDRESS', 2]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 1], ['REQUEST_ADDRESS', 2]]}]), ('ordered trace 3', 'requesting', ['nack', 'solicit', 'offer', 'select'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': []}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 1]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 1]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 1], ['REQUEST_ADDRESS', 2]]}]), ('empty input', 'unassigned', [], []), ('unknown event', 'unassigned', ['unsupported'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['reject', [1, 2, 3]]]}])], 2: [('unassigned/solicit', 'unassigned', ['solicit'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2]]}]), ('discovering/offer', 'discovering', ['offer'], [{'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': []}]), ('offered/select', 'offered', ['select'], [{'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['REQUEST_ADDRESS', 3]]}]), ('requesting/ack', 'requesting', ['ack'], [{'phase': 'bound', 'registers': {'address': 3, 'expiry': 8, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': []}]), ('requesting/nack', 'requesting', ['nack'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': []}]), ('bound/renew_due', 'bound', ['renew_due'], [{'phase': 'renewing', 'registers': {'address': 2, 'expiry': 4, 'selected': 3, 'offers': [3, 4], 'announced': True, 'released': False}, 'frames': [['RENEW_ADDRESS', 2]]}]), ('renewing/renew_ack', 'renewing', ['renew_ack'], [{'phase': 'bound', 'registers': {'address': 2, 'expiry': 8, 'selected': 3, 'offers': [3, 4], 'announced': True, 'released': False}, 'frames': []}]), ('renewing/expired', 'renewing', ['expired'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 4, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': []}]), ('bound/conflict_detected', 'bound', ['conflict_detected'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 4, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DECLINE', 2]]}]), ('bound/release', 'bound', ['release'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 4, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': True}, 'frames': [['RELEASE', 2]]}]), ('ordered trace 0', 'unassigned', ['solicit', 'offer', 'select', 'nack', 'solicit'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2], ['REQUEST_ADDRESS', 3]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2], ['REQUEST_ADDRESS', 3]]}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2], ['REQUEST_ADDRESS', 3], ['DISCOVER', 2]]}]), ('ordered trace 3', 'requesting', ['nack', 'solicit', 'offer', 'select', 'nack'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': []}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2], ['REQUEST_ADDRESS', 3]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2], ['REQUEST_ADDRESS', 3]]}]), ('empty input', 'unassigned', [], []), ('unknown event', 'unassigned', ['unsupported'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['reject', [2, 3, 4, 5]]]}])], 3: [('unassigned/solicit', 'unassigned', ['solicit'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3]]}]), ('discovering/offer', 'discovering', ['offer'], [{'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': []}]), ('offered/select', 'offered', ['select'], [{'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['REQUEST_ADDRESS', 4]]}]), ('requesting/ack', 'requesting', ['ack'], [{'phase': 'bound', 'registers': {'address': 4, 'expiry': 10, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': []}]), ('requesting/nack', 'requesting', ['nack'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': []}]), ('bound/renew_due', 'bound', ['renew_due'], [{'phase': 'renewing', 'registers': {'address': 3, 'expiry': 5, 'selected': 4, 'offers': [4, 5], 'announced': True, 'released': False}, 'frames': [['RENEW_ADDRESS', 3]]}]), ('renewing/renew_ack', 'renewing', ['renew_ack'], [{'phase': 'bound', 'registers': {'address': 3, 'expiry': 10, 'selected': 4, 'offers': [4, 5], 'announced': True, 'released': False}, 'frames': []}]), ('renewing/expired', 'renewing', ['expired'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 5, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': []}]), ('bound/conflict_detected', 'bound', ['conflict_detected'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 5, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DECLINE', 3]]}]), ('bound/release', 'bound', ['release'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 5, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': True}, 'frames': [['RELEASE', 3]]}]), ('ordered trace 0', 'unassigned', ['solicit', 'offer', 'select', 'nack', 'solicit', 'offer'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3], ['REQUEST_ADDRESS', 4]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3], ['REQUEST_ADDRESS', 4]]}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3], ['REQUEST_ADDRESS', 4], ['DISCOVER', 3]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3], ['REQUEST_ADDRESS', 4], ['DISCOVER', 3]]}]), ('ordered trace 3', 'requesting', ['nack', 'solicit', 'offer', 'select', 'nack', 'solicit'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': []}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3], ['REQUEST_ADDRESS', 4]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3], ['REQUEST_ADDRESS', 4]]}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3], ['REQUEST_ADDRESS', 4], ['DISCOVER', 3]]}]), ('empty input', 'unassigned', [], []), ('unknown event', 'unassigned', ['unsupported'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['reject', [3, 4, 5, 6, 7]]]}])], 4: [('unassigned/solicit', 'unassigned', ['solicit'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4]]}]), ('discovering/offer', 'discovering', ['offer'], [{'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': []}]), ('offered/select', 'offered', ['select'], [{'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['REQUEST_ADDRESS', 5]]}]), ('requesting/ack', 'requesting', ['ack'], [{'phase': 'bound', 'registers': {'address': 5, 'expiry': 12, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': []}]), ('requesting/nack', 'requesting', ['nack'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': []}]), ('bound/renew_due', 'bound', ['renew_due'], [{'phase': 'renewing', 'registers': {'address': 4, 'expiry': 6, 'selected': 5, 'offers': [5, 6], 'announced': True, 'released': False}, 'frames': [['RENEW_ADDRESS', 4]]}]), ('renewing/renew_ack', 'renewing', ['renew_ack'], [{'phase': 'bound', 'registers': {'address': 4, 'expiry': 12, 'selected': 5, 'offers': [5, 6], 'announced': True, 'released': False}, 'frames': []}]), ('renewing/expired', 'renewing', ['expired'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 6, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': []}]), ('bound/conflict_detected', 'bound', ['conflict_detected'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 6, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DECLINE', 4]]}]), ('bound/release', 'bound', ['release'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 6, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': True}, 'frames': [['RELEASE', 4]]}]), ('ordered trace 0', 'unassigned', ['solicit', 'offer', 'select', 'nack', 'solicit', 'offer', 'select'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5]]}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5], ['DISCOVER', 4]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5], ['DISCOVER', 4]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5], ['DISCOVER', 4], ['REQUEST_ADDRESS', 5]]}]), ('ordered trace 3', 'requesting', ['nack', 'solicit', 'offer', 'select', 'nack', 'solicit', 'offer'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': []}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5]]}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5], ['DISCOVER', 4]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5], ['DISCOVER', 4]]}]), ('empty input', 'unassigned', [], []), ('unknown event', 'unassigned', ['unsupported'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['reject', [4, 5, 6, 7, 8, 9]]]}])], 5: [('unassigned/solicit', 'unassigned', ['solicit'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5]]}]), ('discovering/offer', 'discovering', ['offer'], [{'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': []}]), ('offered/select', 'offered', ['select'], [{'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['REQUEST_ADDRESS', 6]]}]), ('requesting/ack', 'requesting', ['ack'], [{'phase': 'bound', 'registers': {'address': 6, 'expiry': 14, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': []}]), ('requesting/nack', 'requesting', ['nack'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': []}]), ('bound/renew_due', 'bound', ['renew_due'], [{'phase': 'renewing', 'registers': {'address': 5, 'expiry': 7, 'selected': 6, 'offers': [6, 7], 'announced': True, 'released': False}, 'frames': [['RENEW_ADDRESS', 5]]}]), ('renewing/renew_ack', 'renewing', ['renew_ack'], [{'phase': 'bound', 'registers': {'address': 5, 'expiry': 14, 'selected': 6, 'offers': [6, 7], 'announced': True, 'released': False}, 'frames': []}]), ('renewing/expired', 'renewing', ['expired'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 7, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': []}]), ('bound/conflict_detected', 'bound', ['conflict_detected'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 7, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DECLINE', 5]]}]), ('bound/release', 'bound', ['release'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 7, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': True}, 'frames': [['RELEASE', 5]]}]), ('ordered trace 0', 'unassigned', ['solicit', 'offer', 'select', 'nack', 'solicit', 'offer', 'select', 'nack'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6]]}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6], ['DISCOVER', 5]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6], ['DISCOVER', 5]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6], ['DISCOVER', 5], ['REQUEST_ADDRESS', 6]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6], ['DISCOVER', 5], ['REQUEST_ADDRESS', 6]]}]), ('ordered trace 3', 'requesting', ['nack', 'solicit', 'offer', 'select', 'nack', 'solicit', 'offer', 'select'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': []}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6]]}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6], ['DISCOVER', 5]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6], ['DISCOVER', 5]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6], ['DISCOVER', 5], ['REQUEST_ADDRESS', 6]]}]), ('empty input', 'unassigned', [], []), ('unknown event', 'unassigned', ['unsupported'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['reject', [5, 6, 7, 8, 9, 10, 11]]]}])]}\nfor label, phase, events, expected in cases[N]:\n    check(label, solve(phase, events, N), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"a2571d4ed8a8f3b33193213ea0d935f1f92d78c0daa60f7a698339e2ab9928f1","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 = {'address': seed if phase in ('bound','renewing') else None, 'expiry': seed+2 if phase in ('bound','renewing') else None, 'selected': seed+1 if phase!='unassigned' else None, 'offers': [seed+1,seed+2], 'announced': phase in ('bound','renewing'), 'released': False}\n    frames = []\n    observed = []\n    table = {('unassigned', 'solicit'): ('discovering', 'send_discovery'), ('discovering', 'offer'): ('offered', 'record_offer'), ('offered', 'select'): ('requesting', 'request_selected'), ('requesting', 'ack'): ('bound', 'install_lease'), ('requesting', 'nack'): ('unassigned', 'discard_offer'), ('bound', 'renew_due'): ('renewing', 'request_renewal'), ('renewing', 'renew_ack'): ('bound', 'replace_expiry'), ('renewing', 'expired'): ('unassigned', 'clear_address'), ('bound', 'conflict_detected'): ('unassigned', 'decline_clear'), ('bound', 'release'): ('unassigned', 'release_clear')}\n    for event in events:\n        phase, action = table.get((phase, event), (phase, \"reject\"))\n        if action == 'send_discovery':\n            frames.append(['DISCOVER',seed])\n        elif action == 'record_offer':\n            r['selected']=seed+1\n        elif action == 'request_selected':\n            frames.append(['REQUEST_ADDRESS',r['selected']])\n        elif action == 'install_lease':\n            r['address']=r['selected']; r['expiry']=seed+len(payload)+2\n        elif action == 'discard_offer':\n            r['address']=None; r['selected']=None\n        elif action == 'request_renewal':\n            frames.append(['RENEW_ADDRESS',r['address']])\n        elif action == 'replace_expiry':\n            r['expiry']=seed+len(payload)+2\n        elif action == 'clear_address':\n            r['address']=None; r['announced']=False\n        elif action == 'decline_clear':\n            frames.append(['DECLINE',r['address']]); r['address']=None; r['announced']=False\n        elif action == 'release_clear':\n            frames.append(['RELEASE',r['address']]); r['address']=None; r['announced']=False; r['released']=True\n        elif action == 'use_default':\n            r['address']=0\n        elif action == 'send_payload':\n            frames.append(['DATA',r['address'],payload])\n        elif action == 'use_address':\n            frames.append(['DATA',r['address'],payload])\n        elif action == 'announce_address':\n            r['announced']=True; frames.append(['ANNOUNCE',r['address']])\n        elif action == 'request_all_offers':\n            frames.extend([['REQUEST_ADDRESS',a] for a in r['offers']])\n        elif action == 'install_offer_without_lifetime':\n            r['address']=r['selected']; r['expiry']=None\n        elif action == 'stop_using_address':\n            r['address']=None\n        elif action == 'clear_without_decline':\n            r['address']=None; r['announced']=False\n        elif action == 'clear_without_release':\n            r['address']=None; r['announced']=False\n        else:\n            if action not in (\"wait\", \"ignore\", \"keep\", \"retain\", \"keep_peer\", \"keep_offer\", \"keep_hold\", \"keep_batch\", \"retain_staging\", \"keep_staging\", \"keep_local_owner\", \"keep_old_session\", \"keep_address\", \"keep_old_expiry\", \"ignore_conflict\", \"keep_service\", \"keep_subscription\", \"retain_shadow\", \"keep_live\", \"keep_suspicion\", \"keep_roles\", \"keep_staged\"):\n                frames.append([action, payload[:]])\n        observed.append(json.loads(json.dumps({\"phase\": phase, \"registers\": r, \"frames\": frames})))\n    return observed\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {1: [('unassigned/solicit', 'unassigned', ['solicit'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 1]]}]), ('discovering/offer', 'discovering', ['offer'], [{'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': []}]), ('offered/select', 'offered', ['select'], [{'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['REQUEST_ADDRESS', 2]]}]), ('requesting/ack', 'requesting', ['ack'], [{'phase': 'bound', 'registers': {'address': 2, 'expiry': 6, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': []}]), ('requesting/nack', 'requesting', ['nack'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': []}]), ('bound/renew_due', 'bound', ['renew_due'], [{'phase': 'renewing', 'registers': {'address': 1, 'expiry': 3, 'selected': 2, 'offers': [2, 3], 'announced': True, 'released': False}, 'frames': [['RENEW_ADDRESS', 1]]}]), ('renewing/renew_ack', 'renewing', ['renew_ack'], [{'phase': 'bound', 'registers': {'address': 1, 'expiry': 6, 'selected': 2, 'offers': [2, 3], 'announced': True, 'released': False}, 'frames': []}]), ('renewing/expired', 'renewing', ['expired'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 3, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': []}]), ('bound/conflict_detected', 'bound', ['conflict_detected'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 3, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DECLINE', 1]]}]), ('bound/release', 'bound', ['release'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 3, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': True}, 'frames': [['RELEASE', 1]]}]), ('ordered trace 0', 'unassigned', ['solicit', 'offer', 'select', 'nack'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 1]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 1]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 1], ['REQUEST_ADDRESS', 2]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 1], ['REQUEST_ADDRESS', 2]]}]), ('ordered trace 3', 'requesting', ['nack', 'solicit', 'offer', 'select'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': []}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 1]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 1]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 2, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 1], ['REQUEST_ADDRESS', 2]]}]), ('empty input', 'unassigned', [], []), ('unknown event', 'unassigned', ['unsupported'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [2, 3], 'announced': False, 'released': False}, 'frames': [['reject', [1, 2, 3]]]}])], 2: [('unassigned/solicit', 'unassigned', ['solicit'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2]]}]), ('discovering/offer', 'discovering', ['offer'], [{'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': []}]), ('offered/select', 'offered', ['select'], [{'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['REQUEST_ADDRESS', 3]]}]), ('requesting/ack', 'requesting', ['ack'], [{'phase': 'bound', 'registers': {'address': 3, 'expiry': 8, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': []}]), ('requesting/nack', 'requesting', ['nack'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': []}]), ('bound/renew_due', 'bound', ['renew_due'], [{'phase': 'renewing', 'registers': {'address': 2, 'expiry': 4, 'selected': 3, 'offers': [3, 4], 'announced': True, 'released': False}, 'frames': [['RENEW_ADDRESS', 2]]}]), ('renewing/renew_ack', 'renewing', ['renew_ack'], [{'phase': 'bound', 'registers': {'address': 2, 'expiry': 8, 'selected': 3, 'offers': [3, 4], 'announced': True, 'released': False}, 'frames': []}]), ('renewing/expired', 'renewing', ['expired'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 4, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': []}]), ('bound/conflict_detected', 'bound', ['conflict_detected'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 4, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DECLINE', 2]]}]), ('bound/release', 'bound', ['release'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 4, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': True}, 'frames': [['RELEASE', 2]]}]), ('ordered trace 0', 'unassigned', ['solicit', 'offer', 'select', 'nack', 'solicit'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2], ['REQUEST_ADDRESS', 3]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2], ['REQUEST_ADDRESS', 3]]}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2], ['REQUEST_ADDRESS', 3], ['DISCOVER', 2]]}]), ('ordered trace 3', 'requesting', ['nack', 'solicit', 'offer', 'select', 'nack'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': []}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 3, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2], ['REQUEST_ADDRESS', 3]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 2], ['REQUEST_ADDRESS', 3]]}]), ('empty input', 'unassigned', [], []), ('unknown event', 'unassigned', ['unsupported'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [3, 4], 'announced': False, 'released': False}, 'frames': [['reject', [2, 3, 4, 5]]]}])], 3: [('unassigned/solicit', 'unassigned', ['solicit'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3]]}]), ('discovering/offer', 'discovering', ['offer'], [{'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': []}]), ('offered/select', 'offered', ['select'], [{'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['REQUEST_ADDRESS', 4]]}]), ('requesting/ack', 'requesting', ['ack'], [{'phase': 'bound', 'registers': {'address': 4, 'expiry': 10, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': []}]), ('requesting/nack', 'requesting', ['nack'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': []}]), ('bound/renew_due', 'bound', ['renew_due'], [{'phase': 'renewing', 'registers': {'address': 3, 'expiry': 5, 'selected': 4, 'offers': [4, 5], 'announced': True, 'released': False}, 'frames': [['RENEW_ADDRESS', 3]]}]), ('renewing/renew_ack', 'renewing', ['renew_ack'], [{'phase': 'bound', 'registers': {'address': 3, 'expiry': 10, 'selected': 4, 'offers': [4, 5], 'announced': True, 'released': False}, 'frames': []}]), ('renewing/expired', 'renewing', ['expired'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 5, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': []}]), ('bound/conflict_detected', 'bound', ['conflict_detected'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 5, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DECLINE', 3]]}]), ('bound/release', 'bound', ['release'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 5, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': True}, 'frames': [['RELEASE', 3]]}]), ('ordered trace 0', 'unassigned', ['solicit', 'offer', 'select', 'nack', 'solicit', 'offer'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3], ['REQUEST_ADDRESS', 4]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3], ['REQUEST_ADDRESS', 4]]}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3], ['REQUEST_ADDRESS', 4], ['DISCOVER', 3]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3], ['REQUEST_ADDRESS', 4], ['DISCOVER', 3]]}]), ('ordered trace 3', 'requesting', ['nack', 'solicit', 'offer', 'select', 'nack', 'solicit'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': []}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 4, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3], ['REQUEST_ADDRESS', 4]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3], ['REQUEST_ADDRESS', 4]]}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 3], ['REQUEST_ADDRESS', 4], ['DISCOVER', 3]]}]), ('empty input', 'unassigned', [], []), ('unknown event', 'unassigned', ['unsupported'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [4, 5], 'announced': False, 'released': False}, 'frames': [['reject', [3, 4, 5, 6, 7]]]}])], 4: [('unassigned/solicit', 'unassigned', ['solicit'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4]]}]), ('discovering/offer', 'discovering', ['offer'], [{'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': []}]), ('offered/select', 'offered', ['select'], [{'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['REQUEST_ADDRESS', 5]]}]), ('requesting/ack', 'requesting', ['ack'], [{'phase': 'bound', 'registers': {'address': 5, 'expiry': 12, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': []}]), ('requesting/nack', 'requesting', ['nack'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': []}]), ('bound/renew_due', 'bound', ['renew_due'], [{'phase': 'renewing', 'registers': {'address': 4, 'expiry': 6, 'selected': 5, 'offers': [5, 6], 'announced': True, 'released': False}, 'frames': [['RENEW_ADDRESS', 4]]}]), ('renewing/renew_ack', 'renewing', ['renew_ack'], [{'phase': 'bound', 'registers': {'address': 4, 'expiry': 12, 'selected': 5, 'offers': [5, 6], 'announced': True, 'released': False}, 'frames': []}]), ('renewing/expired', 'renewing', ['expired'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 6, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': []}]), ('bound/conflict_detected', 'bound', ['conflict_detected'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 6, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DECLINE', 4]]}]), ('bound/release', 'bound', ['release'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 6, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': True}, 'frames': [['RELEASE', 4]]}]), ('ordered trace 0', 'unassigned', ['solicit', 'offer', 'select', 'nack', 'solicit', 'offer', 'select'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5]]}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5], ['DISCOVER', 4]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5], ['DISCOVER', 4]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5], ['DISCOVER', 4], ['REQUEST_ADDRESS', 5]]}]), ('ordered trace 3', 'requesting', ['nack', 'solicit', 'offer', 'select', 'nack', 'solicit', 'offer'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': []}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5]]}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5], ['DISCOVER', 4]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 5, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 4], ['REQUEST_ADDRESS', 5], ['DISCOVER', 4]]}]), ('empty input', 'unassigned', [], []), ('unknown event', 'unassigned', ['unsupported'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [5, 6], 'announced': False, 'released': False}, 'frames': [['reject', [4, 5, 6, 7, 8, 9]]]}])], 5: [('unassigned/solicit', 'unassigned', ['solicit'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5]]}]), ('discovering/offer', 'discovering', ['offer'], [{'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': []}]), ('offered/select', 'offered', ['select'], [{'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['REQUEST_ADDRESS', 6]]}]), ('requesting/ack', 'requesting', ['ack'], [{'phase': 'bound', 'registers': {'address': 6, 'expiry': 14, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': []}]), ('requesting/nack', 'requesting', ['nack'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': []}]), ('bound/renew_due', 'bound', ['renew_due'], [{'phase': 'renewing', 'registers': {'address': 5, 'expiry': 7, 'selected': 6, 'offers': [6, 7], 'announced': True, 'released': False}, 'frames': [['RENEW_ADDRESS', 5]]}]), ('renewing/renew_ack', 'renewing', ['renew_ack'], [{'phase': 'bound', 'registers': {'address': 5, 'expiry': 14, 'selected': 6, 'offers': [6, 7], 'announced': True, 'released': False}, 'frames': []}]), ('renewing/expired', 'renewing', ['expired'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 7, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': []}]), ('bound/conflict_detected', 'bound', ['conflict_detected'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 7, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DECLINE', 5]]}]), ('bound/release', 'bound', ['release'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': 7, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': True}, 'frames': [['RELEASE', 5]]}]), ('ordered trace 0', 'unassigned', ['solicit', 'offer', 'select', 'nack', 'solicit', 'offer', 'select', 'nack'], [{'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6]]}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6], ['DISCOVER', 5]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6], ['DISCOVER', 5]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6], ['DISCOVER', 5], ['REQUEST_ADDRESS', 6]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6], ['DISCOVER', 5], ['REQUEST_ADDRESS', 6]]}]), ('ordered trace 3', 'requesting', ['nack', 'solicit', 'offer', 'select', 'nack', 'solicit', 'offer', 'select'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': []}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6]]}, {'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6]]}, {'phase': 'discovering', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6], ['DISCOVER', 5]]}, {'phase': 'offered', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6], ['DISCOVER', 5]]}, {'phase': 'requesting', 'registers': {'address': None, 'expiry': None, 'selected': 6, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['DISCOVER', 5], ['REQUEST_ADDRESS', 6], ['DISCOVER', 5], ['REQUEST_ADDRESS', 6]]}]), ('empty input', 'unassigned', [], []), ('unknown event', 'unassigned', ['unsupported'], [{'phase': 'unassigned', 'registers': {'address': None, 'expiry': None, 'selected': None, 'offers': [6, 7], 'announced': False, 'released': False}, 'frames': [['reject', [5, 6, 7, 8, 9, 10, 11]]]}])]}\nfor label, phase, events, expected in cases[N]:\n    check(label, solve(phase, events, N), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"Bounded offline control-plane abstraction with prescribed initial registers and classified events. Not a named protocol implementation or conformance test; excludes wire parsing, transport retries, physical execution, authentication, crash persistence, and timing. Related event faults share the full corrected controller and evaluation group. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"s3-protocols-address_lease-renewing-expired","generated_at":"2026-09-29T14:40:13.426172+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 renewing, classify expired as transition to unassigned and emit clear_address.","root_cause":"In renewing, the expired handler runs use address and enters bound; it must instead run clear address and enter unassigned.","sha256":"6b4fbfffb67d6f4870f2d075d38436c0628a04cc117f8a8358d08e95244f3711","title":"Scoped address assignment controller: renewing / expired · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":45.175,"exit_code":1,"observations":[{"actual":[{"frames":[["DISCOVER",1]],"phase":"discovering","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}}],"check":"unassigned/solicit","expected":[{"frames":[["DISCOVER",1]],"phase":"discovering","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}}],"passed":true},{"actual":[{"frames":[],"phase":"offered","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}}],"check":"discovering/offer","expected":[{"frames":[],"phase":"offered","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}}],"passed":true},{"actual":[{"frames":[["REQUEST_ADDRESS",2]],"phase":"requesting","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}}],"check":"offered/select","expected":[{"frames":[["REQUEST_ADDRESS",2]],"phase":"requesting","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}}],"passed":true},{"actual":[{"frames":[],"phase":"bound","registers":{"address":2,"announced":false,"expiry":6,"offers":[2,3],"released":false,"selected":2}}],"check":"requesting/ack","expected":[{"frames":[],"phase":"bound","registers":{"address":2,"announced":false,"expiry":6,"offers":[2,3],"released":false,"selected":2}}],"passed":true},{"actual":[{"frames":[],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}}],"check":"requesting/nack","expected":[{"frames":[],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}}],"passed":true},{"actual":[{"frames":[["RENEW_ADDRESS",1]],"phase":"renewing","registers":{"address":1,"announced":true,"expiry":3,"offers":[2,3],"released":false,"selected":2}}],"check":"bound/renew_due","expected":[{"frames":[["RENEW_ADDRESS",1]],"phase":"renewing","registers":{"address":1,"announced":true,"expiry":3,"offers":[2,3],"released":false,"selected":2}}],"passed":true},{"actual":[{"frames":[],"phase":"bound","registers":{"address":1,"announced":true,"expiry":6,"offers":[2,3],"released":false,"selected":2}}],"check":"renewing/renew_ack","expected":[{"frames":[],"phase":"bound","registers":{"address":1,"announced":true,"expiry":6,"offers":[2,3],"released":false,"selected":2}}],"passed":true},{"actual":[{"frames":[["ANNOUNCE",1]],"phase":"unassigned","registers":{"address":1,"announced":true,"expiry":3,"offers":[2,3],"released":false,"selected":2}}],"check":"renewing/expired","expected":[{"frames":[],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":3,"offers":[2,3],"released":false,"selected":2}}],"passed":false},{"actual":[{"frames":[["DECLINE",1]],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":3,"offers":[2,3],"released":false,"selected":2}}],"check":"bound/conflict_detected","expected":[{"frames":[["DECLINE",1]],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":3,"offers":[2,3],"released":false,"selected":2}}],"passed":true},{"actual":[{"frames":[["RELEASE",1]],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":3,"offers":[2,3],"released":true,"selected":2}}],"check":"bound/release","expected":[{"frames":[["RELEASE",1]],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":3,"offers":[2,3],"released":true,"selected":2}}],"passed":true},{"actual":[{"frames":[["DISCOVER",1]],"phase":"discovering","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}},{"frames":[["DISCOVER",1]],"phase":"offered","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}},{"frames":[["DISCOVER",1],["REQUEST_ADDRESS",2]],"phase":"requesting","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}},{"frames":[["DISCOVER",1],["REQUEST_ADDRESS",2]],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}}],"check":"ordered trace 0","expected":[{"frames":[["DISCOVER",1]],"phase":"discovering","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}},{"frames":[["DISCOVER",1]],"phase":"offered","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}},{"frames":[["DISCOVER",1],["REQUEST_ADDRESS",2]],"phase":"requesting","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}},{"frames":[["DISCOVER",1],["REQUEST_ADDRESS",2]],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}}],"passed":true},{"actual":[{"frames":[],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}},{"frames":[["DISCOVER",1]],"phase":"discovering","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}},{"frames":[["DISCOVER",1]],"phase":"offered","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}},{"frames":[["DISCOVER",1],["REQUEST_ADDRESS",2]],"phase":"requesting","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}}],"check":"ordered trace 3","expected":[{"frames":[],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}},{"frames":[["DISCOVER",1]],"phase":"discovering","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}},{"frames":[["DISCOVER",1]],"phase":"offered","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}},{"frames":[["DISCOVER",1],["REQUEST_ADDRESS",2]],"phase":"requesting","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}}],"passed":true},{"actual":[],"check":"empty input","expected":[],"passed":true},{"actual":[{"frames":[["reject",[1,2,3]]],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}}],"check":"unknown event","expected":[{"frames":[["reject",[1,2,3]]],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}}],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"unassigned/solicit\", \"actual\": [{\"phase\": \"discovering\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}], \"expected\": [{\"phase\": \"discovering\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}], \"passed\": true}, {\"check\": \"discovering/offer\", \"actual\": [{\"phase\": \"offered\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"offered\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"offered/select\", \"actual\": [{\"phase\": \"requesting\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"REQUEST_ADDRESS\", 2]]}], \"expected\": [{\"phase\": \"requesting\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"REQUEST_ADDRESS\", 2]]}], \"passed\": true}, {\"check\": \"requesting/ack\", \"actual\": [{\"phase\": \"bound\", \"registers\": {\"address\": 2, \"expiry\": 6, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"bound\", \"registers\": {\"address\": 2, \"expiry\": 6, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"requesting/nack\", \"actual\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"bound/renew_due\", \"actual\": [{\"phase\": \"renewing\", \"registers\": {\"address\": 1, \"expiry\": 3, \"selected\": 2, \"offers\": [2, 3], \"announced\": true, \"released\": false}, \"frames\": [[\"RENEW_ADDRESS\", 1]]}], \"expected\": [{\"phase\": \"renewing\", \"registers\": {\"address\": 1, \"expiry\": 3, \"selected\": 2, \"offers\": [2, 3], \"announced\": true, \"released\": false}, \"frames\": [[\"RENEW_ADDRESS\", 1]]}], \"passed\": true}, {\"check\": \"renewing/renew_ack\", \"actual\": [{\"phase\": \"bound\", \"registers\": {\"address\": 1, \"expiry\": 6, \"selected\": 2, \"offers\": [2, 3], \"announced\": true, \"released\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"bound\", \"registers\": {\"address\": 1, \"expiry\": 6, \"selected\": 2, \"offers\": [2, 3], \"announced\": true, \"released\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"renewing/expired\", \"actual\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": 1, \"expiry\": 3, \"selected\": 2, \"offers\": [2, 3], \"announced\": true, \"released\": false}, \"frames\": [[\"ANNOUNCE\", 1]]}], \"expected\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": 3, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}], \"passed\": false}, {\"check\": \"bound/conflict_detected\", \"actual\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": 3, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DECLINE\", 1]]}], \"expected\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": 3, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DECLINE\", 1]]}], \"passed\": true}, {\"check\": \"bound/release\", \"actual\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": 3, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": true}, \"frames\": [[\"RELEASE\", 1]]}], \"expected\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": 3, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": true}, \"frames\": [[\"RELEASE\", 1]]}], \"passed\": true}, {\"check\": \"ordered trace 0\", \"actual\": [{\"phase\": \"discovering\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}, {\"phase\": \"offered\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}, {\"phase\": \"requesting\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1], [\"REQUEST_ADDRESS\", 2]]}, {\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1], [\"REQUEST_ADDRESS\", 2]]}], \"expected\": [{\"phase\": \"discovering\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}, {\"phase\": \"offered\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}, {\"phase\": \"requesting\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1], [\"REQUEST_ADDRESS\", 2]]}, {\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1], [\"REQUEST_ADDRESS\", 2]]}], \"passed\": true}, {\"check\": \"ordered trace 3\", \"actual\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}, {\"phase\": \"discovering\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}, {\"phase\": \"offered\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}, {\"phase\": \"requesting\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1], [\"REQUEST_ADDRESS\", 2]]}], \"expected\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}, {\"phase\": \"discovering\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}, {\"phase\": \"offered\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}, {\"phase\": \"requesting\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1], [\"REQUEST_ADDRESS\", 2]]}], \"passed\": true}, {\"check\": \"empty input\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unknown event\", \"actual\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"expected\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":45.072,"exit_code":1,"observations":[{"actual":[{"frames":[["DISCOVER",1]],"phase":"discovering","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}}],"check":"unassigned/solicit","expected":[{"frames":[["DISCOVER",1]],"phase":"discovering","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}}],"passed":true},{"actual":[{"frames":[],"phase":"offered","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}}],"check":"discovering/offer","expected":[{"frames":[],"phase":"offered","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}}],"passed":true},{"actual":[{"frames":[["REQUEST_ADDRESS",2]],"phase":"requesting","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}}],"check":"offered/select","expected":[{"frames":[["REQUEST_ADDRESS",2]],"phase":"requesting","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}}],"passed":true},{"actual":[{"frames":[],"phase":"bound","registers":{"address":2,"announced":false,"expiry":6,"offers":[2,3],"released":false,"selected":2}}],"check":"requesting/ack","expected":[{"frames":[],"phase":"bound","registers":{"address":2,"announced":false,"expiry":6,"offers":[2,3],"released":false,"selected":2}}],"passed":true},{"actual":[{"frames":[],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}}],"check":"requesting/nack","expected":[{"frames":[],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}}],"passed":true},{"actual":[{"frames":[["RENEW_ADDRESS",1]],"phase":"renewing","registers":{"address":1,"announced":true,"expiry":3,"offers":[2,3],"released":false,"selected":2}}],"check":"bound/renew_due","expected":[{"frames":[["RENEW_ADDRESS",1]],"phase":"renewing","registers":{"address":1,"announced":true,"expiry":3,"offers":[2,3],"released":false,"selected":2}}],"passed":true},{"actual":[{"frames":[],"phase":"bound","registers":{"address":1,"announced":true,"expiry":6,"offers":[2,3],"released":false,"selected":2}}],"check":"renewing/renew_ack","expected":[{"frames":[],"phase":"bound","registers":{"address":1,"announced":true,"expiry":6,"offers":[2,3],"released":false,"selected":2}}],"passed":true},{"actual":[{"frames":[["DATA",1,[1,2,3]]],"phase":"bound","registers":{"address":1,"announced":true,"expiry":3,"offers":[2,3],"released":false,"selected":2}}],"check":"renewing/expired","expected":[{"frames":[],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":3,"offers":[2,3],"released":false,"selected":2}}],"passed":false},{"actual":[{"frames":[["DECLINE",1]],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":3,"offers":[2,3],"released":false,"selected":2}}],"check":"bound/conflict_detected","expected":[{"frames":[["DECLINE",1]],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":3,"offers":[2,3],"released":false,"selected":2}}],"passed":true},{"actual":[{"frames":[["RELEASE",1]],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":3,"offers":[2,3],"released":true,"selected":2}}],"check":"bound/release","expected":[{"frames":[["RELEASE",1]],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":3,"offers":[2,3],"released":true,"selected":2}}],"passed":true},{"actual":[{"frames":[["DISCOVER",1]],"phase":"discovering","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}},{"frames":[["DISCOVER",1]],"phase":"offered","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}},{"frames":[["DISCOVER",1],["REQUEST_ADDRESS",2]],"phase":"requesting","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}},{"frames":[["DISCOVER",1],["REQUEST_ADDRESS",2]],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}}],"check":"ordered trace 0","expected":[{"frames":[["DISCOVER",1]],"phase":"discovering","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}},{"frames":[["DISCOVER",1]],"phase":"offered","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}},{"frames":[["DISCOVER",1],["REQUEST_ADDRESS",2]],"phase":"requesting","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}},{"frames":[["DISCOVER",1],["REQUEST_ADDRESS",2]],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}}],"passed":true},{"actual":[{"frames":[],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}},{"frames":[["DISCOVER",1]],"phase":"discovering","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}},{"frames":[["DISCOVER",1]],"phase":"offered","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}},{"frames":[["DISCOVER",1],["REQUEST_ADDRESS",2]],"phase":"requesting","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}}],"check":"ordered trace 3","expected":[{"frames":[],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}},{"frames":[["DISCOVER",1]],"phase":"discovering","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}},{"frames":[["DISCOVER",1]],"phase":"offered","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}},{"frames":[["DISCOVER",1],["REQUEST_ADDRESS",2]],"phase":"requesting","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}}],"passed":true},{"actual":[],"check":"empty input","expected":[],"passed":true},{"actual":[{"frames":[["reject",[1,2,3]]],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}}],"check":"unknown event","expected":[{"frames":[["reject",[1,2,3]]],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}}],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"unassigned/solicit\", \"actual\": [{\"phase\": \"discovering\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}], \"expected\": [{\"phase\": \"discovering\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}], \"passed\": true}, {\"check\": \"discovering/offer\", \"actual\": [{\"phase\": \"offered\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"offered\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"offered/select\", \"actual\": [{\"phase\": \"requesting\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"REQUEST_ADDRESS\", 2]]}], \"expected\": [{\"phase\": \"requesting\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"REQUEST_ADDRESS\", 2]]}], \"passed\": true}, {\"check\": \"requesting/ack\", \"actual\": [{\"phase\": \"bound\", \"registers\": {\"address\": 2, \"expiry\": 6, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"bound\", \"registers\": {\"address\": 2, \"expiry\": 6, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"requesting/nack\", \"actual\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"bound/renew_due\", \"actual\": [{\"phase\": \"renewing\", \"registers\": {\"address\": 1, \"expiry\": 3, \"selected\": 2, \"offers\": [2, 3], \"announced\": true, \"released\": false}, \"frames\": [[\"RENEW_ADDRESS\", 1]]}], \"expected\": [{\"phase\": \"renewing\", \"registers\": {\"address\": 1, \"expiry\": 3, \"selected\": 2, \"offers\": [2, 3], \"announced\": true, \"released\": false}, \"frames\": [[\"RENEW_ADDRESS\", 1]]}], \"passed\": true}, {\"check\": \"renewing/renew_ack\", \"actual\": [{\"phase\": \"bound\", \"registers\": {\"address\": 1, \"expiry\": 6, \"selected\": 2, \"offers\": [2, 3], \"announced\": true, \"released\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"bound\", \"registers\": {\"address\": 1, \"expiry\": 6, \"selected\": 2, \"offers\": [2, 3], \"announced\": true, \"released\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"renewing/expired\", \"actual\": [{\"phase\": \"bound\", \"registers\": {\"address\": 1, \"expiry\": 3, \"selected\": 2, \"offers\": [2, 3], \"announced\": true, \"released\": false}, \"frames\": [[\"DATA\", 1, [1, 2, 3]]]}], \"expected\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": 3, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}], \"passed\": false}, {\"check\": \"bound/conflict_detected\", \"actual\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": 3, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DECLINE\", 1]]}], \"expected\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": 3, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DECLINE\", 1]]}], \"passed\": true}, {\"check\": \"bound/release\", \"actual\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": 3, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": true}, \"frames\": [[\"RELEASE\", 1]]}], \"expected\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": 3, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": true}, \"frames\": [[\"RELEASE\", 1]]}], \"passed\": true}, {\"check\": \"ordered trace 0\", \"actual\": [{\"phase\": \"discovering\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}, {\"phase\": \"offered\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}, {\"phase\": \"requesting\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1], [\"REQUEST_ADDRESS\", 2]]}, {\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1], [\"REQUEST_ADDRESS\", 2]]}], \"expected\": [{\"phase\": \"discovering\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}, {\"phase\": \"offered\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}, {\"phase\": \"requesting\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1], [\"REQUEST_ADDRESS\", 2]]}, {\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1], [\"REQUEST_ADDRESS\", 2]]}], \"passed\": true}, {\"check\": \"ordered trace 3\", \"actual\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}, {\"phase\": \"discovering\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}, {\"phase\": \"offered\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}, {\"phase\": \"requesting\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1], [\"REQUEST_ADDRESS\", 2]]}], \"expected\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}, {\"phase\": \"discovering\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}, {\"phase\": \"offered\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}, {\"phase\": \"requesting\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1], [\"REQUEST_ADDRESS\", 2]]}], \"passed\": true}, {\"check\": \"empty input\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unknown event\", \"actual\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"expected\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.661,"exit_code":0,"observations":[{"actual":[{"frames":[["DISCOVER",1]],"phase":"discovering","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}}],"check":"unassigned/solicit","expected":[{"frames":[["DISCOVER",1]],"phase":"discovering","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}}],"passed":true},{"actual":[{"frames":[],"phase":"offered","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}}],"check":"discovering/offer","expected":[{"frames":[],"phase":"offered","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}}],"passed":true},{"actual":[{"frames":[["REQUEST_ADDRESS",2]],"phase":"requesting","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}}],"check":"offered/select","expected":[{"frames":[["REQUEST_ADDRESS",2]],"phase":"requesting","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}}],"passed":true},{"actual":[{"frames":[],"phase":"bound","registers":{"address":2,"announced":false,"expiry":6,"offers":[2,3],"released":false,"selected":2}}],"check":"requesting/ack","expected":[{"frames":[],"phase":"bound","registers":{"address":2,"announced":false,"expiry":6,"offers":[2,3],"released":false,"selected":2}}],"passed":true},{"actual":[{"frames":[],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}}],"check":"requesting/nack","expected":[{"frames":[],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}}],"passed":true},{"actual":[{"frames":[["RENEW_ADDRESS",1]],"phase":"renewing","registers":{"address":1,"announced":true,"expiry":3,"offers":[2,3],"released":false,"selected":2}}],"check":"bound/renew_due","expected":[{"frames":[["RENEW_ADDRESS",1]],"phase":"renewing","registers":{"address":1,"announced":true,"expiry":3,"offers":[2,3],"released":false,"selected":2}}],"passed":true},{"actual":[{"frames":[],"phase":"bound","registers":{"address":1,"announced":true,"expiry":6,"offers":[2,3],"released":false,"selected":2}}],"check":"renewing/renew_ack","expected":[{"frames":[],"phase":"bound","registers":{"address":1,"announced":true,"expiry":6,"offers":[2,3],"released":false,"selected":2}}],"passed":true},{"actual":[{"frames":[],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":3,"offers":[2,3],"released":false,"selected":2}}],"check":"renewing/expired","expected":[{"frames":[],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":3,"offers":[2,3],"released":false,"selected":2}}],"passed":true},{"actual":[{"frames":[["DECLINE",1]],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":3,"offers":[2,3],"released":false,"selected":2}}],"check":"bound/conflict_detected","expected":[{"frames":[["DECLINE",1]],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":3,"offers":[2,3],"released":false,"selected":2}}],"passed":true},{"actual":[{"frames":[["RELEASE",1]],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":3,"offers":[2,3],"released":true,"selected":2}}],"check":"bound/release","expected":[{"frames":[["RELEASE",1]],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":3,"offers":[2,3],"released":true,"selected":2}}],"passed":true},{"actual":[{"frames":[["DISCOVER",1]],"phase":"discovering","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}},{"frames":[["DISCOVER",1]],"phase":"offered","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}},{"frames":[["DISCOVER",1],["REQUEST_ADDRESS",2]],"phase":"requesting","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}},{"frames":[["DISCOVER",1],["REQUEST_ADDRESS",2]],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}}],"check":"ordered trace 0","expected":[{"frames":[["DISCOVER",1]],"phase":"discovering","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}},{"frames":[["DISCOVER",1]],"phase":"offered","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}},{"frames":[["DISCOVER",1],["REQUEST_ADDRESS",2]],"phase":"requesting","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}},{"frames":[["DISCOVER",1],["REQUEST_ADDRESS",2]],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}}],"passed":true},{"actual":[{"frames":[],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}},{"frames":[["DISCOVER",1]],"phase":"discovering","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}},{"frames":[["DISCOVER",1]],"phase":"offered","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}},{"frames":[["DISCOVER",1],["REQUEST_ADDRESS",2]],"phase":"requesting","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}}],"check":"ordered trace 3","expected":[{"frames":[],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}},{"frames":[["DISCOVER",1]],"phase":"discovering","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}},{"frames":[["DISCOVER",1]],"phase":"offered","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}},{"frames":[["DISCOVER",1],["REQUEST_ADDRESS",2]],"phase":"requesting","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":2}}],"passed":true},{"actual":[],"check":"empty input","expected":[],"passed":true},{"actual":[{"frames":[["reject",[1,2,3]]],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}}],"check":"unknown event","expected":[{"frames":[["reject",[1,2,3]]],"phase":"unassigned","registers":{"address":null,"announced":false,"expiry":null,"offers":[2,3],"released":false,"selected":null}}],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"unassigned/solicit\", \"actual\": [{\"phase\": \"discovering\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}], \"expected\": [{\"phase\": \"discovering\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}], \"passed\": true}, {\"check\": \"discovering/offer\", \"actual\": [{\"phase\": \"offered\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"offered\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"offered/select\", \"actual\": [{\"phase\": \"requesting\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"REQUEST_ADDRESS\", 2]]}], \"expected\": [{\"phase\": \"requesting\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"REQUEST_ADDRESS\", 2]]}], \"passed\": true}, {\"check\": \"requesting/ack\", \"actual\": [{\"phase\": \"bound\", \"registers\": {\"address\": 2, \"expiry\": 6, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"bound\", \"registers\": {\"address\": 2, \"expiry\": 6, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"requesting/nack\", \"actual\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"bound/renew_due\", \"actual\": [{\"phase\": \"renewing\", \"registers\": {\"address\": 1, \"expiry\": 3, \"selected\": 2, \"offers\": [2, 3], \"announced\": true, \"released\": false}, \"frames\": [[\"RENEW_ADDRESS\", 1]]}], \"expected\": [{\"phase\": \"renewing\", \"registers\": {\"address\": 1, \"expiry\": 3, \"selected\": 2, \"offers\": [2, 3], \"announced\": true, \"released\": false}, \"frames\": [[\"RENEW_ADDRESS\", 1]]}], \"passed\": true}, {\"check\": \"renewing/renew_ack\", \"actual\": [{\"phase\": \"bound\", \"registers\": {\"address\": 1, \"expiry\": 6, \"selected\": 2, \"offers\": [2, 3], \"announced\": true, \"released\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"bound\", \"registers\": {\"address\": 1, \"expiry\": 6, \"selected\": 2, \"offers\": [2, 3], \"announced\": true, \"released\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"renewing/expired\", \"actual\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": 3, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": 3, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"bound/conflict_detected\", \"actual\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": 3, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DECLINE\", 1]]}], \"expected\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": 3, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DECLINE\", 1]]}], \"passed\": true}, {\"check\": \"bound/release\", \"actual\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": 3, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": true}, \"frames\": [[\"RELEASE\", 1]]}], \"expected\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": 3, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": true}, \"frames\": [[\"RELEASE\", 1]]}], \"passed\": true}, {\"check\": \"ordered trace 0\", \"actual\": [{\"phase\": \"discovering\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}, {\"phase\": \"offered\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}, {\"phase\": \"requesting\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1], [\"REQUEST_ADDRESS\", 2]]}, {\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1], [\"REQUEST_ADDRESS\", 2]]}], \"expected\": [{\"phase\": \"discovering\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}, {\"phase\": \"offered\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}, {\"phase\": \"requesting\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1], [\"REQUEST_ADDRESS\", 2]]}, {\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1], [\"REQUEST_ADDRESS\", 2]]}], \"passed\": true}, {\"check\": \"ordered trace 3\", \"actual\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}, {\"phase\": \"discovering\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}, {\"phase\": \"offered\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}, {\"phase\": \"requesting\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1], [\"REQUEST_ADDRESS\", 2]]}], \"expected\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": []}, {\"phase\": \"discovering\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}, {\"phase\": \"offered\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1]]}, {\"phase\": \"requesting\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": 2, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"DISCOVER\", 1], [\"REQUEST_ADDRESS\", 2]]}], \"passed\": true}, {\"check\": \"empty input\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unknown event\", \"actual\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"expected\": [{\"phase\": \"unassigned\", \"registers\": {\"address\": null, \"expiry\": null, \"selected\": null, \"offers\": [2, 3], \"announced\": false, \"released\": false}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}