{"abstract":"The retry-mount event leaves a notification in ack-pending instead of mounting.","category":"Notification interfaces","checks":40,"contract":"Visual notification delivery acknowledgement is a bounded visual-notification workflow with mutable policy state {'mount': 4, 'painted': False, 'acknowledged': False, 'ack_attempts': 0}. Its default transition relation is {('received', 'mount-request'): 'mounting', ('mounting', 'paint-confirmed'): 'ack-pending', ('mounting', 'mount-failed'): 'undisplayed', ('ack-pending', 'ack-success'): 'seen', ('ack-pending', 'ack-failure'): 'ack-retry', ('ack-retry', 'retry-ack'): 'ack-pending', ('undisplayed', 'retry-mount'): 'mounting', ('seen', 'delivery-replay'): 'seen', ('mounting', 'route-unmount'): 'undisplayed', ('ack-retry', 'surface-unmount'): 'ack-retry'}; domain inputs can suppress or redirect transitions and update policy fields, as specified in solve. Different-generation events are inert. Batches apply in order. Optional observe returns the selected policy field alongside the phase.","evaluation_group":"s3-notification-interfaces-delivery-ack","failed_approach":"Claiming it seen before retrying guarantees a missed notification.","family":"s3-notification-interfaces-delivery-ack-07","id":"FA-34171","implementations":{"attempt":{"sha256":"cef43af2a90185203aa8b0c976a3f1ea7968b77d46098e7d8a5d37c151c11977","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(initial, events, generation, payload=None, observe=None):\n    table = {('received', 'mount-request'): 'mounting', ('mounting', 'paint-confirmed'): 'ack-pending', ('mounting', 'mount-failed'): 'undisplayed', ('ack-pending', 'ack-success'): 'seen', ('ack-pending', 'ack-failure'): 'ack-retry', ('ack-retry', 'retry-ack'): 'ack-pending', ('undisplayed', 'retry-mount'): 'seen', ('seen', 'delivery-replay'): 'seen', ('mounting', 'route-unmount'): 'undisplayed', ('ack-retry', 'surface-unmount'): 'ack-retry'}\n    data = json.loads(json.dumps({'mount': 4, 'painted': False, 'acknowledged': False, 'ack_attempts': 0})) if payload is None else {**json.loads(json.dumps({'mount': 4, 'painted': False, 'acknowledged': False, 'ack_attempts': 0})), **json.loads(json.dumps(payload))}\n    state = initial\n    for delivery in events:\n        event, event_generation = delivery[:2]\n        arg = delivery[2] if len(delivery) > 2 else {}\n        if event_generation == generation:\n            previous = state\n            if event in ('paint-confirmed','mount-failed') and arg.get('mount',data['mount']) != data['mount']: event = 'unknown-event'\n            if event == 'paint-confirmed': data['painted'] = True\n            if event == 'retry-ack': data['ack_attempts'] += 1\n            if event == 'ack-success' and 'require_paint' in arg and not data['painted']: event = 'unknown-event'\n            state = table.get((state, event), state)\n            if state == 'seen': data['acknowledged'] = True\n            if state == 'undisplayed': data['painted'] = False\n    return {'phase': state, 'value': data[observe]} if observe else state\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('received / mount-request', solve('received', [('mount-request', N)], N), 'mounting')\ncheck('mounting / paint-confirmed', solve('mounting', [('paint-confirmed', N)], N), 'ack-pending')\ncheck('mounting / mount-failed', solve('mounting', [('mount-failed', N)], N), 'undisplayed')\ncheck('ack-pending / ack-success', solve('ack-pending', [('ack-success', N)], N), 'seen')\ncheck('ack-pending / ack-failure', solve('ack-pending', [('ack-failure', N)], N), 'ack-retry')\ncheck('ack-retry / retry-ack', solve('ack-retry', [('retry-ack', N)], N), 'ack-pending')\ncheck('undisplayed / retry-mount', solve('undisplayed', [('retry-mount', N)], N), 'mounting')\ncheck('seen / delivery-replay', solve('seen', [('delivery-replay', N)], N), 'seen')\ncheck('mounting / route-unmount', solve('mounting', [('route-unmount', N)], N), 'undisplayed')\ncheck('ack-retry / surface-unmount', solve('ack-retry', [('surface-unmount', N)], N), 'ack-retry')\ncheck('older notification incarnation', solve('received', [('mount-request', N - 1)], N), 'received')\ncheck('future notification incarnation', solve('received', [('mount-request', N + 1)], N), 'received')\ncheck('unknown event is inert', solve('received', [('unknown-event', N)], N), 'received')\ncheck('empty delivery batch', solve('received', [], N), 'received')\ncheck('N stale deliveries before current delivery', solve('received', [('mount-request', N - 1)] * N + [('mount-request', N)], N), 'mounting')\ncheck('trace mount-request then paint-confirmed', solve('received', [('mount-request', N), ('paint-confirmed', N)], N), 'ack-pending')\ncheck('trace mount-request then mount-failed', solve('received', [('mount-request', N), ('mount-failed', N)], N), 'undisplayed')\ncheck('trace mount-request then route-unmount', solve('received', [('mount-request', N), ('route-unmount', N)], N), 'undisplayed')\ncheck('trace paint-confirmed then ack-success', solve('mounting', [('paint-confirmed', N), ('ack-success', N)], N), 'seen')\ncheck('trace paint-confirmed then ack-failure', solve('mounting', [('paint-confirmed', N), ('ack-failure', N)], N), 'ack-retry')\ncheck('trace mount-failed then retry-mount', solve('mounting', [('mount-failed', N), ('retry-mount', N)], N), 'mounting')\ncheck('trace ack-success then delivery-replay', solve('ack-pending', [('ack-success', N), ('delivery-replay', N)], N), 'seen')\ncheck('trace ack-failure then retry-ack', solve('ack-pending', [('ack-failure', N), ('retry-ack', N)], N), 'ack-pending')\ncheck('trace ack-failure then surface-unmount', solve('ack-pending', [('ack-failure', N), ('surface-unmount', N)], N), 'ack-retry')\ncheck('trace retry-ack then ack-success', solve('ack-retry', [('retry-ack', N), ('ack-success', N)], N), 'seen')\ncheck('trace retry-ack then ack-failure', solve('ack-retry', [('retry-ack', N), ('ack-failure', N)], N), 'ack-retry')\ncheck('trace retry-mount then paint-confirmed', solve('undisplayed', [('retry-mount', N), ('paint-confirmed', N)], N), 'ack-pending')\ncheck('trace retry-mount then mount-failed', solve('undisplayed', [('retry-mount', N), ('mount-failed', N)], N), 'undisplayed')\ncheck('trace retry-mount then route-unmount', solve('undisplayed', [('retry-mount', N), ('route-unmount', N)], N), 'undisplayed')\ncheck('trace delivery-replay then delivery-replay', solve('seen', [('delivery-replay', N), ('delivery-replay', N)], N), 'seen')\ncheck('trace route-unmount then retry-mount', solve('mounting', [('route-unmount', N), ('retry-mount', N)], N), 'mounting')\ncheck('trace surface-unmount then retry-ack', solve('ack-retry', [('surface-unmount', N), ('retry-ack', N)], N), 'ack-pending')\ncheck('trace surface-unmount then surface-unmount', solve('ack-retry', [('surface-unmount', N), ('surface-unmount', N)], N), 'ack-retry')\ncheck('domain state regression 1: painted', solve('mounting', [('paint-confirmed', N, {'mount': 3})], N, {}, 'painted'), {'phase': 'mounting', 'value': False})\ncheck('domain state regression 2: painted', solve('mounting', [('paint-confirmed', N, {'mount': 4})], N, {}, 'painted'), {'phase': 'ack-pending', 'value': True})\ncheck('domain state regression 3: acknowledged', solve('ack-pending', [('ack-success', N, {'require_paint': True})], N, {}, 'acknowledged'), {'phase': 'ack-pending', 'value': False})\ncheck('domain state regression 4: acknowledged', solve('ack-pending', [('ack-success', N, {'require_paint': True})], N, {'painted': True}, 'acknowledged'), {'phase': 'seen', 'value': True})\ncheck('domain state regression 5: ack_attempts', solve('ack-retry', [('retry-ack', N, {})], N, {'painted': True, 'ack_attempts': 2}, 'ack_attempts'), {'phase': 'ack-pending', 'value': 3})\ncheck('domain state regression 6: painted', solve('mounting', [('route-unmount', N, {})], N, {'painted': True}, 'painted'), {'phase': 'undisplayed', 'value': False})\ncheck('domain state regression 7: acknowledged', solve('mounting', [('paint-confirmed', N, {}), ('ack-failure', N, {}), ('surface-unmount', N, {}), ('retry-ack', N, {}), ('ack-success', N, {'require_paint': True})], N, {}, 'acknowledged'), {'phase': 'seen', 'value': True})\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":"0536add1c00e38fe7f3be16ee146bdb53084959aec9aefe0d25e43f4458a6f82","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(initial, events, generation, payload=None, observe=None):\n    table = {('received', 'mount-request'): 'mounting', ('mounting', 'paint-confirmed'): 'ack-pending', ('mounting', 'mount-failed'): 'undisplayed', ('ack-pending', 'ack-success'): 'seen', ('ack-pending', 'ack-failure'): 'ack-retry', ('ack-retry', 'retry-ack'): 'ack-pending', ('undisplayed', 'retry-mount'): 'ack-pending', ('seen', 'delivery-replay'): 'seen', ('mounting', 'route-unmount'): 'undisplayed', ('ack-retry', 'surface-unmount'): 'ack-retry'}\n    data = json.loads(json.dumps({'mount': 4, 'painted': False, 'acknowledged': False, 'ack_attempts': 0})) if payload is None else {**json.loads(json.dumps({'mount': 4, 'painted': False, 'acknowledged': False, 'ack_attempts': 0})), **json.loads(json.dumps(payload))}\n    state = initial\n    for delivery in events:\n        event, event_generation = delivery[:2]\n        arg = delivery[2] if len(delivery) > 2 else {}\n        if event_generation == generation:\n            previous = state\n            if event in ('paint-confirmed','mount-failed') and arg.get('mount',data['mount']) != data['mount']: event = 'unknown-event'\n            if event == 'paint-confirmed': data['painted'] = True\n            if event == 'retry-ack': data['ack_attempts'] += 1\n            if event == 'ack-success' and 'require_paint' in arg and not data['painted']: event = 'unknown-event'\n            state = table.get((state, event), state)\n            if state == 'seen': data['acknowledged'] = True\n            if state == 'undisplayed': data['painted'] = False\n    return {'phase': state, 'value': data[observe]} if observe else state\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('received / mount-request', solve('received', [('mount-request', N)], N), 'mounting')\ncheck('mounting / paint-confirmed', solve('mounting', [('paint-confirmed', N)], N), 'ack-pending')\ncheck('mounting / mount-failed', solve('mounting', [('mount-failed', N)], N), 'undisplayed')\ncheck('ack-pending / ack-success', solve('ack-pending', [('ack-success', N)], N), 'seen')\ncheck('ack-pending / ack-failure', solve('ack-pending', [('ack-failure', N)], N), 'ack-retry')\ncheck('ack-retry / retry-ack', solve('ack-retry', [('retry-ack', N)], N), 'ack-pending')\ncheck('undisplayed / retry-mount', solve('undisplayed', [('retry-mount', N)], N), 'mounting')\ncheck('seen / delivery-replay', solve('seen', [('delivery-replay', N)], N), 'seen')\ncheck('mounting / route-unmount', solve('mounting', [('route-unmount', N)], N), 'undisplayed')\ncheck('ack-retry / surface-unmount', solve('ack-retry', [('surface-unmount', N)], N), 'ack-retry')\ncheck('older notification incarnation', solve('received', [('mount-request', N - 1)], N), 'received')\ncheck('future notification incarnation', solve('received', [('mount-request', N + 1)], N), 'received')\ncheck('unknown event is inert', solve('received', [('unknown-event', N)], N), 'received')\ncheck('empty delivery batch', solve('received', [], N), 'received')\ncheck('N stale deliveries before current delivery', solve('received', [('mount-request', N - 1)] * N + [('mount-request', N)], N), 'mounting')\ncheck('trace mount-request then paint-confirmed', solve('received', [('mount-request', N), ('paint-confirmed', N)], N), 'ack-pending')\ncheck('trace mount-request then mount-failed', solve('received', [('mount-request', N), ('mount-failed', N)], N), 'undisplayed')\ncheck('trace mount-request then route-unmount', solve('received', [('mount-request', N), ('route-unmount', N)], N), 'undisplayed')\ncheck('trace paint-confirmed then ack-success', solve('mounting', [('paint-confirmed', N), ('ack-success', N)], N), 'seen')\ncheck('trace paint-confirmed then ack-failure', solve('mounting', [('paint-confirmed', N), ('ack-failure', N)], N), 'ack-retry')\ncheck('trace mount-failed then retry-mount', solve('mounting', [('mount-failed', N), ('retry-mount', N)], N), 'mounting')\ncheck('trace ack-success then delivery-replay', solve('ack-pending', [('ack-success', N), ('delivery-replay', N)], N), 'seen')\ncheck('trace ack-failure then retry-ack', solve('ack-pending', [('ack-failure', N), ('retry-ack', N)], N), 'ack-pending')\ncheck('trace ack-failure then surface-unmount', solve('ack-pending', [('ack-failure', N), ('surface-unmount', N)], N), 'ack-retry')\ncheck('trace retry-ack then ack-success', solve('ack-retry', [('retry-ack', N), ('ack-success', N)], N), 'seen')\ncheck('trace retry-ack then ack-failure', solve('ack-retry', [('retry-ack', N), ('ack-failure', N)], N), 'ack-retry')\ncheck('trace retry-mount then paint-confirmed', solve('undisplayed', [('retry-mount', N), ('paint-confirmed', N)], N), 'ack-pending')\ncheck('trace retry-mount then mount-failed', solve('undisplayed', [('retry-mount', N), ('mount-failed', N)], N), 'undisplayed')\ncheck('trace retry-mount then route-unmount', solve('undisplayed', [('retry-mount', N), ('route-unmount', N)], N), 'undisplayed')\ncheck('trace delivery-replay then delivery-replay', solve('seen', [('delivery-replay', N), ('delivery-replay', N)], N), 'seen')\ncheck('trace route-unmount then retry-mount', solve('mounting', [('route-unmount', N), ('retry-mount', N)], N), 'mounting')\ncheck('trace surface-unmount then retry-ack', solve('ack-retry', [('surface-unmount', N), ('retry-ack', N)], N), 'ack-pending')\ncheck('trace surface-unmount then surface-unmount', solve('ack-retry', [('surface-unmount', N), ('surface-unmount', N)], N), 'ack-retry')\ncheck('domain state regression 1: painted', solve('mounting', [('paint-confirmed', N, {'mount': 3})], N, {}, 'painted'), {'phase': 'mounting', 'value': False})\ncheck('domain state regression 2: painted', solve('mounting', [('paint-confirmed', N, {'mount': 4})], N, {}, 'painted'), {'phase': 'ack-pending', 'value': True})\ncheck('domain state regression 3: acknowledged', solve('ack-pending', [('ack-success', N, {'require_paint': True})], N, {}, 'acknowledged'), {'phase': 'ack-pending', 'value': False})\ncheck('domain state regression 4: acknowledged', solve('ack-pending', [('ack-success', N, {'require_paint': True})], N, {'painted': True}, 'acknowledged'), {'phase': 'seen', 'value': True})\ncheck('domain state regression 5: ack_attempts', solve('ack-retry', [('retry-ack', N, {})], N, {'painted': True, 'ack_attempts': 2}, 'ack_attempts'), {'phase': 'ack-pending', 'value': 3})\ncheck('domain state regression 6: painted', solve('mounting', [('route-unmount', N, {})], N, {'painted': True}, 'painted'), {'phase': 'undisplayed', 'value': False})\ncheck('domain state regression 7: acknowledged', solve('mounting', [('paint-confirmed', N, {}), ('ack-failure', N, {}), ('surface-unmount', N, {}), ('retry-ack', N, {}), ('ack-success', N, {'require_paint': True})], N, {}, 'acknowledged'), {'phase': 'seen', 'value': True})\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":"f0d88120253486da664ead002bd181a223131f979c5cf335e672cfe2f989437b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(initial, events, generation, payload=None, observe=None):\n    table = {('received', 'mount-request'): 'mounting', ('mounting', 'paint-confirmed'): 'ack-pending', ('mounting', 'mount-failed'): 'undisplayed', ('ack-pending', 'ack-success'): 'seen', ('ack-pending', 'ack-failure'): 'ack-retry', ('ack-retry', 'retry-ack'): 'ack-pending', ('undisplayed', 'retry-mount'): 'mounting', ('seen', 'delivery-replay'): 'seen', ('mounting', 'route-unmount'): 'undisplayed', ('ack-retry', 'surface-unmount'): 'ack-retry'}\n    data = json.loads(json.dumps({'mount': 4, 'painted': False, 'acknowledged': False, 'ack_attempts': 0})) if payload is None else {**json.loads(json.dumps({'mount': 4, 'painted': False, 'acknowledged': False, 'ack_attempts': 0})), **json.loads(json.dumps(payload))}\n    state = initial\n    for delivery in events:\n        event, event_generation = delivery[:2]\n        arg = delivery[2] if len(delivery) > 2 else {}\n        if event_generation == generation:\n            previous = state\n            if event in ('paint-confirmed','mount-failed') and arg.get('mount',data['mount']) != data['mount']: event = 'unknown-event'\n            if event == 'paint-confirmed': data['painted'] = True\n            if event == 'retry-ack': data['ack_attempts'] += 1\n            if event == 'ack-success' and 'require_paint' in arg and not data['painted']: event = 'unknown-event'\n            state = table.get((state, event), state)\n            if state == 'seen': data['acknowledged'] = True\n            if state == 'undisplayed': data['painted'] = False\n    return {'phase': state, 'value': data[observe]} if observe else state\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('received / mount-request', solve('received', [('mount-request', N)], N), 'mounting')\ncheck('mounting / paint-confirmed', solve('mounting', [('paint-confirmed', N)], N), 'ack-pending')\ncheck('mounting / mount-failed', solve('mounting', [('mount-failed', N)], N), 'undisplayed')\ncheck('ack-pending / ack-success', solve('ack-pending', [('ack-success', N)], N), 'seen')\ncheck('ack-pending / ack-failure', solve('ack-pending', [('ack-failure', N)], N), 'ack-retry')\ncheck('ack-retry / retry-ack', solve('ack-retry', [('retry-ack', N)], N), 'ack-pending')\ncheck('undisplayed / retry-mount', solve('undisplayed', [('retry-mount', N)], N), 'mounting')\ncheck('seen / delivery-replay', solve('seen', [('delivery-replay', N)], N), 'seen')\ncheck('mounting / route-unmount', solve('mounting', [('route-unmount', N)], N), 'undisplayed')\ncheck('ack-retry / surface-unmount', solve('ack-retry', [('surface-unmount', N)], N), 'ack-retry')\ncheck('older notification incarnation', solve('received', [('mount-request', N - 1)], N), 'received')\ncheck('future notification incarnation', solve('received', [('mount-request', N + 1)], N), 'received')\ncheck('unknown event is inert', solve('received', [('unknown-event', N)], N), 'received')\ncheck('empty delivery batch', solve('received', [], N), 'received')\ncheck('N stale deliveries before current delivery', solve('received', [('mount-request', N - 1)] * N + [('mount-request', N)], N), 'mounting')\ncheck('trace mount-request then paint-confirmed', solve('received', [('mount-request', N), ('paint-confirmed', N)], N), 'ack-pending')\ncheck('trace mount-request then mount-failed', solve('received', [('mount-request', N), ('mount-failed', N)], N), 'undisplayed')\ncheck('trace mount-request then route-unmount', solve('received', [('mount-request', N), ('route-unmount', N)], N), 'undisplayed')\ncheck('trace paint-confirmed then ack-success', solve('mounting', [('paint-confirmed', N), ('ack-success', N)], N), 'seen')\ncheck('trace paint-confirmed then ack-failure', solve('mounting', [('paint-confirmed', N), ('ack-failure', N)], N), 'ack-retry')\ncheck('trace mount-failed then retry-mount', solve('mounting', [('mount-failed', N), ('retry-mount', N)], N), 'mounting')\ncheck('trace ack-success then delivery-replay', solve('ack-pending', [('ack-success', N), ('delivery-replay', N)], N), 'seen')\ncheck('trace ack-failure then retry-ack', solve('ack-pending', [('ack-failure', N), ('retry-ack', N)], N), 'ack-pending')\ncheck('trace ack-failure then surface-unmount', solve('ack-pending', [('ack-failure', N), ('surface-unmount', N)], N), 'ack-retry')\ncheck('trace retry-ack then ack-success', solve('ack-retry', [('retry-ack', N), ('ack-success', N)], N), 'seen')\ncheck('trace retry-ack then ack-failure', solve('ack-retry', [('retry-ack', N), ('ack-failure', N)], N), 'ack-retry')\ncheck('trace retry-mount then paint-confirmed', solve('undisplayed', [('retry-mount', N), ('paint-confirmed', N)], N), 'ack-pending')\ncheck('trace retry-mount then mount-failed', solve('undisplayed', [('retry-mount', N), ('mount-failed', N)], N), 'undisplayed')\ncheck('trace retry-mount then route-unmount', solve('undisplayed', [('retry-mount', N), ('route-unmount', N)], N), 'undisplayed')\ncheck('trace delivery-replay then delivery-replay', solve('seen', [('delivery-replay', N), ('delivery-replay', N)], N), 'seen')\ncheck('trace route-unmount then retry-mount', solve('mounting', [('route-unmount', N), ('retry-mount', N)], N), 'mounting')\ncheck('trace surface-unmount then retry-ack', solve('ack-retry', [('surface-unmount', N), ('retry-ack', N)], N), 'ack-pending')\ncheck('trace surface-unmount then surface-unmount', solve('ack-retry', [('surface-unmount', N), ('surface-unmount', N)], N), 'ack-retry')\ncheck('domain state regression 1: painted', solve('mounting', [('paint-confirmed', N, {'mount': 3})], N, {}, 'painted'), {'phase': 'mounting', 'value': False})\ncheck('domain state regression 2: painted', solve('mounting', [('paint-confirmed', N, {'mount': 4})], N, {}, 'painted'), {'phase': 'ack-pending', 'value': True})\ncheck('domain state regression 3: acknowledged', solve('ack-pending', [('ack-success', N, {'require_paint': True})], N, {}, 'acknowledged'), {'phase': 'ack-pending', 'value': False})\ncheck('domain state regression 4: acknowledged', solve('ack-pending', [('ack-success', N, {'require_paint': True})], N, {'painted': True}, 'acknowledged'), {'phase': 'seen', 'value': True})\ncheck('domain state regression 5: ack_attempts', solve('ack-retry', [('retry-ack', N, {})], N, {'painted': True, 'ack_attempts': 2}, 'ack_attempts'), {'phase': 'ack-pending', 'value': 3})\ncheck('domain state regression 6: painted', solve('mounting', [('route-unmount', N, {})], N, {'painted': True}, 'painted'), {'phase': 'undisplayed', 'value': False})\ncheck('domain state regression 7: acknowledged', solve('mounting', [('paint-confirmed', N, {}), ('ack-failure', N, {}), ('surface-unmount', N, {}), ('retry-ack', N, {}), ('ack-success', N, {'require_paint': True})], N, {}, 'acknowledged'), {'phase': 'seen', 'value': True})\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":"Stipulated single-notification state and policy model only. Event delivery and acknowledgements are explicit test inputs. No DOM, accessibility announcements, live timers, networking, actual rendering, or production-platform conformance is simulated. 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-notification-interfaces-delivery-ack-07","generated_at":"2026-09-29T14:42:29.310946+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Visual notification lifecycle ordering can leave an inbox or toast showing the wrong actionable state even when transport succeeds.","repair":"Commit the undisplayed / retry-mount transition to mounting; preserve the other explicitly stipulated transitions.","root_cause":"A mount retry skips display and submits acknowledgement.","sha256":"d333b22988c60972e8b12127b0b8d0a4734a1e2b1b489d4af1a55785a85d7d1c","title":"Visual notification delivery acknowledgement: retry-mount from undisplayed · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":45.961,"exit_code":1,"observations":[{"actual":"mounting","check":"received / mount-request","expected":"mounting","passed":true},{"actual":"ack-pending","check":"mounting / paint-confirmed","expected":"ack-pending","passed":true},{"actual":"undisplayed","check":"mounting / mount-failed","expected":"undisplayed","passed":true},{"actual":"seen","check":"ack-pending / ack-success","expected":"seen","passed":true},{"actual":"ack-retry","check":"ack-pending / ack-failure","expected":"ack-retry","passed":true},{"actual":"ack-pending","check":"ack-retry / retry-ack","expected":"ack-pending","passed":true},{"actual":"seen","check":"undisplayed / retry-mount","expected":"mounting","passed":false},{"actual":"seen","check":"seen / delivery-replay","expected":"seen","passed":true},{"actual":"undisplayed","check":"mounting / route-unmount","expected":"undisplayed","passed":true},{"actual":"ack-retry","check":"ack-retry / surface-unmount","expected":"ack-retry","passed":true},{"actual":"received","check":"older notification incarnation","expected":"received","passed":true},{"actual":"received","check":"future notification incarnation","expected":"received","passed":true},{"actual":"received","check":"unknown event is inert","expected":"received","passed":true},{"actual":"received","check":"empty delivery batch","expected":"received","passed":true},{"actual":"mounting","check":"N stale deliveries before current delivery","expected":"mounting","passed":true},{"actual":"ack-pending","check":"trace mount-request then paint-confirmed","expected":"ack-pending","passed":true},{"actual":"undisplayed","check":"trace mount-request then mount-failed","expected":"undisplayed","passed":true},{"actual":"undisplayed","check":"trace mount-request then route-unmount","expected":"undisplayed","passed":true},{"actual":"seen","check":"trace paint-confirmed then ack-success","expected":"seen","passed":true},{"actual":"ack-retry","check":"trace paint-confirmed then ack-failure","expected":"ack-retry","passed":true},{"actual":"seen","check":"trace mount-failed then retry-mount","expected":"mounting","passed":false},{"actual":"seen","check":"trace ack-success then delivery-replay","expected":"seen","passed":true},{"actual":"ack-pending","check":"trace ack-failure then retry-ack","expected":"ack-pending","passed":true},{"actual":"ack-retry","check":"trace ack-failure then surface-unmount","expected":"ack-retry","passed":true},{"actual":"seen","check":"trace retry-ack then ack-success","expected":"seen","passed":true},{"actual":"ack-retry","check":"trace retry-ack then ack-failure","expected":"ack-retry","passed":true},{"actual":"seen","check":"trace retry-mount then paint-confirmed","expected":"ack-pending","passed":false},{"actual":"seen","check":"trace retry-mount then mount-failed","expected":"undisplayed","passed":false},{"actual":"seen","check":"trace retry-mount then route-unmount","expected":"undisplayed","passed":false},{"actual":"seen","check":"trace delivery-replay then delivery-replay","expected":"seen","passed":true},{"actual":"seen","check":"trace route-unmount then retry-mount","expected":"mounting","passed":false},{"actual":"ack-pending","check":"trace surface-unmount then retry-ack","expected":"ack-pending","passed":true},{"actual":"ack-retry","check":"trace surface-unmount then surface-unmount","expected":"ack-retry","passed":true},{"actual":{"phase":"mounting","value":false},"check":"domain state regression 1: painted","expected":{"phase":"mounting","value":false},"passed":true},{"actual":{"phase":"ack-pending","value":true},"check":"domain state regression 2: painted","expected":{"phase":"ack-pending","value":true},"passed":true},{"actual":{"phase":"ack-pending","value":false},"check":"domain state regression 3: acknowledged","expected":{"phase":"ack-pending","value":false},"passed":true},{"actual":{"phase":"seen","value":true},"check":"domain state regression 4: acknowledged","expected":{"phase":"seen","value":true},"passed":true},{"actual":{"phase":"ack-pending","value":3},"check":"domain state regression 5: ack_attempts","expected":{"phase":"ack-pending","value":3},"passed":true},{"actual":{"phase":"undisplayed","value":false},"check":"domain state regression 6: painted","expected":{"phase":"undisplayed","value":false},"passed":true},{"actual":{"phase":"seen","value":true},"check":"domain state regression 7: acknowledged","expected":{"phase":"seen","value":true},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"received / mount-request\", \"actual\": \"mounting\", \"expected\": \"mounting\", \"passed\": true}, {\"check\": \"mounting / paint-confirmed\", \"actual\": \"ack-pending\", \"expected\": \"ack-pending\", \"passed\": true}, {\"check\": \"mounting / mount-failed\", \"actual\": \"undisplayed\", \"expected\": \"undisplayed\", \"passed\": true}, {\"check\": \"ack-pending / ack-success\", \"actual\": \"seen\", \"expected\": \"seen\", \"passed\": true}, {\"check\": \"ack-pending / ack-failure\", \"actual\": \"ack-retry\", \"expected\": \"ack-retry\", \"passed\": true}, {\"check\": \"ack-retry / retry-ack\", \"actual\": \"ack-pending\", \"expected\": \"ack-pending\", \"passed\": true}, {\"check\": \"undisplayed / retry-mount\", \"actual\": \"seen\", \"expected\": \"mounting\", \"passed\": false}, {\"check\": \"seen / delivery-replay\", \"actual\": \"seen\", \"expected\": \"seen\", \"passed\": true}, {\"check\": \"mounting / route-unmount\", \"actual\": \"undisplayed\", \"expected\": \"undisplayed\", \"passed\": true}, {\"check\": \"ack-retry / surface-unmount\", \"actual\": \"ack-retry\", \"expected\": \"ack-retry\", \"passed\": true}, {\"check\": \"older notification incarnation\", \"actual\": \"received\", \"expected\": \"received\", \"passed\": true}, {\"check\": \"future notification incarnation\", \"actual\": \"received\", \"expected\": \"received\", \"passed\": true}, {\"check\": \"unknown event is inert\", \"actual\": \"received\", \"expected\": \"received\", \"passed\": true}, {\"check\": \"empty delivery batch\", \"actual\": \"received\", \"expected\": \"received\", \"passed\": true}, {\"check\": \"N stale deliveries before current delivery\", \"actual\": \"mounting\", \"expected\": \"mounting\", \"passed\": true}, {\"check\": \"trace mount-request then paint-confirmed\", \"actual\": \"ack-pending\", \"expected\": \"ack-pending\", \"passed\": true}, {\"check\": \"trace mount-request then mount-failed\", \"actual\": \"undisplayed\", \"expected\": \"undisplayed\", \"passed\": true}, {\"check\": \"trace mount-request then route-unmount\", \"actual\": \"undisplayed\", \"expected\": \"undisplayed\", \"passed\": true}, {\"check\": \"trace paint-confirmed then ack-success\", \"actual\": \"seen\", \"expected\": \"seen\", \"passed\": true}, {\"check\": \"trace paint-confirmed then ack-failure\", \"actual\": \"ack-retry\", \"expected\": \"ack-retry\", \"passed\": true}, {\"check\": \"trace mount-failed then retry-mount\", \"actual\": \"seen\", \"expected\": \"mounting\", \"passed\": false}, {\"check\": \"trace ack-success then delivery-replay\", \"actual\": \"seen\", \"expected\": \"seen\", \"passed\": true}, {\"check\": \"trace ack-failure then retry-ack\", \"actual\": \"ack-pending\", \"expected\": \"ack-pending\", \"passed\": true}, {\"check\": \"trace ack-failure then surface-unmount\", \"actual\": \"ack-retry\", \"expected\": \"ack-retry\", \"passed\": true}, {\"check\": \"trace retry-ack then ack-success\", \"actual\": \"seen\", \"expected\": \"seen\", \"passed\": true}, {\"check\": \"trace retry-ack then ack-failure\", \"actual\": \"ack-retry\", \"expected\": \"ack-retry\", \"passed\": true}, {\"check\": \"trace retry-mount then paint-confirmed\", \"actual\": \"seen\", \"expected\": \"ack-pending\", \"passed\": false}, {\"check\": \"trace retry-mount then mount-failed\", \"actual\": \"seen\", \"expected\": \"undisplayed\", \"passed\": false}, {\"check\": \"trace retry-mount then route-unmount\", \"actual\": \"seen\", \"expected\": \"undisplayed\", \"passed\": false}, {\"check\": \"trace delivery-replay then delivery-replay\", \"actual\": \"seen\", \"expected\": \"seen\", \"passed\": true}, {\"check\": \"trace route-unmount then retry-mount\", \"actual\": \"seen\", \"expected\": \"mounting\", \"passed\": false}, {\"check\": \"trace surface-unmount then retry-ack\", \"actual\": \"ack-pending\", \"expected\": \"ack-pending\", \"passed\": true}, {\"check\": \"trace surface-unmount then surface-unmount\", \"actual\": \"ack-retry\", \"expected\": \"ack-retry\", \"passed\": true}, {\"check\": \"domain state regression 1: painted\", \"actual\": {\"phase\": \"mounting\", \"value\": false}, \"expected\": {\"phase\": \"mounting\", \"value\": false}, \"passed\": true}, {\"check\": \"domain state regression 2: painted\", \"actual\": {\"phase\": \"ack-pending\", \"value\": true}, \"expected\": {\"phase\": \"ack-pending\", \"value\": true}, \"passed\": true}, {\"check\": \"domain state regression 3: acknowledged\", \"actual\": {\"phase\": \"ack-pending\", \"value\": false}, \"expected\": {\"phase\": \"ack-pending\", \"value\": false}, \"passed\": true}, {\"check\": \"domain state regression 4: acknowledged\", \"actual\": {\"phase\": \"seen\", \"value\": true}, \"expected\": {\"phase\": \"seen\", \"value\": true}, \"passed\": true}, {\"check\": \"domain state regression 5: ack_attempts\", \"actual\": {\"phase\": \"ack-pending\", \"value\": 3}, \"expected\": {\"phase\": \"ack-pending\", \"value\": 3}, \"passed\": true}, {\"check\": \"domain state regression 6: painted\", \"actual\": {\"phase\": \"undisplayed\", \"value\": false}, \"expected\": {\"phase\": \"undisplayed\", \"value\": false}, \"passed\": true}, {\"check\": \"domain state regression 7: acknowledged\", \"actual\": {\"phase\": \"seen\", \"value\": true}, \"expected\": {\"phase\": \"seen\", \"value\": true}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":44.717,"exit_code":1,"observations":[{"actual":"mounting","check":"received / mount-request","expected":"mounting","passed":true},{"actual":"ack-pending","check":"mounting / paint-confirmed","expected":"ack-pending","passed":true},{"actual":"undisplayed","check":"mounting / mount-failed","expected":"undisplayed","passed":true},{"actual":"seen","check":"ack-pending / ack-success","expected":"seen","passed":true},{"actual":"ack-retry","check":"ack-pending / ack-failure","expected":"ack-retry","passed":true},{"actual":"ack-pending","check":"ack-retry / retry-ack","expected":"ack-pending","passed":true},{"actual":"ack-pending","check":"undisplayed / retry-mount","expected":"mounting","passed":false},{"actual":"seen","check":"seen / delivery-replay","expected":"seen","passed":true},{"actual":"undisplayed","check":"mounting / route-unmount","expected":"undisplayed","passed":true},{"actual":"ack-retry","check":"ack-retry / surface-unmount","expected":"ack-retry","passed":true},{"actual":"received","check":"older notification incarnation","expected":"received","passed":true},{"actual":"received","check":"future notification incarnation","expected":"received","passed":true},{"actual":"received","check":"unknown event is inert","expected":"received","passed":true},{"actual":"received","check":"empty delivery batch","expected":"received","passed":true},{"actual":"mounting","check":"N stale deliveries before current delivery","expected":"mounting","passed":true},{"actual":"ack-pending","check":"trace mount-request then paint-confirmed","expected":"ack-pending","passed":true},{"actual":"undisplayed","check":"trace mount-request then mount-failed","expected":"undisplayed","passed":true},{"actual":"undisplayed","check":"trace mount-request then route-unmount","expected":"undisplayed","passed":true},{"actual":"seen","check":"trace paint-confirmed then ack-success","expected":"seen","passed":true},{"actual":"ack-retry","check":"trace paint-confirmed then ack-failure","expected":"ack-retry","passed":true},{"actual":"ack-pending","check":"trace mount-failed then retry-mount","expected":"mounting","passed":false},{"actual":"seen","check":"trace ack-success then delivery-replay","expected":"seen","passed":true},{"actual":"ack-pending","check":"trace ack-failure then retry-ack","expected":"ack-pending","passed":true},{"actual":"ack-retry","check":"trace ack-failure then surface-unmount","expected":"ack-retry","passed":true},{"actual":"seen","check":"trace retry-ack then ack-success","expected":"seen","passed":true},{"actual":"ack-retry","check":"trace retry-ack then ack-failure","expected":"ack-retry","passed":true},{"actual":"ack-pending","check":"trace retry-mount then paint-confirmed","expected":"ack-pending","passed":true},{"actual":"ack-pending","check":"trace retry-mount then mount-failed","expected":"undisplayed","passed":false},{"actual":"ack-pending","check":"trace retry-mount then route-unmount","expected":"undisplayed","passed":false},{"actual":"seen","check":"trace delivery-replay then delivery-replay","expected":"seen","passed":true},{"actual":"ack-pending","check":"trace route-unmount then retry-mount","expected":"mounting","passed":false},{"actual":"ack-pending","check":"trace surface-unmount then retry-ack","expected":"ack-pending","passed":true},{"actual":"ack-retry","check":"trace surface-unmount then surface-unmount","expected":"ack-retry","passed":true},{"actual":{"phase":"mounting","value":false},"check":"domain state regression 1: painted","expected":{"phase":"mounting","value":false},"passed":true},{"actual":{"phase":"ack-pending","value":true},"check":"domain state regression 2: painted","expected":{"phase":"ack-pending","value":true},"passed":true},{"actual":{"phase":"ack-pending","value":false},"check":"domain state regression 3: acknowledged","expected":{"phase":"ack-pending","value":false},"passed":true},{"actual":{"phase":"seen","value":true},"check":"domain state regression 4: acknowledged","expected":{"phase":"seen","value":true},"passed":true},{"actual":{"phase":"ack-pending","value":3},"check":"domain state regression 5: ack_attempts","expected":{"phase":"ack-pending","value":3},"passed":true},{"actual":{"phase":"undisplayed","value":false},"check":"domain state regression 6: painted","expected":{"phase":"undisplayed","value":false},"passed":true},{"actual":{"phase":"seen","value":true},"check":"domain state regression 7: acknowledged","expected":{"phase":"seen","value":true},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"received / mount-request\", \"actual\": \"mounting\", \"expected\": \"mounting\", \"passed\": true}, {\"check\": \"mounting / paint-confirmed\", \"actual\": \"ack-pending\", \"expected\": \"ack-pending\", \"passed\": true}, {\"check\": \"mounting / mount-failed\", \"actual\": \"undisplayed\", \"expected\": \"undisplayed\", \"passed\": true}, {\"check\": \"ack-pending / ack-success\", \"actual\": \"seen\", \"expected\": \"seen\", \"passed\": true}, {\"check\": \"ack-pending / ack-failure\", \"actual\": \"ack-retry\", \"expected\": \"ack-retry\", \"passed\": true}, {\"check\": \"ack-retry / retry-ack\", \"actual\": \"ack-pending\", \"expected\": \"ack-pending\", \"passed\": true}, {\"check\": \"undisplayed / retry-mount\", \"actual\": \"ack-pending\", \"expected\": \"mounting\", \"passed\": false}, {\"check\": \"seen / delivery-replay\", \"actual\": \"seen\", \"expected\": \"seen\", \"passed\": true}, {\"check\": \"mounting / route-unmount\", \"actual\": \"undisplayed\", \"expected\": \"undisplayed\", \"passed\": true}, {\"check\": \"ack-retry / surface-unmount\", \"actual\": \"ack-retry\", \"expected\": \"ack-retry\", \"passed\": true}, {\"check\": \"older notification incarnation\", \"actual\": \"received\", \"expected\": \"received\", \"passed\": true}, {\"check\": \"future notification incarnation\", \"actual\": \"received\", \"expected\": \"received\", \"passed\": true}, {\"check\": \"unknown event is inert\", \"actual\": \"received\", \"expected\": \"received\", \"passed\": true}, {\"check\": \"empty delivery batch\", \"actual\": \"received\", \"expected\": \"received\", \"passed\": true}, {\"check\": \"N stale deliveries before current delivery\", \"actual\": \"mounting\", \"expected\": \"mounting\", \"passed\": true}, {\"check\": \"trace mount-request then paint-confirmed\", \"actual\": \"ack-pending\", \"expected\": \"ack-pending\", \"passed\": true}, {\"check\": \"trace mount-request then mount-failed\", \"actual\": \"undisplayed\", \"expected\": \"undisplayed\", \"passed\": true}, {\"check\": \"trace mount-request then route-unmount\", \"actual\": \"undisplayed\", \"expected\": \"undisplayed\", \"passed\": true}, {\"check\": \"trace paint-confirmed then ack-success\", \"actual\": \"seen\", \"expected\": \"seen\", \"passed\": true}, {\"check\": \"trace paint-confirmed then ack-failure\", \"actual\": \"ack-retry\", \"expected\": \"ack-retry\", \"passed\": true}, {\"check\": \"trace mount-failed then retry-mount\", \"actual\": \"ack-pending\", \"expected\": \"mounting\", \"passed\": false}, {\"check\": \"trace ack-success then delivery-replay\", \"actual\": \"seen\", \"expected\": \"seen\", \"passed\": true}, {\"check\": \"trace ack-failure then retry-ack\", \"actual\": \"ack-pending\", \"expected\": \"ack-pending\", \"passed\": true}, {\"check\": \"trace ack-failure then surface-unmount\", \"actual\": \"ack-retry\", \"expected\": \"ack-retry\", \"passed\": true}, {\"check\": \"trace retry-ack then ack-success\", \"actual\": \"seen\", \"expected\": \"seen\", \"passed\": true}, {\"check\": \"trace retry-ack then ack-failure\", \"actual\": \"ack-retry\", \"expected\": \"ack-retry\", \"passed\": true}, {\"check\": \"trace retry-mount then paint-confirmed\", \"actual\": \"ack-pending\", \"expected\": \"ack-pending\", \"passed\": true}, {\"check\": \"trace retry-mount then mount-failed\", \"actual\": \"ack-pending\", \"expected\": \"undisplayed\", \"passed\": false}, {\"check\": \"trace retry-mount then route-unmount\", \"actual\": \"ack-pending\", \"expected\": \"undisplayed\", \"passed\": false}, {\"check\": \"trace delivery-replay then delivery-replay\", \"actual\": \"seen\", \"expected\": \"seen\", \"passed\": true}, {\"check\": \"trace route-unmount then retry-mount\", \"actual\": \"ack-pending\", \"expected\": \"mounting\", \"passed\": false}, {\"check\": \"trace surface-unmount then retry-ack\", \"actual\": \"ack-pending\", \"expected\": \"ack-pending\", \"passed\": true}, {\"check\": \"trace surface-unmount then surface-unmount\", \"actual\": \"ack-retry\", \"expected\": \"ack-retry\", \"passed\": true}, {\"check\": \"domain state regression 1: painted\", \"actual\": {\"phase\": \"mounting\", \"value\": false}, \"expected\": {\"phase\": \"mounting\", \"value\": false}, \"passed\": true}, {\"check\": \"domain state regression 2: painted\", \"actual\": {\"phase\": \"ack-pending\", \"value\": true}, \"expected\": {\"phase\": \"ack-pending\", \"value\": true}, \"passed\": true}, {\"check\": \"domain state regression 3: acknowledged\", \"actual\": {\"phase\": \"ack-pending\", \"value\": false}, \"expected\": {\"phase\": \"ack-pending\", \"value\": false}, \"passed\": true}, {\"check\": \"domain state regression 4: acknowledged\", \"actual\": {\"phase\": \"seen\", \"value\": true}, \"expected\": {\"phase\": \"seen\", \"value\": true}, \"passed\": true}, {\"check\": \"domain state regression 5: ack_attempts\", \"actual\": {\"phase\": \"ack-pending\", \"value\": 3}, \"expected\": {\"phase\": \"ack-pending\", \"value\": 3}, \"passed\": true}, {\"check\": \"domain state regression 6: painted\", \"actual\": {\"phase\": \"undisplayed\", \"value\": false}, \"expected\": {\"phase\": \"undisplayed\", \"value\": false}, \"passed\": true}, {\"check\": \"domain state regression 7: acknowledged\", \"actual\": {\"phase\": \"seen\", \"value\": true}, \"expected\": {\"phase\": \"seen\", \"value\": true}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":46.953,"exit_code":0,"observations":[{"actual":"mounting","check":"received / mount-request","expected":"mounting","passed":true},{"actual":"ack-pending","check":"mounting / paint-confirmed","expected":"ack-pending","passed":true},{"actual":"undisplayed","check":"mounting / mount-failed","expected":"undisplayed","passed":true},{"actual":"seen","check":"ack-pending / ack-success","expected":"seen","passed":true},{"actual":"ack-retry","check":"ack-pending / ack-failure","expected":"ack-retry","passed":true},{"actual":"ack-pending","check":"ack-retry / retry-ack","expected":"ack-pending","passed":true},{"actual":"mounting","check":"undisplayed / retry-mount","expected":"mounting","passed":true},{"actual":"seen","check":"seen / delivery-replay","expected":"seen","passed":true},{"actual":"undisplayed","check":"mounting / route-unmount","expected":"undisplayed","passed":true},{"actual":"ack-retry","check":"ack-retry / surface-unmount","expected":"ack-retry","passed":true},{"actual":"received","check":"older notification incarnation","expected":"received","passed":true},{"actual":"received","check":"future notification incarnation","expected":"received","passed":true},{"actual":"received","check":"unknown event is inert","expected":"received","passed":true},{"actual":"received","check":"empty delivery batch","expected":"received","passed":true},{"actual":"mounting","check":"N stale deliveries before current delivery","expected":"mounting","passed":true},{"actual":"ack-pending","check":"trace mount-request then paint-confirmed","expected":"ack-pending","passed":true},{"actual":"undisplayed","check":"trace mount-request then mount-failed","expected":"undisplayed","passed":true},{"actual":"undisplayed","check":"trace mount-request then route-unmount","expected":"undisplayed","passed":true},{"actual":"seen","check":"trace paint-confirmed then ack-success","expected":"seen","passed":true},{"actual":"ack-retry","check":"trace paint-confirmed then ack-failure","expected":"ack-retry","passed":true},{"actual":"mounting","check":"trace mount-failed then retry-mount","expected":"mounting","passed":true},{"actual":"seen","check":"trace ack-success then delivery-replay","expected":"seen","passed":true},{"actual":"ack-pending","check":"trace ack-failure then retry-ack","expected":"ack-pending","passed":true},{"actual":"ack-retry","check":"trace ack-failure then surface-unmount","expected":"ack-retry","passed":true},{"actual":"seen","check":"trace retry-ack then ack-success","expected":"seen","passed":true},{"actual":"ack-retry","check":"trace retry-ack then ack-failure","expected":"ack-retry","passed":true},{"actual":"ack-pending","check":"trace retry-mount then paint-confirmed","expected":"ack-pending","passed":true},{"actual":"undisplayed","check":"trace retry-mount then mount-failed","expected":"undisplayed","passed":true},{"actual":"undisplayed","check":"trace retry-mount then route-unmount","expected":"undisplayed","passed":true},{"actual":"seen","check":"trace delivery-replay then delivery-replay","expected":"seen","passed":true},{"actual":"mounting","check":"trace route-unmount then retry-mount","expected":"mounting","passed":true},{"actual":"ack-pending","check":"trace surface-unmount then retry-ack","expected":"ack-pending","passed":true},{"actual":"ack-retry","check":"trace surface-unmount then surface-unmount","expected":"ack-retry","passed":true},{"actual":{"phase":"mounting","value":false},"check":"domain state regression 1: painted","expected":{"phase":"mounting","value":false},"passed":true},{"actual":{"phase":"ack-pending","value":true},"check":"domain state regression 2: painted","expected":{"phase":"ack-pending","value":true},"passed":true},{"actual":{"phase":"ack-pending","value":false},"check":"domain state regression 3: acknowledged","expected":{"phase":"ack-pending","value":false},"passed":true},{"actual":{"phase":"seen","value":true},"check":"domain state regression 4: acknowledged","expected":{"phase":"seen","value":true},"passed":true},{"actual":{"phase":"ack-pending","value":3},"check":"domain state regression 5: ack_attempts","expected":{"phase":"ack-pending","value":3},"passed":true},{"actual":{"phase":"undisplayed","value":false},"check":"domain state regression 6: painted","expected":{"phase":"undisplayed","value":false},"passed":true},{"actual":{"phase":"seen","value":true},"check":"domain state regression 7: acknowledged","expected":{"phase":"seen","value":true},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"received / mount-request\", \"actual\": \"mounting\", \"expected\": \"mounting\", \"passed\": true}, {\"check\": \"mounting / paint-confirmed\", \"actual\": \"ack-pending\", \"expected\": \"ack-pending\", \"passed\": true}, {\"check\": \"mounting / mount-failed\", \"actual\": \"undisplayed\", \"expected\": \"undisplayed\", \"passed\": true}, {\"check\": \"ack-pending / ack-success\", \"actual\": \"seen\", \"expected\": \"seen\", \"passed\": true}, {\"check\": \"ack-pending / ack-failure\", \"actual\": \"ack-retry\", \"expected\": \"ack-retry\", \"passed\": true}, {\"check\": \"ack-retry / retry-ack\", \"actual\": \"ack-pending\", \"expected\": \"ack-pending\", \"passed\": true}, {\"check\": \"undisplayed / retry-mount\", \"actual\": \"mounting\", \"expected\": \"mounting\", \"passed\": true}, {\"check\": \"seen / delivery-replay\", \"actual\": \"seen\", \"expected\": \"seen\", \"passed\": true}, {\"check\": \"mounting / route-unmount\", \"actual\": \"undisplayed\", \"expected\": \"undisplayed\", \"passed\": true}, {\"check\": \"ack-retry / surface-unmount\", \"actual\": \"ack-retry\", \"expected\": \"ack-retry\", \"passed\": true}, {\"check\": \"older notification incarnation\", \"actual\": \"received\", \"expected\": \"received\", \"passed\": true}, {\"check\": \"future notification incarnation\", \"actual\": \"received\", \"expected\": \"received\", \"passed\": true}, {\"check\": \"unknown event is inert\", \"actual\": \"received\", \"expected\": \"received\", \"passed\": true}, {\"check\": \"empty delivery batch\", \"actual\": \"received\", \"expected\": \"received\", \"passed\": true}, {\"check\": \"N stale deliveries before current delivery\", \"actual\": \"mounting\", \"expected\": \"mounting\", \"passed\": true}, {\"check\": \"trace mount-request then paint-confirmed\", \"actual\": \"ack-pending\", \"expected\": \"ack-pending\", \"passed\": true}, {\"check\": \"trace mount-request then mount-failed\", \"actual\": \"undisplayed\", \"expected\": \"undisplayed\", \"passed\": true}, {\"check\": \"trace mount-request then route-unmount\", \"actual\": \"undisplayed\", \"expected\": \"undisplayed\", \"passed\": true}, {\"check\": \"trace paint-confirmed then ack-success\", \"actual\": \"seen\", \"expected\": \"seen\", \"passed\": true}, {\"check\": \"trace paint-confirmed then ack-failure\", \"actual\": \"ack-retry\", \"expected\": \"ack-retry\", \"passed\": true}, {\"check\": \"trace mount-failed then retry-mount\", \"actual\": \"mounting\", \"expected\": \"mounting\", \"passed\": true}, {\"check\": \"trace ack-success then delivery-replay\", \"actual\": \"seen\", \"expected\": \"seen\", \"passed\": true}, {\"check\": \"trace ack-failure then retry-ack\", \"actual\": \"ack-pending\", \"expected\": \"ack-pending\", \"passed\": true}, {\"check\": \"trace ack-failure then surface-unmount\", \"actual\": \"ack-retry\", \"expected\": \"ack-retry\", \"passed\": true}, {\"check\": \"trace retry-ack then ack-success\", \"actual\": \"seen\", \"expected\": \"seen\", \"passed\": true}, {\"check\": \"trace retry-ack then ack-failure\", \"actual\": \"ack-retry\", \"expected\": \"ack-retry\", \"passed\": true}, {\"check\": \"trace retry-mount then paint-confirmed\", \"actual\": \"ack-pending\", \"expected\": \"ack-pending\", \"passed\": true}, {\"check\": \"trace retry-mount then mount-failed\", \"actual\": \"undisplayed\", \"expected\": \"undisplayed\", \"passed\": true}, {\"check\": \"trace retry-mount then route-unmount\", \"actual\": \"undisplayed\", \"expected\": \"undisplayed\", \"passed\": true}, {\"check\": \"trace delivery-replay then delivery-replay\", \"actual\": \"seen\", \"expected\": \"seen\", \"passed\": true}, {\"check\": \"trace route-unmount then retry-mount\", \"actual\": \"mounting\", \"expected\": \"mounting\", \"passed\": true}, {\"check\": \"trace surface-unmount then retry-ack\", \"actual\": \"ack-pending\", \"expected\": \"ack-pending\", \"passed\": true}, {\"check\": \"trace surface-unmount then surface-unmount\", \"actual\": \"ack-retry\", \"expected\": \"ack-retry\", \"passed\": true}, {\"check\": \"domain state regression 1: painted\", \"actual\": {\"phase\": \"mounting\", \"value\": false}, \"expected\": {\"phase\": \"mounting\", \"value\": false}, \"passed\": true}, {\"check\": \"domain state regression 2: painted\", \"actual\": {\"phase\": \"ack-pending\", \"value\": true}, \"expected\": {\"phase\": \"ack-pending\", \"value\": true}, \"passed\": true}, {\"check\": \"domain state regression 3: acknowledged\", \"actual\": {\"phase\": \"ack-pending\", \"value\": false}, \"expected\": {\"phase\": \"ack-pending\", \"value\": false}, \"passed\": true}, {\"check\": \"domain state regression 4: acknowledged\", \"actual\": {\"phase\": \"seen\", \"value\": true}, \"expected\": {\"phase\": \"seen\", \"value\": true}, \"passed\": true}, {\"check\": \"domain state regression 5: ack_attempts\", \"actual\": {\"phase\": \"ack-pending\", \"value\": 3}, \"expected\": {\"phase\": \"ack-pending\", \"value\": 3}, \"passed\": true}, {\"check\": \"domain state regression 6: painted\", \"actual\": {\"phase\": \"undisplayed\", \"value\": false}, \"expected\": {\"phase\": \"undisplayed\", \"value\": false}, \"passed\": true}, {\"check\": \"domain state regression 7: acknowledged\", \"actual\": {\"phase\": \"seen\", \"value\": true}, \"expected\": {\"phase\": \"seen\", \"value\": true}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}