{"abstract":"The window-end event leaves a notification in committed instead of undo-pending.","category":"Notification interfaces","checks":38,"contract":"Notification undo affordance is a bounded visual-notification workflow with mutable policy state {'deadline': 20, 'now': 5, 'applied': True, 'requests': 0}. Its default transition relation is {('offered', 'undo-click'): 'undo-pending', ('undo-pending', 'undo-success'): 'restored', ('undo-pending', 'undo-failure'): 'retry-offered', ('offered', 'window-end'): 'committed', ('undo-pending', 'window-end'): 'undo-pending', ('retry-offered', 'retry-click'): 'undo-pending', ('restored', 'late-window-end'): 'restored', ('committed', 'late-undo-click'): 'too-late', ('too-late', 'acknowledge'): 'closed', ('retry-offered', 'dismiss-error'): 'committed'}; 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-undo-window","failed_approach":"Showing retry during an outstanding request permits duplicates.","family":"s3-notification-interfaces-undo-window-05","id":"FA-33911","implementations":{"attempt":{"sha256":"92ae0ff4653851b0de1c6d3e97297d7f08a5a6cdb9f52442fb48ab90c5f15339","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 = {('offered', 'undo-click'): 'undo-pending', ('undo-pending', 'undo-success'): 'restored', ('undo-pending', 'undo-failure'): 'retry-offered', ('offered', 'window-end'): 'committed', ('undo-pending', 'window-end'): 'retry-offered', ('retry-offered', 'retry-click'): 'undo-pending', ('restored', 'late-window-end'): 'restored', ('committed', 'late-undo-click'): 'too-late', ('too-late', 'acknowledge'): 'closed', ('retry-offered', 'dismiss-error'): 'committed'}\n    data = json.loads(json.dumps({'deadline': 20, 'now': 5, 'applied': True, 'requests': 0})) if payload is None else {**json.loads(json.dumps({'deadline': 20, 'now': 5, 'applied': True, 'requests': 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            data['now'] = max(data['now'], arg.get('now', data['now']))\n            if event in ('undo-click', 'retry-click'):\n                if data['now'] >= data['deadline']: event = 'window-end'\n                else: data['requests'] += 1\n            if event == 'window-end' and data['now'] < data['deadline'] and 'now' in arg: event = 'unknown-event'\n            state = table.get((state, event), state)\n            if state == 'restored': data['applied'] = False\n            if state == 'committed': data['applied'] = True\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('offered / undo-click', solve('offered', [('undo-click', N)], N), 'undo-pending')\ncheck('undo-pending / undo-success', solve('undo-pending', [('undo-success', N)], N), 'restored')\ncheck('undo-pending / undo-failure', solve('undo-pending', [('undo-failure', N)], N), 'retry-offered')\ncheck('offered / window-end', solve('offered', [('window-end', N)], N), 'committed')\ncheck('undo-pending / window-end', solve('undo-pending', [('window-end', N)], N), 'undo-pending')\ncheck('retry-offered / retry-click', solve('retry-offered', [('retry-click', N)], N), 'undo-pending')\ncheck('restored / late-window-end', solve('restored', [('late-window-end', N)], N), 'restored')\ncheck('committed / late-undo-click', solve('committed', [('late-undo-click', N)], N), 'too-late')\ncheck('too-late / acknowledge', solve('too-late', [('acknowledge', N)], N), 'closed')\ncheck('retry-offered / dismiss-error', solve('retry-offered', [('dismiss-error', N)], N), 'committed')\ncheck('older notification incarnation', solve('offered', [('undo-click', N - 1)], N), 'offered')\ncheck('future notification incarnation', solve('offered', [('undo-click', N + 1)], N), 'offered')\ncheck('unknown event is inert', solve('offered', [('unknown-event', N)], N), 'offered')\ncheck('empty delivery batch', solve('offered', [], N), 'offered')\ncheck('N stale deliveries before current delivery', solve('offered', [('undo-click', N - 1)] * N + [('undo-click', N)], N), 'undo-pending')\ncheck('trace undo-click then undo-success', solve('offered', [('undo-click', N), ('undo-success', N)], N), 'restored')\ncheck('trace undo-click then undo-failure', solve('offered', [('undo-click', N), ('undo-failure', N)], N), 'retry-offered')\ncheck('trace undo-click then window-end', solve('offered', [('undo-click', N), ('window-end', N)], N), 'undo-pending')\ncheck('trace undo-success then late-window-end', solve('undo-pending', [('undo-success', N), ('late-window-end', N)], N), 'restored')\ncheck('trace undo-failure then retry-click', solve('undo-pending', [('undo-failure', N), ('retry-click', N)], N), 'undo-pending')\ncheck('trace undo-failure then dismiss-error', solve('undo-pending', [('undo-failure', N), ('dismiss-error', N)], N), 'committed')\ncheck('trace window-end then late-undo-click', solve('offered', [('window-end', N), ('late-undo-click', N)], N), 'too-late')\ncheck('trace window-end then undo-success', solve('undo-pending', [('window-end', N), ('undo-success', N)], N), 'restored')\ncheck('trace window-end then undo-failure', solve('undo-pending', [('window-end', N), ('undo-failure', N)], N), 'retry-offered')\ncheck('trace window-end then window-end', solve('undo-pending', [('window-end', N), ('window-end', N)], N), 'undo-pending')\ncheck('trace retry-click then undo-success', solve('retry-offered', [('retry-click', N), ('undo-success', N)], N), 'restored')\ncheck('trace retry-click then undo-failure', solve('retry-offered', [('retry-click', N), ('undo-failure', N)], N), 'retry-offered')\ncheck('trace retry-click then window-end', solve('retry-offered', [('retry-click', N), ('window-end', N)], N), 'undo-pending')\ncheck('trace late-window-end then late-window-end', solve('restored', [('late-window-end', N), ('late-window-end', N)], N), 'restored')\ncheck('trace late-undo-click then acknowledge', solve('committed', [('late-undo-click', N), ('acknowledge', N)], N), 'closed')\ncheck('trace dismiss-error then late-undo-click', solve('retry-offered', [('dismiss-error', N), ('late-undo-click', N)], N), 'too-late')\ncheck('domain state regression 1: requests', solve('offered', [('undo-click', N, {'now': 19})], N, {}, 'requests'), {'phase': 'undo-pending', 'value': 1})\ncheck('domain state regression 2: requests', solve('offered', [('undo-click', N, {'now': 20})], N, {}, 'requests'), {'phase': 'committed', 'value': 0})\ncheck('domain state regression 3: applied', solve('offered', [('window-end', N, {'now': 19})], N, {}, 'applied'), {'phase': 'offered', 'value': True})\ncheck('domain state regression 4: applied', solve('undo-pending', [('undo-success', N, {})], N, {}, 'applied'), {'phase': 'restored', 'value': False})\ncheck('domain state regression 5: requests', solve('retry-offered', [('retry-click', N, {'now': 8})], N, {'requests': 1}, 'requests'), {'phase': 'undo-pending', 'value': 2})\ncheck('domain state regression 6: now', solve('offered', [('undo-click', N, {'now': 2})], N, {}, 'now'), {'phase': 'undo-pending', 'value': 5})\ncheck('domain state regression 7: applied', solve('offered', [('undo-click', N, {'now': 19}), ('window-end', N, {'now': 20}), ('undo-success', N, {})], N, {}, 'applied'), {'phase': 'restored', 'value': False})\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":"cf8ad060ebfe12c21ca1df5972ec67ddee6b669c3a938ffca88b07b89f8bcfe4","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 = {('offered', 'undo-click'): 'undo-pending', ('undo-pending', 'undo-success'): 'restored', ('undo-pending', 'undo-failure'): 'retry-offered', ('offered', 'window-end'): 'committed', ('undo-pending', 'window-end'): 'committed', ('retry-offered', 'retry-click'): 'undo-pending', ('restored', 'late-window-end'): 'restored', ('committed', 'late-undo-click'): 'too-late', ('too-late', 'acknowledge'): 'closed', ('retry-offered', 'dismiss-error'): 'committed'}\n    data = json.loads(json.dumps({'deadline': 20, 'now': 5, 'applied': True, 'requests': 0})) if payload is None else {**json.loads(json.dumps({'deadline': 20, 'now': 5, 'applied': True, 'requests': 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            data['now'] = max(data['now'], arg.get('now', data['now']))\n            if event in ('undo-click', 'retry-click'):\n                if data['now'] >= data['deadline']: event = 'window-end'\n                else: data['requests'] += 1\n            if event == 'window-end' and data['now'] < data['deadline'] and 'now' in arg: event = 'unknown-event'\n            state = table.get((state, event), state)\n            if state == 'restored': data['applied'] = False\n            if state == 'committed': data['applied'] = True\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('offered / undo-click', solve('offered', [('undo-click', N)], N), 'undo-pending')\ncheck('undo-pending / undo-success', solve('undo-pending', [('undo-success', N)], N), 'restored')\ncheck('undo-pending / undo-failure', solve('undo-pending', [('undo-failure', N)], N), 'retry-offered')\ncheck('offered / window-end', solve('offered', [('window-end', N)], N), 'committed')\ncheck('undo-pending / window-end', solve('undo-pending', [('window-end', N)], N), 'undo-pending')\ncheck('retry-offered / retry-click', solve('retry-offered', [('retry-click', N)], N), 'undo-pending')\ncheck('restored / late-window-end', solve('restored', [('late-window-end', N)], N), 'restored')\ncheck('committed / late-undo-click', solve('committed', [('late-undo-click', N)], N), 'too-late')\ncheck('too-late / acknowledge', solve('too-late', [('acknowledge', N)], N), 'closed')\ncheck('retry-offered / dismiss-error', solve('retry-offered', [('dismiss-error', N)], N), 'committed')\ncheck('older notification incarnation', solve('offered', [('undo-click', N - 1)], N), 'offered')\ncheck('future notification incarnation', solve('offered', [('undo-click', N + 1)], N), 'offered')\ncheck('unknown event is inert', solve('offered', [('unknown-event', N)], N), 'offered')\ncheck('empty delivery batch', solve('offered', [], N), 'offered')\ncheck('N stale deliveries before current delivery', solve('offered', [('undo-click', N - 1)] * N + [('undo-click', N)], N), 'undo-pending')\ncheck('trace undo-click then undo-success', solve('offered', [('undo-click', N), ('undo-success', N)], N), 'restored')\ncheck('trace undo-click then undo-failure', solve('offered', [('undo-click', N), ('undo-failure', N)], N), 'retry-offered')\ncheck('trace undo-click then window-end', solve('offered', [('undo-click', N), ('window-end', N)], N), 'undo-pending')\ncheck('trace undo-success then late-window-end', solve('undo-pending', [('undo-success', N), ('late-window-end', N)], N), 'restored')\ncheck('trace undo-failure then retry-click', solve('undo-pending', [('undo-failure', N), ('retry-click', N)], N), 'undo-pending')\ncheck('trace undo-failure then dismiss-error', solve('undo-pending', [('undo-failure', N), ('dismiss-error', N)], N), 'committed')\ncheck('trace window-end then late-undo-click', solve('offered', [('window-end', N), ('late-undo-click', N)], N), 'too-late')\ncheck('trace window-end then undo-success', solve('undo-pending', [('window-end', N), ('undo-success', N)], N), 'restored')\ncheck('trace window-end then undo-failure', solve('undo-pending', [('window-end', N), ('undo-failure', N)], N), 'retry-offered')\ncheck('trace window-end then window-end', solve('undo-pending', [('window-end', N), ('window-end', N)], N), 'undo-pending')\ncheck('trace retry-click then undo-success', solve('retry-offered', [('retry-click', N), ('undo-success', N)], N), 'restored')\ncheck('trace retry-click then undo-failure', solve('retry-offered', [('retry-click', N), ('undo-failure', N)], N), 'retry-offered')\ncheck('trace retry-click then window-end', solve('retry-offered', [('retry-click', N), ('window-end', N)], N), 'undo-pending')\ncheck('trace late-window-end then late-window-end', solve('restored', [('late-window-end', N), ('late-window-end', N)], N), 'restored')\ncheck('trace late-undo-click then acknowledge', solve('committed', [('late-undo-click', N), ('acknowledge', N)], N), 'closed')\ncheck('trace dismiss-error then late-undo-click', solve('retry-offered', [('dismiss-error', N), ('late-undo-click', N)], N), 'too-late')\ncheck('domain state regression 1: requests', solve('offered', [('undo-click', N, {'now': 19})], N, {}, 'requests'), {'phase': 'undo-pending', 'value': 1})\ncheck('domain state regression 2: requests', solve('offered', [('undo-click', N, {'now': 20})], N, {}, 'requests'), {'phase': 'committed', 'value': 0})\ncheck('domain state regression 3: applied', solve('offered', [('window-end', N, {'now': 19})], N, {}, 'applied'), {'phase': 'offered', 'value': True})\ncheck('domain state regression 4: applied', solve('undo-pending', [('undo-success', N, {})], N, {}, 'applied'), {'phase': 'restored', 'value': False})\ncheck('domain state regression 5: requests', solve('retry-offered', [('retry-click', N, {'now': 8})], N, {'requests': 1}, 'requests'), {'phase': 'undo-pending', 'value': 2})\ncheck('domain state regression 6: now', solve('offered', [('undo-click', N, {'now': 2})], N, {}, 'now'), {'phase': 'undo-pending', 'value': 5})\ncheck('domain state regression 7: applied', solve('offered', [('undo-click', N, {'now': 19}), ('window-end', N, {'now': 20}), ('undo-success', N, {})], N, {}, 'applied'), {'phase': 'restored', 'value': False})\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":"53c9b3a588289712f4ce5e52959ade85439c304c4fbf1c087b1cf9d1647b3340","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 = {('offered', 'undo-click'): 'undo-pending', ('undo-pending', 'undo-success'): 'restored', ('undo-pending', 'undo-failure'): 'retry-offered', ('offered', 'window-end'): 'committed', ('undo-pending', 'window-end'): 'undo-pending', ('retry-offered', 'retry-click'): 'undo-pending', ('restored', 'late-window-end'): 'restored', ('committed', 'late-undo-click'): 'too-late', ('too-late', 'acknowledge'): 'closed', ('retry-offered', 'dismiss-error'): 'committed'}\n    data = json.loads(json.dumps({'deadline': 20, 'now': 5, 'applied': True, 'requests': 0})) if payload is None else {**json.loads(json.dumps({'deadline': 20, 'now': 5, 'applied': True, 'requests': 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            data['now'] = max(data['now'], arg.get('now', data['now']))\n            if event in ('undo-click', 'retry-click'):\n                if data['now'] >= data['deadline']: event = 'window-end'\n                else: data['requests'] += 1\n            if event == 'window-end' and data['now'] < data['deadline'] and 'now' in arg: event = 'unknown-event'\n            state = table.get((state, event), state)\n            if state == 'restored': data['applied'] = False\n            if state == 'committed': data['applied'] = True\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('offered / undo-click', solve('offered', [('undo-click', N)], N), 'undo-pending')\ncheck('undo-pending / undo-success', solve('undo-pending', [('undo-success', N)], N), 'restored')\ncheck('undo-pending / undo-failure', solve('undo-pending', [('undo-failure', N)], N), 'retry-offered')\ncheck('offered / window-end', solve('offered', [('window-end', N)], N), 'committed')\ncheck('undo-pending / window-end', solve('undo-pending', [('window-end', N)], N), 'undo-pending')\ncheck('retry-offered / retry-click', solve('retry-offered', [('retry-click', N)], N), 'undo-pending')\ncheck('restored / late-window-end', solve('restored', [('late-window-end', N)], N), 'restored')\ncheck('committed / late-undo-click', solve('committed', [('late-undo-click', N)], N), 'too-late')\ncheck('too-late / acknowledge', solve('too-late', [('acknowledge', N)], N), 'closed')\ncheck('retry-offered / dismiss-error', solve('retry-offered', [('dismiss-error', N)], N), 'committed')\ncheck('older notification incarnation', solve('offered', [('undo-click', N - 1)], N), 'offered')\ncheck('future notification incarnation', solve('offered', [('undo-click', N + 1)], N), 'offered')\ncheck('unknown event is inert', solve('offered', [('unknown-event', N)], N), 'offered')\ncheck('empty delivery batch', solve('offered', [], N), 'offered')\ncheck('N stale deliveries before current delivery', solve('offered', [('undo-click', N - 1)] * N + [('undo-click', N)], N), 'undo-pending')\ncheck('trace undo-click then undo-success', solve('offered', [('undo-click', N), ('undo-success', N)], N), 'restored')\ncheck('trace undo-click then undo-failure', solve('offered', [('undo-click', N), ('undo-failure', N)], N), 'retry-offered')\ncheck('trace undo-click then window-end', solve('offered', [('undo-click', N), ('window-end', N)], N), 'undo-pending')\ncheck('trace undo-success then late-window-end', solve('undo-pending', [('undo-success', N), ('late-window-end', N)], N), 'restored')\ncheck('trace undo-failure then retry-click', solve('undo-pending', [('undo-failure', N), ('retry-click', N)], N), 'undo-pending')\ncheck('trace undo-failure then dismiss-error', solve('undo-pending', [('undo-failure', N), ('dismiss-error', N)], N), 'committed')\ncheck('trace window-end then late-undo-click', solve('offered', [('window-end', N), ('late-undo-click', N)], N), 'too-late')\ncheck('trace window-end then undo-success', solve('undo-pending', [('window-end', N), ('undo-success', N)], N), 'restored')\ncheck('trace window-end then undo-failure', solve('undo-pending', [('window-end', N), ('undo-failure', N)], N), 'retry-offered')\ncheck('trace window-end then window-end', solve('undo-pending', [('window-end', N), ('window-end', N)], N), 'undo-pending')\ncheck('trace retry-click then undo-success', solve('retry-offered', [('retry-click', N), ('undo-success', N)], N), 'restored')\ncheck('trace retry-click then undo-failure', solve('retry-offered', [('retry-click', N), ('undo-failure', N)], N), 'retry-offered')\ncheck('trace retry-click then window-end', solve('retry-offered', [('retry-click', N), ('window-end', N)], N), 'undo-pending')\ncheck('trace late-window-end then late-window-end', solve('restored', [('late-window-end', N), ('late-window-end', N)], N), 'restored')\ncheck('trace late-undo-click then acknowledge', solve('committed', [('late-undo-click', N), ('acknowledge', N)], N), 'closed')\ncheck('trace dismiss-error then late-undo-click', solve('retry-offered', [('dismiss-error', N), ('late-undo-click', N)], N), 'too-late')\ncheck('domain state regression 1: requests', solve('offered', [('undo-click', N, {'now': 19})], N, {}, 'requests'), {'phase': 'undo-pending', 'value': 1})\ncheck('domain state regression 2: requests', solve('offered', [('undo-click', N, {'now': 20})], N, {}, 'requests'), {'phase': 'committed', 'value': 0})\ncheck('domain state regression 3: applied', solve('offered', [('window-end', N, {'now': 19})], N, {}, 'applied'), {'phase': 'offered', 'value': True})\ncheck('domain state regression 4: applied', solve('undo-pending', [('undo-success', N, {})], N, {}, 'applied'), {'phase': 'restored', 'value': False})\ncheck('domain state regression 5: requests', solve('retry-offered', [('retry-click', N, {'now': 8})], N, {'requests': 1}, 'requests'), {'phase': 'undo-pending', 'value': 2})\ncheck('domain state regression 6: now', solve('offered', [('undo-click', N, {'now': 2})], N, {}, 'now'), {'phase': 'undo-pending', 'value': 5})\ncheck('domain state regression 7: applied', solve('offered', [('undo-click', N, {'now': 19}), ('window-end', N, {'now': 20}), ('undo-success', N, {})], N, {}, 'applied'), {'phase': 'restored', 'value': False})\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-undo-window-05","generated_at":"2026-09-29T14:42:26.861761+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 undo-pending / window-end transition to undo-pending; preserve the other explicitly stipulated transitions.","root_cause":"The display deadline aborts a reversal already submitted.","sha256":"a01b043399a7d28e40508273297899f1edc88d4a639266dff49232d24531b252","title":"Notification undo affordance: window-end from undo-pending · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.547,"exit_code":1,"observations":[{"actual":"undo-pending","check":"offered / undo-click","expected":"undo-pending","passed":true},{"actual":"restored","check":"undo-pending / undo-success","expected":"restored","passed":true},{"actual":"retry-offered","check":"undo-pending / undo-failure","expected":"retry-offered","passed":true},{"actual":"committed","check":"offered / window-end","expected":"committed","passed":true},{"actual":"retry-offered","check":"undo-pending / window-end","expected":"undo-pending","passed":false},{"actual":"undo-pending","check":"retry-offered / retry-click","expected":"undo-pending","passed":true},{"actual":"restored","check":"restored / late-window-end","expected":"restored","passed":true},{"actual":"too-late","check":"committed / late-undo-click","expected":"too-late","passed":true},{"actual":"closed","check":"too-late / acknowledge","expected":"closed","passed":true},{"actual":"committed","check":"retry-offered / dismiss-error","expected":"committed","passed":true},{"actual":"offered","check":"older notification incarnation","expected":"offered","passed":true},{"actual":"offered","check":"future notification incarnation","expected":"offered","passed":true},{"actual":"offered","check":"unknown event is inert","expected":"offered","passed":true},{"actual":"offered","check":"empty delivery batch","expected":"offered","passed":true},{"actual":"undo-pending","check":"N stale deliveries before current delivery","expected":"undo-pending","passed":true},{"actual":"restored","check":"trace undo-click then undo-success","expected":"restored","passed":true},{"actual":"retry-offered","check":"trace undo-click then undo-failure","expected":"retry-offered","passed":true},{"actual":"retry-offered","check":"trace undo-click then window-end","expected":"undo-pending","passed":false},{"actual":"restored","check":"trace undo-success then late-window-end","expected":"restored","passed":true},{"actual":"undo-pending","check":"trace undo-failure then retry-click","expected":"undo-pending","passed":true},{"actual":"committed","check":"trace undo-failure then dismiss-error","expected":"committed","passed":true},{"actual":"too-late","check":"trace window-end then late-undo-click","expected":"too-late","passed":true},{"actual":"retry-offered","check":"trace window-end then undo-success","expected":"restored","passed":false},{"actual":"retry-offered","check":"trace window-end then undo-failure","expected":"retry-offered","passed":true},{"actual":"retry-offered","check":"trace window-end then window-end","expected":"undo-pending","passed":false},{"actual":"restored","check":"trace retry-click then undo-success","expected":"restored","passed":true},{"actual":"retry-offered","check":"trace retry-click then undo-failure","expected":"retry-offered","passed":true},{"actual":"retry-offered","check":"trace retry-click then window-end","expected":"undo-pending","passed":false},{"actual":"restored","check":"trace late-window-end then late-window-end","expected":"restored","passed":true},{"actual":"closed","check":"trace late-undo-click then acknowledge","expected":"closed","passed":true},{"actual":"too-late","check":"trace dismiss-error then late-undo-click","expected":"too-late","passed":true},{"actual":{"phase":"undo-pending","value":1},"check":"domain state regression 1: requests","expected":{"phase":"undo-pending","value":1},"passed":true},{"actual":{"phase":"committed","value":0},"check":"domain state regression 2: requests","expected":{"phase":"committed","value":0},"passed":true},{"actual":{"phase":"offered","value":true},"check":"domain state regression 3: applied","expected":{"phase":"offered","value":true},"passed":true},{"actual":{"phase":"restored","value":false},"check":"domain state regression 4: applied","expected":{"phase":"restored","value":false},"passed":true},{"actual":{"phase":"undo-pending","value":2},"check":"domain state regression 5: requests","expected":{"phase":"undo-pending","value":2},"passed":true},{"actual":{"phase":"undo-pending","value":5},"check":"domain state regression 6: now","expected":{"phase":"undo-pending","value":5},"passed":true},{"actual":{"phase":"retry-offered","value":true},"check":"domain state regression 7: applied","expected":{"phase":"restored","value":false},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"offered / undo-click\", \"actual\": \"undo-pending\", \"expected\": \"undo-pending\", \"passed\": true}, {\"check\": \"undo-pending / undo-success\", \"actual\": \"restored\", \"expected\": \"restored\", \"passed\": true}, {\"check\": \"undo-pending / undo-failure\", \"actual\": \"retry-offered\", \"expected\": \"retry-offered\", \"passed\": true}, {\"check\": \"offered / window-end\", \"actual\": \"committed\", \"expected\": \"committed\", \"passed\": true}, {\"check\": \"undo-pending / window-end\", \"actual\": \"retry-offered\", \"expected\": \"undo-pending\", \"passed\": false}, {\"check\": \"retry-offered / retry-click\", \"actual\": \"undo-pending\", \"expected\": \"undo-pending\", \"passed\": true}, {\"check\": \"restored / late-window-end\", \"actual\": \"restored\", \"expected\": \"restored\", \"passed\": true}, {\"check\": \"committed / late-undo-click\", \"actual\": \"too-late\", \"expected\": \"too-late\", \"passed\": true}, {\"check\": \"too-late / acknowledge\", \"actual\": \"closed\", \"expected\": \"closed\", \"passed\": true}, {\"check\": \"retry-offered / dismiss-error\", \"actual\": \"committed\", \"expected\": \"committed\", \"passed\": true}, {\"check\": \"older notification incarnation\", \"actual\": \"offered\", \"expected\": \"offered\", \"passed\": true}, {\"check\": \"future notification incarnation\", \"actual\": \"offered\", \"expected\": \"offered\", \"passed\": true}, {\"check\": \"unknown event is inert\", \"actual\": \"offered\", \"expected\": \"offered\", \"passed\": true}, {\"check\": \"empty delivery batch\", \"actual\": \"offered\", \"expected\": \"offered\", \"passed\": true}, {\"check\": \"N stale deliveries before current delivery\", \"actual\": \"undo-pending\", \"expected\": \"undo-pending\", \"passed\": true}, {\"check\": \"trace undo-click then undo-success\", \"actual\": \"restored\", \"expected\": \"restored\", \"passed\": true}, {\"check\": \"trace undo-click then undo-failure\", \"actual\": \"retry-offered\", \"expected\": \"retry-offered\", \"passed\": true}, {\"check\": \"trace undo-click then window-end\", \"actual\": \"retry-offered\", \"expected\": \"undo-pending\", \"passed\": false}, {\"check\": \"trace undo-success then late-window-end\", \"actual\": \"restored\", \"expected\": \"restored\", \"passed\": true}, {\"check\": \"trace undo-failure then retry-click\", \"actual\": \"undo-pending\", \"expected\": \"undo-pending\", \"passed\": true}, {\"check\": \"trace undo-failure then dismiss-error\", \"actual\": \"committed\", \"expected\": \"committed\", \"passed\": true}, {\"check\": \"trace window-end then late-undo-click\", \"actual\": \"too-late\", \"expected\": \"too-late\", \"passed\": true}, {\"check\": \"trace window-end then undo-success\", \"actual\": \"retry-offered\", \"expected\": \"restored\", \"passed\": false}, {\"check\": \"trace window-end then undo-failure\", \"actual\": \"retry-offered\", \"expected\": \"retry-offered\", \"passed\": true}, {\"check\": \"trace window-end then window-end\", \"actual\": \"retry-offered\", \"expected\": \"undo-pending\", \"passed\": false}, {\"check\": \"trace retry-click then undo-success\", \"actual\": \"restored\", \"expected\": \"restored\", \"passed\": true}, {\"check\": \"trace retry-click then undo-failure\", \"actual\": \"retry-offered\", \"expected\": \"retry-offered\", \"passed\": true}, {\"check\": \"trace retry-click then window-end\", \"actual\": \"retry-offered\", \"expected\": \"undo-pending\", \"passed\": false}, {\"check\": \"trace late-window-end then late-window-end\", \"actual\": \"restored\", \"expected\": \"restored\", \"passed\": true}, {\"check\": \"trace late-undo-click then acknowledge\", \"actual\": \"closed\", \"expected\": \"closed\", \"passed\": true}, {\"check\": \"trace dismiss-error then late-undo-click\", \"actual\": \"too-late\", \"expected\": \"too-late\", \"passed\": true}, {\"check\": \"domain state regression 1: requests\", \"actual\": {\"phase\": \"undo-pending\", \"value\": 1}, \"expected\": {\"phase\": \"undo-pending\", \"value\": 1}, \"passed\": true}, {\"check\": \"domain state regression 2: requests\", \"actual\": {\"phase\": \"committed\", \"value\": 0}, \"expected\": {\"phase\": \"committed\", \"value\": 0}, \"passed\": true}, {\"check\": \"domain state regression 3: applied\", \"actual\": {\"phase\": \"offered\", \"value\": true}, \"expected\": {\"phase\": \"offered\", \"value\": true}, \"passed\": true}, {\"check\": \"domain state regression 4: applied\", \"actual\": {\"phase\": \"restored\", \"value\": false}, \"expected\": {\"phase\": \"restored\", \"value\": false}, \"passed\": true}, {\"check\": \"domain state regression 5: requests\", \"actual\": {\"phase\": \"undo-pending\", \"value\": 2}, \"expected\": {\"phase\": \"undo-pending\", \"value\": 2}, \"passed\": true}, {\"check\": \"domain state regression 6: now\", \"actual\": {\"phase\": \"undo-pending\", \"value\": 5}, \"expected\": {\"phase\": \"undo-pending\", \"value\": 5}, \"passed\": true}, {\"check\": \"domain state regression 7: applied\", \"actual\": {\"phase\": \"retry-offered\", \"value\": true}, \"expected\": {\"phase\": \"restored\", \"value\": false}, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":37.303,"exit_code":1,"observations":[{"actual":"undo-pending","check":"offered / undo-click","expected":"undo-pending","passed":true},{"actual":"restored","check":"undo-pending / undo-success","expected":"restored","passed":true},{"actual":"retry-offered","check":"undo-pending / undo-failure","expected":"retry-offered","passed":true},{"actual":"committed","check":"offered / window-end","expected":"committed","passed":true},{"actual":"committed","check":"undo-pending / window-end","expected":"undo-pending","passed":false},{"actual":"undo-pending","check":"retry-offered / retry-click","expected":"undo-pending","passed":true},{"actual":"restored","check":"restored / late-window-end","expected":"restored","passed":true},{"actual":"too-late","check":"committed / late-undo-click","expected":"too-late","passed":true},{"actual":"closed","check":"too-late / acknowledge","expected":"closed","passed":true},{"actual":"committed","check":"retry-offered / dismiss-error","expected":"committed","passed":true},{"actual":"offered","check":"older notification incarnation","expected":"offered","passed":true},{"actual":"offered","check":"future notification incarnation","expected":"offered","passed":true},{"actual":"offered","check":"unknown event is inert","expected":"offered","passed":true},{"actual":"offered","check":"empty delivery batch","expected":"offered","passed":true},{"actual":"undo-pending","check":"N stale deliveries before current delivery","expected":"undo-pending","passed":true},{"actual":"restored","check":"trace undo-click then undo-success","expected":"restored","passed":true},{"actual":"retry-offered","check":"trace undo-click then undo-failure","expected":"retry-offered","passed":true},{"actual":"committed","check":"trace undo-click then window-end","expected":"undo-pending","passed":false},{"actual":"restored","check":"trace undo-success then late-window-end","expected":"restored","passed":true},{"actual":"undo-pending","check":"trace undo-failure then retry-click","expected":"undo-pending","passed":true},{"actual":"committed","check":"trace undo-failure then dismiss-error","expected":"committed","passed":true},{"actual":"too-late","check":"trace window-end then late-undo-click","expected":"too-late","passed":true},{"actual":"committed","check":"trace window-end then undo-success","expected":"restored","passed":false},{"actual":"committed","check":"trace window-end then undo-failure","expected":"retry-offered","passed":false},{"actual":"committed","check":"trace window-end then window-end","expected":"undo-pending","passed":false},{"actual":"restored","check":"trace retry-click then undo-success","expected":"restored","passed":true},{"actual":"retry-offered","check":"trace retry-click then undo-failure","expected":"retry-offered","passed":true},{"actual":"committed","check":"trace retry-click then window-end","expected":"undo-pending","passed":false},{"actual":"restored","check":"trace late-window-end then late-window-end","expected":"restored","passed":true},{"actual":"closed","check":"trace late-undo-click then acknowledge","expected":"closed","passed":true},{"actual":"too-late","check":"trace dismiss-error then late-undo-click","expected":"too-late","passed":true},{"actual":{"phase":"undo-pending","value":1},"check":"domain state regression 1: requests","expected":{"phase":"undo-pending","value":1},"passed":true},{"actual":{"phase":"committed","value":0},"check":"domain state regression 2: requests","expected":{"phase":"committed","value":0},"passed":true},{"actual":{"phase":"offered","value":true},"check":"domain state regression 3: applied","expected":{"phase":"offered","value":true},"passed":true},{"actual":{"phase":"restored","value":false},"check":"domain state regression 4: applied","expected":{"phase":"restored","value":false},"passed":true},{"actual":{"phase":"undo-pending","value":2},"check":"domain state regression 5: requests","expected":{"phase":"undo-pending","value":2},"passed":true},{"actual":{"phase":"undo-pending","value":5},"check":"domain state regression 6: now","expected":{"phase":"undo-pending","value":5},"passed":true},{"actual":{"phase":"committed","value":true},"check":"domain state regression 7: applied","expected":{"phase":"restored","value":false},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"offered / undo-click\", \"actual\": \"undo-pending\", \"expected\": \"undo-pending\", \"passed\": true}, {\"check\": \"undo-pending / undo-success\", \"actual\": \"restored\", \"expected\": \"restored\", \"passed\": true}, {\"check\": \"undo-pending / undo-failure\", \"actual\": \"retry-offered\", \"expected\": \"retry-offered\", \"passed\": true}, {\"check\": \"offered / window-end\", \"actual\": \"committed\", \"expected\": \"committed\", \"passed\": true}, {\"check\": \"undo-pending / window-end\", \"actual\": \"committed\", \"expected\": \"undo-pending\", \"passed\": false}, {\"check\": \"retry-offered / retry-click\", \"actual\": \"undo-pending\", \"expected\": \"undo-pending\", \"passed\": true}, {\"check\": \"restored / late-window-end\", \"actual\": \"restored\", \"expected\": \"restored\", \"passed\": true}, {\"check\": \"committed / late-undo-click\", \"actual\": \"too-late\", \"expected\": \"too-late\", \"passed\": true}, {\"check\": \"too-late / acknowledge\", \"actual\": \"closed\", \"expected\": \"closed\", \"passed\": true}, {\"check\": \"retry-offered / dismiss-error\", \"actual\": \"committed\", \"expected\": \"committed\", \"passed\": true}, {\"check\": \"older notification incarnation\", \"actual\": \"offered\", \"expected\": \"offered\", \"passed\": true}, {\"check\": \"future notification incarnation\", \"actual\": \"offered\", \"expected\": \"offered\", \"passed\": true}, {\"check\": \"unknown event is inert\", \"actual\": \"offered\", \"expected\": \"offered\", \"passed\": true}, {\"check\": \"empty delivery batch\", \"actual\": \"offered\", \"expected\": \"offered\", \"passed\": true}, {\"check\": \"N stale deliveries before current delivery\", \"actual\": \"undo-pending\", \"expected\": \"undo-pending\", \"passed\": true}, {\"check\": \"trace undo-click then undo-success\", \"actual\": \"restored\", \"expected\": \"restored\", \"passed\": true}, {\"check\": \"trace undo-click then undo-failure\", \"actual\": \"retry-offered\", \"expected\": \"retry-offered\", \"passed\": true}, {\"check\": \"trace undo-click then window-end\", \"actual\": \"committed\", \"expected\": \"undo-pending\", \"passed\": false}, {\"check\": \"trace undo-success then late-window-end\", \"actual\": \"restored\", \"expected\": \"restored\", \"passed\": true}, {\"check\": \"trace undo-failure then retry-click\", \"actual\": \"undo-pending\", \"expected\": \"undo-pending\", \"passed\": true}, {\"check\": \"trace undo-failure then dismiss-error\", \"actual\": \"committed\", \"expected\": \"committed\", \"passed\": true}, {\"check\": \"trace window-end then late-undo-click\", \"actual\": \"too-late\", \"expected\": \"too-late\", \"passed\": true}, {\"check\": \"trace window-end then undo-success\", \"actual\": \"committed\", \"expected\": \"restored\", \"passed\": false}, {\"check\": \"trace window-end then undo-failure\", \"actual\": \"committed\", \"expected\": \"retry-offered\", \"passed\": false}, {\"check\": \"trace window-end then window-end\", \"actual\": \"committed\", \"expected\": \"undo-pending\", \"passed\": false}, {\"check\": \"trace retry-click then undo-success\", \"actual\": \"restored\", \"expected\": \"restored\", \"passed\": true}, {\"check\": \"trace retry-click then undo-failure\", \"actual\": \"retry-offered\", \"expected\": \"retry-offered\", \"passed\": true}, {\"check\": \"trace retry-click then window-end\", \"actual\": \"committed\", \"expected\": \"undo-pending\", \"passed\": false}, {\"check\": \"trace late-window-end then late-window-end\", \"actual\": \"restored\", \"expected\": \"restored\", \"passed\": true}, {\"check\": \"trace late-undo-click then acknowledge\", \"actual\": \"closed\", \"expected\": \"closed\", \"passed\": true}, {\"check\": \"trace dismiss-error then late-undo-click\", \"actual\": \"too-late\", \"expected\": \"too-late\", \"passed\": true}, {\"check\": \"domain state regression 1: requests\", \"actual\": {\"phase\": \"undo-pending\", \"value\": 1}, \"expected\": {\"phase\": \"undo-pending\", \"value\": 1}, \"passed\": true}, {\"check\": \"domain state regression 2: requests\", \"actual\": {\"phase\": \"committed\", \"value\": 0}, \"expected\": {\"phase\": \"committed\", \"value\": 0}, \"passed\": true}, {\"check\": \"domain state regression 3: applied\", \"actual\": {\"phase\": \"offered\", \"value\": true}, \"expected\": {\"phase\": \"offered\", \"value\": true}, \"passed\": true}, {\"check\": \"domain state regression 4: applied\", \"actual\": {\"phase\": \"restored\", \"value\": false}, \"expected\": {\"phase\": \"restored\", \"value\": false}, \"passed\": true}, {\"check\": \"domain state regression 5: requests\", \"actual\": {\"phase\": \"undo-pending\", \"value\": 2}, \"expected\": {\"phase\": \"undo-pending\", \"value\": 2}, \"passed\": true}, {\"check\": \"domain state regression 6: now\", \"actual\": {\"phase\": \"undo-pending\", \"value\": 5}, \"expected\": {\"phase\": \"undo-pending\", \"value\": 5}, \"passed\": true}, {\"check\": \"domain state regression 7: applied\", \"actual\": {\"phase\": \"committed\", \"value\": true}, \"expected\": {\"phase\": \"restored\", \"value\": false}, \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.753,"exit_code":0,"observations":[{"actual":"undo-pending","check":"offered / undo-click","expected":"undo-pending","passed":true},{"actual":"restored","check":"undo-pending / undo-success","expected":"restored","passed":true},{"actual":"retry-offered","check":"undo-pending / undo-failure","expected":"retry-offered","passed":true},{"actual":"committed","check":"offered / window-end","expected":"committed","passed":true},{"actual":"undo-pending","check":"undo-pending / window-end","expected":"undo-pending","passed":true},{"actual":"undo-pending","check":"retry-offered / retry-click","expected":"undo-pending","passed":true},{"actual":"restored","check":"restored / late-window-end","expected":"restored","passed":true},{"actual":"too-late","check":"committed / late-undo-click","expected":"too-late","passed":true},{"actual":"closed","check":"too-late / acknowledge","expected":"closed","passed":true},{"actual":"committed","check":"retry-offered / dismiss-error","expected":"committed","passed":true},{"actual":"offered","check":"older notification incarnation","expected":"offered","passed":true},{"actual":"offered","check":"future notification incarnation","expected":"offered","passed":true},{"actual":"offered","check":"unknown event is inert","expected":"offered","passed":true},{"actual":"offered","check":"empty delivery batch","expected":"offered","passed":true},{"actual":"undo-pending","check":"N stale deliveries before current delivery","expected":"undo-pending","passed":true},{"actual":"restored","check":"trace undo-click then undo-success","expected":"restored","passed":true},{"actual":"retry-offered","check":"trace undo-click then undo-failure","expected":"retry-offered","passed":true},{"actual":"undo-pending","check":"trace undo-click then window-end","expected":"undo-pending","passed":true},{"actual":"restored","check":"trace undo-success then late-window-end","expected":"restored","passed":true},{"actual":"undo-pending","check":"trace undo-failure then retry-click","expected":"undo-pending","passed":true},{"actual":"committed","check":"trace undo-failure then dismiss-error","expected":"committed","passed":true},{"actual":"too-late","check":"trace window-end then late-undo-click","expected":"too-late","passed":true},{"actual":"restored","check":"trace window-end then undo-success","expected":"restored","passed":true},{"actual":"retry-offered","check":"trace window-end then undo-failure","expected":"retry-offered","passed":true},{"actual":"undo-pending","check":"trace window-end then window-end","expected":"undo-pending","passed":true},{"actual":"restored","check":"trace retry-click then undo-success","expected":"restored","passed":true},{"actual":"retry-offered","check":"trace retry-click then undo-failure","expected":"retry-offered","passed":true},{"actual":"undo-pending","check":"trace retry-click then window-end","expected":"undo-pending","passed":true},{"actual":"restored","check":"trace late-window-end then late-window-end","expected":"restored","passed":true},{"actual":"closed","check":"trace late-undo-click then acknowledge","expected":"closed","passed":true},{"actual":"too-late","check":"trace dismiss-error then late-undo-click","expected":"too-late","passed":true},{"actual":{"phase":"undo-pending","value":1},"check":"domain state regression 1: requests","expected":{"phase":"undo-pending","value":1},"passed":true},{"actual":{"phase":"committed","value":0},"check":"domain state regression 2: requests","expected":{"phase":"committed","value":0},"passed":true},{"actual":{"phase":"offered","value":true},"check":"domain state regression 3: applied","expected":{"phase":"offered","value":true},"passed":true},{"actual":{"phase":"restored","value":false},"check":"domain state regression 4: applied","expected":{"phase":"restored","value":false},"passed":true},{"actual":{"phase":"undo-pending","value":2},"check":"domain state regression 5: requests","expected":{"phase":"undo-pending","value":2},"passed":true},{"actual":{"phase":"undo-pending","value":5},"check":"domain state regression 6: now","expected":{"phase":"undo-pending","value":5},"passed":true},{"actual":{"phase":"restored","value":false},"check":"domain state regression 7: applied","expected":{"phase":"restored","value":false},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"offered / undo-click\", \"actual\": \"undo-pending\", \"expected\": \"undo-pending\", \"passed\": true}, {\"check\": \"undo-pending / undo-success\", \"actual\": \"restored\", \"expected\": \"restored\", \"passed\": true}, {\"check\": \"undo-pending / undo-failure\", \"actual\": \"retry-offered\", \"expected\": \"retry-offered\", \"passed\": true}, {\"check\": \"offered / window-end\", \"actual\": \"committed\", \"expected\": \"committed\", \"passed\": true}, {\"check\": \"undo-pending / window-end\", \"actual\": \"undo-pending\", \"expected\": \"undo-pending\", \"passed\": true}, {\"check\": \"retry-offered / retry-click\", \"actual\": \"undo-pending\", \"expected\": \"undo-pending\", \"passed\": true}, {\"check\": \"restored / late-window-end\", \"actual\": \"restored\", \"expected\": \"restored\", \"passed\": true}, {\"check\": \"committed / late-undo-click\", \"actual\": \"too-late\", \"expected\": \"too-late\", \"passed\": true}, {\"check\": \"too-late / acknowledge\", \"actual\": \"closed\", \"expected\": \"closed\", \"passed\": true}, {\"check\": \"retry-offered / dismiss-error\", \"actual\": \"committed\", \"expected\": \"committed\", \"passed\": true}, {\"check\": \"older notification incarnation\", \"actual\": \"offered\", \"expected\": \"offered\", \"passed\": true}, {\"check\": \"future notification incarnation\", \"actual\": \"offered\", \"expected\": \"offered\", \"passed\": true}, {\"check\": \"unknown event is inert\", \"actual\": \"offered\", \"expected\": \"offered\", \"passed\": true}, {\"check\": \"empty delivery batch\", \"actual\": \"offered\", \"expected\": \"offered\", \"passed\": true}, {\"check\": \"N stale deliveries before current delivery\", \"actual\": \"undo-pending\", \"expected\": \"undo-pending\", \"passed\": true}, {\"check\": \"trace undo-click then undo-success\", \"actual\": \"restored\", \"expected\": \"restored\", \"passed\": true}, {\"check\": \"trace undo-click then undo-failure\", \"actual\": \"retry-offered\", \"expected\": \"retry-offered\", \"passed\": true}, {\"check\": \"trace undo-click then window-end\", \"actual\": \"undo-pending\", \"expected\": \"undo-pending\", \"passed\": true}, {\"check\": \"trace undo-success then late-window-end\", \"actual\": \"restored\", \"expected\": \"restored\", \"passed\": true}, {\"check\": \"trace undo-failure then retry-click\", \"actual\": \"undo-pending\", \"expected\": \"undo-pending\", \"passed\": true}, {\"check\": \"trace undo-failure then dismiss-error\", \"actual\": \"committed\", \"expected\": \"committed\", \"passed\": true}, {\"check\": \"trace window-end then late-undo-click\", \"actual\": \"too-late\", \"expected\": \"too-late\", \"passed\": true}, {\"check\": \"trace window-end then undo-success\", \"actual\": \"restored\", \"expected\": \"restored\", \"passed\": true}, {\"check\": \"trace window-end then undo-failure\", \"actual\": \"retry-offered\", \"expected\": \"retry-offered\", \"passed\": true}, {\"check\": \"trace window-end then window-end\", \"actual\": \"undo-pending\", \"expected\": \"undo-pending\", \"passed\": true}, {\"check\": \"trace retry-click then undo-success\", \"actual\": \"restored\", \"expected\": \"restored\", \"passed\": true}, {\"check\": \"trace retry-click then undo-failure\", \"actual\": \"retry-offered\", \"expected\": \"retry-offered\", \"passed\": true}, {\"check\": \"trace retry-click then window-end\", \"actual\": \"undo-pending\", \"expected\": \"undo-pending\", \"passed\": true}, {\"check\": \"trace late-window-end then late-window-end\", \"actual\": \"restored\", \"expected\": \"restored\", \"passed\": true}, {\"check\": \"trace late-undo-click then acknowledge\", \"actual\": \"closed\", \"expected\": \"closed\", \"passed\": true}, {\"check\": \"trace dismiss-error then late-undo-click\", \"actual\": \"too-late\", \"expected\": \"too-late\", \"passed\": true}, {\"check\": \"domain state regression 1: requests\", \"actual\": {\"phase\": \"undo-pending\", \"value\": 1}, \"expected\": {\"phase\": \"undo-pending\", \"value\": 1}, \"passed\": true}, {\"check\": \"domain state regression 2: requests\", \"actual\": {\"phase\": \"committed\", \"value\": 0}, \"expected\": {\"phase\": \"committed\", \"value\": 0}, \"passed\": true}, {\"check\": \"domain state regression 3: applied\", \"actual\": {\"phase\": \"offered\", \"value\": true}, \"expected\": {\"phase\": \"offered\", \"value\": true}, \"passed\": true}, {\"check\": \"domain state regression 4: applied\", \"actual\": {\"phase\": \"restored\", \"value\": false}, \"expected\": {\"phase\": \"restored\", \"value\": false}, \"passed\": true}, {\"check\": \"domain state regression 5: requests\", \"actual\": {\"phase\": \"undo-pending\", \"value\": 2}, \"expected\": {\"phase\": \"undo-pending\", \"value\": 2}, \"passed\": true}, {\"check\": \"domain state regression 6: now\", \"actual\": {\"phase\": \"undo-pending\", \"value\": 5}, \"expected\": {\"phase\": \"undo-pending\", \"value\": 5}, \"passed\": true}, {\"check\": \"domain state regression 7: applied\", \"actual\": {\"phase\": \"restored\", \"value\": false}, \"expected\": {\"phase\": \"restored\", \"value\": false}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}