{"abstract":"The disable-toggle event leaves a notification in disabled instead of disable-pending.","category":"Notification interfaces","checks":39,"contract":"Notification channel preference feedback is a bounded visual-notification workflow with mutable policy state {'channel': 'mentions', 'channels': {'mentions': True, 'security': True}, 'request': 2, 'desired': True}. Its default transition relation is {('enabled', 'disable-toggle'): 'disable-pending', ('disable-pending', 'save-success'): 'disabled', ('disable-pending', 'save-failure'): 'disable-error', ('disabled', 'enable-toggle'): 'enable-pending', ('enable-pending', 'save-success'): 'enabled', ('enable-pending', 'save-failure'): 'enable-error', ('disable-error', 'retry-disable'): 'disable-pending', ('enable-error', 'retry-enable'): 'enable-pending', ('disable-pending', 'toggle-back-on'): 'cancel-disable-pending', ('cancel-disable-pending', 'disable-save-completes'): 'enable-pending'}; 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-preference-save","failed_approach":"Leaving the toggle enabled ignores the pending user choice.","family":"s3-notification-interfaces-preference-save-01","id":"FA-34691","implementations":{"attempt":{"sha256":"f0019b47a582620a0cbfaeca88ec3d88a9e840d0115cf6d185badb311a9acb16","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 = {('enabled', 'disable-toggle'): 'enabled', ('disable-pending', 'save-success'): 'disabled', ('disable-pending', 'save-failure'): 'disable-error', ('disabled', 'enable-toggle'): 'enable-pending', ('enable-pending', 'save-success'): 'enabled', ('enable-pending', 'save-failure'): 'enable-error', ('disable-error', 'retry-disable'): 'disable-pending', ('enable-error', 'retry-enable'): 'enable-pending', ('disable-pending', 'toggle-back-on'): 'cancel-disable-pending', ('cancel-disable-pending', 'disable-save-completes'): 'enable-pending'}\n    data = json.loads(json.dumps({'channel': 'mentions', 'channels': {'mentions': True, 'security': True}, 'request': 2, 'desired': True})) if payload is None else {**json.loads(json.dumps({'channel': 'mentions', 'channels': {'mentions': True, 'security': True}, 'request': 2, 'desired': True})), **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.startswith('save-') and arg.get('request',data['request']) != data['request']: event = 'unknown-event'\n            if event in ('disable-toggle','retry-disable'): data['desired'] = False\n            if event in ('enable-toggle','retry-enable','toggle-back-on'): data['desired'] = True\n            state = table.get((state, event), state)\n            if state == 'disabled': data['channels'][data['channel']] = False\n            if state == 'enabled': data['channels'][data['channel']] = True\n            if state == 'enable-pending' and previous == 'cancel-disable-pending': data['request'] += 1\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('enabled / disable-toggle', solve('enabled', [('disable-toggle', N)], N), 'disable-pending')\ncheck('disable-pending / save-success', solve('disable-pending', [('save-success', N)], N), 'disabled')\ncheck('disable-pending / save-failure', solve('disable-pending', [('save-failure', N)], N), 'disable-error')\ncheck('disabled / enable-toggle', solve('disabled', [('enable-toggle', N)], N), 'enable-pending')\ncheck('enable-pending / save-success', solve('enable-pending', [('save-success', N)], N), 'enabled')\ncheck('enable-pending / save-failure', solve('enable-pending', [('save-failure', N)], N), 'enable-error')\ncheck('disable-error / retry-disable', solve('disable-error', [('retry-disable', N)], N), 'disable-pending')\ncheck('enable-error / retry-enable', solve('enable-error', [('retry-enable', N)], N), 'enable-pending')\ncheck('disable-pending / toggle-back-on', solve('disable-pending', [('toggle-back-on', N)], N), 'cancel-disable-pending')\ncheck('cancel-disable-pending / disable-save-completes', solve('cancel-disable-pending', [('disable-save-completes', N)], N), 'enable-pending')\ncheck('older notification incarnation', solve('enabled', [('disable-toggle', N - 1)], N), 'enabled')\ncheck('future notification incarnation', solve('enabled', [('disable-toggle', N + 1)], N), 'enabled')\ncheck('unknown event is inert', solve('enabled', [('unknown-event', N)], N), 'enabled')\ncheck('empty delivery batch', solve('enabled', [], N), 'enabled')\ncheck('N stale deliveries before current delivery', solve('enabled', [('disable-toggle', N - 1)] * N + [('disable-toggle', N)], N), 'disable-pending')\ncheck('trace disable-toggle then save-success', solve('enabled', [('disable-toggle', N), ('save-success', N)], N), 'disabled')\ncheck('trace disable-toggle then save-failure', solve('enabled', [('disable-toggle', N), ('save-failure', N)], N), 'disable-error')\ncheck('trace disable-toggle then toggle-back-on', solve('enabled', [('disable-toggle', N), ('toggle-back-on', N)], N), 'cancel-disable-pending')\ncheck('trace save-success then enable-toggle', solve('disable-pending', [('save-success', N), ('enable-toggle', N)], N), 'enable-pending')\ncheck('trace save-failure then retry-disable', solve('disable-pending', [('save-failure', N), ('retry-disable', N)], N), 'disable-pending')\ncheck('trace enable-toggle then save-success', solve('disabled', [('enable-toggle', N), ('save-success', N)], N), 'enabled')\ncheck('trace enable-toggle then save-failure', solve('disabled', [('enable-toggle', N), ('save-failure', N)], N), 'enable-error')\ncheck('trace save-success then disable-toggle', solve('enable-pending', [('save-success', N), ('disable-toggle', N)], N), 'disable-pending')\ncheck('trace save-failure then retry-enable', solve('enable-pending', [('save-failure', N), ('retry-enable', N)], N), 'enable-pending')\ncheck('trace retry-disable then save-success', solve('disable-error', [('retry-disable', N), ('save-success', N)], N), 'disabled')\ncheck('trace retry-disable then save-failure', solve('disable-error', [('retry-disable', N), ('save-failure', N)], N), 'disable-error')\ncheck('trace retry-disable then toggle-back-on', solve('disable-error', [('retry-disable', N), ('toggle-back-on', N)], N), 'cancel-disable-pending')\ncheck('trace retry-enable then save-success', solve('enable-error', [('retry-enable', N), ('save-success', N)], N), 'enabled')\ncheck('trace retry-enable then save-failure', solve('enable-error', [('retry-enable', N), ('save-failure', N)], N), 'enable-error')\ncheck('trace toggle-back-on then disable-save-completes', solve('disable-pending', [('toggle-back-on', N), ('disable-save-completes', N)], N), 'enable-pending')\ncheck('trace disable-save-completes then save-success', solve('cancel-disable-pending', [('disable-save-completes', N), ('save-success', N)], N), 'enabled')\ncheck('trace disable-save-completes then save-failure', solve('cancel-disable-pending', [('disable-save-completes', N), ('save-failure', N)], N), 'enable-error')\ncheck('domain state regression 1: channels', solve('disable-pending', [('save-success', N, {'request': 1})], N, {}, 'channels'), {'phase': 'disable-pending', 'value': {'mentions': True, 'security': True}})\ncheck('domain state regression 2: channels', solve('disable-pending', [('save-success', N, {})], N, {}, 'channels'), {'phase': 'disabled', 'value': {'mentions': False, 'security': True}})\ncheck('domain state regression 3: channels', solve('disable-pending', [('save-failure', N, {})], N, {}, 'channels'), {'phase': 'disable-error', 'value': {'mentions': True, 'security': True}})\ncheck('domain state regression 4: desired', solve('disabled', [('enable-toggle', N, {})], N, {'channels': {'mentions': False, 'security': True}}, 'desired'), {'phase': 'enable-pending', 'value': True})\ncheck('domain state regression 5: desired', solve('disable-pending', [('toggle-back-on', N, {})], N, {'desired': False}, 'desired'), {'phase': 'cancel-disable-pending', 'value': True})\ncheck('domain state regression 6: request', solve('cancel-disable-pending', [('disable-save-completes', N, {})], N, {}, 'request'), {'phase': 'enable-pending', 'value': 3})\ncheck('domain state regression 7: channels', solve('enabled', [('disable-toggle', N, {}), ('toggle-back-on', N, {}), ('disable-save-completes', N, {}), ('save-success', N, {'request': 3})], N, {}, 'channels'), {'phase': 'enabled', 'value': {'mentions': True, 'security': 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":"83a73ba87694b58ec367b25ef64f2b5a8a79efb382889c22f1edc8f499eb32cb","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 = {('enabled', 'disable-toggle'): 'disabled', ('disable-pending', 'save-success'): 'disabled', ('disable-pending', 'save-failure'): 'disable-error', ('disabled', 'enable-toggle'): 'enable-pending', ('enable-pending', 'save-success'): 'enabled', ('enable-pending', 'save-failure'): 'enable-error', ('disable-error', 'retry-disable'): 'disable-pending', ('enable-error', 'retry-enable'): 'enable-pending', ('disable-pending', 'toggle-back-on'): 'cancel-disable-pending', ('cancel-disable-pending', 'disable-save-completes'): 'enable-pending'}\n    data = json.loads(json.dumps({'channel': 'mentions', 'channels': {'mentions': True, 'security': True}, 'request': 2, 'desired': True})) if payload is None else {**json.loads(json.dumps({'channel': 'mentions', 'channels': {'mentions': True, 'security': True}, 'request': 2, 'desired': True})), **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.startswith('save-') and arg.get('request',data['request']) != data['request']: event = 'unknown-event'\n            if event in ('disable-toggle','retry-disable'): data['desired'] = False\n            if event in ('enable-toggle','retry-enable','toggle-back-on'): data['desired'] = True\n            state = table.get((state, event), state)\n            if state == 'disabled': data['channels'][data['channel']] = False\n            if state == 'enabled': data['channels'][data['channel']] = True\n            if state == 'enable-pending' and previous == 'cancel-disable-pending': data['request'] += 1\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('enabled / disable-toggle', solve('enabled', [('disable-toggle', N)], N), 'disable-pending')\ncheck('disable-pending / save-success', solve('disable-pending', [('save-success', N)], N), 'disabled')\ncheck('disable-pending / save-failure', solve('disable-pending', [('save-failure', N)], N), 'disable-error')\ncheck('disabled / enable-toggle', solve('disabled', [('enable-toggle', N)], N), 'enable-pending')\ncheck('enable-pending / save-success', solve('enable-pending', [('save-success', N)], N), 'enabled')\ncheck('enable-pending / save-failure', solve('enable-pending', [('save-failure', N)], N), 'enable-error')\ncheck('disable-error / retry-disable', solve('disable-error', [('retry-disable', N)], N), 'disable-pending')\ncheck('enable-error / retry-enable', solve('enable-error', [('retry-enable', N)], N), 'enable-pending')\ncheck('disable-pending / toggle-back-on', solve('disable-pending', [('toggle-back-on', N)], N), 'cancel-disable-pending')\ncheck('cancel-disable-pending / disable-save-completes', solve('cancel-disable-pending', [('disable-save-completes', N)], N), 'enable-pending')\ncheck('older notification incarnation', solve('enabled', [('disable-toggle', N - 1)], N), 'enabled')\ncheck('future notification incarnation', solve('enabled', [('disable-toggle', N + 1)], N), 'enabled')\ncheck('unknown event is inert', solve('enabled', [('unknown-event', N)], N), 'enabled')\ncheck('empty delivery batch', solve('enabled', [], N), 'enabled')\ncheck('N stale deliveries before current delivery', solve('enabled', [('disable-toggle', N - 1)] * N + [('disable-toggle', N)], N), 'disable-pending')\ncheck('trace disable-toggle then save-success', solve('enabled', [('disable-toggle', N), ('save-success', N)], N), 'disabled')\ncheck('trace disable-toggle then save-failure', solve('enabled', [('disable-toggle', N), ('save-failure', N)], N), 'disable-error')\ncheck('trace disable-toggle then toggle-back-on', solve('enabled', [('disable-toggle', N), ('toggle-back-on', N)], N), 'cancel-disable-pending')\ncheck('trace save-success then enable-toggle', solve('disable-pending', [('save-success', N), ('enable-toggle', N)], N), 'enable-pending')\ncheck('trace save-failure then retry-disable', solve('disable-pending', [('save-failure', N), ('retry-disable', N)], N), 'disable-pending')\ncheck('trace enable-toggle then save-success', solve('disabled', [('enable-toggle', N), ('save-success', N)], N), 'enabled')\ncheck('trace enable-toggle then save-failure', solve('disabled', [('enable-toggle', N), ('save-failure', N)], N), 'enable-error')\ncheck('trace save-success then disable-toggle', solve('enable-pending', [('save-success', N), ('disable-toggle', N)], N), 'disable-pending')\ncheck('trace save-failure then retry-enable', solve('enable-pending', [('save-failure', N), ('retry-enable', N)], N), 'enable-pending')\ncheck('trace retry-disable then save-success', solve('disable-error', [('retry-disable', N), ('save-success', N)], N), 'disabled')\ncheck('trace retry-disable then save-failure', solve('disable-error', [('retry-disable', N), ('save-failure', N)], N), 'disable-error')\ncheck('trace retry-disable then toggle-back-on', solve('disable-error', [('retry-disable', N), ('toggle-back-on', N)], N), 'cancel-disable-pending')\ncheck('trace retry-enable then save-success', solve('enable-error', [('retry-enable', N), ('save-success', N)], N), 'enabled')\ncheck('trace retry-enable then save-failure', solve('enable-error', [('retry-enable', N), ('save-failure', N)], N), 'enable-error')\ncheck('trace toggle-back-on then disable-save-completes', solve('disable-pending', [('toggle-back-on', N), ('disable-save-completes', N)], N), 'enable-pending')\ncheck('trace disable-save-completes then save-success', solve('cancel-disable-pending', [('disable-save-completes', N), ('save-success', N)], N), 'enabled')\ncheck('trace disable-save-completes then save-failure', solve('cancel-disable-pending', [('disable-save-completes', N), ('save-failure', N)], N), 'enable-error')\ncheck('domain state regression 1: channels', solve('disable-pending', [('save-success', N, {'request': 1})], N, {}, 'channels'), {'phase': 'disable-pending', 'value': {'mentions': True, 'security': True}})\ncheck('domain state regression 2: channels', solve('disable-pending', [('save-success', N, {})], N, {}, 'channels'), {'phase': 'disabled', 'value': {'mentions': False, 'security': True}})\ncheck('domain state regression 3: channels', solve('disable-pending', [('save-failure', N, {})], N, {}, 'channels'), {'phase': 'disable-error', 'value': {'mentions': True, 'security': True}})\ncheck('domain state regression 4: desired', solve('disabled', [('enable-toggle', N, {})], N, {'channels': {'mentions': False, 'security': True}}, 'desired'), {'phase': 'enable-pending', 'value': True})\ncheck('domain state regression 5: desired', solve('disable-pending', [('toggle-back-on', N, {})], N, {'desired': False}, 'desired'), {'phase': 'cancel-disable-pending', 'value': True})\ncheck('domain state regression 6: request', solve('cancel-disable-pending', [('disable-save-completes', N, {})], N, {}, 'request'), {'phase': 'enable-pending', 'value': 3})\ncheck('domain state regression 7: channels', solve('enabled', [('disable-toggle', N, {}), ('toggle-back-on', N, {}), ('disable-save-completes', N, {}), ('save-success', N, {'request': 3})], N, {}, 'channels'), {'phase': 'enabled', 'value': {'mentions': True, 'security': 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":"f5c9f678d6feabdd38e0bf17a3d55b81562b21d31e86b5cbbc266bf23eb8f5bf","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 = {('enabled', 'disable-toggle'): 'disable-pending', ('disable-pending', 'save-success'): 'disabled', ('disable-pending', 'save-failure'): 'disable-error', ('disabled', 'enable-toggle'): 'enable-pending', ('enable-pending', 'save-success'): 'enabled', ('enable-pending', 'save-failure'): 'enable-error', ('disable-error', 'retry-disable'): 'disable-pending', ('enable-error', 'retry-enable'): 'enable-pending', ('disable-pending', 'toggle-back-on'): 'cancel-disable-pending', ('cancel-disable-pending', 'disable-save-completes'): 'enable-pending'}\n    data = json.loads(json.dumps({'channel': 'mentions', 'channels': {'mentions': True, 'security': True}, 'request': 2, 'desired': True})) if payload is None else {**json.loads(json.dumps({'channel': 'mentions', 'channels': {'mentions': True, 'security': True}, 'request': 2, 'desired': True})), **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.startswith('save-') and arg.get('request',data['request']) != data['request']: event = 'unknown-event'\n            if event in ('disable-toggle','retry-disable'): data['desired'] = False\n            if event in ('enable-toggle','retry-enable','toggle-back-on'): data['desired'] = True\n            state = table.get((state, event), state)\n            if state == 'disabled': data['channels'][data['channel']] = False\n            if state == 'enabled': data['channels'][data['channel']] = True\n            if state == 'enable-pending' and previous == 'cancel-disable-pending': data['request'] += 1\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('enabled / disable-toggle', solve('enabled', [('disable-toggle', N)], N), 'disable-pending')\ncheck('disable-pending / save-success', solve('disable-pending', [('save-success', N)], N), 'disabled')\ncheck('disable-pending / save-failure', solve('disable-pending', [('save-failure', N)], N), 'disable-error')\ncheck('disabled / enable-toggle', solve('disabled', [('enable-toggle', N)], N), 'enable-pending')\ncheck('enable-pending / save-success', solve('enable-pending', [('save-success', N)], N), 'enabled')\ncheck('enable-pending / save-failure', solve('enable-pending', [('save-failure', N)], N), 'enable-error')\ncheck('disable-error / retry-disable', solve('disable-error', [('retry-disable', N)], N), 'disable-pending')\ncheck('enable-error / retry-enable', solve('enable-error', [('retry-enable', N)], N), 'enable-pending')\ncheck('disable-pending / toggle-back-on', solve('disable-pending', [('toggle-back-on', N)], N), 'cancel-disable-pending')\ncheck('cancel-disable-pending / disable-save-completes', solve('cancel-disable-pending', [('disable-save-completes', N)], N), 'enable-pending')\ncheck('older notification incarnation', solve('enabled', [('disable-toggle', N - 1)], N), 'enabled')\ncheck('future notification incarnation', solve('enabled', [('disable-toggle', N + 1)], N), 'enabled')\ncheck('unknown event is inert', solve('enabled', [('unknown-event', N)], N), 'enabled')\ncheck('empty delivery batch', solve('enabled', [], N), 'enabled')\ncheck('N stale deliveries before current delivery', solve('enabled', [('disable-toggle', N - 1)] * N + [('disable-toggle', N)], N), 'disable-pending')\ncheck('trace disable-toggle then save-success', solve('enabled', [('disable-toggle', N), ('save-success', N)], N), 'disabled')\ncheck('trace disable-toggle then save-failure', solve('enabled', [('disable-toggle', N), ('save-failure', N)], N), 'disable-error')\ncheck('trace disable-toggle then toggle-back-on', solve('enabled', [('disable-toggle', N), ('toggle-back-on', N)], N), 'cancel-disable-pending')\ncheck('trace save-success then enable-toggle', solve('disable-pending', [('save-success', N), ('enable-toggle', N)], N), 'enable-pending')\ncheck('trace save-failure then retry-disable', solve('disable-pending', [('save-failure', N), ('retry-disable', N)], N), 'disable-pending')\ncheck('trace enable-toggle then save-success', solve('disabled', [('enable-toggle', N), ('save-success', N)], N), 'enabled')\ncheck('trace enable-toggle then save-failure', solve('disabled', [('enable-toggle', N), ('save-failure', N)], N), 'enable-error')\ncheck('trace save-success then disable-toggle', solve('enable-pending', [('save-success', N), ('disable-toggle', N)], N), 'disable-pending')\ncheck('trace save-failure then retry-enable', solve('enable-pending', [('save-failure', N), ('retry-enable', N)], N), 'enable-pending')\ncheck('trace retry-disable then save-success', solve('disable-error', [('retry-disable', N), ('save-success', N)], N), 'disabled')\ncheck('trace retry-disable then save-failure', solve('disable-error', [('retry-disable', N), ('save-failure', N)], N), 'disable-error')\ncheck('trace retry-disable then toggle-back-on', solve('disable-error', [('retry-disable', N), ('toggle-back-on', N)], N), 'cancel-disable-pending')\ncheck('trace retry-enable then save-success', solve('enable-error', [('retry-enable', N), ('save-success', N)], N), 'enabled')\ncheck('trace retry-enable then save-failure', solve('enable-error', [('retry-enable', N), ('save-failure', N)], N), 'enable-error')\ncheck('trace toggle-back-on then disable-save-completes', solve('disable-pending', [('toggle-back-on', N), ('disable-save-completes', N)], N), 'enable-pending')\ncheck('trace disable-save-completes then save-success', solve('cancel-disable-pending', [('disable-save-completes', N), ('save-success', N)], N), 'enabled')\ncheck('trace disable-save-completes then save-failure', solve('cancel-disable-pending', [('disable-save-completes', N), ('save-failure', N)], N), 'enable-error')\ncheck('domain state regression 1: channels', solve('disable-pending', [('save-success', N, {'request': 1})], N, {}, 'channels'), {'phase': 'disable-pending', 'value': {'mentions': True, 'security': True}})\ncheck('domain state regression 2: channels', solve('disable-pending', [('save-success', N, {})], N, {}, 'channels'), {'phase': 'disabled', 'value': {'mentions': False, 'security': True}})\ncheck('domain state regression 3: channels', solve('disable-pending', [('save-failure', N, {})], N, {}, 'channels'), {'phase': 'disable-error', 'value': {'mentions': True, 'security': True}})\ncheck('domain state regression 4: desired', solve('disabled', [('enable-toggle', N, {})], N, {'channels': {'mentions': False, 'security': True}}, 'desired'), {'phase': 'enable-pending', 'value': True})\ncheck('domain state regression 5: desired', solve('disable-pending', [('toggle-back-on', N, {})], N, {'desired': False}, 'desired'), {'phase': 'cancel-disable-pending', 'value': True})\ncheck('domain state regression 6: request', solve('cancel-disable-pending', [('disable-save-completes', N, {})], N, {}, 'request'), {'phase': 'enable-pending', 'value': 3})\ncheck('domain state regression 7: channels', solve('enabled', [('disable-toggle', N, {}), ('toggle-back-on', N, {}), ('disable-save-completes', N, {}), ('save-success', N, {'request': 3})], N, {}, 'channels'), {'phase': 'enabled', 'value': {'mentions': True, 'security': 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-preference-save-01","generated_at":"2026-09-29T14:42:34.409391+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 enabled / disable-toggle transition to disable-pending; preserve the other explicitly stipulated transitions.","root_cause":"A preference change is presented as durable before saving.","sha256":"7075e1d50c2203b133b835caaa7db287021fe47c1282bf75f24b2ebef987ee83","title":"Notification channel preference feedback: disable-toggle from enabled · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":46.502,"exit_code":1,"observations":[{"actual":"enabled","check":"enabled / disable-toggle","expected":"disable-pending","passed":false},{"actual":"disabled","check":"disable-pending / save-success","expected":"disabled","passed":true},{"actual":"disable-error","check":"disable-pending / save-failure","expected":"disable-error","passed":true},{"actual":"enable-pending","check":"disabled / enable-toggle","expected":"enable-pending","passed":true},{"actual":"enabled","check":"enable-pending / save-success","expected":"enabled","passed":true},{"actual":"enable-error","check":"enable-pending / save-failure","expected":"enable-error","passed":true},{"actual":"disable-pending","check":"disable-error / retry-disable","expected":"disable-pending","passed":true},{"actual":"enable-pending","check":"enable-error / retry-enable","expected":"enable-pending","passed":true},{"actual":"cancel-disable-pending","check":"disable-pending / toggle-back-on","expected":"cancel-disable-pending","passed":true},{"actual":"enable-pending","check":"cancel-disable-pending / disable-save-completes","expected":"enable-pending","passed":true},{"actual":"enabled","check":"older notification incarnation","expected":"enabled","passed":true},{"actual":"enabled","check":"future notification incarnation","expected":"enabled","passed":true},{"actual":"enabled","check":"unknown event is inert","expected":"enabled","passed":true},{"actual":"enabled","check":"empty delivery batch","expected":"enabled","passed":true},{"actual":"enabled","check":"N stale deliveries before current delivery","expected":"disable-pending","passed":false},{"actual":"enabled","check":"trace disable-toggle then save-success","expected":"disabled","passed":false},{"actual":"enabled","check":"trace disable-toggle then save-failure","expected":"disable-error","passed":false},{"actual":"enabled","check":"trace disable-toggle then toggle-back-on","expected":"cancel-disable-pending","passed":false},{"actual":"enable-pending","check":"trace save-success then enable-toggle","expected":"enable-pending","passed":true},{"actual":"disable-pending","check":"trace save-failure then retry-disable","expected":"disable-pending","passed":true},{"actual":"enabled","check":"trace enable-toggle then save-success","expected":"enabled","passed":true},{"actual":"enable-error","check":"trace enable-toggle then save-failure","expected":"enable-error","passed":true},{"actual":"enabled","check":"trace save-success then disable-toggle","expected":"disable-pending","passed":false},{"actual":"enable-pending","check":"trace save-failure then retry-enable","expected":"enable-pending","passed":true},{"actual":"disabled","check":"trace retry-disable then save-success","expected":"disabled","passed":true},{"actual":"disable-error","check":"trace retry-disable then save-failure","expected":"disable-error","passed":true},{"actual":"cancel-disable-pending","check":"trace retry-disable then toggle-back-on","expected":"cancel-disable-pending","passed":true},{"actual":"enabled","check":"trace retry-enable then save-success","expected":"enabled","passed":true},{"actual":"enable-error","check":"trace retry-enable then save-failure","expected":"enable-error","passed":true},{"actual":"enable-pending","check":"trace toggle-back-on then disable-save-completes","expected":"enable-pending","passed":true},{"actual":"enabled","check":"trace disable-save-completes then save-success","expected":"enabled","passed":true},{"actual":"enable-error","check":"trace disable-save-completes then save-failure","expected":"enable-error","passed":true},{"actual":{"phase":"disable-pending","value":{"mentions":true,"security":true}},"check":"domain state regression 1: channels","expected":{"phase":"disable-pending","value":{"mentions":true,"security":true}},"passed":true},{"actual":{"phase":"disabled","value":{"mentions":false,"security":true}},"check":"domain state regression 2: channels","expected":{"phase":"disabled","value":{"mentions":false,"security":true}},"passed":true},{"actual":{"phase":"disable-error","value":{"mentions":true,"security":true}},"check":"domain state regression 3: channels","expected":{"phase":"disable-error","value":{"mentions":true,"security":true}},"passed":true},{"actual":{"phase":"enable-pending","value":true},"check":"domain state regression 4: desired","expected":{"phase":"enable-pending","value":true},"passed":true},{"actual":{"phase":"cancel-disable-pending","value":true},"check":"domain state regression 5: desired","expected":{"phase":"cancel-disable-pending","value":true},"passed":true},{"actual":{"phase":"enable-pending","value":3},"check":"domain state regression 6: request","expected":{"phase":"enable-pending","value":3},"passed":true},{"actual":{"phase":"enabled","value":{"mentions":true,"security":true}},"check":"domain state regression 7: channels","expected":{"phase":"enabled","value":{"mentions":true,"security":true}},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"enabled / disable-toggle\", \"actual\": \"enabled\", \"expected\": \"disable-pending\", \"passed\": false}, {\"check\": \"disable-pending / save-success\", \"actual\": \"disabled\", \"expected\": \"disabled\", \"passed\": true}, {\"check\": \"disable-pending / save-failure\", \"actual\": \"disable-error\", \"expected\": \"disable-error\", \"passed\": true}, {\"check\": \"disabled / enable-toggle\", \"actual\": \"enable-pending\", \"expected\": \"enable-pending\", \"passed\": true}, {\"check\": \"enable-pending / save-success\", \"actual\": \"enabled\", \"expected\": \"enabled\", \"passed\": true}, {\"check\": \"enable-pending / save-failure\", \"actual\": \"enable-error\", \"expected\": \"enable-error\", \"passed\": true}, {\"check\": \"disable-error / retry-disable\", \"actual\": \"disable-pending\", \"expected\": \"disable-pending\", \"passed\": true}, {\"check\": \"enable-error / retry-enable\", \"actual\": \"enable-pending\", \"expected\": \"enable-pending\", \"passed\": true}, {\"check\": \"disable-pending / toggle-back-on\", \"actual\": \"cancel-disable-pending\", \"expected\": \"cancel-disable-pending\", \"passed\": true}, {\"check\": \"cancel-disable-pending / disable-save-completes\", \"actual\": \"enable-pending\", \"expected\": \"enable-pending\", \"passed\": true}, {\"check\": \"older notification incarnation\", \"actual\": \"enabled\", \"expected\": \"enabled\", \"passed\": true}, {\"check\": \"future notification incarnation\", \"actual\": \"enabled\", \"expected\": \"enabled\", \"passed\": true}, {\"check\": \"unknown event is inert\", \"actual\": \"enabled\", \"expected\": \"enabled\", \"passed\": true}, {\"check\": \"empty delivery batch\", \"actual\": \"enabled\", \"expected\": \"enabled\", \"passed\": true}, {\"check\": \"N stale deliveries before current delivery\", \"actual\": \"enabled\", \"expected\": \"disable-pending\", \"passed\": false}, {\"check\": \"trace disable-toggle then save-success\", \"actual\": \"enabled\", \"expected\": \"disabled\", \"passed\": false}, {\"check\": \"trace disable-toggle then save-failure\", \"actual\": \"enabled\", \"expected\": \"disable-error\", \"passed\": false}, {\"check\": \"trace disable-toggle then toggle-back-on\", \"actual\": \"enabled\", \"expected\": \"cancel-disable-pending\", \"passed\": false}, {\"check\": \"trace save-success then enable-toggle\", \"actual\": \"enable-pending\", \"expected\": \"enable-pending\", \"passed\": true}, {\"check\": \"trace save-failure then retry-disable\", \"actual\": \"disable-pending\", \"expected\": \"disable-pending\", \"passed\": true}, {\"check\": \"trace enable-toggle then save-success\", \"actual\": \"enabled\", \"expected\": \"enabled\", \"passed\": true}, {\"check\": \"trace enable-toggle then save-failure\", \"actual\": \"enable-error\", \"expected\": \"enable-error\", \"passed\": true}, {\"check\": \"trace save-success then disable-toggle\", \"actual\": \"enabled\", \"expected\": \"disable-pending\", \"passed\": false}, {\"check\": \"trace save-failure then retry-enable\", \"actual\": \"enable-pending\", \"expected\": \"enable-pending\", \"passed\": true}, {\"check\": \"trace retry-disable then save-success\", \"actual\": \"disabled\", \"expected\": \"disabled\", \"passed\": true}, {\"check\": \"trace retry-disable then save-failure\", \"actual\": \"disable-error\", \"expected\": \"disable-error\", \"passed\": true}, {\"check\": \"trace retry-disable then toggle-back-on\", \"actual\": \"cancel-disable-pending\", \"expected\": \"cancel-disable-pending\", \"passed\": true}, {\"check\": \"trace retry-enable then save-success\", \"actual\": \"enabled\", \"expected\": \"enabled\", \"passed\": true}, {\"check\": \"trace retry-enable then save-failure\", \"actual\": \"enable-error\", \"expected\": \"enable-error\", \"passed\": true}, {\"check\": \"trace toggle-back-on then disable-save-completes\", \"actual\": \"enable-pending\", \"expected\": \"enable-pending\", \"passed\": true}, {\"check\": \"trace disable-save-completes then save-success\", \"actual\": \"enabled\", \"expected\": \"enabled\", \"passed\": true}, {\"check\": \"trace disable-save-completes then save-failure\", \"actual\": \"enable-error\", \"expected\": \"enable-error\", \"passed\": true}, {\"check\": \"domain state regression 1: channels\", \"actual\": {\"phase\": \"disable-pending\", \"value\": {\"mentions\": true, \"security\": true}}, \"expected\": {\"phase\": \"disable-pending\", \"value\": {\"mentions\": true, \"security\": true}}, \"passed\": true}, {\"check\": \"domain state regression 2: channels\", \"actual\": {\"phase\": \"disabled\", \"value\": {\"mentions\": false, \"security\": true}}, \"expected\": {\"phase\": \"disabled\", \"value\": {\"mentions\": false, \"security\": true}}, \"passed\": true}, {\"check\": \"domain state regression 3: channels\", \"actual\": {\"phase\": \"disable-error\", \"value\": {\"mentions\": true, \"security\": true}}, \"expected\": {\"phase\": \"disable-error\", \"value\": {\"mentions\": true, \"security\": true}}, \"passed\": true}, {\"check\": \"domain state regression 4: desired\", \"actual\": {\"phase\": \"enable-pending\", \"value\": true}, \"expected\": {\"phase\": \"enable-pending\", \"value\": true}, \"passed\": true}, {\"check\": \"domain state regression 5: desired\", \"actual\": {\"phase\": \"cancel-disable-pending\", \"value\": true}, \"expected\": {\"phase\": \"cancel-disable-pending\", \"value\": true}, \"passed\": true}, {\"check\": \"domain state regression 6: request\", \"actual\": {\"phase\": \"enable-pending\", \"value\": 3}, \"expected\": {\"phase\": \"enable-pending\", \"value\": 3}, \"passed\": true}, {\"check\": \"domain state regression 7: channels\", \"actual\": {\"phase\": \"enabled\", \"value\": {\"mentions\": true, \"security\": true}}, \"expected\": {\"phase\": \"enabled\", \"value\": {\"mentions\": true, \"security\": true}}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":48.757,"exit_code":1,"observations":[{"actual":"disabled","check":"enabled / disable-toggle","expected":"disable-pending","passed":false},{"actual":"disabled","check":"disable-pending / save-success","expected":"disabled","passed":true},{"actual":"disable-error","check":"disable-pending / save-failure","expected":"disable-error","passed":true},{"actual":"enable-pending","check":"disabled / enable-toggle","expected":"enable-pending","passed":true},{"actual":"enabled","check":"enable-pending / save-success","expected":"enabled","passed":true},{"actual":"enable-error","check":"enable-pending / save-failure","expected":"enable-error","passed":true},{"actual":"disable-pending","check":"disable-error / retry-disable","expected":"disable-pending","passed":true},{"actual":"enable-pending","check":"enable-error / retry-enable","expected":"enable-pending","passed":true},{"actual":"cancel-disable-pending","check":"disable-pending / toggle-back-on","expected":"cancel-disable-pending","passed":true},{"actual":"enable-pending","check":"cancel-disable-pending / disable-save-completes","expected":"enable-pending","passed":true},{"actual":"enabled","check":"older notification incarnation","expected":"enabled","passed":true},{"actual":"enabled","check":"future notification incarnation","expected":"enabled","passed":true},{"actual":"enabled","check":"unknown event is inert","expected":"enabled","passed":true},{"actual":"enabled","check":"empty delivery batch","expected":"enabled","passed":true},{"actual":"disabled","check":"N stale deliveries before current delivery","expected":"disable-pending","passed":false},{"actual":"disabled","check":"trace disable-toggle then save-success","expected":"disabled","passed":true},{"actual":"disabled","check":"trace disable-toggle then save-failure","expected":"disable-error","passed":false},{"actual":"disabled","check":"trace disable-toggle then toggle-back-on","expected":"cancel-disable-pending","passed":false},{"actual":"enable-pending","check":"trace save-success then enable-toggle","expected":"enable-pending","passed":true},{"actual":"disable-pending","check":"trace save-failure then retry-disable","expected":"disable-pending","passed":true},{"actual":"enabled","check":"trace enable-toggle then save-success","expected":"enabled","passed":true},{"actual":"enable-error","check":"trace enable-toggle then save-failure","expected":"enable-error","passed":true},{"actual":"disabled","check":"trace save-success then disable-toggle","expected":"disable-pending","passed":false},{"actual":"enable-pending","check":"trace save-failure then retry-enable","expected":"enable-pending","passed":true},{"actual":"disabled","check":"trace retry-disable then save-success","expected":"disabled","passed":true},{"actual":"disable-error","check":"trace retry-disable then save-failure","expected":"disable-error","passed":true},{"actual":"cancel-disable-pending","check":"trace retry-disable then toggle-back-on","expected":"cancel-disable-pending","passed":true},{"actual":"enabled","check":"trace retry-enable then save-success","expected":"enabled","passed":true},{"actual":"enable-error","check":"trace retry-enable then save-failure","expected":"enable-error","passed":true},{"actual":"enable-pending","check":"trace toggle-back-on then disable-save-completes","expected":"enable-pending","passed":true},{"actual":"enabled","check":"trace disable-save-completes then save-success","expected":"enabled","passed":true},{"actual":"enable-error","check":"trace disable-save-completes then save-failure","expected":"enable-error","passed":true},{"actual":{"phase":"disable-pending","value":{"mentions":true,"security":true}},"check":"domain state regression 1: channels","expected":{"phase":"disable-pending","value":{"mentions":true,"security":true}},"passed":true},{"actual":{"phase":"disabled","value":{"mentions":false,"security":true}},"check":"domain state regression 2: channels","expected":{"phase":"disabled","value":{"mentions":false,"security":true}},"passed":true},{"actual":{"phase":"disable-error","value":{"mentions":true,"security":true}},"check":"domain state regression 3: channels","expected":{"phase":"disable-error","value":{"mentions":true,"security":true}},"passed":true},{"actual":{"phase":"enable-pending","value":true},"check":"domain state regression 4: desired","expected":{"phase":"enable-pending","value":true},"passed":true},{"actual":{"phase":"cancel-disable-pending","value":true},"check":"domain state regression 5: desired","expected":{"phase":"cancel-disable-pending","value":true},"passed":true},{"actual":{"phase":"enable-pending","value":3},"check":"domain state regression 6: request","expected":{"phase":"enable-pending","value":3},"passed":true},{"actual":{"phase":"disabled","value":{"mentions":false,"security":true}},"check":"domain state regression 7: channels","expected":{"phase":"enabled","value":{"mentions":true,"security":true}},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"enabled / disable-toggle\", \"actual\": \"disabled\", \"expected\": \"disable-pending\", \"passed\": false}, {\"check\": \"disable-pending / save-success\", \"actual\": \"disabled\", \"expected\": \"disabled\", \"passed\": true}, {\"check\": \"disable-pending / save-failure\", \"actual\": \"disable-error\", \"expected\": \"disable-error\", \"passed\": true}, {\"check\": \"disabled / enable-toggle\", \"actual\": \"enable-pending\", \"expected\": \"enable-pending\", \"passed\": true}, {\"check\": \"enable-pending / save-success\", \"actual\": \"enabled\", \"expected\": \"enabled\", \"passed\": true}, {\"check\": \"enable-pending / save-failure\", \"actual\": \"enable-error\", \"expected\": \"enable-error\", \"passed\": true}, {\"check\": \"disable-error / retry-disable\", \"actual\": \"disable-pending\", \"expected\": \"disable-pending\", \"passed\": true}, {\"check\": \"enable-error / retry-enable\", \"actual\": \"enable-pending\", \"expected\": \"enable-pending\", \"passed\": true}, {\"check\": \"disable-pending / toggle-back-on\", \"actual\": \"cancel-disable-pending\", \"expected\": \"cancel-disable-pending\", \"passed\": true}, {\"check\": \"cancel-disable-pending / disable-save-completes\", \"actual\": \"enable-pending\", \"expected\": \"enable-pending\", \"passed\": true}, {\"check\": \"older notification incarnation\", \"actual\": \"enabled\", \"expected\": \"enabled\", \"passed\": true}, {\"check\": \"future notification incarnation\", \"actual\": \"enabled\", \"expected\": \"enabled\", \"passed\": true}, {\"check\": \"unknown event is inert\", \"actual\": \"enabled\", \"expected\": \"enabled\", \"passed\": true}, {\"check\": \"empty delivery batch\", \"actual\": \"enabled\", \"expected\": \"enabled\", \"passed\": true}, {\"check\": \"N stale deliveries before current delivery\", \"actual\": \"disabled\", \"expected\": \"disable-pending\", \"passed\": false}, {\"check\": \"trace disable-toggle then save-success\", \"actual\": \"disabled\", \"expected\": \"disabled\", \"passed\": true}, {\"check\": \"trace disable-toggle then save-failure\", \"actual\": \"disabled\", \"expected\": \"disable-error\", \"passed\": false}, {\"check\": \"trace disable-toggle then toggle-back-on\", \"actual\": \"disabled\", \"expected\": \"cancel-disable-pending\", \"passed\": false}, {\"check\": \"trace save-success then enable-toggle\", \"actual\": \"enable-pending\", \"expected\": \"enable-pending\", \"passed\": true}, {\"check\": \"trace save-failure then retry-disable\", \"actual\": \"disable-pending\", \"expected\": \"disable-pending\", \"passed\": true}, {\"check\": \"trace enable-toggle then save-success\", \"actual\": \"enabled\", \"expected\": \"enabled\", \"passed\": true}, {\"check\": \"trace enable-toggle then save-failure\", \"actual\": \"enable-error\", \"expected\": \"enable-error\", \"passed\": true}, {\"check\": \"trace save-success then disable-toggle\", \"actual\": \"disabled\", \"expected\": \"disable-pending\", \"passed\": false}, {\"check\": \"trace save-failure then retry-enable\", \"actual\": \"enable-pending\", \"expected\": \"enable-pending\", \"passed\": true}, {\"check\": \"trace retry-disable then save-success\", \"actual\": \"disabled\", \"expected\": \"disabled\", \"passed\": true}, {\"check\": \"trace retry-disable then save-failure\", \"actual\": \"disable-error\", \"expected\": \"disable-error\", \"passed\": true}, {\"check\": \"trace retry-disable then toggle-back-on\", \"actual\": \"cancel-disable-pending\", \"expected\": \"cancel-disable-pending\", \"passed\": true}, {\"check\": \"trace retry-enable then save-success\", \"actual\": \"enabled\", \"expected\": \"enabled\", \"passed\": true}, {\"check\": \"trace retry-enable then save-failure\", \"actual\": \"enable-error\", \"expected\": \"enable-error\", \"passed\": true}, {\"check\": \"trace toggle-back-on then disable-save-completes\", \"actual\": \"enable-pending\", \"expected\": \"enable-pending\", \"passed\": true}, {\"check\": \"trace disable-save-completes then save-success\", \"actual\": \"enabled\", \"expected\": \"enabled\", \"passed\": true}, {\"check\": \"trace disable-save-completes then save-failure\", \"actual\": \"enable-error\", \"expected\": \"enable-error\", \"passed\": true}, {\"check\": \"domain state regression 1: channels\", \"actual\": {\"phase\": \"disable-pending\", \"value\": {\"mentions\": true, \"security\": true}}, \"expected\": {\"phase\": \"disable-pending\", \"value\": {\"mentions\": true, \"security\": true}}, \"passed\": true}, {\"check\": \"domain state regression 2: channels\", \"actual\": {\"phase\": \"disabled\", \"value\": {\"mentions\": false, \"security\": true}}, \"expected\": {\"phase\": \"disabled\", \"value\": {\"mentions\": false, \"security\": true}}, \"passed\": true}, {\"check\": \"domain state regression 3: channels\", \"actual\": {\"phase\": \"disable-error\", \"value\": {\"mentions\": true, \"security\": true}}, \"expected\": {\"phase\": \"disable-error\", \"value\": {\"mentions\": true, \"security\": true}}, \"passed\": true}, {\"check\": \"domain state regression 4: desired\", \"actual\": {\"phase\": \"enable-pending\", \"value\": true}, \"expected\": {\"phase\": \"enable-pending\", \"value\": true}, \"passed\": true}, {\"check\": \"domain state regression 5: desired\", \"actual\": {\"phase\": \"cancel-disable-pending\", \"value\": true}, \"expected\": {\"phase\": \"cancel-disable-pending\", \"value\": true}, \"passed\": true}, {\"check\": \"domain state regression 6: request\", \"actual\": {\"phase\": \"enable-pending\", \"value\": 3}, \"expected\": {\"phase\": \"enable-pending\", \"value\": 3}, \"passed\": true}, {\"check\": \"domain state regression 7: channels\", \"actual\": {\"phase\": \"disabled\", \"value\": {\"mentions\": false, \"security\": true}}, \"expected\": {\"phase\": \"enabled\", \"value\": {\"mentions\": true, \"security\": true}}, \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":44.742,"exit_code":0,"observations":[{"actual":"disable-pending","check":"enabled / disable-toggle","expected":"disable-pending","passed":true},{"actual":"disabled","check":"disable-pending / save-success","expected":"disabled","passed":true},{"actual":"disable-error","check":"disable-pending / save-failure","expected":"disable-error","passed":true},{"actual":"enable-pending","check":"disabled / enable-toggle","expected":"enable-pending","passed":true},{"actual":"enabled","check":"enable-pending / save-success","expected":"enabled","passed":true},{"actual":"enable-error","check":"enable-pending / save-failure","expected":"enable-error","passed":true},{"actual":"disable-pending","check":"disable-error / retry-disable","expected":"disable-pending","passed":true},{"actual":"enable-pending","check":"enable-error / retry-enable","expected":"enable-pending","passed":true},{"actual":"cancel-disable-pending","check":"disable-pending / toggle-back-on","expected":"cancel-disable-pending","passed":true},{"actual":"enable-pending","check":"cancel-disable-pending / disable-save-completes","expected":"enable-pending","passed":true},{"actual":"enabled","check":"older notification incarnation","expected":"enabled","passed":true},{"actual":"enabled","check":"future notification incarnation","expected":"enabled","passed":true},{"actual":"enabled","check":"unknown event is inert","expected":"enabled","passed":true},{"actual":"enabled","check":"empty delivery batch","expected":"enabled","passed":true},{"actual":"disable-pending","check":"N stale deliveries before current delivery","expected":"disable-pending","passed":true},{"actual":"disabled","check":"trace disable-toggle then save-success","expected":"disabled","passed":true},{"actual":"disable-error","check":"trace disable-toggle then save-failure","expected":"disable-error","passed":true},{"actual":"cancel-disable-pending","check":"trace disable-toggle then toggle-back-on","expected":"cancel-disable-pending","passed":true},{"actual":"enable-pending","check":"trace save-success then enable-toggle","expected":"enable-pending","passed":true},{"actual":"disable-pending","check":"trace save-failure then retry-disable","expected":"disable-pending","passed":true},{"actual":"enabled","check":"trace enable-toggle then save-success","expected":"enabled","passed":true},{"actual":"enable-error","check":"trace enable-toggle then save-failure","expected":"enable-error","passed":true},{"actual":"disable-pending","check":"trace save-success then disable-toggle","expected":"disable-pending","passed":true},{"actual":"enable-pending","check":"trace save-failure then retry-enable","expected":"enable-pending","passed":true},{"actual":"disabled","check":"trace retry-disable then save-success","expected":"disabled","passed":true},{"actual":"disable-error","check":"trace retry-disable then save-failure","expected":"disable-error","passed":true},{"actual":"cancel-disable-pending","check":"trace retry-disable then toggle-back-on","expected":"cancel-disable-pending","passed":true},{"actual":"enabled","check":"trace retry-enable then save-success","expected":"enabled","passed":true},{"actual":"enable-error","check":"trace retry-enable then save-failure","expected":"enable-error","passed":true},{"actual":"enable-pending","check":"trace toggle-back-on then disable-save-completes","expected":"enable-pending","passed":true},{"actual":"enabled","check":"trace disable-save-completes then save-success","expected":"enabled","passed":true},{"actual":"enable-error","check":"trace disable-save-completes then save-failure","expected":"enable-error","passed":true},{"actual":{"phase":"disable-pending","value":{"mentions":true,"security":true}},"check":"domain state regression 1: channels","expected":{"phase":"disable-pending","value":{"mentions":true,"security":true}},"passed":true},{"actual":{"phase":"disabled","value":{"mentions":false,"security":true}},"check":"domain state regression 2: channels","expected":{"phase":"disabled","value":{"mentions":false,"security":true}},"passed":true},{"actual":{"phase":"disable-error","value":{"mentions":true,"security":true}},"check":"domain state regression 3: channels","expected":{"phase":"disable-error","value":{"mentions":true,"security":true}},"passed":true},{"actual":{"phase":"enable-pending","value":true},"check":"domain state regression 4: desired","expected":{"phase":"enable-pending","value":true},"passed":true},{"actual":{"phase":"cancel-disable-pending","value":true},"check":"domain state regression 5: desired","expected":{"phase":"cancel-disable-pending","value":true},"passed":true},{"actual":{"phase":"enable-pending","value":3},"check":"domain state regression 6: request","expected":{"phase":"enable-pending","value":3},"passed":true},{"actual":{"phase":"enabled","value":{"mentions":true,"security":true}},"check":"domain state regression 7: channels","expected":{"phase":"enabled","value":{"mentions":true,"security":true}},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"enabled / disable-toggle\", \"actual\": \"disable-pending\", \"expected\": \"disable-pending\", \"passed\": true}, {\"check\": \"disable-pending / save-success\", \"actual\": \"disabled\", \"expected\": \"disabled\", \"passed\": true}, {\"check\": \"disable-pending / save-failure\", \"actual\": \"disable-error\", \"expected\": \"disable-error\", \"passed\": true}, {\"check\": \"disabled / enable-toggle\", \"actual\": \"enable-pending\", \"expected\": \"enable-pending\", \"passed\": true}, {\"check\": \"enable-pending / save-success\", \"actual\": \"enabled\", \"expected\": \"enabled\", \"passed\": true}, {\"check\": \"enable-pending / save-failure\", \"actual\": \"enable-error\", \"expected\": \"enable-error\", \"passed\": true}, {\"check\": \"disable-error / retry-disable\", \"actual\": \"disable-pending\", \"expected\": \"disable-pending\", \"passed\": true}, {\"check\": \"enable-error / retry-enable\", \"actual\": \"enable-pending\", \"expected\": \"enable-pending\", \"passed\": true}, {\"check\": \"disable-pending / toggle-back-on\", \"actual\": \"cancel-disable-pending\", \"expected\": \"cancel-disable-pending\", \"passed\": true}, {\"check\": \"cancel-disable-pending / disable-save-completes\", \"actual\": \"enable-pending\", \"expected\": \"enable-pending\", \"passed\": true}, {\"check\": \"older notification incarnation\", \"actual\": \"enabled\", \"expected\": \"enabled\", \"passed\": true}, {\"check\": \"future notification incarnation\", \"actual\": \"enabled\", \"expected\": \"enabled\", \"passed\": true}, {\"check\": \"unknown event is inert\", \"actual\": \"enabled\", \"expected\": \"enabled\", \"passed\": true}, {\"check\": \"empty delivery batch\", \"actual\": \"enabled\", \"expected\": \"enabled\", \"passed\": true}, {\"check\": \"N stale deliveries before current delivery\", \"actual\": \"disable-pending\", \"expected\": \"disable-pending\", \"passed\": true}, {\"check\": \"trace disable-toggle then save-success\", \"actual\": \"disabled\", \"expected\": \"disabled\", \"passed\": true}, {\"check\": \"trace disable-toggle then save-failure\", \"actual\": \"disable-error\", \"expected\": \"disable-error\", \"passed\": true}, {\"check\": \"trace disable-toggle then toggle-back-on\", \"actual\": \"cancel-disable-pending\", \"expected\": \"cancel-disable-pending\", \"passed\": true}, {\"check\": \"trace save-success then enable-toggle\", \"actual\": \"enable-pending\", \"expected\": \"enable-pending\", \"passed\": true}, {\"check\": \"trace save-failure then retry-disable\", \"actual\": \"disable-pending\", \"expected\": \"disable-pending\", \"passed\": true}, {\"check\": \"trace enable-toggle then save-success\", \"actual\": \"enabled\", \"expected\": \"enabled\", \"passed\": true}, {\"check\": \"trace enable-toggle then save-failure\", \"actual\": \"enable-error\", \"expected\": \"enable-error\", \"passed\": true}, {\"check\": \"trace save-success then disable-toggle\", \"actual\": \"disable-pending\", \"expected\": \"disable-pending\", \"passed\": true}, {\"check\": \"trace save-failure then retry-enable\", \"actual\": \"enable-pending\", \"expected\": \"enable-pending\", \"passed\": true}, {\"check\": \"trace retry-disable then save-success\", \"actual\": \"disabled\", \"expected\": \"disabled\", \"passed\": true}, {\"check\": \"trace retry-disable then save-failure\", \"actual\": \"disable-error\", \"expected\": \"disable-error\", \"passed\": true}, {\"check\": \"trace retry-disable then toggle-back-on\", \"actual\": \"cancel-disable-pending\", \"expected\": \"cancel-disable-pending\", \"passed\": true}, {\"check\": \"trace retry-enable then save-success\", \"actual\": \"enabled\", \"expected\": \"enabled\", \"passed\": true}, {\"check\": \"trace retry-enable then save-failure\", \"actual\": \"enable-error\", \"expected\": \"enable-error\", \"passed\": true}, {\"check\": \"trace toggle-back-on then disable-save-completes\", \"actual\": \"enable-pending\", \"expected\": \"enable-pending\", \"passed\": true}, {\"check\": \"trace disable-save-completes then save-success\", \"actual\": \"enabled\", \"expected\": \"enabled\", \"passed\": true}, {\"check\": \"trace disable-save-completes then save-failure\", \"actual\": \"enable-error\", \"expected\": \"enable-error\", \"passed\": true}, {\"check\": \"domain state regression 1: channels\", \"actual\": {\"phase\": \"disable-pending\", \"value\": {\"mentions\": true, \"security\": true}}, \"expected\": {\"phase\": \"disable-pending\", \"value\": {\"mentions\": true, \"security\": true}}, \"passed\": true}, {\"check\": \"domain state regression 2: channels\", \"actual\": {\"phase\": \"disabled\", \"value\": {\"mentions\": false, \"security\": true}}, \"expected\": {\"phase\": \"disabled\", \"value\": {\"mentions\": false, \"security\": true}}, \"passed\": true}, {\"check\": \"domain state regression 3: channels\", \"actual\": {\"phase\": \"disable-error\", \"value\": {\"mentions\": true, \"security\": true}}, \"expected\": {\"phase\": \"disable-error\", \"value\": {\"mentions\": true, \"security\": true}}, \"passed\": true}, {\"check\": \"domain state regression 4: desired\", \"actual\": {\"phase\": \"enable-pending\", \"value\": true}, \"expected\": {\"phase\": \"enable-pending\", \"value\": true}, \"passed\": true}, {\"check\": \"domain state regression 5: desired\", \"actual\": {\"phase\": \"cancel-disable-pending\", \"value\": true}, \"expected\": {\"phase\": \"cancel-disable-pending\", \"value\": true}, \"passed\": true}, {\"check\": \"domain state regression 6: request\", \"actual\": {\"phase\": \"enable-pending\", \"value\": 3}, \"expected\": {\"phase\": \"enable-pending\", \"value\": 3}, \"passed\": true}, {\"check\": \"domain state regression 7: channels\", \"actual\": {\"phase\": \"enabled\", \"value\": {\"mentions\": true, \"security\": true}}, \"expected\": {\"phase\": \"enabled\", \"value\": {\"mentions\": true, \"security\": true}}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}