{"abstract":"While snapshotting, event listing_end produces snapshotting/wait instead of live/publish_listing.","category":"Protocols","checks":14,"contract":"For the stipulated Service-discovery watch lifecycle 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-discovery_watch","failed_approach":"The partial repair chooses live/publish_last_only, which still violates this phase-specific event contract.","family":"s3-protocols-discovery_watch-snapshotting-listing_end","id":"FA-20051","implementations":{"attempt":{"sha256":"e58ed284071f73dd54686f6bb91c4eca972e871fafa80a6036dc5956686c4114","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 = {'listing': ['stale'] if phase=='live' else [], 'staged': ['first'] if phase=='snapshotting' else [], 'tombstones': [], 'notifications': [], 'watch_owned': phase!='closed'}\n    frames = []\n    observed = []\n    table = {('idle', 'start_watch'): ('snapshotting', 'request_listing'), ('snapshotting', 'listed_service'): ('snapshotting', 'stage_service'), ('snapshotting', 'listing_end'): ('live', 'publish_last_only'), ('live', 'service_added'): ('live', 'insert_notify'), ('live', 'service_removed'): ('live', 'remove_notify'), ('live', 'watch_gap'): ('snapshotting', 'clear_request_listing'), ('live', 'lease_expired'): ('live', 'expire_notify'), ('live', 'stop_watch'): ('closed', 'release_watch'), ('closed', 'service_added'): ('closed', 'ignore_closed'), ('snapshotting', 'service_removed'): ('snapshotting', 'record_tombstone')}\n    for event in events:\n        phase, action = table.get((phase, event), (phase, \"reject\"))\n        if action == 'request_listing':\n            frames.append(['LIST',seed])\n        elif action == 'stage_service':\n            r['staged'].append('svc'+str(seed))\n        elif action == 'publish_listing':\n            r['listing']=[x for x in r['staged'] if x not in r['tombstones']]; r['notifications'].append(r['listing'][:])\n        elif action == 'insert_notify':\n            r['listing'].append('svc'+str(seed)); r['notifications'].append(['add','svc'+str(seed)])\n        elif action == 'remove_notify':\n            r['listing']=[]; r['notifications'].append(['remove','stale'])\n        elif action == 'clear_request_listing':\n            r['listing']=[]; r['staged']=[]; frames.append(['LIST',seed])\n        elif action == 'expire_notify':\n            r['listing']=[]; r['notifications'].append(['expired','stale'])\n        elif action == 'release_watch':\n            r['watch_owned']=False\n        elif action == 'ignore_closed':\n            frames.append(['IGNORED_CLOSED',seed])\n        elif action == 'record_tombstone':\n            r['tombstones'].append('svc'+str(seed))\n        elif action == 'publish_ready':\n            r['notifications'].append('ready')\n        elif action == 'request_delta':\n            frames.append(['DELTA',seed])\n        elif action == 'publish_service':\n            r['notifications'].append('svc'+str(seed))\n        elif action == 'replace_listing':\n            r['staged']=['svc'+str(seed)]\n        elif action == 'publish_last_only':\n            r['listing']=r['staged'][-1:]\n        elif action == 'replace_all':\n            r['listing']=['svc'+str(seed)]\n        elif action == 'insert_silent':\n            r['listing'].append('svc'+str(seed))\n        elif action == 'notify_without_remove':\n            r['notifications'].append(['remove','stale'])\n        elif action == 'merge_listing':\n            r['listing'].extend(r['staged'])\n        elif action == 'refresh_lease':\n            frames.append(['REFRESH','stale'])\n        elif action == 'expire_silent':\n            r['listing']=[]\n        elif action == 'publish_remove':\n            r['notifications'].append(['remove','svc'+str(seed)])\n        elif action == 'continue':\n            r['notifications'].append(['add','svc'+str(seed)])\n        else:\n            if action not in (\"wait\", \"ignore\", \"keep\", \"retain\", \"keep_peer\", \"keep_offer\", \"keep_hold\", \"keep_batch\", \"retain_staging\", \"keep_staging\", \"keep_local_owner\", \"keep_old_session\", \"keep_address\", \"keep_old_expiry\", \"ignore_conflict\", \"keep_service\", \"keep_subscription\", \"retain_shadow\", \"keep_live\", \"keep_suspicion\", \"keep_roles\", \"keep_staged\"):\n                frames.append([action, payload[:]])\n        observed.append(json.loads(json.dumps({\"phase\": phase, \"registers\": r, \"frames\": frames})))\n    return observed\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {1: [('idle/start_watch', 'idle', ['start_watch'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 1]]}]), ('snapshotting/listed_service', 'snapshotting', ['listed_service'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first', 'svc1'], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('snapshotting/listing_end', 'snapshotting', ['listing_end'], [{'phase': 'live', 'registers': {'listing': ['first'], 'staged': ['first'], 'tombstones': [], 'notifications': [['first']], 'watch_owned': True}, 'frames': []}]), ('live/service_added', 'live', ['service_added'], [{'phase': 'live', 'registers': {'listing': ['stale', 'svc1'], 'staged': [], 'tombstones': [], 'notifications': [['add', 'svc1']], 'watch_owned': True}, 'frames': []}]), ('live/service_removed', 'live', ['service_removed'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['remove', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/watch_gap', 'live', ['watch_gap'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 1]]}]), ('live/lease_expired', 'live', ['lease_expired'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/stop_watch', 'live', ['stop_watch'], [{'phase': 'closed', 'registers': {'listing': ['stale'], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': []}]), ('closed/service_added', 'closed', ['service_added'], [{'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 1]]}]), ('snapshotting/service_removed', 'snapshotting', ['service_removed'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first'], 'tombstones': ['svc1'], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('ordered trace 0', 'idle', ['start_watch', 'listing_end', 'watch_gap', 'listed_service'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 1]]}, {'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 1]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 1], ['LIST', 1]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['svc1'], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 1], ['LIST', 1]]}]), ('ordered trace 3', 'live', ['lease_expired', 'stop_watch', 'service_added', 'service_added'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 1]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 1], ['IGNORED_CLOSED', 1]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['reject', [1, 2, 3]]]}])], 2: [('idle/start_watch', 'idle', ['start_watch'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 2]]}]), ('snapshotting/listed_service', 'snapshotting', ['listed_service'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first', 'svc2'], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('snapshotting/listing_end', 'snapshotting', ['listing_end'], [{'phase': 'live', 'registers': {'listing': ['first'], 'staged': ['first'], 'tombstones': [], 'notifications': [['first']], 'watch_owned': True}, 'frames': []}]), ('live/service_added', 'live', ['service_added'], [{'phase': 'live', 'registers': {'listing': ['stale', 'svc2'], 'staged': [], 'tombstones': [], 'notifications': [['add', 'svc2']], 'watch_owned': True}, 'frames': []}]), ('live/service_removed', 'live', ['service_removed'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['remove', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/watch_gap', 'live', ['watch_gap'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 2]]}]), ('live/lease_expired', 'live', ['lease_expired'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/stop_watch', 'live', ['stop_watch'], [{'phase': 'closed', 'registers': {'listing': ['stale'], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': []}]), ('closed/service_added', 'closed', ['service_added'], [{'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 2]]}]), ('snapshotting/service_removed', 'snapshotting', ['service_removed'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first'], 'tombstones': ['svc2'], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('ordered trace 0', 'idle', ['start_watch', 'listing_end', 'watch_gap', 'listed_service', 'listing_end'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 2]]}, {'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 2]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 2], ['LIST', 2]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['svc2'], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 2], ['LIST', 2]]}, {'phase': 'live', 'registers': {'listing': ['svc2'], 'staged': ['svc2'], 'tombstones': [], 'notifications': [[], ['svc2']], 'watch_owned': True}, 'frames': [['LIST', 2], ['LIST', 2]]}]), ('ordered trace 3', 'live', ['lease_expired', 'stop_watch', 'service_added', 'service_added', 'service_added'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 2]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 2], ['IGNORED_CLOSED', 2]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 2], ['IGNORED_CLOSED', 2], ['IGNORED_CLOSED', 2]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['reject', [2, 3, 4, 5]]]}])], 3: [('idle/start_watch', 'idle', ['start_watch'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 3]]}]), ('snapshotting/listed_service', 'snapshotting', ['listed_service'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first', 'svc3'], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('snapshotting/listing_end', 'snapshotting', ['listing_end'], [{'phase': 'live', 'registers': {'listing': ['first'], 'staged': ['first'], 'tombstones': [], 'notifications': [['first']], 'watch_owned': True}, 'frames': []}]), ('live/service_added', 'live', ['service_added'], [{'phase': 'live', 'registers': {'listing': ['stale', 'svc3'], 'staged': [], 'tombstones': [], 'notifications': [['add', 'svc3']], 'watch_owned': True}, 'frames': []}]), ('live/service_removed', 'live', ['service_removed'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['remove', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/watch_gap', 'live', ['watch_gap'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 3]]}]), ('live/lease_expired', 'live', ['lease_expired'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/stop_watch', 'live', ['stop_watch'], [{'phase': 'closed', 'registers': {'listing': ['stale'], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': []}]), ('closed/service_added', 'closed', ['service_added'], [{'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 3]]}]), ('snapshotting/service_removed', 'snapshotting', ['service_removed'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first'], 'tombstones': ['svc3'], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('ordered trace 0', 'idle', ['start_watch', 'listing_end', 'watch_gap', 'listed_service', 'listing_end', 'service_added'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 3]]}, {'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 3]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 3], ['LIST', 3]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['svc3'], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 3], ['LIST', 3]]}, {'phase': 'live', 'registers': {'listing': ['svc3'], 'staged': ['svc3'], 'tombstones': [], 'notifications': [[], ['svc3']], 'watch_owned': True}, 'frames': [['LIST', 3], ['LIST', 3]]}, {'phase': 'live', 'registers': {'listing': ['svc3', 'svc3'], 'staged': ['svc3'], 'tombstones': [], 'notifications': [[], ['svc3'], ['add', 'svc3']], 'watch_owned': True}, 'frames': [['LIST', 3], ['LIST', 3]]}]), ('ordered trace 3', 'live', ['lease_expired', 'stop_watch', 'service_added', 'service_added', 'service_added', 'service_added'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 3]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 3], ['IGNORED_CLOSED', 3]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 3], ['IGNORED_CLOSED', 3], ['IGNORED_CLOSED', 3]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 3], ['IGNORED_CLOSED', 3], ['IGNORED_CLOSED', 3], ['IGNORED_CLOSED', 3]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['reject', [3, 4, 5, 6, 7]]]}])], 4: [('idle/start_watch', 'idle', ['start_watch'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 4]]}]), ('snapshotting/listed_service', 'snapshotting', ['listed_service'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first', 'svc4'], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('snapshotting/listing_end', 'snapshotting', ['listing_end'], [{'phase': 'live', 'registers': {'listing': ['first'], 'staged': ['first'], 'tombstones': [], 'notifications': [['first']], 'watch_owned': True}, 'frames': []}]), ('live/service_added', 'live', ['service_added'], [{'phase': 'live', 'registers': {'listing': ['stale', 'svc4'], 'staged': [], 'tombstones': [], 'notifications': [['add', 'svc4']], 'watch_owned': True}, 'frames': []}]), ('live/service_removed', 'live', ['service_removed'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['remove', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/watch_gap', 'live', ['watch_gap'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 4]]}]), ('live/lease_expired', 'live', ['lease_expired'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/stop_watch', 'live', ['stop_watch'], [{'phase': 'closed', 'registers': {'listing': ['stale'], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': []}]), ('closed/service_added', 'closed', ['service_added'], [{'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 4]]}]), ('snapshotting/service_removed', 'snapshotting', ['service_removed'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first'], 'tombstones': ['svc4'], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('ordered trace 0', 'idle', ['start_watch', 'listing_end', 'watch_gap', 'listed_service', 'listing_end', 'service_added', 'service_removed'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 4]]}, {'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 4]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 4], ['LIST', 4]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['svc4'], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 4], ['LIST', 4]]}, {'phase': 'live', 'registers': {'listing': ['svc4'], 'staged': ['svc4'], 'tombstones': [], 'notifications': [[], ['svc4']], 'watch_owned': True}, 'frames': [['LIST', 4], ['LIST', 4]]}, {'phase': 'live', 'registers': {'listing': ['svc4', 'svc4'], 'staged': ['svc4'], 'tombstones': [], 'notifications': [[], ['svc4'], ['add', 'svc4']], 'watch_owned': True}, 'frames': [['LIST', 4], ['LIST', 4]]}, {'phase': 'live', 'registers': {'listing': [], 'staged': ['svc4'], 'tombstones': [], 'notifications': [[], ['svc4'], ['add', 'svc4'], ['remove', 'stale']], 'watch_owned': True}, 'frames': [['LIST', 4], ['LIST', 4]]}]), ('ordered trace 3', 'live', ['lease_expired', 'stop_watch', 'service_added', 'service_added', 'service_added', 'service_added', 'service_added'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 4]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['reject', [4, 5, 6, 7, 8, 9]]]}])], 5: [('idle/start_watch', 'idle', ['start_watch'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 5]]}]), ('snapshotting/listed_service', 'snapshotting', ['listed_service'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first', 'svc5'], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('snapshotting/listing_end', 'snapshotting', ['listing_end'], [{'phase': 'live', 'registers': {'listing': ['first'], 'staged': ['first'], 'tombstones': [], 'notifications': [['first']], 'watch_owned': True}, 'frames': []}]), ('live/service_added', 'live', ['service_added'], [{'phase': 'live', 'registers': {'listing': ['stale', 'svc5'], 'staged': [], 'tombstones': [], 'notifications': [['add', 'svc5']], 'watch_owned': True}, 'frames': []}]), ('live/service_removed', 'live', ['service_removed'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['remove', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/watch_gap', 'live', ['watch_gap'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 5]]}]), ('live/lease_expired', 'live', ['lease_expired'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/stop_watch', 'live', ['stop_watch'], [{'phase': 'closed', 'registers': {'listing': ['stale'], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': []}]), ('closed/service_added', 'closed', ['service_added'], [{'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 5]]}]), ('snapshotting/service_removed', 'snapshotting', ['service_removed'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first'], 'tombstones': ['svc5'], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('ordered trace 0', 'idle', ['start_watch', 'listing_end', 'watch_gap', 'listed_service', 'listing_end', 'service_added', 'service_removed', 'watch_gap'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 5]]}, {'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 5]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 5], ['LIST', 5]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['svc5'], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 5], ['LIST', 5]]}, {'phase': 'live', 'registers': {'listing': ['svc5'], 'staged': ['svc5'], 'tombstones': [], 'notifications': [[], ['svc5']], 'watch_owned': True}, 'frames': [['LIST', 5], ['LIST', 5]]}, {'phase': 'live', 'registers': {'listing': ['svc5', 'svc5'], 'staged': ['svc5'], 'tombstones': [], 'notifications': [[], ['svc5'], ['add', 'svc5']], 'watch_owned': True}, 'frames': [['LIST', 5], ['LIST', 5]]}, {'phase': 'live', 'registers': {'listing': [], 'staged': ['svc5'], 'tombstones': [], 'notifications': [[], ['svc5'], ['add', 'svc5'], ['remove', 'stale']], 'watch_owned': True}, 'frames': [['LIST', 5], ['LIST', 5]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[], ['svc5'], ['add', 'svc5'], ['remove', 'stale']], 'watch_owned': True}, 'frames': [['LIST', 5], ['LIST', 5], ['LIST', 5]]}]), ('ordered trace 3', 'live', ['lease_expired', 'stop_watch', 'service_added', 'service_added', 'service_added', 'service_added', 'service_added', 'service_added'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 5]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, '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":"1b1d93923f433c0c432a5d32a05aed90bb946a0fadbd8624277b00fffeb645e3","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 = {'listing': ['stale'] if phase=='live' else [], 'staged': ['first'] if phase=='snapshotting' else [], 'tombstones': [], 'notifications': [], 'watch_owned': phase!='closed'}\n    frames = []\n    observed = []\n    table = {('idle', 'start_watch'): ('snapshotting', 'request_listing'), ('snapshotting', 'listed_service'): ('snapshotting', 'stage_service'), ('snapshotting', 'listing_end'): ('snapshotting', 'wait'), ('live', 'service_added'): ('live', 'insert_notify'), ('live', 'service_removed'): ('live', 'remove_notify'), ('live', 'watch_gap'): ('snapshotting', 'clear_request_listing'), ('live', 'lease_expired'): ('live', 'expire_notify'), ('live', 'stop_watch'): ('closed', 'release_watch'), ('closed', 'service_added'): ('closed', 'ignore_closed'), ('snapshotting', 'service_removed'): ('snapshotting', 'record_tombstone')}\n    for event in events:\n        phase, action = table.get((phase, event), (phase, \"reject\"))\n        if action == 'request_listing':\n            frames.append(['LIST',seed])\n        elif action == 'stage_service':\n            r['staged'].append('svc'+str(seed))\n        elif action == 'publish_listing':\n            r['listing']=[x for x in r['staged'] if x not in r['tombstones']]; r['notifications'].append(r['listing'][:])\n        elif action == 'insert_notify':\n            r['listing'].append('svc'+str(seed)); r['notifications'].append(['add','svc'+str(seed)])\n        elif action == 'remove_notify':\n            r['listing']=[]; r['notifications'].append(['remove','stale'])\n        elif action == 'clear_request_listing':\n            r['listing']=[]; r['staged']=[]; frames.append(['LIST',seed])\n        elif action == 'expire_notify':\n            r['listing']=[]; r['notifications'].append(['expired','stale'])\n        elif action == 'release_watch':\n            r['watch_owned']=False\n        elif action == 'ignore_closed':\n            frames.append(['IGNORED_CLOSED',seed])\n        elif action == 'record_tombstone':\n            r['tombstones'].append('svc'+str(seed))\n        elif action == 'publish_ready':\n            r['notifications'].append('ready')\n        elif action == 'request_delta':\n            frames.append(['DELTA',seed])\n        elif action == 'publish_service':\n            r['notifications'].append('svc'+str(seed))\n        elif action == 'replace_listing':\n            r['staged']=['svc'+str(seed)]\n        elif action == 'publish_last_only':\n            r['listing']=r['staged'][-1:]\n        elif action == 'replace_all':\n            r['listing']=['svc'+str(seed)]\n        elif action == 'insert_silent':\n            r['listing'].append('svc'+str(seed))\n        elif action == 'notify_without_remove':\n            r['notifications'].append(['remove','stale'])\n        elif action == 'merge_listing':\n            r['listing'].extend(r['staged'])\n        elif action == 'refresh_lease':\n            frames.append(['REFRESH','stale'])\n        elif action == 'expire_silent':\n            r['listing']=[]\n        elif action == 'publish_remove':\n            r['notifications'].append(['remove','svc'+str(seed)])\n        elif action == 'continue':\n            r['notifications'].append(['add','svc'+str(seed)])\n        else:\n            if action not in (\"wait\", \"ignore\", \"keep\", \"retain\", \"keep_peer\", \"keep_offer\", \"keep_hold\", \"keep_batch\", \"retain_staging\", \"keep_staging\", \"keep_local_owner\", \"keep_old_session\", \"keep_address\", \"keep_old_expiry\", \"ignore_conflict\", \"keep_service\", \"keep_subscription\", \"retain_shadow\", \"keep_live\", \"keep_suspicion\", \"keep_roles\", \"keep_staged\"):\n                frames.append([action, payload[:]])\n        observed.append(json.loads(json.dumps({\"phase\": phase, \"registers\": r, \"frames\": frames})))\n    return observed\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {1: [('idle/start_watch', 'idle', ['start_watch'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 1]]}]), ('snapshotting/listed_service', 'snapshotting', ['listed_service'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first', 'svc1'], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('snapshotting/listing_end', 'snapshotting', ['listing_end'], [{'phase': 'live', 'registers': {'listing': ['first'], 'staged': ['first'], 'tombstones': [], 'notifications': [['first']], 'watch_owned': True}, 'frames': []}]), ('live/service_added', 'live', ['service_added'], [{'phase': 'live', 'registers': {'listing': ['stale', 'svc1'], 'staged': [], 'tombstones': [], 'notifications': [['add', 'svc1']], 'watch_owned': True}, 'frames': []}]), ('live/service_removed', 'live', ['service_removed'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['remove', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/watch_gap', 'live', ['watch_gap'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 1]]}]), ('live/lease_expired', 'live', ['lease_expired'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/stop_watch', 'live', ['stop_watch'], [{'phase': 'closed', 'registers': {'listing': ['stale'], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': []}]), ('closed/service_added', 'closed', ['service_added'], [{'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 1]]}]), ('snapshotting/service_removed', 'snapshotting', ['service_removed'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first'], 'tombstones': ['svc1'], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('ordered trace 0', 'idle', ['start_watch', 'listing_end', 'watch_gap', 'listed_service'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 1]]}, {'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 1]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 1], ['LIST', 1]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['svc1'], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 1], ['LIST', 1]]}]), ('ordered trace 3', 'live', ['lease_expired', 'stop_watch', 'service_added', 'service_added'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 1]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 1], ['IGNORED_CLOSED', 1]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['reject', [1, 2, 3]]]}])], 2: [('idle/start_watch', 'idle', ['start_watch'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 2]]}]), ('snapshotting/listed_service', 'snapshotting', ['listed_service'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first', 'svc2'], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('snapshotting/listing_end', 'snapshotting', ['listing_end'], [{'phase': 'live', 'registers': {'listing': ['first'], 'staged': ['first'], 'tombstones': [], 'notifications': [['first']], 'watch_owned': True}, 'frames': []}]), ('live/service_added', 'live', ['service_added'], [{'phase': 'live', 'registers': {'listing': ['stale', 'svc2'], 'staged': [], 'tombstones': [], 'notifications': [['add', 'svc2']], 'watch_owned': True}, 'frames': []}]), ('live/service_removed', 'live', ['service_removed'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['remove', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/watch_gap', 'live', ['watch_gap'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 2]]}]), ('live/lease_expired', 'live', ['lease_expired'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/stop_watch', 'live', ['stop_watch'], [{'phase': 'closed', 'registers': {'listing': ['stale'], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': []}]), ('closed/service_added', 'closed', ['service_added'], [{'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 2]]}]), ('snapshotting/service_removed', 'snapshotting', ['service_removed'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first'], 'tombstones': ['svc2'], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('ordered trace 0', 'idle', ['start_watch', 'listing_end', 'watch_gap', 'listed_service', 'listing_end'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 2]]}, {'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 2]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 2], ['LIST', 2]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['svc2'], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 2], ['LIST', 2]]}, {'phase': 'live', 'registers': {'listing': ['svc2'], 'staged': ['svc2'], 'tombstones': [], 'notifications': [[], ['svc2']], 'watch_owned': True}, 'frames': [['LIST', 2], ['LIST', 2]]}]), ('ordered trace 3', 'live', ['lease_expired', 'stop_watch', 'service_added', 'service_added', 'service_added'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 2]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 2], ['IGNORED_CLOSED', 2]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 2], ['IGNORED_CLOSED', 2], ['IGNORED_CLOSED', 2]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['reject', [2, 3, 4, 5]]]}])], 3: [('idle/start_watch', 'idle', ['start_watch'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 3]]}]), ('snapshotting/listed_service', 'snapshotting', ['listed_service'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first', 'svc3'], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('snapshotting/listing_end', 'snapshotting', ['listing_end'], [{'phase': 'live', 'registers': {'listing': ['first'], 'staged': ['first'], 'tombstones': [], 'notifications': [['first']], 'watch_owned': True}, 'frames': []}]), ('live/service_added', 'live', ['service_added'], [{'phase': 'live', 'registers': {'listing': ['stale', 'svc3'], 'staged': [], 'tombstones': [], 'notifications': [['add', 'svc3']], 'watch_owned': True}, 'frames': []}]), ('live/service_removed', 'live', ['service_removed'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['remove', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/watch_gap', 'live', ['watch_gap'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 3]]}]), ('live/lease_expired', 'live', ['lease_expired'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/stop_watch', 'live', ['stop_watch'], [{'phase': 'closed', 'registers': {'listing': ['stale'], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': []}]), ('closed/service_added', 'closed', ['service_added'], [{'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 3]]}]), ('snapshotting/service_removed', 'snapshotting', ['service_removed'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first'], 'tombstones': ['svc3'], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('ordered trace 0', 'idle', ['start_watch', 'listing_end', 'watch_gap', 'listed_service', 'listing_end', 'service_added'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 3]]}, {'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 3]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 3], ['LIST', 3]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['svc3'], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 3], ['LIST', 3]]}, {'phase': 'live', 'registers': {'listing': ['svc3'], 'staged': ['svc3'], 'tombstones': [], 'notifications': [[], ['svc3']], 'watch_owned': True}, 'frames': [['LIST', 3], ['LIST', 3]]}, {'phase': 'live', 'registers': {'listing': ['svc3', 'svc3'], 'staged': ['svc3'], 'tombstones': [], 'notifications': [[], ['svc3'], ['add', 'svc3']], 'watch_owned': True}, 'frames': [['LIST', 3], ['LIST', 3]]}]), ('ordered trace 3', 'live', ['lease_expired', 'stop_watch', 'service_added', 'service_added', 'service_added', 'service_added'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 3]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 3], ['IGNORED_CLOSED', 3]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 3], ['IGNORED_CLOSED', 3], ['IGNORED_CLOSED', 3]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 3], ['IGNORED_CLOSED', 3], ['IGNORED_CLOSED', 3], ['IGNORED_CLOSED', 3]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['reject', [3, 4, 5, 6, 7]]]}])], 4: [('idle/start_watch', 'idle', ['start_watch'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 4]]}]), ('snapshotting/listed_service', 'snapshotting', ['listed_service'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first', 'svc4'], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('snapshotting/listing_end', 'snapshotting', ['listing_end'], [{'phase': 'live', 'registers': {'listing': ['first'], 'staged': ['first'], 'tombstones': [], 'notifications': [['first']], 'watch_owned': True}, 'frames': []}]), ('live/service_added', 'live', ['service_added'], [{'phase': 'live', 'registers': {'listing': ['stale', 'svc4'], 'staged': [], 'tombstones': [], 'notifications': [['add', 'svc4']], 'watch_owned': True}, 'frames': []}]), ('live/service_removed', 'live', ['service_removed'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['remove', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/watch_gap', 'live', ['watch_gap'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 4]]}]), ('live/lease_expired', 'live', ['lease_expired'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/stop_watch', 'live', ['stop_watch'], [{'phase': 'closed', 'registers': {'listing': ['stale'], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': []}]), ('closed/service_added', 'closed', ['service_added'], [{'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 4]]}]), ('snapshotting/service_removed', 'snapshotting', ['service_removed'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first'], 'tombstones': ['svc4'], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('ordered trace 0', 'idle', ['start_watch', 'listing_end', 'watch_gap', 'listed_service', 'listing_end', 'service_added', 'service_removed'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 4]]}, {'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 4]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 4], ['LIST', 4]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['svc4'], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 4], ['LIST', 4]]}, {'phase': 'live', 'registers': {'listing': ['svc4'], 'staged': ['svc4'], 'tombstones': [], 'notifications': [[], ['svc4']], 'watch_owned': True}, 'frames': [['LIST', 4], ['LIST', 4]]}, {'phase': 'live', 'registers': {'listing': ['svc4', 'svc4'], 'staged': ['svc4'], 'tombstones': [], 'notifications': [[], ['svc4'], ['add', 'svc4']], 'watch_owned': True}, 'frames': [['LIST', 4], ['LIST', 4]]}, {'phase': 'live', 'registers': {'listing': [], 'staged': ['svc4'], 'tombstones': [], 'notifications': [[], ['svc4'], ['add', 'svc4'], ['remove', 'stale']], 'watch_owned': True}, 'frames': [['LIST', 4], ['LIST', 4]]}]), ('ordered trace 3', 'live', ['lease_expired', 'stop_watch', 'service_added', 'service_added', 'service_added', 'service_added', 'service_added'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 4]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['reject', [4, 5, 6, 7, 8, 9]]]}])], 5: [('idle/start_watch', 'idle', ['start_watch'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 5]]}]), ('snapshotting/listed_service', 'snapshotting', ['listed_service'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first', 'svc5'], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('snapshotting/listing_end', 'snapshotting', ['listing_end'], [{'phase': 'live', 'registers': {'listing': ['first'], 'staged': ['first'], 'tombstones': [], 'notifications': [['first']], 'watch_owned': True}, 'frames': []}]), ('live/service_added', 'live', ['service_added'], [{'phase': 'live', 'registers': {'listing': ['stale', 'svc5'], 'staged': [], 'tombstones': [], 'notifications': [['add', 'svc5']], 'watch_owned': True}, 'frames': []}]), ('live/service_removed', 'live', ['service_removed'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['remove', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/watch_gap', 'live', ['watch_gap'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 5]]}]), ('live/lease_expired', 'live', ['lease_expired'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/stop_watch', 'live', ['stop_watch'], [{'phase': 'closed', 'registers': {'listing': ['stale'], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': []}]), ('closed/service_added', 'closed', ['service_added'], [{'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 5]]}]), ('snapshotting/service_removed', 'snapshotting', ['service_removed'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first'], 'tombstones': ['svc5'], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('ordered trace 0', 'idle', ['start_watch', 'listing_end', 'watch_gap', 'listed_service', 'listing_end', 'service_added', 'service_removed', 'watch_gap'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 5]]}, {'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 5]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 5], ['LIST', 5]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['svc5'], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 5], ['LIST', 5]]}, {'phase': 'live', 'registers': {'listing': ['svc5'], 'staged': ['svc5'], 'tombstones': [], 'notifications': [[], ['svc5']], 'watch_owned': True}, 'frames': [['LIST', 5], ['LIST', 5]]}, {'phase': 'live', 'registers': {'listing': ['svc5', 'svc5'], 'staged': ['svc5'], 'tombstones': [], 'notifications': [[], ['svc5'], ['add', 'svc5']], 'watch_owned': True}, 'frames': [['LIST', 5], ['LIST', 5]]}, {'phase': 'live', 'registers': {'listing': [], 'staged': ['svc5'], 'tombstones': [], 'notifications': [[], ['svc5'], ['add', 'svc5'], ['remove', 'stale']], 'watch_owned': True}, 'frames': [['LIST', 5], ['LIST', 5]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[], ['svc5'], ['add', 'svc5'], ['remove', 'stale']], 'watch_owned': True}, 'frames': [['LIST', 5], ['LIST', 5], ['LIST', 5]]}]), ('ordered trace 3', 'live', ['lease_expired', 'stop_watch', 'service_added', 'service_added', 'service_added', 'service_added', 'service_added', 'service_added'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 5]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, '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":"73709e39133d8608e3f2143b00a9df5246b7da7f42e49a4d28b73cbddbbd60bd","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 = {'listing': ['stale'] if phase=='live' else [], 'staged': ['first'] if phase=='snapshotting' else [], 'tombstones': [], 'notifications': [], 'watch_owned': phase!='closed'}\n    frames = []\n    observed = []\n    table = {('idle', 'start_watch'): ('snapshotting', 'request_listing'), ('snapshotting', 'listed_service'): ('snapshotting', 'stage_service'), ('snapshotting', 'listing_end'): ('live', 'publish_listing'), ('live', 'service_added'): ('live', 'insert_notify'), ('live', 'service_removed'): ('live', 'remove_notify'), ('live', 'watch_gap'): ('snapshotting', 'clear_request_listing'), ('live', 'lease_expired'): ('live', 'expire_notify'), ('live', 'stop_watch'): ('closed', 'release_watch'), ('closed', 'service_added'): ('closed', 'ignore_closed'), ('snapshotting', 'service_removed'): ('snapshotting', 'record_tombstone')}\n    for event in events:\n        phase, action = table.get((phase, event), (phase, \"reject\"))\n        if action == 'request_listing':\n            frames.append(['LIST',seed])\n        elif action == 'stage_service':\n            r['staged'].append('svc'+str(seed))\n        elif action == 'publish_listing':\n            r['listing']=[x for x in r['staged'] if x not in r['tombstones']]; r['notifications'].append(r['listing'][:])\n        elif action == 'insert_notify':\n            r['listing'].append('svc'+str(seed)); r['notifications'].append(['add','svc'+str(seed)])\n        elif action == 'remove_notify':\n            r['listing']=[]; r['notifications'].append(['remove','stale'])\n        elif action == 'clear_request_listing':\n            r['listing']=[]; r['staged']=[]; frames.append(['LIST',seed])\n        elif action == 'expire_notify':\n            r['listing']=[]; r['notifications'].append(['expired','stale'])\n        elif action == 'release_watch':\n            r['watch_owned']=False\n        elif action == 'ignore_closed':\n            frames.append(['IGNORED_CLOSED',seed])\n        elif action == 'record_tombstone':\n            r['tombstones'].append('svc'+str(seed))\n        elif action == 'publish_ready':\n            r['notifications'].append('ready')\n        elif action == 'request_delta':\n            frames.append(['DELTA',seed])\n        elif action == 'publish_service':\n            r['notifications'].append('svc'+str(seed))\n        elif action == 'replace_listing':\n            r['staged']=['svc'+str(seed)]\n        elif action == 'publish_last_only':\n            r['listing']=r['staged'][-1:]\n        elif action == 'replace_all':\n            r['listing']=['svc'+str(seed)]\n        elif action == 'insert_silent':\n            r['listing'].append('svc'+str(seed))\n        elif action == 'notify_without_remove':\n            r['notifications'].append(['remove','stale'])\n        elif action == 'merge_listing':\n            r['listing'].extend(r['staged'])\n        elif action == 'refresh_lease':\n            frames.append(['REFRESH','stale'])\n        elif action == 'expire_silent':\n            r['listing']=[]\n        elif action == 'publish_remove':\n            r['notifications'].append(['remove','svc'+str(seed)])\n        elif action == 'continue':\n            r['notifications'].append(['add','svc'+str(seed)])\n        else:\n            if action not in (\"wait\", \"ignore\", \"keep\", \"retain\", \"keep_peer\", \"keep_offer\", \"keep_hold\", \"keep_batch\", \"retain_staging\", \"keep_staging\", \"keep_local_owner\", \"keep_old_session\", \"keep_address\", \"keep_old_expiry\", \"ignore_conflict\", \"keep_service\", \"keep_subscription\", \"retain_shadow\", \"keep_live\", \"keep_suspicion\", \"keep_roles\", \"keep_staged\"):\n                frames.append([action, payload[:]])\n        observed.append(json.loads(json.dumps({\"phase\": phase, \"registers\": r, \"frames\": frames})))\n    return observed\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {1: [('idle/start_watch', 'idle', ['start_watch'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 1]]}]), ('snapshotting/listed_service', 'snapshotting', ['listed_service'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first', 'svc1'], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('snapshotting/listing_end', 'snapshotting', ['listing_end'], [{'phase': 'live', 'registers': {'listing': ['first'], 'staged': ['first'], 'tombstones': [], 'notifications': [['first']], 'watch_owned': True}, 'frames': []}]), ('live/service_added', 'live', ['service_added'], [{'phase': 'live', 'registers': {'listing': ['stale', 'svc1'], 'staged': [], 'tombstones': [], 'notifications': [['add', 'svc1']], 'watch_owned': True}, 'frames': []}]), ('live/service_removed', 'live', ['service_removed'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['remove', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/watch_gap', 'live', ['watch_gap'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 1]]}]), ('live/lease_expired', 'live', ['lease_expired'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/stop_watch', 'live', ['stop_watch'], [{'phase': 'closed', 'registers': {'listing': ['stale'], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': []}]), ('closed/service_added', 'closed', ['service_added'], [{'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 1]]}]), ('snapshotting/service_removed', 'snapshotting', ['service_removed'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first'], 'tombstones': ['svc1'], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('ordered trace 0', 'idle', ['start_watch', 'listing_end', 'watch_gap', 'listed_service'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 1]]}, {'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 1]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 1], ['LIST', 1]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['svc1'], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 1], ['LIST', 1]]}]), ('ordered trace 3', 'live', ['lease_expired', 'stop_watch', 'service_added', 'service_added'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 1]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 1], ['IGNORED_CLOSED', 1]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['reject', [1, 2, 3]]]}])], 2: [('idle/start_watch', 'idle', ['start_watch'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 2]]}]), ('snapshotting/listed_service', 'snapshotting', ['listed_service'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first', 'svc2'], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('snapshotting/listing_end', 'snapshotting', ['listing_end'], [{'phase': 'live', 'registers': {'listing': ['first'], 'staged': ['first'], 'tombstones': [], 'notifications': [['first']], 'watch_owned': True}, 'frames': []}]), ('live/service_added', 'live', ['service_added'], [{'phase': 'live', 'registers': {'listing': ['stale', 'svc2'], 'staged': [], 'tombstones': [], 'notifications': [['add', 'svc2']], 'watch_owned': True}, 'frames': []}]), ('live/service_removed', 'live', ['service_removed'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['remove', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/watch_gap', 'live', ['watch_gap'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 2]]}]), ('live/lease_expired', 'live', ['lease_expired'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/stop_watch', 'live', ['stop_watch'], [{'phase': 'closed', 'registers': {'listing': ['stale'], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': []}]), ('closed/service_added', 'closed', ['service_added'], [{'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 2]]}]), ('snapshotting/service_removed', 'snapshotting', ['service_removed'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first'], 'tombstones': ['svc2'], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('ordered trace 0', 'idle', ['start_watch', 'listing_end', 'watch_gap', 'listed_service', 'listing_end'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 2]]}, {'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 2]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 2], ['LIST', 2]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['svc2'], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 2], ['LIST', 2]]}, {'phase': 'live', 'registers': {'listing': ['svc2'], 'staged': ['svc2'], 'tombstones': [], 'notifications': [[], ['svc2']], 'watch_owned': True}, 'frames': [['LIST', 2], ['LIST', 2]]}]), ('ordered trace 3', 'live', ['lease_expired', 'stop_watch', 'service_added', 'service_added', 'service_added'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 2]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 2], ['IGNORED_CLOSED', 2]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 2], ['IGNORED_CLOSED', 2], ['IGNORED_CLOSED', 2]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['reject', [2, 3, 4, 5]]]}])], 3: [('idle/start_watch', 'idle', ['start_watch'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 3]]}]), ('snapshotting/listed_service', 'snapshotting', ['listed_service'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first', 'svc3'], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('snapshotting/listing_end', 'snapshotting', ['listing_end'], [{'phase': 'live', 'registers': {'listing': ['first'], 'staged': ['first'], 'tombstones': [], 'notifications': [['first']], 'watch_owned': True}, 'frames': []}]), ('live/service_added', 'live', ['service_added'], [{'phase': 'live', 'registers': {'listing': ['stale', 'svc3'], 'staged': [], 'tombstones': [], 'notifications': [['add', 'svc3']], 'watch_owned': True}, 'frames': []}]), ('live/service_removed', 'live', ['service_removed'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['remove', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/watch_gap', 'live', ['watch_gap'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 3]]}]), ('live/lease_expired', 'live', ['lease_expired'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/stop_watch', 'live', ['stop_watch'], [{'phase': 'closed', 'registers': {'listing': ['stale'], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': []}]), ('closed/service_added', 'closed', ['service_added'], [{'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 3]]}]), ('snapshotting/service_removed', 'snapshotting', ['service_removed'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first'], 'tombstones': ['svc3'], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('ordered trace 0', 'idle', ['start_watch', 'listing_end', 'watch_gap', 'listed_service', 'listing_end', 'service_added'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 3]]}, {'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 3]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 3], ['LIST', 3]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['svc3'], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 3], ['LIST', 3]]}, {'phase': 'live', 'registers': {'listing': ['svc3'], 'staged': ['svc3'], 'tombstones': [], 'notifications': [[], ['svc3']], 'watch_owned': True}, 'frames': [['LIST', 3], ['LIST', 3]]}, {'phase': 'live', 'registers': {'listing': ['svc3', 'svc3'], 'staged': ['svc3'], 'tombstones': [], 'notifications': [[], ['svc3'], ['add', 'svc3']], 'watch_owned': True}, 'frames': [['LIST', 3], ['LIST', 3]]}]), ('ordered trace 3', 'live', ['lease_expired', 'stop_watch', 'service_added', 'service_added', 'service_added', 'service_added'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 3]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 3], ['IGNORED_CLOSED', 3]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 3], ['IGNORED_CLOSED', 3], ['IGNORED_CLOSED', 3]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 3], ['IGNORED_CLOSED', 3], ['IGNORED_CLOSED', 3], ['IGNORED_CLOSED', 3]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['reject', [3, 4, 5, 6, 7]]]}])], 4: [('idle/start_watch', 'idle', ['start_watch'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 4]]}]), ('snapshotting/listed_service', 'snapshotting', ['listed_service'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first', 'svc4'], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('snapshotting/listing_end', 'snapshotting', ['listing_end'], [{'phase': 'live', 'registers': {'listing': ['first'], 'staged': ['first'], 'tombstones': [], 'notifications': [['first']], 'watch_owned': True}, 'frames': []}]), ('live/service_added', 'live', ['service_added'], [{'phase': 'live', 'registers': {'listing': ['stale', 'svc4'], 'staged': [], 'tombstones': [], 'notifications': [['add', 'svc4']], 'watch_owned': True}, 'frames': []}]), ('live/service_removed', 'live', ['service_removed'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['remove', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/watch_gap', 'live', ['watch_gap'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 4]]}]), ('live/lease_expired', 'live', ['lease_expired'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/stop_watch', 'live', ['stop_watch'], [{'phase': 'closed', 'registers': {'listing': ['stale'], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': []}]), ('closed/service_added', 'closed', ['service_added'], [{'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 4]]}]), ('snapshotting/service_removed', 'snapshotting', ['service_removed'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first'], 'tombstones': ['svc4'], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('ordered trace 0', 'idle', ['start_watch', 'listing_end', 'watch_gap', 'listed_service', 'listing_end', 'service_added', 'service_removed'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 4]]}, {'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 4]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 4], ['LIST', 4]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['svc4'], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 4], ['LIST', 4]]}, {'phase': 'live', 'registers': {'listing': ['svc4'], 'staged': ['svc4'], 'tombstones': [], 'notifications': [[], ['svc4']], 'watch_owned': True}, 'frames': [['LIST', 4], ['LIST', 4]]}, {'phase': 'live', 'registers': {'listing': ['svc4', 'svc4'], 'staged': ['svc4'], 'tombstones': [], 'notifications': [[], ['svc4'], ['add', 'svc4']], 'watch_owned': True}, 'frames': [['LIST', 4], ['LIST', 4]]}, {'phase': 'live', 'registers': {'listing': [], 'staged': ['svc4'], 'tombstones': [], 'notifications': [[], ['svc4'], ['add', 'svc4'], ['remove', 'stale']], 'watch_owned': True}, 'frames': [['LIST', 4], ['LIST', 4]]}]), ('ordered trace 3', 'live', ['lease_expired', 'stop_watch', 'service_added', 'service_added', 'service_added', 'service_added', 'service_added'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 4]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4], ['IGNORED_CLOSED', 4]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['reject', [4, 5, 6, 7, 8, 9]]]}])], 5: [('idle/start_watch', 'idle', ['start_watch'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 5]]}]), ('snapshotting/listed_service', 'snapshotting', ['listed_service'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first', 'svc5'], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('snapshotting/listing_end', 'snapshotting', ['listing_end'], [{'phase': 'live', 'registers': {'listing': ['first'], 'staged': ['first'], 'tombstones': [], 'notifications': [['first']], 'watch_owned': True}, 'frames': []}]), ('live/service_added', 'live', ['service_added'], [{'phase': 'live', 'registers': {'listing': ['stale', 'svc5'], 'staged': [], 'tombstones': [], 'notifications': [['add', 'svc5']], 'watch_owned': True}, 'frames': []}]), ('live/service_removed', 'live', ['service_removed'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['remove', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/watch_gap', 'live', ['watch_gap'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 5]]}]), ('live/lease_expired', 'live', ['lease_expired'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}]), ('live/stop_watch', 'live', ['stop_watch'], [{'phase': 'closed', 'registers': {'listing': ['stale'], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': []}]), ('closed/service_added', 'closed', ['service_added'], [{'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 5]]}]), ('snapshotting/service_removed', 'snapshotting', ['service_removed'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['first'], 'tombstones': ['svc5'], 'notifications': [], 'watch_owned': True}, 'frames': []}]), ('ordered trace 0', 'idle', ['start_watch', 'listing_end', 'watch_gap', 'listed_service', 'listing_end', 'service_added', 'service_removed', 'watch_gap'], [{'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, 'frames': [['LIST', 5]]}, {'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 5]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 5], ['LIST', 5]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': ['svc5'], 'tombstones': [], 'notifications': [[]], 'watch_owned': True}, 'frames': [['LIST', 5], ['LIST', 5]]}, {'phase': 'live', 'registers': {'listing': ['svc5'], 'staged': ['svc5'], 'tombstones': [], 'notifications': [[], ['svc5']], 'watch_owned': True}, 'frames': [['LIST', 5], ['LIST', 5]]}, {'phase': 'live', 'registers': {'listing': ['svc5', 'svc5'], 'staged': ['svc5'], 'tombstones': [], 'notifications': [[], ['svc5'], ['add', 'svc5']], 'watch_owned': True}, 'frames': [['LIST', 5], ['LIST', 5]]}, {'phase': 'live', 'registers': {'listing': [], 'staged': ['svc5'], 'tombstones': [], 'notifications': [[], ['svc5'], ['add', 'svc5'], ['remove', 'stale']], 'watch_owned': True}, 'frames': [['LIST', 5], ['LIST', 5]]}, {'phase': 'snapshotting', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [[], ['svc5'], ['add', 'svc5'], ['remove', 'stale']], 'watch_owned': True}, 'frames': [['LIST', 5], ['LIST', 5], ['LIST', 5]]}]), ('ordered trace 3', 'live', ['lease_expired', 'stop_watch', 'service_added', 'service_added', 'service_added', 'service_added', 'service_added', 'service_added'], [{'phase': 'live', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': True}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': []}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 5]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5]]}, {'phase': 'closed', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [['expired', 'stale']], 'watch_owned': False}, 'frames': [['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5], ['IGNORED_CLOSED', 5]]}]), ('empty input', 'idle', [], []), ('unknown event', 'idle', ['unsupported'], [{'phase': 'idle', 'registers': {'listing': [], 'staged': [], 'tombstones': [], 'notifications': [], 'watch_owned': True}, '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-discovery_watch-snapshotting-listing_end","generated_at":"2026-09-29T14:40:14.797685+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 snapshotting, classify listing_end as transition to live and emit publish_listing.","root_cause":"In snapshotting, the listing end handler runs wait and enters snapshotting; it must instead run publish listing and enter live.","sha256":"e1a32de57103a93e0c7d99c0dd3093c05e903bf7460330f8017526564e49b3c1","title":"Service-discovery watch lifecycle controller: snapshotting / listing end · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":46.607,"exit_code":1,"observations":[{"actual":[{"frames":[["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}}],"check":"idle/start_watch","expected":[{"frames":[["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}}],"passed":true},{"actual":[{"frames":[],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":["first","svc1"],"tombstones":[],"watch_owned":true}}],"check":"snapshotting/listed_service","expected":[{"frames":[],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":["first","svc1"],"tombstones":[],"watch_owned":true}}],"passed":true},{"actual":[{"frames":[],"phase":"live","registers":{"listing":["first"],"notifications":[],"staged":["first"],"tombstones":[],"watch_owned":true}}],"check":"snapshotting/listing_end","expected":[{"frames":[],"phase":"live","registers":{"listing":["first"],"notifications":[["first"]],"staged":["first"],"tombstones":[],"watch_owned":true}}],"passed":false},{"actual":[{"frames":[],"phase":"live","registers":{"listing":["stale","svc1"],"notifications":[["add","svc1"]],"staged":[],"tombstones":[],"watch_owned":true}}],"check":"live/service_added","expected":[{"frames":[],"phase":"live","registers":{"listing":["stale","svc1"],"notifications":[["add","svc1"]],"staged":[],"tombstones":[],"watch_owned":true}}],"passed":true},{"actual":[{"frames":[],"phase":"live","registers":{"listing":[],"notifications":[["remove","stale"]],"staged":[],"tombstones":[],"watch_owned":true}}],"check":"live/service_removed","expected":[{"frames":[],"phase":"live","registers":{"listing":[],"notifications":[["remove","stale"]],"staged":[],"tombstones":[],"watch_owned":true}}],"passed":true},{"actual":[{"frames":[["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}}],"check":"live/watch_gap","expected":[{"frames":[["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}}],"passed":true},{"actual":[{"frames":[],"phase":"live","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":true}}],"check":"live/lease_expired","expected":[{"frames":[],"phase":"live","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":true}}],"passed":true},{"actual":[{"frames":[],"phase":"closed","registers":{"listing":["stale"],"notifications":[],"staged":[],"tombstones":[],"watch_owned":false}}],"check":"live/stop_watch","expected":[{"frames":[],"phase":"closed","registers":{"listing":["stale"],"notifications":[],"staged":[],"tombstones":[],"watch_owned":false}}],"passed":true},{"actual":[{"frames":[["IGNORED_CLOSED",1]],"phase":"closed","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":false}}],"check":"closed/service_added","expected":[{"frames":[["IGNORED_CLOSED",1]],"phase":"closed","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":false}}],"passed":true},{"actual":[{"frames":[],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":["first"],"tombstones":["svc1"],"watch_owned":true}}],"check":"snapshotting/service_removed","expected":[{"frames":[],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":["first"],"tombstones":["svc1"],"watch_owned":true}}],"passed":true},{"actual":[{"frames":[["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}},{"frames":[["LIST",1]],"phase":"live","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}},{"frames":[["LIST",1],["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}},{"frames":[["LIST",1],["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":["svc1"],"tombstones":[],"watch_owned":true}}],"check":"ordered trace 0","expected":[{"frames":[["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}},{"frames":[["LIST",1]],"phase":"live","registers":{"listing":[],"notifications":[[]],"staged":[],"tombstones":[],"watch_owned":true}},{"frames":[["LIST",1],["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[[]],"staged":[],"tombstones":[],"watch_owned":true}},{"frames":[["LIST",1],["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[[]],"staged":["svc1"],"tombstones":[],"watch_owned":true}}],"passed":false},{"actual":[{"frames":[],"phase":"live","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":true}},{"frames":[],"phase":"closed","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":false}},{"frames":[["IGNORED_CLOSED",1]],"phase":"closed","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":false}},{"frames":[["IGNORED_CLOSED",1],["IGNORED_CLOSED",1]],"phase":"closed","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":false}}],"check":"ordered trace 3","expected":[{"frames":[],"phase":"live","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":true}},{"frames":[],"phase":"closed","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":false}},{"frames":[["IGNORED_CLOSED",1]],"phase":"closed","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":false}},{"frames":[["IGNORED_CLOSED",1],["IGNORED_CLOSED",1]],"phase":"closed","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":false}}],"passed":true},{"actual":[],"check":"empty input","expected":[],"passed":true},{"actual":[{"frames":[["reject",[1,2,3]]],"phase":"idle","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}}],"check":"unknown event","expected":[{"frames":[["reject",[1,2,3]]],"phase":"idle","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}}],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"idle/start_watch\", \"actual\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1]]}], \"expected\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1]]}], \"passed\": true}, {\"check\": \"snapshotting/listed_service\", \"actual\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [\"first\", \"svc1\"], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [\"first\", \"svc1\"], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"snapshotting/listing_end\", \"actual\": [{\"phase\": \"live\", \"registers\": {\"listing\": [\"first\"], \"staged\": [\"first\"], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"live\", \"registers\": {\"listing\": [\"first\"], \"staged\": [\"first\"], \"tombstones\": [], \"notifications\": [[\"first\"]], \"watch_owned\": true}, \"frames\": []}], \"passed\": false}, {\"check\": \"live/service_added\", \"actual\": [{\"phase\": \"live\", \"registers\": {\"listing\": [\"stale\", \"svc1\"], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"add\", \"svc1\"]], \"watch_owned\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"live\", \"registers\": {\"listing\": [\"stale\", \"svc1\"], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"add\", \"svc1\"]], \"watch_owned\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"live/service_removed\", \"actual\": [{\"phase\": \"live\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"remove\", \"stale\"]], \"watch_owned\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"live\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"remove\", \"stale\"]], \"watch_owned\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"live/watch_gap\", \"actual\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1]]}], \"expected\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1]]}], \"passed\": true}, {\"check\": \"live/lease_expired\", \"actual\": [{\"phase\": \"live\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"live\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"live/stop_watch\", \"actual\": [{\"phase\": \"closed\", \"registers\": {\"listing\": [\"stale\"], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"closed\", \"registers\": {\"listing\": [\"stale\"], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"closed/service_added\", \"actual\": [{\"phase\": \"closed\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": false}, \"frames\": [[\"IGNORED_CLOSED\", 1]]}], \"expected\": [{\"phase\": \"closed\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": false}, \"frames\": [[\"IGNORED_CLOSED\", 1]]}], \"passed\": true}, {\"check\": \"snapshotting/service_removed\", \"actual\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [\"first\"], \"tombstones\": [\"svc1\"], \"notifications\": [], \"watch_owned\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [\"first\"], \"tombstones\": [\"svc1\"], \"notifications\": [], \"watch_owned\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"ordered trace 0\", \"actual\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1]]}, {\"phase\": \"live\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1]]}, {\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1], [\"LIST\", 1]]}, {\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [\"svc1\"], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1], [\"LIST\", 1]]}], \"expected\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1]]}, {\"phase\": \"live\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[]], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1]]}, {\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[]], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1], [\"LIST\", 1]]}, {\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [\"svc1\"], \"tombstones\": [], \"notifications\": [[]], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1], [\"LIST\", 1]]}], \"passed\": false}, {\"check\": \"ordered trace 3\", \"actual\": [{\"phase\": \"live\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": true}, \"frames\": []}, {\"phase\": \"closed\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": false}, \"frames\": []}, {\"phase\": \"closed\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": false}, \"frames\": [[\"IGNORED_CLOSED\", 1]]}, {\"phase\": \"closed\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": false}, \"frames\": [[\"IGNORED_CLOSED\", 1], [\"IGNORED_CLOSED\", 1]]}], \"expected\": [{\"phase\": \"live\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": true}, \"frames\": []}, {\"phase\": \"closed\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": false}, \"frames\": []}, {\"phase\": \"closed\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": false}, \"frames\": [[\"IGNORED_CLOSED\", 1]]}, {\"phase\": \"closed\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": false}, \"frames\": [[\"IGNORED_CLOSED\", 1], [\"IGNORED_CLOSED\", 1]]}], \"passed\": true}, {\"check\": \"empty input\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unknown event\", \"actual\": [{\"phase\": \"idle\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"expected\": [{\"phase\": \"idle\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":48.924,"exit_code":1,"observations":[{"actual":[{"frames":[["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}}],"check":"idle/start_watch","expected":[{"frames":[["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}}],"passed":true},{"actual":[{"frames":[],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":["first","svc1"],"tombstones":[],"watch_owned":true}}],"check":"snapshotting/listed_service","expected":[{"frames":[],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":["first","svc1"],"tombstones":[],"watch_owned":true}}],"passed":true},{"actual":[{"frames":[],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":["first"],"tombstones":[],"watch_owned":true}}],"check":"snapshotting/listing_end","expected":[{"frames":[],"phase":"live","registers":{"listing":["first"],"notifications":[["first"]],"staged":["first"],"tombstones":[],"watch_owned":true}}],"passed":false},{"actual":[{"frames":[],"phase":"live","registers":{"listing":["stale","svc1"],"notifications":[["add","svc1"]],"staged":[],"tombstones":[],"watch_owned":true}}],"check":"live/service_added","expected":[{"frames":[],"phase":"live","registers":{"listing":["stale","svc1"],"notifications":[["add","svc1"]],"staged":[],"tombstones":[],"watch_owned":true}}],"passed":true},{"actual":[{"frames":[],"phase":"live","registers":{"listing":[],"notifications":[["remove","stale"]],"staged":[],"tombstones":[],"watch_owned":true}}],"check":"live/service_removed","expected":[{"frames":[],"phase":"live","registers":{"listing":[],"notifications":[["remove","stale"]],"staged":[],"tombstones":[],"watch_owned":true}}],"passed":true},{"actual":[{"frames":[["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}}],"check":"live/watch_gap","expected":[{"frames":[["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}}],"passed":true},{"actual":[{"frames":[],"phase":"live","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":true}}],"check":"live/lease_expired","expected":[{"frames":[],"phase":"live","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":true}}],"passed":true},{"actual":[{"frames":[],"phase":"closed","registers":{"listing":["stale"],"notifications":[],"staged":[],"tombstones":[],"watch_owned":false}}],"check":"live/stop_watch","expected":[{"frames":[],"phase":"closed","registers":{"listing":["stale"],"notifications":[],"staged":[],"tombstones":[],"watch_owned":false}}],"passed":true},{"actual":[{"frames":[["IGNORED_CLOSED",1]],"phase":"closed","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":false}}],"check":"closed/service_added","expected":[{"frames":[["IGNORED_CLOSED",1]],"phase":"closed","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":false}}],"passed":true},{"actual":[{"frames":[],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":["first"],"tombstones":["svc1"],"watch_owned":true}}],"check":"snapshotting/service_removed","expected":[{"frames":[],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":["first"],"tombstones":["svc1"],"watch_owned":true}}],"passed":true},{"actual":[{"frames":[["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}},{"frames":[["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}},{"frames":[["LIST",1],["reject",[1,2,3]]],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}},{"frames":[["LIST",1],["reject",[1,2,3]]],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":["svc1"],"tombstones":[],"watch_owned":true}}],"check":"ordered trace 0","expected":[{"frames":[["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}},{"frames":[["LIST",1]],"phase":"live","registers":{"listing":[],"notifications":[[]],"staged":[],"tombstones":[],"watch_owned":true}},{"frames":[["LIST",1],["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[[]],"staged":[],"tombstones":[],"watch_owned":true}},{"frames":[["LIST",1],["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[[]],"staged":["svc1"],"tombstones":[],"watch_owned":true}}],"passed":false},{"actual":[{"frames":[],"phase":"live","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":true}},{"frames":[],"phase":"closed","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":false}},{"frames":[["IGNORED_CLOSED",1]],"phase":"closed","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":false}},{"frames":[["IGNORED_CLOSED",1],["IGNORED_CLOSED",1]],"phase":"closed","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":false}}],"check":"ordered trace 3","expected":[{"frames":[],"phase":"live","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":true}},{"frames":[],"phase":"closed","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":false}},{"frames":[["IGNORED_CLOSED",1]],"phase":"closed","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":false}},{"frames":[["IGNORED_CLOSED",1],["IGNORED_CLOSED",1]],"phase":"closed","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":false}}],"passed":true},{"actual":[],"check":"empty input","expected":[],"passed":true},{"actual":[{"frames":[["reject",[1,2,3]]],"phase":"idle","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}}],"check":"unknown event","expected":[{"frames":[["reject",[1,2,3]]],"phase":"idle","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}}],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"idle/start_watch\", \"actual\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1]]}], \"expected\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1]]}], \"passed\": true}, {\"check\": \"snapshotting/listed_service\", \"actual\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [\"first\", \"svc1\"], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [\"first\", \"svc1\"], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"snapshotting/listing_end\", \"actual\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [\"first\"], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"live\", \"registers\": {\"listing\": [\"first\"], \"staged\": [\"first\"], \"tombstones\": [], \"notifications\": [[\"first\"]], \"watch_owned\": true}, \"frames\": []}], \"passed\": false}, {\"check\": \"live/service_added\", \"actual\": [{\"phase\": \"live\", \"registers\": {\"listing\": [\"stale\", \"svc1\"], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"add\", \"svc1\"]], \"watch_owned\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"live\", \"registers\": {\"listing\": [\"stale\", \"svc1\"], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"add\", \"svc1\"]], \"watch_owned\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"live/service_removed\", \"actual\": [{\"phase\": \"live\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"remove\", \"stale\"]], \"watch_owned\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"live\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"remove\", \"stale\"]], \"watch_owned\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"live/watch_gap\", \"actual\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1]]}], \"expected\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1]]}], \"passed\": true}, {\"check\": \"live/lease_expired\", \"actual\": [{\"phase\": \"live\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"live\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"live/stop_watch\", \"actual\": [{\"phase\": \"closed\", \"registers\": {\"listing\": [\"stale\"], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"closed\", \"registers\": {\"listing\": [\"stale\"], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"closed/service_added\", \"actual\": [{\"phase\": \"closed\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": false}, \"frames\": [[\"IGNORED_CLOSED\", 1]]}], \"expected\": [{\"phase\": \"closed\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": false}, \"frames\": [[\"IGNORED_CLOSED\", 1]]}], \"passed\": true}, {\"check\": \"snapshotting/service_removed\", \"actual\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [\"first\"], \"tombstones\": [\"svc1\"], \"notifications\": [], \"watch_owned\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [\"first\"], \"tombstones\": [\"svc1\"], \"notifications\": [], \"watch_owned\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"ordered trace 0\", \"actual\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1]]}, {\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1]]}, {\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1], [\"reject\", [1, 2, 3]]]}, {\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [\"svc1\"], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1], [\"reject\", [1, 2, 3]]]}], \"expected\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1]]}, {\"phase\": \"live\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[]], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1]]}, {\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[]], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1], [\"LIST\", 1]]}, {\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [\"svc1\"], \"tombstones\": [], \"notifications\": [[]], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1], [\"LIST\", 1]]}], \"passed\": false}, {\"check\": \"ordered trace 3\", \"actual\": [{\"phase\": \"live\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": true}, \"frames\": []}, {\"phase\": \"closed\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": false}, \"frames\": []}, {\"phase\": \"closed\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": false}, \"frames\": [[\"IGNORED_CLOSED\", 1]]}, {\"phase\": \"closed\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": false}, \"frames\": [[\"IGNORED_CLOSED\", 1], [\"IGNORED_CLOSED\", 1]]}], \"expected\": [{\"phase\": \"live\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": true}, \"frames\": []}, {\"phase\": \"closed\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": false}, \"frames\": []}, {\"phase\": \"closed\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": false}, \"frames\": [[\"IGNORED_CLOSED\", 1]]}, {\"phase\": \"closed\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": false}, \"frames\": [[\"IGNORED_CLOSED\", 1], [\"IGNORED_CLOSED\", 1]]}], \"passed\": true}, {\"check\": \"empty input\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unknown event\", \"actual\": [{\"phase\": \"idle\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"expected\": [{\"phase\": \"idle\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.654,"exit_code":0,"observations":[{"actual":[{"frames":[["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}}],"check":"idle/start_watch","expected":[{"frames":[["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}}],"passed":true},{"actual":[{"frames":[],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":["first","svc1"],"tombstones":[],"watch_owned":true}}],"check":"snapshotting/listed_service","expected":[{"frames":[],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":["first","svc1"],"tombstones":[],"watch_owned":true}}],"passed":true},{"actual":[{"frames":[],"phase":"live","registers":{"listing":["first"],"notifications":[["first"]],"staged":["first"],"tombstones":[],"watch_owned":true}}],"check":"snapshotting/listing_end","expected":[{"frames":[],"phase":"live","registers":{"listing":["first"],"notifications":[["first"]],"staged":["first"],"tombstones":[],"watch_owned":true}}],"passed":true},{"actual":[{"frames":[],"phase":"live","registers":{"listing":["stale","svc1"],"notifications":[["add","svc1"]],"staged":[],"tombstones":[],"watch_owned":true}}],"check":"live/service_added","expected":[{"frames":[],"phase":"live","registers":{"listing":["stale","svc1"],"notifications":[["add","svc1"]],"staged":[],"tombstones":[],"watch_owned":true}}],"passed":true},{"actual":[{"frames":[],"phase":"live","registers":{"listing":[],"notifications":[["remove","stale"]],"staged":[],"tombstones":[],"watch_owned":true}}],"check":"live/service_removed","expected":[{"frames":[],"phase":"live","registers":{"listing":[],"notifications":[["remove","stale"]],"staged":[],"tombstones":[],"watch_owned":true}}],"passed":true},{"actual":[{"frames":[["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}}],"check":"live/watch_gap","expected":[{"frames":[["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}}],"passed":true},{"actual":[{"frames":[],"phase":"live","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":true}}],"check":"live/lease_expired","expected":[{"frames":[],"phase":"live","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":true}}],"passed":true},{"actual":[{"frames":[],"phase":"closed","registers":{"listing":["stale"],"notifications":[],"staged":[],"tombstones":[],"watch_owned":false}}],"check":"live/stop_watch","expected":[{"frames":[],"phase":"closed","registers":{"listing":["stale"],"notifications":[],"staged":[],"tombstones":[],"watch_owned":false}}],"passed":true},{"actual":[{"frames":[["IGNORED_CLOSED",1]],"phase":"closed","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":false}}],"check":"closed/service_added","expected":[{"frames":[["IGNORED_CLOSED",1]],"phase":"closed","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":false}}],"passed":true},{"actual":[{"frames":[],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":["first"],"tombstones":["svc1"],"watch_owned":true}}],"check":"snapshotting/service_removed","expected":[{"frames":[],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":["first"],"tombstones":["svc1"],"watch_owned":true}}],"passed":true},{"actual":[{"frames":[["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}},{"frames":[["LIST",1]],"phase":"live","registers":{"listing":[],"notifications":[[]],"staged":[],"tombstones":[],"watch_owned":true}},{"frames":[["LIST",1],["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[[]],"staged":[],"tombstones":[],"watch_owned":true}},{"frames":[["LIST",1],["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[[]],"staged":["svc1"],"tombstones":[],"watch_owned":true}}],"check":"ordered trace 0","expected":[{"frames":[["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}},{"frames":[["LIST",1]],"phase":"live","registers":{"listing":[],"notifications":[[]],"staged":[],"tombstones":[],"watch_owned":true}},{"frames":[["LIST",1],["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[[]],"staged":[],"tombstones":[],"watch_owned":true}},{"frames":[["LIST",1],["LIST",1]],"phase":"snapshotting","registers":{"listing":[],"notifications":[[]],"staged":["svc1"],"tombstones":[],"watch_owned":true}}],"passed":true},{"actual":[{"frames":[],"phase":"live","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":true}},{"frames":[],"phase":"closed","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":false}},{"frames":[["IGNORED_CLOSED",1]],"phase":"closed","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":false}},{"frames":[["IGNORED_CLOSED",1],["IGNORED_CLOSED",1]],"phase":"closed","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":false}}],"check":"ordered trace 3","expected":[{"frames":[],"phase":"live","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":true}},{"frames":[],"phase":"closed","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":false}},{"frames":[["IGNORED_CLOSED",1]],"phase":"closed","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":false}},{"frames":[["IGNORED_CLOSED",1],["IGNORED_CLOSED",1]],"phase":"closed","registers":{"listing":[],"notifications":[["expired","stale"]],"staged":[],"tombstones":[],"watch_owned":false}}],"passed":true},{"actual":[],"check":"empty input","expected":[],"passed":true},{"actual":[{"frames":[["reject",[1,2,3]]],"phase":"idle","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}}],"check":"unknown event","expected":[{"frames":[["reject",[1,2,3]]],"phase":"idle","registers":{"listing":[],"notifications":[],"staged":[],"tombstones":[],"watch_owned":true}}],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"idle/start_watch\", \"actual\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1]]}], \"expected\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1]]}], \"passed\": true}, {\"check\": \"snapshotting/listed_service\", \"actual\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [\"first\", \"svc1\"], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [\"first\", \"svc1\"], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"snapshotting/listing_end\", \"actual\": [{\"phase\": \"live\", \"registers\": {\"listing\": [\"first\"], \"staged\": [\"first\"], \"tombstones\": [], \"notifications\": [[\"first\"]], \"watch_owned\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"live\", \"registers\": {\"listing\": [\"first\"], \"staged\": [\"first\"], \"tombstones\": [], \"notifications\": [[\"first\"]], \"watch_owned\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"live/service_added\", \"actual\": [{\"phase\": \"live\", \"registers\": {\"listing\": [\"stale\", \"svc1\"], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"add\", \"svc1\"]], \"watch_owned\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"live\", \"registers\": {\"listing\": [\"stale\", \"svc1\"], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"add\", \"svc1\"]], \"watch_owned\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"live/service_removed\", \"actual\": [{\"phase\": \"live\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"remove\", \"stale\"]], \"watch_owned\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"live\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"remove\", \"stale\"]], \"watch_owned\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"live/watch_gap\", \"actual\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1]]}], \"expected\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1]]}], \"passed\": true}, {\"check\": \"live/lease_expired\", \"actual\": [{\"phase\": \"live\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"live\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"live/stop_watch\", \"actual\": [{\"phase\": \"closed\", \"registers\": {\"listing\": [\"stale\"], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"closed\", \"registers\": {\"listing\": [\"stale\"], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"closed/service_added\", \"actual\": [{\"phase\": \"closed\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": false}, \"frames\": [[\"IGNORED_CLOSED\", 1]]}], \"expected\": [{\"phase\": \"closed\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": false}, \"frames\": [[\"IGNORED_CLOSED\", 1]]}], \"passed\": true}, {\"check\": \"snapshotting/service_removed\", \"actual\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [\"first\"], \"tombstones\": [\"svc1\"], \"notifications\": [], \"watch_owned\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [\"first\"], \"tombstones\": [\"svc1\"], \"notifications\": [], \"watch_owned\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"ordered trace 0\", \"actual\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1]]}, {\"phase\": \"live\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[]], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1]]}, {\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[]], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1], [\"LIST\", 1]]}, {\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [\"svc1\"], \"tombstones\": [], \"notifications\": [[]], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1], [\"LIST\", 1]]}], \"expected\": [{\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1]]}, {\"phase\": \"live\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[]], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1]]}, {\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[]], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1], [\"LIST\", 1]]}, {\"phase\": \"snapshotting\", \"registers\": {\"listing\": [], \"staged\": [\"svc1\"], \"tombstones\": [], \"notifications\": [[]], \"watch_owned\": true}, \"frames\": [[\"LIST\", 1], [\"LIST\", 1]]}], \"passed\": true}, {\"check\": \"ordered trace 3\", \"actual\": [{\"phase\": \"live\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": true}, \"frames\": []}, {\"phase\": \"closed\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": false}, \"frames\": []}, {\"phase\": \"closed\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": false}, \"frames\": [[\"IGNORED_CLOSED\", 1]]}, {\"phase\": \"closed\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": false}, \"frames\": [[\"IGNORED_CLOSED\", 1], [\"IGNORED_CLOSED\", 1]]}], \"expected\": [{\"phase\": \"live\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": true}, \"frames\": []}, {\"phase\": \"closed\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": false}, \"frames\": []}, {\"phase\": \"closed\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": false}, \"frames\": [[\"IGNORED_CLOSED\", 1]]}, {\"phase\": \"closed\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [[\"expired\", \"stale\"]], \"watch_owned\": false}, \"frames\": [[\"IGNORED_CLOSED\", 1], [\"IGNORED_CLOSED\", 1]]}], \"passed\": true}, {\"check\": \"empty input\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unknown event\", \"actual\": [{\"phase\": \"idle\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"expected\": [{\"phase\": \"idle\", \"registers\": {\"listing\": [], \"staged\": [], \"tombstones\": [], \"notifications\": [], \"watch_owned\": true}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}