{"abstract":"The unread-accepted event leaves a notification in read-confirmed instead of unread.","category":"Notification interfaces","checks":36,"contract":"Inbox read receipt rendering is a bounded visual-notification workflow with mutable policy state {'revision': 2, 'ack_revision': 0, 'unread_ids': ['n', 'other'], 'item': 'n'}. Its default transition relation is {('unread', 'open-preview'): 'previewing', ('previewing', 'close-preview'): 'unread', ('previewing', 'mark-read'): 'read-pending', ('read-pending', 'receipt-accepted'): 'read-confirmed', ('read-pending', 'receipt-rejected'): 'read-error', ('read-error', 'retry-receipt'): 'read-pending', ('read-confirmed', 'mark-unread'): 'unread-pending', ('unread-pending', 'unread-accepted'): 'unread', ('unread-pending', 'unread-rejected'): 'unread-error', ('unread-error', 'dismiss-error'): 'read-confirmed'}; 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-read-receipt","failed_approach":"Presenting success as an error obscures the changed badge.","family":"s3-notification-interfaces-read-receipt-08","id":"FA-34026","implementations":{"attempt":{"sha256":"e505eab4c44368ceca15f196b219a26ba23a892b433c533ddfe0bcf59ceec9a7","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 = {('unread', 'open-preview'): 'previewing', ('previewing', 'close-preview'): 'unread', ('previewing', 'mark-read'): 'read-pending', ('read-pending', 'receipt-accepted'): 'read-confirmed', ('read-pending', 'receipt-rejected'): 'read-error', ('read-error', 'retry-receipt'): 'read-pending', ('read-confirmed', 'mark-unread'): 'unread-pending', ('unread-pending', 'unread-accepted'): 'read-error', ('unread-pending', 'unread-rejected'): 'unread-error', ('unread-error', 'dismiss-error'): 'read-confirmed'}\n    data = json.loads(json.dumps({'revision': 2, 'ack_revision': 0, 'unread_ids': ['n', 'other'], 'item': 'n'})) if payload is None else {**json.loads(json.dumps({'revision': 2, 'ack_revision': 0, 'unread_ids': ['n', 'other'], 'item': 'n'})), **json.loads(json.dumps(payload))}\n    state = initial\n    for delivery in events:\n        event, event_generation = delivery[:2]\n        arg = delivery[2] if len(delivery) > 2 else {}\n        if event_generation == generation:\n            previous = state\n            if event in ('receipt-accepted','receipt-rejected','unread-accepted','unread-rejected') and arg.get('revision',data['revision']) != data['revision']: event = 'unknown-event'\n            state = table.get((state, event), state)\n            if state == 'read-confirmed':\n                data['ack_revision'] = data['revision']\n                data['unread_ids'] = [x for x in data['unread_ids'] if x != data['item']]\n            if state == 'unread' and data['item'] not in data['unread_ids']: data['unread_ids'].append(data['item'])\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('unread / open-preview', solve('unread', [('open-preview', N)], N), 'previewing')\ncheck('previewing / close-preview', solve('previewing', [('close-preview', N)], N), 'unread')\ncheck('previewing / mark-read', solve('previewing', [('mark-read', N)], N), 'read-pending')\ncheck('read-pending / receipt-accepted', solve('read-pending', [('receipt-accepted', N)], N), 'read-confirmed')\ncheck('read-pending / receipt-rejected', solve('read-pending', [('receipt-rejected', N)], N), 'read-error')\ncheck('read-error / retry-receipt', solve('read-error', [('retry-receipt', N)], N), 'read-pending')\ncheck('read-confirmed / mark-unread', solve('read-confirmed', [('mark-unread', N)], N), 'unread-pending')\ncheck('unread-pending / unread-accepted', solve('unread-pending', [('unread-accepted', N)], N), 'unread')\ncheck('unread-pending / unread-rejected', solve('unread-pending', [('unread-rejected', N)], N), 'unread-error')\ncheck('unread-error / dismiss-error', solve('unread-error', [('dismiss-error', N)], N), 'read-confirmed')\ncheck('older notification incarnation', solve('unread', [('open-preview', N - 1)], N), 'unread')\ncheck('future notification incarnation', solve('unread', [('open-preview', N + 1)], N), 'unread')\ncheck('unknown event is inert', solve('unread', [('unknown-event', N)], N), 'unread')\ncheck('empty delivery batch', solve('unread', [], N), 'unread')\ncheck('N stale deliveries before current delivery', solve('unread', [('open-preview', N - 1)] * N + [('open-preview', N)], N), 'previewing')\ncheck('trace open-preview then close-preview', solve('unread', [('open-preview', N), ('close-preview', N)], N), 'unread')\ncheck('trace open-preview then mark-read', solve('unread', [('open-preview', N), ('mark-read', N)], N), 'read-pending')\ncheck('trace close-preview then open-preview', solve('previewing', [('close-preview', N), ('open-preview', N)], N), 'previewing')\ncheck('trace mark-read then receipt-accepted', solve('previewing', [('mark-read', N), ('receipt-accepted', N)], N), 'read-confirmed')\ncheck('trace mark-read then receipt-rejected', solve('previewing', [('mark-read', N), ('receipt-rejected', N)], N), 'read-error')\ncheck('trace receipt-accepted then mark-unread', solve('read-pending', [('receipt-accepted', N), ('mark-unread', N)], N), 'unread-pending')\ncheck('trace receipt-rejected then retry-receipt', solve('read-pending', [('receipt-rejected', N), ('retry-receipt', N)], N), 'read-pending')\ncheck('trace retry-receipt then receipt-accepted', solve('read-error', [('retry-receipt', N), ('receipt-accepted', N)], N), 'read-confirmed')\ncheck('trace retry-receipt then receipt-rejected', solve('read-error', [('retry-receipt', N), ('receipt-rejected', N)], N), 'read-error')\ncheck('trace mark-unread then unread-accepted', solve('read-confirmed', [('mark-unread', N), ('unread-accepted', N)], N), 'unread')\ncheck('trace mark-unread then unread-rejected', solve('read-confirmed', [('mark-unread', N), ('unread-rejected', N)], N), 'unread-error')\ncheck('trace unread-accepted then open-preview', solve('unread-pending', [('unread-accepted', N), ('open-preview', N)], N), 'previewing')\ncheck('trace unread-rejected then dismiss-error', solve('unread-pending', [('unread-rejected', N), ('dismiss-error', N)], N), 'read-confirmed')\ncheck('trace dismiss-error then mark-unread', solve('unread-error', [('dismiss-error', N), ('mark-unread', N)], N), 'unread-pending')\ncheck('domain state regression 1: ack_revision', solve('read-pending', [('receipt-accepted', N, {'revision': 1})], N, {}, 'ack_revision'), {'phase': 'read-pending', 'value': 0})\ncheck('domain state regression 2: ack_revision', solve('read-pending', [('receipt-accepted', N, {'revision': 2})], N, {}, 'ack_revision'), {'phase': 'read-confirmed', 'value': 2})\ncheck('domain state regression 3: unread_ids', solve('read-pending', [('receipt-accepted', N, {})], N, {}, 'unread_ids'), {'phase': 'read-confirmed', 'value': ['other']})\ncheck('domain state regression 4: unread_ids', solve('unread-pending', [('unread-accepted', N, {})], N, {'unread_ids': ['other']}, 'unread_ids'), {'phase': 'unread', 'value': ['other', 'n']})\ncheck('domain state regression 5: unread_ids', solve('unread', [('open-preview', N, {})], N, {}, 'unread_ids'), {'phase': 'previewing', 'value': ['n', 'other']})\ncheck('domain state regression 6: unread_ids', solve('unread-pending', [('unread-accepted', N, {'revision': 1})], N, {'unread_ids': ['other']}, 'unread_ids'), {'phase': 'unread-pending', 'value': ['other']})\ncheck('domain state regression 7: unread_ids', solve('unread', [('open-preview', N, {}), ('mark-read', N, {}), ('receipt-accepted', N, {'revision': 1}), ('receipt-accepted', N, {'revision': 2})], N, {}, 'unread_ids'), {'phase': 'read-confirmed', 'value': ['other']})\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":"2387aa377eb32aec17d5f7bb33dce43ff96ed1d07afa05e78feb621e2b9c3ba3","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 = {('unread', 'open-preview'): 'previewing', ('previewing', 'close-preview'): 'unread', ('previewing', 'mark-read'): 'read-pending', ('read-pending', 'receipt-accepted'): 'read-confirmed', ('read-pending', 'receipt-rejected'): 'read-error', ('read-error', 'retry-receipt'): 'read-pending', ('read-confirmed', 'mark-unread'): 'unread-pending', ('unread-pending', 'unread-accepted'): 'read-confirmed', ('unread-pending', 'unread-rejected'): 'unread-error', ('unread-error', 'dismiss-error'): 'read-confirmed'}\n    data = json.loads(json.dumps({'revision': 2, 'ack_revision': 0, 'unread_ids': ['n', 'other'], 'item': 'n'})) if payload is None else {**json.loads(json.dumps({'revision': 2, 'ack_revision': 0, 'unread_ids': ['n', 'other'], 'item': 'n'})), **json.loads(json.dumps(payload))}\n    state = initial\n    for delivery in events:\n        event, event_generation = delivery[:2]\n        arg = delivery[2] if len(delivery) > 2 else {}\n        if event_generation == generation:\n            previous = state\n            if event in ('receipt-accepted','receipt-rejected','unread-accepted','unread-rejected') and arg.get('revision',data['revision']) != data['revision']: event = 'unknown-event'\n            state = table.get((state, event), state)\n            if state == 'read-confirmed':\n                data['ack_revision'] = data['revision']\n                data['unread_ids'] = [x for x in data['unread_ids'] if x != data['item']]\n            if state == 'unread' and data['item'] not in data['unread_ids']: data['unread_ids'].append(data['item'])\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('unread / open-preview', solve('unread', [('open-preview', N)], N), 'previewing')\ncheck('previewing / close-preview', solve('previewing', [('close-preview', N)], N), 'unread')\ncheck('previewing / mark-read', solve('previewing', [('mark-read', N)], N), 'read-pending')\ncheck('read-pending / receipt-accepted', solve('read-pending', [('receipt-accepted', N)], N), 'read-confirmed')\ncheck('read-pending / receipt-rejected', solve('read-pending', [('receipt-rejected', N)], N), 'read-error')\ncheck('read-error / retry-receipt', solve('read-error', [('retry-receipt', N)], N), 'read-pending')\ncheck('read-confirmed / mark-unread', solve('read-confirmed', [('mark-unread', N)], N), 'unread-pending')\ncheck('unread-pending / unread-accepted', solve('unread-pending', [('unread-accepted', N)], N), 'unread')\ncheck('unread-pending / unread-rejected', solve('unread-pending', [('unread-rejected', N)], N), 'unread-error')\ncheck('unread-error / dismiss-error', solve('unread-error', [('dismiss-error', N)], N), 'read-confirmed')\ncheck('older notification incarnation', solve('unread', [('open-preview', N - 1)], N), 'unread')\ncheck('future notification incarnation', solve('unread', [('open-preview', N + 1)], N), 'unread')\ncheck('unknown event is inert', solve('unread', [('unknown-event', N)], N), 'unread')\ncheck('empty delivery batch', solve('unread', [], N), 'unread')\ncheck('N stale deliveries before current delivery', solve('unread', [('open-preview', N - 1)] * N + [('open-preview', N)], N), 'previewing')\ncheck('trace open-preview then close-preview', solve('unread', [('open-preview', N), ('close-preview', N)], N), 'unread')\ncheck('trace open-preview then mark-read', solve('unread', [('open-preview', N), ('mark-read', N)], N), 'read-pending')\ncheck('trace close-preview then open-preview', solve('previewing', [('close-preview', N), ('open-preview', N)], N), 'previewing')\ncheck('trace mark-read then receipt-accepted', solve('previewing', [('mark-read', N), ('receipt-accepted', N)], N), 'read-confirmed')\ncheck('trace mark-read then receipt-rejected', solve('previewing', [('mark-read', N), ('receipt-rejected', N)], N), 'read-error')\ncheck('trace receipt-accepted then mark-unread', solve('read-pending', [('receipt-accepted', N), ('mark-unread', N)], N), 'unread-pending')\ncheck('trace receipt-rejected then retry-receipt', solve('read-pending', [('receipt-rejected', N), ('retry-receipt', N)], N), 'read-pending')\ncheck('trace retry-receipt then receipt-accepted', solve('read-error', [('retry-receipt', N), ('receipt-accepted', N)], N), 'read-confirmed')\ncheck('trace retry-receipt then receipt-rejected', solve('read-error', [('retry-receipt', N), ('receipt-rejected', N)], N), 'read-error')\ncheck('trace mark-unread then unread-accepted', solve('read-confirmed', [('mark-unread', N), ('unread-accepted', N)], N), 'unread')\ncheck('trace mark-unread then unread-rejected', solve('read-confirmed', [('mark-unread', N), ('unread-rejected', N)], N), 'unread-error')\ncheck('trace unread-accepted then open-preview', solve('unread-pending', [('unread-accepted', N), ('open-preview', N)], N), 'previewing')\ncheck('trace unread-rejected then dismiss-error', solve('unread-pending', [('unread-rejected', N), ('dismiss-error', N)], N), 'read-confirmed')\ncheck('trace dismiss-error then mark-unread', solve('unread-error', [('dismiss-error', N), ('mark-unread', N)], N), 'unread-pending')\ncheck('domain state regression 1: ack_revision', solve('read-pending', [('receipt-accepted', N, {'revision': 1})], N, {}, 'ack_revision'), {'phase': 'read-pending', 'value': 0})\ncheck('domain state regression 2: ack_revision', solve('read-pending', [('receipt-accepted', N, {'revision': 2})], N, {}, 'ack_revision'), {'phase': 'read-confirmed', 'value': 2})\ncheck('domain state regression 3: unread_ids', solve('read-pending', [('receipt-accepted', N, {})], N, {}, 'unread_ids'), {'phase': 'read-confirmed', 'value': ['other']})\ncheck('domain state regression 4: unread_ids', solve('unread-pending', [('unread-accepted', N, {})], N, {'unread_ids': ['other']}, 'unread_ids'), {'phase': 'unread', 'value': ['other', 'n']})\ncheck('domain state regression 5: unread_ids', solve('unread', [('open-preview', N, {})], N, {}, 'unread_ids'), {'phase': 'previewing', 'value': ['n', 'other']})\ncheck('domain state regression 6: unread_ids', solve('unread-pending', [('unread-accepted', N, {'revision': 1})], N, {'unread_ids': ['other']}, 'unread_ids'), {'phase': 'unread-pending', 'value': ['other']})\ncheck('domain state regression 7: unread_ids', solve('unread', [('open-preview', N, {}), ('mark-read', N, {}), ('receipt-accepted', N, {'revision': 1}), ('receipt-accepted', N, {'revision': 2})], N, {}, 'unread_ids'), {'phase': 'read-confirmed', 'value': ['other']})\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":"55e328c99f3505b0a0ecfb1ba6fb0e4e271776b7e8cb575d6e869e36cd87fe19","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 = {('unread', 'open-preview'): 'previewing', ('previewing', 'close-preview'): 'unread', ('previewing', 'mark-read'): 'read-pending', ('read-pending', 'receipt-accepted'): 'read-confirmed', ('read-pending', 'receipt-rejected'): 'read-error', ('read-error', 'retry-receipt'): 'read-pending', ('read-confirmed', 'mark-unread'): 'unread-pending', ('unread-pending', 'unread-accepted'): 'unread', ('unread-pending', 'unread-rejected'): 'unread-error', ('unread-error', 'dismiss-error'): 'read-confirmed'}\n    data = json.loads(json.dumps({'revision': 2, 'ack_revision': 0, 'unread_ids': ['n', 'other'], 'item': 'n'})) if payload is None else {**json.loads(json.dumps({'revision': 2, 'ack_revision': 0, 'unread_ids': ['n', 'other'], 'item': 'n'})), **json.loads(json.dumps(payload))}\n    state = initial\n    for delivery in events:\n        event, event_generation = delivery[:2]\n        arg = delivery[2] if len(delivery) > 2 else {}\n        if event_generation == generation:\n            previous = state\n            if event in ('receipt-accepted','receipt-rejected','unread-accepted','unread-rejected') and arg.get('revision',data['revision']) != data['revision']: event = 'unknown-event'\n            state = table.get((state, event), state)\n            if state == 'read-confirmed':\n                data['ack_revision'] = data['revision']\n                data['unread_ids'] = [x for x in data['unread_ids'] if x != data['item']]\n            if state == 'unread' and data['item'] not in data['unread_ids']: data['unread_ids'].append(data['item'])\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('unread / open-preview', solve('unread', [('open-preview', N)], N), 'previewing')\ncheck('previewing / close-preview', solve('previewing', [('close-preview', N)], N), 'unread')\ncheck('previewing / mark-read', solve('previewing', [('mark-read', N)], N), 'read-pending')\ncheck('read-pending / receipt-accepted', solve('read-pending', [('receipt-accepted', N)], N), 'read-confirmed')\ncheck('read-pending / receipt-rejected', solve('read-pending', [('receipt-rejected', N)], N), 'read-error')\ncheck('read-error / retry-receipt', solve('read-error', [('retry-receipt', N)], N), 'read-pending')\ncheck('read-confirmed / mark-unread', solve('read-confirmed', [('mark-unread', N)], N), 'unread-pending')\ncheck('unread-pending / unread-accepted', solve('unread-pending', [('unread-accepted', N)], N), 'unread')\ncheck('unread-pending / unread-rejected', solve('unread-pending', [('unread-rejected', N)], N), 'unread-error')\ncheck('unread-error / dismiss-error', solve('unread-error', [('dismiss-error', N)], N), 'read-confirmed')\ncheck('older notification incarnation', solve('unread', [('open-preview', N - 1)], N), 'unread')\ncheck('future notification incarnation', solve('unread', [('open-preview', N + 1)], N), 'unread')\ncheck('unknown event is inert', solve('unread', [('unknown-event', N)], N), 'unread')\ncheck('empty delivery batch', solve('unread', [], N), 'unread')\ncheck('N stale deliveries before current delivery', solve('unread', [('open-preview', N - 1)] * N + [('open-preview', N)], N), 'previewing')\ncheck('trace open-preview then close-preview', solve('unread', [('open-preview', N), ('close-preview', N)], N), 'unread')\ncheck('trace open-preview then mark-read', solve('unread', [('open-preview', N), ('mark-read', N)], N), 'read-pending')\ncheck('trace close-preview then open-preview', solve('previewing', [('close-preview', N), ('open-preview', N)], N), 'previewing')\ncheck('trace mark-read then receipt-accepted', solve('previewing', [('mark-read', N), ('receipt-accepted', N)], N), 'read-confirmed')\ncheck('trace mark-read then receipt-rejected', solve('previewing', [('mark-read', N), ('receipt-rejected', N)], N), 'read-error')\ncheck('trace receipt-accepted then mark-unread', solve('read-pending', [('receipt-accepted', N), ('mark-unread', N)], N), 'unread-pending')\ncheck('trace receipt-rejected then retry-receipt', solve('read-pending', [('receipt-rejected', N), ('retry-receipt', N)], N), 'read-pending')\ncheck('trace retry-receipt then receipt-accepted', solve('read-error', [('retry-receipt', N), ('receipt-accepted', N)], N), 'read-confirmed')\ncheck('trace retry-receipt then receipt-rejected', solve('read-error', [('retry-receipt', N), ('receipt-rejected', N)], N), 'read-error')\ncheck('trace mark-unread then unread-accepted', solve('read-confirmed', [('mark-unread', N), ('unread-accepted', N)], N), 'unread')\ncheck('trace mark-unread then unread-rejected', solve('read-confirmed', [('mark-unread', N), ('unread-rejected', N)], N), 'unread-error')\ncheck('trace unread-accepted then open-preview', solve('unread-pending', [('unread-accepted', N), ('open-preview', N)], N), 'previewing')\ncheck('trace unread-rejected then dismiss-error', solve('unread-pending', [('unread-rejected', N), ('dismiss-error', N)], N), 'read-confirmed')\ncheck('trace dismiss-error then mark-unread', solve('unread-error', [('dismiss-error', N), ('mark-unread', N)], N), 'unread-pending')\ncheck('domain state regression 1: ack_revision', solve('read-pending', [('receipt-accepted', N, {'revision': 1})], N, {}, 'ack_revision'), {'phase': 'read-pending', 'value': 0})\ncheck('domain state regression 2: ack_revision', solve('read-pending', [('receipt-accepted', N, {'revision': 2})], N, {}, 'ack_revision'), {'phase': 'read-confirmed', 'value': 2})\ncheck('domain state regression 3: unread_ids', solve('read-pending', [('receipt-accepted', N, {})], N, {}, 'unread_ids'), {'phase': 'read-confirmed', 'value': ['other']})\ncheck('domain state regression 4: unread_ids', solve('unread-pending', [('unread-accepted', N, {})], N, {'unread_ids': ['other']}, 'unread_ids'), {'phase': 'unread', 'value': ['other', 'n']})\ncheck('domain state regression 5: unread_ids', solve('unread', [('open-preview', N, {})], N, {}, 'unread_ids'), {'phase': 'previewing', 'value': ['n', 'other']})\ncheck('domain state regression 6: unread_ids', solve('unread-pending', [('unread-accepted', N, {'revision': 1})], N, {'unread_ids': ['other']}, 'unread_ids'), {'phase': 'unread-pending', 'value': ['other']})\ncheck('domain state regression 7: unread_ids', solve('unread', [('open-preview', N, {}), ('mark-read', N, {}), ('receipt-accepted', N, {'revision': 1}), ('receipt-accepted', N, {'revision': 2})], N, {}, 'unread_ids'), {'phase': 'read-confirmed', 'value': ['other']})\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-read-receipt-08","generated_at":"2026-09-29T14:42:27.884617+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 unread-pending / unread-accepted transition to unread; preserve the other explicitly stipulated transitions.","root_cause":"Confirmed unread is overwritten by the prior read appearance.","sha256":"365808c236a34dcc5a383e0b0d3aa9f4dc4ee90d73dd44fb3f35d32cdc8b8eb6","title":"Inbox read receipt rendering: unread-accepted from unread-pending · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.793,"exit_code":1,"observations":[{"actual":"previewing","check":"unread / open-preview","expected":"previewing","passed":true},{"actual":"unread","check":"previewing / close-preview","expected":"unread","passed":true},{"actual":"read-pending","check":"previewing / mark-read","expected":"read-pending","passed":true},{"actual":"read-confirmed","check":"read-pending / receipt-accepted","expected":"read-confirmed","passed":true},{"actual":"read-error","check":"read-pending / receipt-rejected","expected":"read-error","passed":true},{"actual":"read-pending","check":"read-error / retry-receipt","expected":"read-pending","passed":true},{"actual":"unread-pending","check":"read-confirmed / mark-unread","expected":"unread-pending","passed":true},{"actual":"read-error","check":"unread-pending / unread-accepted","expected":"unread","passed":false},{"actual":"unread-error","check":"unread-pending / unread-rejected","expected":"unread-error","passed":true},{"actual":"read-confirmed","check":"unread-error / dismiss-error","expected":"read-confirmed","passed":true},{"actual":"unread","check":"older notification incarnation","expected":"unread","passed":true},{"actual":"unread","check":"future notification incarnation","expected":"unread","passed":true},{"actual":"unread","check":"unknown event is inert","expected":"unread","passed":true},{"actual":"unread","check":"empty delivery batch","expected":"unread","passed":true},{"actual":"previewing","check":"N stale deliveries before current delivery","expected":"previewing","passed":true},{"actual":"unread","check":"trace open-preview then close-preview","expected":"unread","passed":true},{"actual":"read-pending","check":"trace open-preview then mark-read","expected":"read-pending","passed":true},{"actual":"previewing","check":"trace close-preview then open-preview","expected":"previewing","passed":true},{"actual":"read-confirmed","check":"trace mark-read then receipt-accepted","expected":"read-confirmed","passed":true},{"actual":"read-error","check":"trace mark-read then receipt-rejected","expected":"read-error","passed":true},{"actual":"unread-pending","check":"trace receipt-accepted then mark-unread","expected":"unread-pending","passed":true},{"actual":"read-pending","check":"trace receipt-rejected then retry-receipt","expected":"read-pending","passed":true},{"actual":"read-confirmed","check":"trace retry-receipt then receipt-accepted","expected":"read-confirmed","passed":true},{"actual":"read-error","check":"trace retry-receipt then receipt-rejected","expected":"read-error","passed":true},{"actual":"read-error","check":"trace mark-unread then unread-accepted","expected":"unread","passed":false},{"actual":"unread-error","check":"trace mark-unread then unread-rejected","expected":"unread-error","passed":true},{"actual":"read-error","check":"trace unread-accepted then open-preview","expected":"previewing","passed":false},{"actual":"read-confirmed","check":"trace unread-rejected then dismiss-error","expected":"read-confirmed","passed":true},{"actual":"unread-pending","check":"trace dismiss-error then mark-unread","expected":"unread-pending","passed":true},{"actual":{"phase":"read-pending","value":0},"check":"domain state regression 1: ack_revision","expected":{"phase":"read-pending","value":0},"passed":true},{"actual":{"phase":"read-confirmed","value":2},"check":"domain state regression 2: ack_revision","expected":{"phase":"read-confirmed","value":2},"passed":true},{"actual":{"phase":"read-confirmed","value":["other"]},"check":"domain state regression 3: unread_ids","expected":{"phase":"read-confirmed","value":["other"]},"passed":true},{"actual":{"phase":"read-error","value":["other"]},"check":"domain state regression 4: unread_ids","expected":{"phase":"unread","value":["other","n"]},"passed":false},{"actual":{"phase":"previewing","value":["n","other"]},"check":"domain state regression 5: unread_ids","expected":{"phase":"previewing","value":["n","other"]},"passed":true},{"actual":{"phase":"unread-pending","value":["other"]},"check":"domain state regression 6: unread_ids","expected":{"phase":"unread-pending","value":["other"]},"passed":true},{"actual":{"phase":"read-confirmed","value":["other"]},"check":"domain state regression 7: unread_ids","expected":{"phase":"read-confirmed","value":["other"]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"unread / open-preview\", \"actual\": \"previewing\", \"expected\": \"previewing\", \"passed\": true}, {\"check\": \"previewing / close-preview\", \"actual\": \"unread\", \"expected\": \"unread\", \"passed\": true}, {\"check\": \"previewing / mark-read\", \"actual\": \"read-pending\", \"expected\": \"read-pending\", \"passed\": true}, {\"check\": \"read-pending / receipt-accepted\", \"actual\": \"read-confirmed\", \"expected\": \"read-confirmed\", \"passed\": true}, {\"check\": \"read-pending / receipt-rejected\", \"actual\": \"read-error\", \"expected\": \"read-error\", \"passed\": true}, {\"check\": \"read-error / retry-receipt\", \"actual\": \"read-pending\", \"expected\": \"read-pending\", \"passed\": true}, {\"check\": \"read-confirmed / mark-unread\", \"actual\": \"unread-pending\", \"expected\": \"unread-pending\", \"passed\": true}, {\"check\": \"unread-pending / unread-accepted\", \"actual\": \"read-error\", \"expected\": \"unread\", \"passed\": false}, {\"check\": \"unread-pending / unread-rejected\", \"actual\": \"unread-error\", \"expected\": \"unread-error\", \"passed\": true}, {\"check\": \"unread-error / dismiss-error\", \"actual\": \"read-confirmed\", \"expected\": \"read-confirmed\", \"passed\": true}, {\"check\": \"older notification incarnation\", \"actual\": \"unread\", \"expected\": \"unread\", \"passed\": true}, {\"check\": \"future notification incarnation\", \"actual\": \"unread\", \"expected\": \"unread\", \"passed\": true}, {\"check\": \"unknown event is inert\", \"actual\": \"unread\", \"expected\": \"unread\", \"passed\": true}, {\"check\": \"empty delivery batch\", \"actual\": \"unread\", \"expected\": \"unread\", \"passed\": true}, {\"check\": \"N stale deliveries before current delivery\", \"actual\": \"previewing\", \"expected\": \"previewing\", \"passed\": true}, {\"check\": \"trace open-preview then close-preview\", \"actual\": \"unread\", \"expected\": \"unread\", \"passed\": true}, {\"check\": \"trace open-preview then mark-read\", \"actual\": \"read-pending\", \"expected\": \"read-pending\", \"passed\": true}, {\"check\": \"trace close-preview then open-preview\", \"actual\": \"previewing\", \"expected\": \"previewing\", \"passed\": true}, {\"check\": \"trace mark-read then receipt-accepted\", \"actual\": \"read-confirmed\", \"expected\": \"read-confirmed\", \"passed\": true}, {\"check\": \"trace mark-read then receipt-rejected\", \"actual\": \"read-error\", \"expected\": \"read-error\", \"passed\": true}, {\"check\": \"trace receipt-accepted then mark-unread\", \"actual\": \"unread-pending\", \"expected\": \"unread-pending\", \"passed\": true}, {\"check\": \"trace receipt-rejected then retry-receipt\", \"actual\": \"read-pending\", \"expected\": \"read-pending\", \"passed\": true}, {\"check\": \"trace retry-receipt then receipt-accepted\", \"actual\": \"read-confirmed\", \"expected\": \"read-confirmed\", \"passed\": true}, {\"check\": \"trace retry-receipt then receipt-rejected\", \"actual\": \"read-error\", \"expected\": \"read-error\", \"passed\": true}, {\"check\": \"trace mark-unread then unread-accepted\", \"actual\": \"read-error\", \"expected\": \"unread\", \"passed\": false}, {\"check\": \"trace mark-unread then unread-rejected\", \"actual\": \"unread-error\", \"expected\": \"unread-error\", \"passed\": true}, {\"check\": \"trace unread-accepted then open-preview\", \"actual\": \"read-error\", \"expected\": \"previewing\", \"passed\": false}, {\"check\": \"trace unread-rejected then dismiss-error\", \"actual\": \"read-confirmed\", \"expected\": \"read-confirmed\", \"passed\": true}, {\"check\": \"trace dismiss-error then mark-unread\", \"actual\": \"unread-pending\", \"expected\": \"unread-pending\", \"passed\": true}, {\"check\": \"domain state regression 1: ack_revision\", \"actual\": {\"phase\": \"read-pending\", \"value\": 0}, \"expected\": {\"phase\": \"read-pending\", \"value\": 0}, \"passed\": true}, {\"check\": \"domain state regression 2: ack_revision\", \"actual\": {\"phase\": \"read-confirmed\", \"value\": 2}, \"expected\": {\"phase\": \"read-confirmed\", \"value\": 2}, \"passed\": true}, {\"check\": \"domain state regression 3: unread_ids\", \"actual\": {\"phase\": \"read-confirmed\", \"value\": [\"other\"]}, \"expected\": {\"phase\": \"read-confirmed\", \"value\": [\"other\"]}, \"passed\": true}, {\"check\": \"domain state regression 4: unread_ids\", \"actual\": {\"phase\": \"read-error\", \"value\": [\"other\"]}, \"expected\": {\"phase\": \"unread\", \"value\": [\"other\", \"n\"]}, \"passed\": false}, {\"check\": \"domain state regression 5: unread_ids\", \"actual\": {\"phase\": \"previewing\", \"value\": [\"n\", \"other\"]}, \"expected\": {\"phase\": \"previewing\", \"value\": [\"n\", \"other\"]}, \"passed\": true}, {\"check\": \"domain state regression 6: unread_ids\", \"actual\": {\"phase\": \"unread-pending\", \"value\": [\"other\"]}, \"expected\": {\"phase\": \"unread-pending\", \"value\": [\"other\"]}, \"passed\": true}, {\"check\": \"domain state regression 7: unread_ids\", \"actual\": {\"phase\": \"read-confirmed\", \"value\": [\"other\"]}, \"expected\": {\"phase\": \"read-confirmed\", \"value\": [\"other\"]}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.527,"exit_code":1,"observations":[{"actual":"previewing","check":"unread / open-preview","expected":"previewing","passed":true},{"actual":"unread","check":"previewing / close-preview","expected":"unread","passed":true},{"actual":"read-pending","check":"previewing / mark-read","expected":"read-pending","passed":true},{"actual":"read-confirmed","check":"read-pending / receipt-accepted","expected":"read-confirmed","passed":true},{"actual":"read-error","check":"read-pending / receipt-rejected","expected":"read-error","passed":true},{"actual":"read-pending","check":"read-error / retry-receipt","expected":"read-pending","passed":true},{"actual":"unread-pending","check":"read-confirmed / mark-unread","expected":"unread-pending","passed":true},{"actual":"read-confirmed","check":"unread-pending / unread-accepted","expected":"unread","passed":false},{"actual":"unread-error","check":"unread-pending / unread-rejected","expected":"unread-error","passed":true},{"actual":"read-confirmed","check":"unread-error / dismiss-error","expected":"read-confirmed","passed":true},{"actual":"unread","check":"older notification incarnation","expected":"unread","passed":true},{"actual":"unread","check":"future notification incarnation","expected":"unread","passed":true},{"actual":"unread","check":"unknown event is inert","expected":"unread","passed":true},{"actual":"unread","check":"empty delivery batch","expected":"unread","passed":true},{"actual":"previewing","check":"N stale deliveries before current delivery","expected":"previewing","passed":true},{"actual":"unread","check":"trace open-preview then close-preview","expected":"unread","passed":true},{"actual":"read-pending","check":"trace open-preview then mark-read","expected":"read-pending","passed":true},{"actual":"previewing","check":"trace close-preview then open-preview","expected":"previewing","passed":true},{"actual":"read-confirmed","check":"trace mark-read then receipt-accepted","expected":"read-confirmed","passed":true},{"actual":"read-error","check":"trace mark-read then receipt-rejected","expected":"read-error","passed":true},{"actual":"unread-pending","check":"trace receipt-accepted then mark-unread","expected":"unread-pending","passed":true},{"actual":"read-pending","check":"trace receipt-rejected then retry-receipt","expected":"read-pending","passed":true},{"actual":"read-confirmed","check":"trace retry-receipt then receipt-accepted","expected":"read-confirmed","passed":true},{"actual":"read-error","check":"trace retry-receipt then receipt-rejected","expected":"read-error","passed":true},{"actual":"read-confirmed","check":"trace mark-unread then unread-accepted","expected":"unread","passed":false},{"actual":"unread-error","check":"trace mark-unread then unread-rejected","expected":"unread-error","passed":true},{"actual":"read-confirmed","check":"trace unread-accepted then open-preview","expected":"previewing","passed":false},{"actual":"read-confirmed","check":"trace unread-rejected then dismiss-error","expected":"read-confirmed","passed":true},{"actual":"unread-pending","check":"trace dismiss-error then mark-unread","expected":"unread-pending","passed":true},{"actual":{"phase":"read-pending","value":0},"check":"domain state regression 1: ack_revision","expected":{"phase":"read-pending","value":0},"passed":true},{"actual":{"phase":"read-confirmed","value":2},"check":"domain state regression 2: ack_revision","expected":{"phase":"read-confirmed","value":2},"passed":true},{"actual":{"phase":"read-confirmed","value":["other"]},"check":"domain state regression 3: unread_ids","expected":{"phase":"read-confirmed","value":["other"]},"passed":true},{"actual":{"phase":"read-confirmed","value":["other"]},"check":"domain state regression 4: unread_ids","expected":{"phase":"unread","value":["other","n"]},"passed":false},{"actual":{"phase":"previewing","value":["n","other"]},"check":"domain state regression 5: unread_ids","expected":{"phase":"previewing","value":["n","other"]},"passed":true},{"actual":{"phase":"unread-pending","value":["other"]},"check":"domain state regression 6: unread_ids","expected":{"phase":"unread-pending","value":["other"]},"passed":true},{"actual":{"phase":"read-confirmed","value":["other"]},"check":"domain state regression 7: unread_ids","expected":{"phase":"read-confirmed","value":["other"]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"unread / open-preview\", \"actual\": \"previewing\", \"expected\": \"previewing\", \"passed\": true}, {\"check\": \"previewing / close-preview\", \"actual\": \"unread\", \"expected\": \"unread\", \"passed\": true}, {\"check\": \"previewing / mark-read\", \"actual\": \"read-pending\", \"expected\": \"read-pending\", \"passed\": true}, {\"check\": \"read-pending / receipt-accepted\", \"actual\": \"read-confirmed\", \"expected\": \"read-confirmed\", \"passed\": true}, {\"check\": \"read-pending / receipt-rejected\", \"actual\": \"read-error\", \"expected\": \"read-error\", \"passed\": true}, {\"check\": \"read-error / retry-receipt\", \"actual\": \"read-pending\", \"expected\": \"read-pending\", \"passed\": true}, {\"check\": \"read-confirmed / mark-unread\", \"actual\": \"unread-pending\", \"expected\": \"unread-pending\", \"passed\": true}, {\"check\": \"unread-pending / unread-accepted\", \"actual\": \"read-confirmed\", \"expected\": \"unread\", \"passed\": false}, {\"check\": \"unread-pending / unread-rejected\", \"actual\": \"unread-error\", \"expected\": \"unread-error\", \"passed\": true}, {\"check\": \"unread-error / dismiss-error\", \"actual\": \"read-confirmed\", \"expected\": \"read-confirmed\", \"passed\": true}, {\"check\": \"older notification incarnation\", \"actual\": \"unread\", \"expected\": \"unread\", \"passed\": true}, {\"check\": \"future notification incarnation\", \"actual\": \"unread\", \"expected\": \"unread\", \"passed\": true}, {\"check\": \"unknown event is inert\", \"actual\": \"unread\", \"expected\": \"unread\", \"passed\": true}, {\"check\": \"empty delivery batch\", \"actual\": \"unread\", \"expected\": \"unread\", \"passed\": true}, {\"check\": \"N stale deliveries before current delivery\", \"actual\": \"previewing\", \"expected\": \"previewing\", \"passed\": true}, {\"check\": \"trace open-preview then close-preview\", \"actual\": \"unread\", \"expected\": \"unread\", \"passed\": true}, {\"check\": \"trace open-preview then mark-read\", \"actual\": \"read-pending\", \"expected\": \"read-pending\", \"passed\": true}, {\"check\": \"trace close-preview then open-preview\", \"actual\": \"previewing\", \"expected\": \"previewing\", \"passed\": true}, {\"check\": \"trace mark-read then receipt-accepted\", \"actual\": \"read-confirmed\", \"expected\": \"read-confirmed\", \"passed\": true}, {\"check\": \"trace mark-read then receipt-rejected\", \"actual\": \"read-error\", \"expected\": \"read-error\", \"passed\": true}, {\"check\": \"trace receipt-accepted then mark-unread\", \"actual\": \"unread-pending\", \"expected\": \"unread-pending\", \"passed\": true}, {\"check\": \"trace receipt-rejected then retry-receipt\", \"actual\": \"read-pending\", \"expected\": \"read-pending\", \"passed\": true}, {\"check\": \"trace retry-receipt then receipt-accepted\", \"actual\": \"read-confirmed\", \"expected\": \"read-confirmed\", \"passed\": true}, {\"check\": \"trace retry-receipt then receipt-rejected\", \"actual\": \"read-error\", \"expected\": \"read-error\", \"passed\": true}, {\"check\": \"trace mark-unread then unread-accepted\", \"actual\": \"read-confirmed\", \"expected\": \"unread\", \"passed\": false}, {\"check\": \"trace mark-unread then unread-rejected\", \"actual\": \"unread-error\", \"expected\": \"unread-error\", \"passed\": true}, {\"check\": \"trace unread-accepted then open-preview\", \"actual\": \"read-confirmed\", \"expected\": \"previewing\", \"passed\": false}, {\"check\": \"trace unread-rejected then dismiss-error\", \"actual\": \"read-confirmed\", \"expected\": \"read-confirmed\", \"passed\": true}, {\"check\": \"trace dismiss-error then mark-unread\", \"actual\": \"unread-pending\", \"expected\": \"unread-pending\", \"passed\": true}, {\"check\": \"domain state regression 1: ack_revision\", \"actual\": {\"phase\": \"read-pending\", \"value\": 0}, \"expected\": {\"phase\": \"read-pending\", \"value\": 0}, \"passed\": true}, {\"check\": \"domain state regression 2: ack_revision\", \"actual\": {\"phase\": \"read-confirmed\", \"value\": 2}, \"expected\": {\"phase\": \"read-confirmed\", \"value\": 2}, \"passed\": true}, {\"check\": \"domain state regression 3: unread_ids\", \"actual\": {\"phase\": \"read-confirmed\", \"value\": [\"other\"]}, \"expected\": {\"phase\": \"read-confirmed\", \"value\": [\"other\"]}, \"passed\": true}, {\"check\": \"domain state regression 4: unread_ids\", \"actual\": {\"phase\": \"read-confirmed\", \"value\": [\"other\"]}, \"expected\": {\"phase\": \"unread\", \"value\": [\"other\", \"n\"]}, \"passed\": false}, {\"check\": \"domain state regression 5: unread_ids\", \"actual\": {\"phase\": \"previewing\", \"value\": [\"n\", \"other\"]}, \"expected\": {\"phase\": \"previewing\", \"value\": [\"n\", \"other\"]}, \"passed\": true}, {\"check\": \"domain state regression 6: unread_ids\", \"actual\": {\"phase\": \"unread-pending\", \"value\": [\"other\"]}, \"expected\": {\"phase\": \"unread-pending\", \"value\": [\"other\"]}, \"passed\": true}, {\"check\": \"domain state regression 7: unread_ids\", \"actual\": {\"phase\": \"read-confirmed\", \"value\": [\"other\"]}, \"expected\": {\"phase\": \"read-confirmed\", \"value\": [\"other\"]}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.646,"exit_code":0,"observations":[{"actual":"previewing","check":"unread / open-preview","expected":"previewing","passed":true},{"actual":"unread","check":"previewing / close-preview","expected":"unread","passed":true},{"actual":"read-pending","check":"previewing / mark-read","expected":"read-pending","passed":true},{"actual":"read-confirmed","check":"read-pending / receipt-accepted","expected":"read-confirmed","passed":true},{"actual":"read-error","check":"read-pending / receipt-rejected","expected":"read-error","passed":true},{"actual":"read-pending","check":"read-error / retry-receipt","expected":"read-pending","passed":true},{"actual":"unread-pending","check":"read-confirmed / mark-unread","expected":"unread-pending","passed":true},{"actual":"unread","check":"unread-pending / unread-accepted","expected":"unread","passed":true},{"actual":"unread-error","check":"unread-pending / unread-rejected","expected":"unread-error","passed":true},{"actual":"read-confirmed","check":"unread-error / dismiss-error","expected":"read-confirmed","passed":true},{"actual":"unread","check":"older notification incarnation","expected":"unread","passed":true},{"actual":"unread","check":"future notification incarnation","expected":"unread","passed":true},{"actual":"unread","check":"unknown event is inert","expected":"unread","passed":true},{"actual":"unread","check":"empty delivery batch","expected":"unread","passed":true},{"actual":"previewing","check":"N stale deliveries before current delivery","expected":"previewing","passed":true},{"actual":"unread","check":"trace open-preview then close-preview","expected":"unread","passed":true},{"actual":"read-pending","check":"trace open-preview then mark-read","expected":"read-pending","passed":true},{"actual":"previewing","check":"trace close-preview then open-preview","expected":"previewing","passed":true},{"actual":"read-confirmed","check":"trace mark-read then receipt-accepted","expected":"read-confirmed","passed":true},{"actual":"read-error","check":"trace mark-read then receipt-rejected","expected":"read-error","passed":true},{"actual":"unread-pending","check":"trace receipt-accepted then mark-unread","expected":"unread-pending","passed":true},{"actual":"read-pending","check":"trace receipt-rejected then retry-receipt","expected":"read-pending","passed":true},{"actual":"read-confirmed","check":"trace retry-receipt then receipt-accepted","expected":"read-confirmed","passed":true},{"actual":"read-error","check":"trace retry-receipt then receipt-rejected","expected":"read-error","passed":true},{"actual":"unread","check":"trace mark-unread then unread-accepted","expected":"unread","passed":true},{"actual":"unread-error","check":"trace mark-unread then unread-rejected","expected":"unread-error","passed":true},{"actual":"previewing","check":"trace unread-accepted then open-preview","expected":"previewing","passed":true},{"actual":"read-confirmed","check":"trace unread-rejected then dismiss-error","expected":"read-confirmed","passed":true},{"actual":"unread-pending","check":"trace dismiss-error then mark-unread","expected":"unread-pending","passed":true},{"actual":{"phase":"read-pending","value":0},"check":"domain state regression 1: ack_revision","expected":{"phase":"read-pending","value":0},"passed":true},{"actual":{"phase":"read-confirmed","value":2},"check":"domain state regression 2: ack_revision","expected":{"phase":"read-confirmed","value":2},"passed":true},{"actual":{"phase":"read-confirmed","value":["other"]},"check":"domain state regression 3: unread_ids","expected":{"phase":"read-confirmed","value":["other"]},"passed":true},{"actual":{"phase":"unread","value":["other","n"]},"check":"domain state regression 4: unread_ids","expected":{"phase":"unread","value":["other","n"]},"passed":true},{"actual":{"phase":"previewing","value":["n","other"]},"check":"domain state regression 5: unread_ids","expected":{"phase":"previewing","value":["n","other"]},"passed":true},{"actual":{"phase":"unread-pending","value":["other"]},"check":"domain state regression 6: unread_ids","expected":{"phase":"unread-pending","value":["other"]},"passed":true},{"actual":{"phase":"read-confirmed","value":["other"]},"check":"domain state regression 7: unread_ids","expected":{"phase":"read-confirmed","value":["other"]},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"unread / open-preview\", \"actual\": \"previewing\", \"expected\": \"previewing\", \"passed\": true}, {\"check\": \"previewing / close-preview\", \"actual\": \"unread\", \"expected\": \"unread\", \"passed\": true}, {\"check\": \"previewing / mark-read\", \"actual\": \"read-pending\", \"expected\": \"read-pending\", \"passed\": true}, {\"check\": \"read-pending / receipt-accepted\", \"actual\": \"read-confirmed\", \"expected\": \"read-confirmed\", \"passed\": true}, {\"check\": \"read-pending / receipt-rejected\", \"actual\": \"read-error\", \"expected\": \"read-error\", \"passed\": true}, {\"check\": \"read-error / retry-receipt\", \"actual\": \"read-pending\", \"expected\": \"read-pending\", \"passed\": true}, {\"check\": \"read-confirmed / mark-unread\", \"actual\": \"unread-pending\", \"expected\": \"unread-pending\", \"passed\": true}, {\"check\": \"unread-pending / unread-accepted\", \"actual\": \"unread\", \"expected\": \"unread\", \"passed\": true}, {\"check\": \"unread-pending / unread-rejected\", \"actual\": \"unread-error\", \"expected\": \"unread-error\", \"passed\": true}, {\"check\": \"unread-error / dismiss-error\", \"actual\": \"read-confirmed\", \"expected\": \"read-confirmed\", \"passed\": true}, {\"check\": \"older notification incarnation\", \"actual\": \"unread\", \"expected\": \"unread\", \"passed\": true}, {\"check\": \"future notification incarnation\", \"actual\": \"unread\", \"expected\": \"unread\", \"passed\": true}, {\"check\": \"unknown event is inert\", \"actual\": \"unread\", \"expected\": \"unread\", \"passed\": true}, {\"check\": \"empty delivery batch\", \"actual\": \"unread\", \"expected\": \"unread\", \"passed\": true}, {\"check\": \"N stale deliveries before current delivery\", \"actual\": \"previewing\", \"expected\": \"previewing\", \"passed\": true}, {\"check\": \"trace open-preview then close-preview\", \"actual\": \"unread\", \"expected\": \"unread\", \"passed\": true}, {\"check\": \"trace open-preview then mark-read\", \"actual\": \"read-pending\", \"expected\": \"read-pending\", \"passed\": true}, {\"check\": \"trace close-preview then open-preview\", \"actual\": \"previewing\", \"expected\": \"previewing\", \"passed\": true}, {\"check\": \"trace mark-read then receipt-accepted\", \"actual\": \"read-confirmed\", \"expected\": \"read-confirmed\", \"passed\": true}, {\"check\": \"trace mark-read then receipt-rejected\", \"actual\": \"read-error\", \"expected\": \"read-error\", \"passed\": true}, {\"check\": \"trace receipt-accepted then mark-unread\", \"actual\": \"unread-pending\", \"expected\": \"unread-pending\", \"passed\": true}, {\"check\": \"trace receipt-rejected then retry-receipt\", \"actual\": \"read-pending\", \"expected\": \"read-pending\", \"passed\": true}, {\"check\": \"trace retry-receipt then receipt-accepted\", \"actual\": \"read-confirmed\", \"expected\": \"read-confirmed\", \"passed\": true}, {\"check\": \"trace retry-receipt then receipt-rejected\", \"actual\": \"read-error\", \"expected\": \"read-error\", \"passed\": true}, {\"check\": \"trace mark-unread then unread-accepted\", \"actual\": \"unread\", \"expected\": \"unread\", \"passed\": true}, {\"check\": \"trace mark-unread then unread-rejected\", \"actual\": \"unread-error\", \"expected\": \"unread-error\", \"passed\": true}, {\"check\": \"trace unread-accepted then open-preview\", \"actual\": \"previewing\", \"expected\": \"previewing\", \"passed\": true}, {\"check\": \"trace unread-rejected then dismiss-error\", \"actual\": \"read-confirmed\", \"expected\": \"read-confirmed\", \"passed\": true}, {\"check\": \"trace dismiss-error then mark-unread\", \"actual\": \"unread-pending\", \"expected\": \"unread-pending\", \"passed\": true}, {\"check\": \"domain state regression 1: ack_revision\", \"actual\": {\"phase\": \"read-pending\", \"value\": 0}, \"expected\": {\"phase\": \"read-pending\", \"value\": 0}, \"passed\": true}, {\"check\": \"domain state regression 2: ack_revision\", \"actual\": {\"phase\": \"read-confirmed\", \"value\": 2}, \"expected\": {\"phase\": \"read-confirmed\", \"value\": 2}, \"passed\": true}, {\"check\": \"domain state regression 3: unread_ids\", \"actual\": {\"phase\": \"read-confirmed\", \"value\": [\"other\"]}, \"expected\": {\"phase\": \"read-confirmed\", \"value\": [\"other\"]}, \"passed\": true}, {\"check\": \"domain state regression 4: unread_ids\", \"actual\": {\"phase\": \"unread\", \"value\": [\"other\", \"n\"]}, \"expected\": {\"phase\": \"unread\", \"value\": [\"other\", \"n\"]}, \"passed\": true}, {\"check\": \"domain state regression 5: unread_ids\", \"actual\": {\"phase\": \"previewing\", \"value\": [\"n\", \"other\"]}, \"expected\": {\"phase\": \"previewing\", \"value\": [\"n\", \"other\"]}, \"passed\": true}, {\"check\": \"domain state regression 6: unread_ids\", \"actual\": {\"phase\": \"unread-pending\", \"value\": [\"other\"]}, \"expected\": {\"phase\": \"unread-pending\", \"value\": [\"other\"]}, \"passed\": true}, {\"check\": \"domain state regression 7: unread_ids\", \"actual\": {\"phase\": \"read-confirmed\", \"value\": [\"other\"]}, \"expected\": {\"phase\": \"read-confirmed\", \"value\": [\"other\"]}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}