{"abstract":"The decode-success event leaves a notification in thumbnail instead of open.","category":"Notification interfaces","checks":36,"contract":"Notification attachment preview is a bounded visual-notification workflow with mutable policy state {'attachment': 'photo', 'bytes': 0, 'decoded': False, 'download': []}. Its default transition relation is {('thumbnail', 'preview-click'): 'fetching', ('fetching', 'content-ready'): 'decoding', ('decoding', 'decode-success'): 'open', ('decoding', 'decode-failure'): 'decode-error', ('fetching', 'fetch-failure'): 'fetch-error', ('fetch-error', 'retry-fetch'): 'fetching', ('open', 'close-preview'): 'thumbnail', ('fetching', 'close-preview'): 'canceled', ('canceled', 'late-content-ready'): 'thumbnail', ('decode-error', 'download-original'): 'download-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-attachment","failed_approach":"Refetching after decode success creates a preview loop.","family":"s3-notification-interfaces-attachment-03","id":"FA-34351","implementations":{"attempt":{"sha256":"b5bfa801e20e47dd7e1d58a1f475cd08076b52f271b1c34240db8acf484d5579","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 = {('thumbnail', 'preview-click'): 'fetching', ('fetching', 'content-ready'): 'decoding', ('decoding', 'decode-success'): 'fetching', ('decoding', 'decode-failure'): 'decode-error', ('fetching', 'fetch-failure'): 'fetch-error', ('fetch-error', 'retry-fetch'): 'fetching', ('open', 'close-preview'): 'thumbnail', ('fetching', 'close-preview'): 'canceled', ('canceled', 'late-content-ready'): 'thumbnail', ('decode-error', 'download-original'): 'download-pending'}\n    data = json.loads(json.dumps({'attachment': 'photo', 'bytes': 0, 'decoded': False, 'download': []})) if payload is None else {**json.loads(json.dumps({'attachment': 'photo', 'bytes': 0, 'decoded': False, 'download': []})), **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 ('content-ready','decode-success','decode-failure') and arg.get('attachment',data['attachment']) != data['attachment']: event = 'unknown-event'\n            if event == 'content-ready': data['bytes'] = arg.get('bytes',12)\n            if event == 'decode-success' and data['bytes'] == 0 and arg.get('require_bytes',False): event = 'decode-failure'\n            state = table.get((state, event), state)\n            if state == 'open': data['decoded'] = True\n            if state in ('thumbnail','canceled'): data['decoded'] = False\n            if state == 'download-pending': data['download'].append(data['attachment'])\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('thumbnail / preview-click', solve('thumbnail', [('preview-click', N)], N), 'fetching')\ncheck('fetching / content-ready', solve('fetching', [('content-ready', N)], N), 'decoding')\ncheck('decoding / decode-success', solve('decoding', [('decode-success', N)], N), 'open')\ncheck('decoding / decode-failure', solve('decoding', [('decode-failure', N)], N), 'decode-error')\ncheck('fetching / fetch-failure', solve('fetching', [('fetch-failure', N)], N), 'fetch-error')\ncheck('fetch-error / retry-fetch', solve('fetch-error', [('retry-fetch', N)], N), 'fetching')\ncheck('open / close-preview', solve('open', [('close-preview', N)], N), 'thumbnail')\ncheck('fetching / close-preview', solve('fetching', [('close-preview', N)], N), 'canceled')\ncheck('canceled / late-content-ready', solve('canceled', [('late-content-ready', N)], N), 'thumbnail')\ncheck('decode-error / download-original', solve('decode-error', [('download-original', N)], N), 'download-pending')\ncheck('older notification incarnation', solve('thumbnail', [('preview-click', N - 1)], N), 'thumbnail')\ncheck('future notification incarnation', solve('thumbnail', [('preview-click', N + 1)], N), 'thumbnail')\ncheck('unknown event is inert', solve('thumbnail', [('unknown-event', N)], N), 'thumbnail')\ncheck('empty delivery batch', solve('thumbnail', [], N), 'thumbnail')\ncheck('N stale deliveries before current delivery', solve('thumbnail', [('preview-click', N - 1)] * N + [('preview-click', N)], N), 'fetching')\ncheck('trace preview-click then content-ready', solve('thumbnail', [('preview-click', N), ('content-ready', N)], N), 'decoding')\ncheck('trace preview-click then fetch-failure', solve('thumbnail', [('preview-click', N), ('fetch-failure', N)], N), 'fetch-error')\ncheck('trace preview-click then close-preview', solve('thumbnail', [('preview-click', N), ('close-preview', N)], N), 'canceled')\ncheck('trace content-ready then decode-success', solve('fetching', [('content-ready', N), ('decode-success', N)], N), 'open')\ncheck('trace content-ready then decode-failure', solve('fetching', [('content-ready', N), ('decode-failure', N)], N), 'decode-error')\ncheck('trace decode-success then close-preview', solve('decoding', [('decode-success', N), ('close-preview', N)], N), 'thumbnail')\ncheck('trace decode-failure then download-original', solve('decoding', [('decode-failure', N), ('download-original', N)], N), 'download-pending')\ncheck('trace fetch-failure then retry-fetch', solve('fetching', [('fetch-failure', N), ('retry-fetch', N)], N), 'fetching')\ncheck('trace retry-fetch then content-ready', solve('fetch-error', [('retry-fetch', N), ('content-ready', N)], N), 'decoding')\ncheck('trace retry-fetch then fetch-failure', solve('fetch-error', [('retry-fetch', N), ('fetch-failure', N)], N), 'fetch-error')\ncheck('trace retry-fetch then close-preview', solve('fetch-error', [('retry-fetch', N), ('close-preview', N)], N), 'canceled')\ncheck('trace close-preview then preview-click', solve('open', [('close-preview', N), ('preview-click', N)], N), 'fetching')\ncheck('trace close-preview then late-content-ready', solve('fetching', [('close-preview', N), ('late-content-ready', N)], N), 'thumbnail')\ncheck('trace late-content-ready then preview-click', solve('canceled', [('late-content-ready', N), ('preview-click', N)], N), 'fetching')\ncheck('domain state regression 1: bytes', solve('fetching', [('content-ready', N, {'attachment': 'old', 'bytes': 7})], N, {}, 'bytes'), {'phase': 'fetching', 'value': 0})\ncheck('domain state regression 2: bytes', solve('fetching', [('content-ready', N, {'bytes': 7})], N, {}, 'bytes'), {'phase': 'decoding', 'value': 7})\ncheck('domain state regression 3: decoded', solve('decoding', [('decode-success', N, {'require_bytes': True})], N, {}, 'decoded'), {'phase': 'decode-error', 'value': False})\ncheck('domain state regression 4: decoded', solve('decoding', [('decode-success', N, {'require_bytes': True})], N, {'bytes': 7}, 'decoded'), {'phase': 'open', 'value': True})\ncheck('domain state regression 5: download', solve('decode-error', [('download-original', N, {})], N, {}, 'download'), {'phase': 'download-pending', 'value': ['photo']})\ncheck('domain state regression 6: decoded', solve('open', [('close-preview', N, {})], N, {'decoded': True}, 'decoded'), {'phase': 'thumbnail', 'value': False})\ncheck('domain state regression 7: decoded', solve('thumbnail', [('preview-click', N, {}), ('content-ready', N, {'bytes': 8}), ('decode-success', N, {'require_bytes': True}), ('close-preview', N, {})], N, {}, 'decoded'), {'phase': 'thumbnail', 'value': False})\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"9aacf6a5afae1c320649c2d309bfc1a160d832df9fd6bf25ec2acd323cdfaad8","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 = {('thumbnail', 'preview-click'): 'fetching', ('fetching', 'content-ready'): 'decoding', ('decoding', 'decode-success'): 'thumbnail', ('decoding', 'decode-failure'): 'decode-error', ('fetching', 'fetch-failure'): 'fetch-error', ('fetch-error', 'retry-fetch'): 'fetching', ('open', 'close-preview'): 'thumbnail', ('fetching', 'close-preview'): 'canceled', ('canceled', 'late-content-ready'): 'thumbnail', ('decode-error', 'download-original'): 'download-pending'}\n    data = json.loads(json.dumps({'attachment': 'photo', 'bytes': 0, 'decoded': False, 'download': []})) if payload is None else {**json.loads(json.dumps({'attachment': 'photo', 'bytes': 0, 'decoded': False, 'download': []})), **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 ('content-ready','decode-success','decode-failure') and arg.get('attachment',data['attachment']) != data['attachment']: event = 'unknown-event'\n            if event == 'content-ready': data['bytes'] = arg.get('bytes',12)\n            if event == 'decode-success' and data['bytes'] == 0 and arg.get('require_bytes',False): event = 'decode-failure'\n            state = table.get((state, event), state)\n            if state == 'open': data['decoded'] = True\n            if state in ('thumbnail','canceled'): data['decoded'] = False\n            if state == 'download-pending': data['download'].append(data['attachment'])\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('thumbnail / preview-click', solve('thumbnail', [('preview-click', N)], N), 'fetching')\ncheck('fetching / content-ready', solve('fetching', [('content-ready', N)], N), 'decoding')\ncheck('decoding / decode-success', solve('decoding', [('decode-success', N)], N), 'open')\ncheck('decoding / decode-failure', solve('decoding', [('decode-failure', N)], N), 'decode-error')\ncheck('fetching / fetch-failure', solve('fetching', [('fetch-failure', N)], N), 'fetch-error')\ncheck('fetch-error / retry-fetch', solve('fetch-error', [('retry-fetch', N)], N), 'fetching')\ncheck('open / close-preview', solve('open', [('close-preview', N)], N), 'thumbnail')\ncheck('fetching / close-preview', solve('fetching', [('close-preview', N)], N), 'canceled')\ncheck('canceled / late-content-ready', solve('canceled', [('late-content-ready', N)], N), 'thumbnail')\ncheck('decode-error / download-original', solve('decode-error', [('download-original', N)], N), 'download-pending')\ncheck('older notification incarnation', solve('thumbnail', [('preview-click', N - 1)], N), 'thumbnail')\ncheck('future notification incarnation', solve('thumbnail', [('preview-click', N + 1)], N), 'thumbnail')\ncheck('unknown event is inert', solve('thumbnail', [('unknown-event', N)], N), 'thumbnail')\ncheck('empty delivery batch', solve('thumbnail', [], N), 'thumbnail')\ncheck('N stale deliveries before current delivery', solve('thumbnail', [('preview-click', N - 1)] * N + [('preview-click', N)], N), 'fetching')\ncheck('trace preview-click then content-ready', solve('thumbnail', [('preview-click', N), ('content-ready', N)], N), 'decoding')\ncheck('trace preview-click then fetch-failure', solve('thumbnail', [('preview-click', N), ('fetch-failure', N)], N), 'fetch-error')\ncheck('trace preview-click then close-preview', solve('thumbnail', [('preview-click', N), ('close-preview', N)], N), 'canceled')\ncheck('trace content-ready then decode-success', solve('fetching', [('content-ready', N), ('decode-success', N)], N), 'open')\ncheck('trace content-ready then decode-failure', solve('fetching', [('content-ready', N), ('decode-failure', N)], N), 'decode-error')\ncheck('trace decode-success then close-preview', solve('decoding', [('decode-success', N), ('close-preview', N)], N), 'thumbnail')\ncheck('trace decode-failure then download-original', solve('decoding', [('decode-failure', N), ('download-original', N)], N), 'download-pending')\ncheck('trace fetch-failure then retry-fetch', solve('fetching', [('fetch-failure', N), ('retry-fetch', N)], N), 'fetching')\ncheck('trace retry-fetch then content-ready', solve('fetch-error', [('retry-fetch', N), ('content-ready', N)], N), 'decoding')\ncheck('trace retry-fetch then fetch-failure', solve('fetch-error', [('retry-fetch', N), ('fetch-failure', N)], N), 'fetch-error')\ncheck('trace retry-fetch then close-preview', solve('fetch-error', [('retry-fetch', N), ('close-preview', N)], N), 'canceled')\ncheck('trace close-preview then preview-click', solve('open', [('close-preview', N), ('preview-click', N)], N), 'fetching')\ncheck('trace close-preview then late-content-ready', solve('fetching', [('close-preview', N), ('late-content-ready', N)], N), 'thumbnail')\ncheck('trace late-content-ready then preview-click', solve('canceled', [('late-content-ready', N), ('preview-click', N)], N), 'fetching')\ncheck('domain state regression 1: bytes', solve('fetching', [('content-ready', N, {'attachment': 'old', 'bytes': 7})], N, {}, 'bytes'), {'phase': 'fetching', 'value': 0})\ncheck('domain state regression 2: bytes', solve('fetching', [('content-ready', N, {'bytes': 7})], N, {}, 'bytes'), {'phase': 'decoding', 'value': 7})\ncheck('domain state regression 3: decoded', solve('decoding', [('decode-success', N, {'require_bytes': True})], N, {}, 'decoded'), {'phase': 'decode-error', 'value': False})\ncheck('domain state regression 4: decoded', solve('decoding', [('decode-success', N, {'require_bytes': True})], N, {'bytes': 7}, 'decoded'), {'phase': 'open', 'value': True})\ncheck('domain state regression 5: download', solve('decode-error', [('download-original', N, {})], N, {}, 'download'), {'phase': 'download-pending', 'value': ['photo']})\ncheck('domain state regression 6: decoded', solve('open', [('close-preview', N, {})], N, {'decoded': True}, 'decoded'), {'phase': 'thumbnail', 'value': False})\ncheck('domain state regression 7: decoded', solve('thumbnail', [('preview-click', N, {}), ('content-ready', N, {'bytes': 8}), ('decode-success', N, {'require_bytes': True}), ('close-preview', N, {})], N, {}, 'decoded'), {'phase': 'thumbnail', 'value': False})\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"2dc65b84b9614a6e7ea47829d51e1e950a86d4d2cf3a78c6838b0215730e8901","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 = {('thumbnail', 'preview-click'): 'fetching', ('fetching', 'content-ready'): 'decoding', ('decoding', 'decode-success'): 'open', ('decoding', 'decode-failure'): 'decode-error', ('fetching', 'fetch-failure'): 'fetch-error', ('fetch-error', 'retry-fetch'): 'fetching', ('open', 'close-preview'): 'thumbnail', ('fetching', 'close-preview'): 'canceled', ('canceled', 'late-content-ready'): 'thumbnail', ('decode-error', 'download-original'): 'download-pending'}\n    data = json.loads(json.dumps({'attachment': 'photo', 'bytes': 0, 'decoded': False, 'download': []})) if payload is None else {**json.loads(json.dumps({'attachment': 'photo', 'bytes': 0, 'decoded': False, 'download': []})), **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 ('content-ready','decode-success','decode-failure') and arg.get('attachment',data['attachment']) != data['attachment']: event = 'unknown-event'\n            if event == 'content-ready': data['bytes'] = arg.get('bytes',12)\n            if event == 'decode-success' and data['bytes'] == 0 and arg.get('require_bytes',False): event = 'decode-failure'\n            state = table.get((state, event), state)\n            if state == 'open': data['decoded'] = True\n            if state in ('thumbnail','canceled'): data['decoded'] = False\n            if state == 'download-pending': data['download'].append(data['attachment'])\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('thumbnail / preview-click', solve('thumbnail', [('preview-click', N)], N), 'fetching')\ncheck('fetching / content-ready', solve('fetching', [('content-ready', N)], N), 'decoding')\ncheck('decoding / decode-success', solve('decoding', [('decode-success', N)], N), 'open')\ncheck('decoding / decode-failure', solve('decoding', [('decode-failure', N)], N), 'decode-error')\ncheck('fetching / fetch-failure', solve('fetching', [('fetch-failure', N)], N), 'fetch-error')\ncheck('fetch-error / retry-fetch', solve('fetch-error', [('retry-fetch', N)], N), 'fetching')\ncheck('open / close-preview', solve('open', [('close-preview', N)], N), 'thumbnail')\ncheck('fetching / close-preview', solve('fetching', [('close-preview', N)], N), 'canceled')\ncheck('canceled / late-content-ready', solve('canceled', [('late-content-ready', N)], N), 'thumbnail')\ncheck('decode-error / download-original', solve('decode-error', [('download-original', N)], N), 'download-pending')\ncheck('older notification incarnation', solve('thumbnail', [('preview-click', N - 1)], N), 'thumbnail')\ncheck('future notification incarnation', solve('thumbnail', [('preview-click', N + 1)], N), 'thumbnail')\ncheck('unknown event is inert', solve('thumbnail', [('unknown-event', N)], N), 'thumbnail')\ncheck('empty delivery batch', solve('thumbnail', [], N), 'thumbnail')\ncheck('N stale deliveries before current delivery', solve('thumbnail', [('preview-click', N - 1)] * N + [('preview-click', N)], N), 'fetching')\ncheck('trace preview-click then content-ready', solve('thumbnail', [('preview-click', N), ('content-ready', N)], N), 'decoding')\ncheck('trace preview-click then fetch-failure', solve('thumbnail', [('preview-click', N), ('fetch-failure', N)], N), 'fetch-error')\ncheck('trace preview-click then close-preview', solve('thumbnail', [('preview-click', N), ('close-preview', N)], N), 'canceled')\ncheck('trace content-ready then decode-success', solve('fetching', [('content-ready', N), ('decode-success', N)], N), 'open')\ncheck('trace content-ready then decode-failure', solve('fetching', [('content-ready', N), ('decode-failure', N)], N), 'decode-error')\ncheck('trace decode-success then close-preview', solve('decoding', [('decode-success', N), ('close-preview', N)], N), 'thumbnail')\ncheck('trace decode-failure then download-original', solve('decoding', [('decode-failure', N), ('download-original', N)], N), 'download-pending')\ncheck('trace fetch-failure then retry-fetch', solve('fetching', [('fetch-failure', N), ('retry-fetch', N)], N), 'fetching')\ncheck('trace retry-fetch then content-ready', solve('fetch-error', [('retry-fetch', N), ('content-ready', N)], N), 'decoding')\ncheck('trace retry-fetch then fetch-failure', solve('fetch-error', [('retry-fetch', N), ('fetch-failure', N)], N), 'fetch-error')\ncheck('trace retry-fetch then close-preview', solve('fetch-error', [('retry-fetch', N), ('close-preview', N)], N), 'canceled')\ncheck('trace close-preview then preview-click', solve('open', [('close-preview', N), ('preview-click', N)], N), 'fetching')\ncheck('trace close-preview then late-content-ready', solve('fetching', [('close-preview', N), ('late-content-ready', N)], N), 'thumbnail')\ncheck('trace late-content-ready then preview-click', solve('canceled', [('late-content-ready', N), ('preview-click', N)], N), 'fetching')\ncheck('domain state regression 1: bytes', solve('fetching', [('content-ready', N, {'attachment': 'old', 'bytes': 7})], N, {}, 'bytes'), {'phase': 'fetching', 'value': 0})\ncheck('domain state regression 2: bytes', solve('fetching', [('content-ready', N, {'bytes': 7})], N, {}, 'bytes'), {'phase': 'decoding', 'value': 7})\ncheck('domain state regression 3: decoded', solve('decoding', [('decode-success', N, {'require_bytes': True})], N, {}, 'decoded'), {'phase': 'decode-error', 'value': False})\ncheck('domain state regression 4: decoded', solve('decoding', [('decode-success', N, {'require_bytes': True})], N, {'bytes': 7}, 'decoded'), {'phase': 'open', 'value': True})\ncheck('domain state regression 5: download', solve('decode-error', [('download-original', N, {})], N, {}, 'download'), {'phase': 'download-pending', 'value': ['photo']})\ncheck('domain state regression 6: decoded', solve('open', [('close-preview', N, {})], N, {'decoded': True}, 'decoded'), {'phase': 'thumbnail', 'value': False})\ncheck('domain state regression 7: decoded', solve('thumbnail', [('preview-click', N, {}), ('content-ready', N, {'bytes': 8}), ('decode-success', N, {'require_bytes': True}), ('close-preview', N, {})], N, {}, 'decoded'), {'phase': 'thumbnail', 'value': False})\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"Stipulated single-notification state and policy model only. Event delivery and acknowledgements are explicit test inputs. No DOM, accessibility announcements, live timers, networking, actual rendering, or production-platform conformance is simulated. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"s3-notification-interfaces-attachment-03","generated_at":"2026-09-29T14:42:31.040333+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 decoding / decode-success transition to open; preserve the other explicitly stipulated transitions.","root_cause":"Decoded content never reaches the visible preview.","sha256":"b5321148d82278de7d6bd0f6b053dc35b23520d6b21d093a6d49d1ffacad3032","title":"Notification attachment preview: decode-success from decoding · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.398,"exit_code":1,"observations":[{"actual":"fetching","check":"thumbnail / preview-click","expected":"fetching","passed":true},{"actual":"decoding","check":"fetching / content-ready","expected":"decoding","passed":true},{"actual":"fetching","check":"decoding / decode-success","expected":"open","passed":false},{"actual":"decode-error","check":"decoding / decode-failure","expected":"decode-error","passed":true},{"actual":"fetch-error","check":"fetching / fetch-failure","expected":"fetch-error","passed":true},{"actual":"fetching","check":"fetch-error / retry-fetch","expected":"fetching","passed":true},{"actual":"thumbnail","check":"open / close-preview","expected":"thumbnail","passed":true},{"actual":"canceled","check":"fetching / close-preview","expected":"canceled","passed":true},{"actual":"thumbnail","check":"canceled / late-content-ready","expected":"thumbnail","passed":true},{"actual":"download-pending","check":"decode-error / download-original","expected":"download-pending","passed":true},{"actual":"thumbnail","check":"older notification incarnation","expected":"thumbnail","passed":true},{"actual":"thumbnail","check":"future notification incarnation","expected":"thumbnail","passed":true},{"actual":"thumbnail","check":"unknown event is inert","expected":"thumbnail","passed":true},{"actual":"thumbnail","check":"empty delivery batch","expected":"thumbnail","passed":true},{"actual":"fetching","check":"N stale deliveries before current delivery","expected":"fetching","passed":true},{"actual":"decoding","check":"trace preview-click then content-ready","expected":"decoding","passed":true},{"actual":"fetch-error","check":"trace preview-click then fetch-failure","expected":"fetch-error","passed":true},{"actual":"canceled","check":"trace preview-click then close-preview","expected":"canceled","passed":true},{"actual":"fetching","check":"trace content-ready then decode-success","expected":"open","passed":false},{"actual":"decode-error","check":"trace content-ready then decode-failure","expected":"decode-error","passed":true},{"actual":"canceled","check":"trace decode-success then close-preview","expected":"thumbnail","passed":false},{"actual":"download-pending","check":"trace decode-failure then download-original","expected":"download-pending","passed":true},{"actual":"fetching","check":"trace fetch-failure then retry-fetch","expected":"fetching","passed":true},{"actual":"decoding","check":"trace retry-fetch then content-ready","expected":"decoding","passed":true},{"actual":"fetch-error","check":"trace retry-fetch then fetch-failure","expected":"fetch-error","passed":true},{"actual":"canceled","check":"trace retry-fetch then close-preview","expected":"canceled","passed":true},{"actual":"fetching","check":"trace close-preview then preview-click","expected":"fetching","passed":true},{"actual":"thumbnail","check":"trace close-preview then late-content-ready","expected":"thumbnail","passed":true},{"actual":"fetching","check":"trace late-content-ready then preview-click","expected":"fetching","passed":true},{"actual":{"phase":"fetching","value":0},"check":"domain state regression 1: bytes","expected":{"phase":"fetching","value":0},"passed":true},{"actual":{"phase":"decoding","value":7},"check":"domain state regression 2: bytes","expected":{"phase":"decoding","value":7},"passed":true},{"actual":{"phase":"decode-error","value":false},"check":"domain state regression 3: decoded","expected":{"phase":"decode-error","value":false},"passed":true},{"actual":{"phase":"fetching","value":false},"check":"domain state regression 4: decoded","expected":{"phase":"open","value":true},"passed":false},{"actual":{"phase":"download-pending","value":["photo"]},"check":"domain state regression 5: download","expected":{"phase":"download-pending","value":["photo"]},"passed":true},{"actual":{"phase":"thumbnail","value":false},"check":"domain state regression 6: decoded","expected":{"phase":"thumbnail","value":false},"passed":true},{"actual":{"phase":"canceled","value":false},"check":"domain state regression 7: decoded","expected":{"phase":"thumbnail","value":false},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"thumbnail / preview-click\", \"actual\": \"fetching\", \"expected\": \"fetching\", \"passed\": true}, {\"check\": \"fetching / content-ready\", \"actual\": \"decoding\", \"expected\": \"decoding\", \"passed\": true}, {\"check\": \"decoding / decode-success\", \"actual\": \"fetching\", \"expected\": \"open\", \"passed\": false}, {\"check\": \"decoding / decode-failure\", \"actual\": \"decode-error\", \"expected\": \"decode-error\", \"passed\": true}, {\"check\": \"fetching / fetch-failure\", \"actual\": \"fetch-error\", \"expected\": \"fetch-error\", \"passed\": true}, {\"check\": \"fetch-error / retry-fetch\", \"actual\": \"fetching\", \"expected\": \"fetching\", \"passed\": true}, {\"check\": \"open / close-preview\", \"actual\": \"thumbnail\", \"expected\": \"thumbnail\", \"passed\": true}, {\"check\": \"fetching / close-preview\", \"actual\": \"canceled\", \"expected\": \"canceled\", \"passed\": true}, {\"check\": \"canceled / late-content-ready\", \"actual\": \"thumbnail\", \"expected\": \"thumbnail\", \"passed\": true}, {\"check\": \"decode-error / download-original\", \"actual\": \"download-pending\", \"expected\": \"download-pending\", \"passed\": true}, {\"check\": \"older notification incarnation\", \"actual\": \"thumbnail\", \"expected\": \"thumbnail\", \"passed\": true}, {\"check\": \"future notification incarnation\", \"actual\": \"thumbnail\", \"expected\": \"thumbnail\", \"passed\": true}, {\"check\": \"unknown event is inert\", \"actual\": \"thumbnail\", \"expected\": \"thumbnail\", \"passed\": true}, {\"check\": \"empty delivery batch\", \"actual\": \"thumbnail\", \"expected\": \"thumbnail\", \"passed\": true}, {\"check\": \"N stale deliveries before current delivery\", \"actual\": \"fetching\", \"expected\": \"fetching\", \"passed\": true}, {\"check\": \"trace preview-click then content-ready\", \"actual\": \"decoding\", \"expected\": \"decoding\", \"passed\": true}, {\"check\": \"trace preview-click then fetch-failure\", \"actual\": \"fetch-error\", \"expected\": \"fetch-error\", \"passed\": true}, {\"check\": \"trace preview-click then close-preview\", \"actual\": \"canceled\", \"expected\": \"canceled\", \"passed\": true}, {\"check\": \"trace content-ready then decode-success\", \"actual\": \"fetching\", \"expected\": \"open\", \"passed\": false}, {\"check\": \"trace content-ready then decode-failure\", \"actual\": \"decode-error\", \"expected\": \"decode-error\", \"passed\": true}, {\"check\": \"trace decode-success then close-preview\", \"actual\": \"canceled\", \"expected\": \"thumbnail\", \"passed\": false}, {\"check\": \"trace decode-failure then download-original\", \"actual\": \"download-pending\", \"expected\": \"download-pending\", \"passed\": true}, {\"check\": \"trace fetch-failure then retry-fetch\", \"actual\": \"fetching\", \"expected\": \"fetching\", \"passed\": true}, {\"check\": \"trace retry-fetch then content-ready\", \"actual\": \"decoding\", \"expected\": \"decoding\", \"passed\": true}, {\"check\": \"trace retry-fetch then fetch-failure\", \"actual\": \"fetch-error\", \"expected\": \"fetch-error\", \"passed\": true}, {\"check\": \"trace retry-fetch then close-preview\", \"actual\": \"canceled\", \"expected\": \"canceled\", \"passed\": true}, {\"check\": \"trace close-preview then preview-click\", \"actual\": \"fetching\", \"expected\": \"fetching\", \"passed\": true}, {\"check\": \"trace close-preview then late-content-ready\", \"actual\": \"thumbnail\", \"expected\": \"thumbnail\", \"passed\": true}, {\"check\": \"trace late-content-ready then preview-click\", \"actual\": \"fetching\", \"expected\": \"fetching\", \"passed\": true}, {\"check\": \"domain state regression 1: bytes\", \"actual\": {\"phase\": \"fetching\", \"value\": 0}, \"expected\": {\"phase\": \"fetching\", \"value\": 0}, \"passed\": true}, {\"check\": \"domain state regression 2: bytes\", \"actual\": {\"phase\": \"decoding\", \"value\": 7}, \"expected\": {\"phase\": \"decoding\", \"value\": 7}, \"passed\": true}, {\"check\": \"domain state regression 3: decoded\", \"actual\": {\"phase\": \"decode-error\", \"value\": false}, \"expected\": {\"phase\": \"decode-error\", \"value\": false}, \"passed\": true}, {\"check\": \"domain state regression 4: decoded\", \"actual\": {\"phase\": \"fetching\", \"value\": false}, \"expected\": {\"phase\": \"open\", \"value\": true}, \"passed\": false}, {\"check\": \"domain state regression 5: download\", \"actual\": {\"phase\": \"download-pending\", \"value\": [\"photo\"]}, \"expected\": {\"phase\": \"download-pending\", \"value\": [\"photo\"]}, \"passed\": true}, {\"check\": \"domain state regression 6: decoded\", \"actual\": {\"phase\": \"thumbnail\", \"value\": false}, \"expected\": {\"phase\": \"thumbnail\", \"value\": false}, \"passed\": true}, {\"check\": \"domain state regression 7: decoded\", \"actual\": {\"phase\": \"canceled\", \"value\": false}, \"expected\": {\"phase\": \"thumbnail\", \"value\": false}, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":44.573,"exit_code":1,"observations":[{"actual":"fetching","check":"thumbnail / preview-click","expected":"fetching","passed":true},{"actual":"decoding","check":"fetching / content-ready","expected":"decoding","passed":true},{"actual":"thumbnail","check":"decoding / decode-success","expected":"open","passed":false},{"actual":"decode-error","check":"decoding / decode-failure","expected":"decode-error","passed":true},{"actual":"fetch-error","check":"fetching / fetch-failure","expected":"fetch-error","passed":true},{"actual":"fetching","check":"fetch-error / retry-fetch","expected":"fetching","passed":true},{"actual":"thumbnail","check":"open / close-preview","expected":"thumbnail","passed":true},{"actual":"canceled","check":"fetching / close-preview","expected":"canceled","passed":true},{"actual":"thumbnail","check":"canceled / late-content-ready","expected":"thumbnail","passed":true},{"actual":"download-pending","check":"decode-error / download-original","expected":"download-pending","passed":true},{"actual":"thumbnail","check":"older notification incarnation","expected":"thumbnail","passed":true},{"actual":"thumbnail","check":"future notification incarnation","expected":"thumbnail","passed":true},{"actual":"thumbnail","check":"unknown event is inert","expected":"thumbnail","passed":true},{"actual":"thumbnail","check":"empty delivery batch","expected":"thumbnail","passed":true},{"actual":"fetching","check":"N stale deliveries before current delivery","expected":"fetching","passed":true},{"actual":"decoding","check":"trace preview-click then content-ready","expected":"decoding","passed":true},{"actual":"fetch-error","check":"trace preview-click then fetch-failure","expected":"fetch-error","passed":true},{"actual":"canceled","check":"trace preview-click then close-preview","expected":"canceled","passed":true},{"actual":"thumbnail","check":"trace content-ready then decode-success","expected":"open","passed":false},{"actual":"decode-error","check":"trace content-ready then decode-failure","expected":"decode-error","passed":true},{"actual":"thumbnail","check":"trace decode-success then close-preview","expected":"thumbnail","passed":true},{"actual":"download-pending","check":"trace decode-failure then download-original","expected":"download-pending","passed":true},{"actual":"fetching","check":"trace fetch-failure then retry-fetch","expected":"fetching","passed":true},{"actual":"decoding","check":"trace retry-fetch then content-ready","expected":"decoding","passed":true},{"actual":"fetch-error","check":"trace retry-fetch then fetch-failure","expected":"fetch-error","passed":true},{"actual":"canceled","check":"trace retry-fetch then close-preview","expected":"canceled","passed":true},{"actual":"fetching","check":"trace close-preview then preview-click","expected":"fetching","passed":true},{"actual":"thumbnail","check":"trace close-preview then late-content-ready","expected":"thumbnail","passed":true},{"actual":"fetching","check":"trace late-content-ready then preview-click","expected":"fetching","passed":true},{"actual":{"phase":"fetching","value":0},"check":"domain state regression 1: bytes","expected":{"phase":"fetching","value":0},"passed":true},{"actual":{"phase":"decoding","value":7},"check":"domain state regression 2: bytes","expected":{"phase":"decoding","value":7},"passed":true},{"actual":{"phase":"decode-error","value":false},"check":"domain state regression 3: decoded","expected":{"phase":"decode-error","value":false},"passed":true},{"actual":{"phase":"thumbnail","value":false},"check":"domain state regression 4: decoded","expected":{"phase":"open","value":true},"passed":false},{"actual":{"phase":"download-pending","value":["photo"]},"check":"domain state regression 5: download","expected":{"phase":"download-pending","value":["photo"]},"passed":true},{"actual":{"phase":"thumbnail","value":false},"check":"domain state regression 6: decoded","expected":{"phase":"thumbnail","value":false},"passed":true},{"actual":{"phase":"thumbnail","value":false},"check":"domain state regression 7: decoded","expected":{"phase":"thumbnail","value":false},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"thumbnail / preview-click\", \"actual\": \"fetching\", \"expected\": \"fetching\", \"passed\": true}, {\"check\": \"fetching / content-ready\", \"actual\": \"decoding\", \"expected\": \"decoding\", \"passed\": true}, {\"check\": \"decoding / decode-success\", \"actual\": \"thumbnail\", \"expected\": \"open\", \"passed\": false}, {\"check\": \"decoding / decode-failure\", \"actual\": \"decode-error\", \"expected\": \"decode-error\", \"passed\": true}, {\"check\": \"fetching / fetch-failure\", \"actual\": \"fetch-error\", \"expected\": \"fetch-error\", \"passed\": true}, {\"check\": \"fetch-error / retry-fetch\", \"actual\": \"fetching\", \"expected\": \"fetching\", \"passed\": true}, {\"check\": \"open / close-preview\", \"actual\": \"thumbnail\", \"expected\": \"thumbnail\", \"passed\": true}, {\"check\": \"fetching / close-preview\", \"actual\": \"canceled\", \"expected\": \"canceled\", \"passed\": true}, {\"check\": \"canceled / late-content-ready\", \"actual\": \"thumbnail\", \"expected\": \"thumbnail\", \"passed\": true}, {\"check\": \"decode-error / download-original\", \"actual\": \"download-pending\", \"expected\": \"download-pending\", \"passed\": true}, {\"check\": \"older notification incarnation\", \"actual\": \"thumbnail\", \"expected\": \"thumbnail\", \"passed\": true}, {\"check\": \"future notification incarnation\", \"actual\": \"thumbnail\", \"expected\": \"thumbnail\", \"passed\": true}, {\"check\": \"unknown event is inert\", \"actual\": \"thumbnail\", \"expected\": \"thumbnail\", \"passed\": true}, {\"check\": \"empty delivery batch\", \"actual\": \"thumbnail\", \"expected\": \"thumbnail\", \"passed\": true}, {\"check\": \"N stale deliveries before current delivery\", \"actual\": \"fetching\", \"expected\": \"fetching\", \"passed\": true}, {\"check\": \"trace preview-click then content-ready\", \"actual\": \"decoding\", \"expected\": \"decoding\", \"passed\": true}, {\"check\": \"trace preview-click then fetch-failure\", \"actual\": \"fetch-error\", \"expected\": \"fetch-error\", \"passed\": true}, {\"check\": \"trace preview-click then close-preview\", \"actual\": \"canceled\", \"expected\": \"canceled\", \"passed\": true}, {\"check\": \"trace content-ready then decode-success\", \"actual\": \"thumbnail\", \"expected\": \"open\", \"passed\": false}, {\"check\": \"trace content-ready then decode-failure\", \"actual\": \"decode-error\", \"expected\": \"decode-error\", \"passed\": true}, {\"check\": \"trace decode-success then close-preview\", \"actual\": \"thumbnail\", \"expected\": \"thumbnail\", \"passed\": true}, {\"check\": \"trace decode-failure then download-original\", \"actual\": \"download-pending\", \"expected\": \"download-pending\", \"passed\": true}, {\"check\": \"trace fetch-failure then retry-fetch\", \"actual\": \"fetching\", \"expected\": \"fetching\", \"passed\": true}, {\"check\": \"trace retry-fetch then content-ready\", \"actual\": \"decoding\", \"expected\": \"decoding\", \"passed\": true}, {\"check\": \"trace retry-fetch then fetch-failure\", \"actual\": \"fetch-error\", \"expected\": \"fetch-error\", \"passed\": true}, {\"check\": \"trace retry-fetch then close-preview\", \"actual\": \"canceled\", \"expected\": \"canceled\", \"passed\": true}, {\"check\": \"trace close-preview then preview-click\", \"actual\": \"fetching\", \"expected\": \"fetching\", \"passed\": true}, {\"check\": \"trace close-preview then late-content-ready\", \"actual\": \"thumbnail\", \"expected\": \"thumbnail\", \"passed\": true}, {\"check\": \"trace late-content-ready then preview-click\", \"actual\": \"fetching\", \"expected\": \"fetching\", \"passed\": true}, {\"check\": \"domain state regression 1: bytes\", \"actual\": {\"phase\": \"fetching\", \"value\": 0}, \"expected\": {\"phase\": \"fetching\", \"value\": 0}, \"passed\": true}, {\"check\": \"domain state regression 2: bytes\", \"actual\": {\"phase\": \"decoding\", \"value\": 7}, \"expected\": {\"phase\": \"decoding\", \"value\": 7}, \"passed\": true}, {\"check\": \"domain state regression 3: decoded\", \"actual\": {\"phase\": \"decode-error\", \"value\": false}, \"expected\": {\"phase\": \"decode-error\", \"value\": false}, \"passed\": true}, {\"check\": \"domain state regression 4: decoded\", \"actual\": {\"phase\": \"thumbnail\", \"value\": false}, \"expected\": {\"phase\": \"open\", \"value\": true}, \"passed\": false}, {\"check\": \"domain state regression 5: download\", \"actual\": {\"phase\": \"download-pending\", \"value\": [\"photo\"]}, \"expected\": {\"phase\": \"download-pending\", \"value\": [\"photo\"]}, \"passed\": true}, {\"check\": \"domain state regression 6: decoded\", \"actual\": {\"phase\": \"thumbnail\", \"value\": false}, \"expected\": {\"phase\": \"thumbnail\", \"value\": false}, \"passed\": true}, {\"check\": \"domain state regression 7: decoded\", \"actual\": {\"phase\": \"thumbnail\", \"value\": false}, \"expected\": {\"phase\": \"thumbnail\", \"value\": false}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":54.45,"exit_code":0,"observations":[{"actual":"fetching","check":"thumbnail / preview-click","expected":"fetching","passed":true},{"actual":"decoding","check":"fetching / content-ready","expected":"decoding","passed":true},{"actual":"open","check":"decoding / decode-success","expected":"open","passed":true},{"actual":"decode-error","check":"decoding / decode-failure","expected":"decode-error","passed":true},{"actual":"fetch-error","check":"fetching / fetch-failure","expected":"fetch-error","passed":true},{"actual":"fetching","check":"fetch-error / retry-fetch","expected":"fetching","passed":true},{"actual":"thumbnail","check":"open / close-preview","expected":"thumbnail","passed":true},{"actual":"canceled","check":"fetching / close-preview","expected":"canceled","passed":true},{"actual":"thumbnail","check":"canceled / late-content-ready","expected":"thumbnail","passed":true},{"actual":"download-pending","check":"decode-error / download-original","expected":"download-pending","passed":true},{"actual":"thumbnail","check":"older notification incarnation","expected":"thumbnail","passed":true},{"actual":"thumbnail","check":"future notification incarnation","expected":"thumbnail","passed":true},{"actual":"thumbnail","check":"unknown event is inert","expected":"thumbnail","passed":true},{"actual":"thumbnail","check":"empty delivery batch","expected":"thumbnail","passed":true},{"actual":"fetching","check":"N stale deliveries before current delivery","expected":"fetching","passed":true},{"actual":"decoding","check":"trace preview-click then content-ready","expected":"decoding","passed":true},{"actual":"fetch-error","check":"trace preview-click then fetch-failure","expected":"fetch-error","passed":true},{"actual":"canceled","check":"trace preview-click then close-preview","expected":"canceled","passed":true},{"actual":"open","check":"trace content-ready then decode-success","expected":"open","passed":true},{"actual":"decode-error","check":"trace content-ready then decode-failure","expected":"decode-error","passed":true},{"actual":"thumbnail","check":"trace decode-success then close-preview","expected":"thumbnail","passed":true},{"actual":"download-pending","check":"trace decode-failure then download-original","expected":"download-pending","passed":true},{"actual":"fetching","check":"trace fetch-failure then retry-fetch","expected":"fetching","passed":true},{"actual":"decoding","check":"trace retry-fetch then content-ready","expected":"decoding","passed":true},{"actual":"fetch-error","check":"trace retry-fetch then fetch-failure","expected":"fetch-error","passed":true},{"actual":"canceled","check":"trace retry-fetch then close-preview","expected":"canceled","passed":true},{"actual":"fetching","check":"trace close-preview then preview-click","expected":"fetching","passed":true},{"actual":"thumbnail","check":"trace close-preview then late-content-ready","expected":"thumbnail","passed":true},{"actual":"fetching","check":"trace late-content-ready then preview-click","expected":"fetching","passed":true},{"actual":{"phase":"fetching","value":0},"check":"domain state regression 1: bytes","expected":{"phase":"fetching","value":0},"passed":true},{"actual":{"phase":"decoding","value":7},"check":"domain state regression 2: bytes","expected":{"phase":"decoding","value":7},"passed":true},{"actual":{"phase":"decode-error","value":false},"check":"domain state regression 3: decoded","expected":{"phase":"decode-error","value":false},"passed":true},{"actual":{"phase":"open","value":true},"check":"domain state regression 4: decoded","expected":{"phase":"open","value":true},"passed":true},{"actual":{"phase":"download-pending","value":["photo"]},"check":"domain state regression 5: download","expected":{"phase":"download-pending","value":["photo"]},"passed":true},{"actual":{"phase":"thumbnail","value":false},"check":"domain state regression 6: decoded","expected":{"phase":"thumbnail","value":false},"passed":true},{"actual":{"phase":"thumbnail","value":false},"check":"domain state regression 7: decoded","expected":{"phase":"thumbnail","value":false},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"thumbnail / preview-click\", \"actual\": \"fetching\", \"expected\": \"fetching\", \"passed\": true}, {\"check\": \"fetching / content-ready\", \"actual\": \"decoding\", \"expected\": \"decoding\", \"passed\": true}, {\"check\": \"decoding / decode-success\", \"actual\": \"open\", \"expected\": \"open\", \"passed\": true}, {\"check\": \"decoding / decode-failure\", \"actual\": \"decode-error\", \"expected\": \"decode-error\", \"passed\": true}, {\"check\": \"fetching / fetch-failure\", \"actual\": \"fetch-error\", \"expected\": \"fetch-error\", \"passed\": true}, {\"check\": \"fetch-error / retry-fetch\", \"actual\": \"fetching\", \"expected\": \"fetching\", \"passed\": true}, {\"check\": \"open / close-preview\", \"actual\": \"thumbnail\", \"expected\": \"thumbnail\", \"passed\": true}, {\"check\": \"fetching / close-preview\", \"actual\": \"canceled\", \"expected\": \"canceled\", \"passed\": true}, {\"check\": \"canceled / late-content-ready\", \"actual\": \"thumbnail\", \"expected\": \"thumbnail\", \"passed\": true}, {\"check\": \"decode-error / download-original\", \"actual\": \"download-pending\", \"expected\": \"download-pending\", \"passed\": true}, {\"check\": \"older notification incarnation\", \"actual\": \"thumbnail\", \"expected\": \"thumbnail\", \"passed\": true}, {\"check\": \"future notification incarnation\", \"actual\": \"thumbnail\", \"expected\": \"thumbnail\", \"passed\": true}, {\"check\": \"unknown event is inert\", \"actual\": \"thumbnail\", \"expected\": \"thumbnail\", \"passed\": true}, {\"check\": \"empty delivery batch\", \"actual\": \"thumbnail\", \"expected\": \"thumbnail\", \"passed\": true}, {\"check\": \"N stale deliveries before current delivery\", \"actual\": \"fetching\", \"expected\": \"fetching\", \"passed\": true}, {\"check\": \"trace preview-click then content-ready\", \"actual\": \"decoding\", \"expected\": \"decoding\", \"passed\": true}, {\"check\": \"trace preview-click then fetch-failure\", \"actual\": \"fetch-error\", \"expected\": \"fetch-error\", \"passed\": true}, {\"check\": \"trace preview-click then close-preview\", \"actual\": \"canceled\", \"expected\": \"canceled\", \"passed\": true}, {\"check\": \"trace content-ready then decode-success\", \"actual\": \"open\", \"expected\": \"open\", \"passed\": true}, {\"check\": \"trace content-ready then decode-failure\", \"actual\": \"decode-error\", \"expected\": \"decode-error\", \"passed\": true}, {\"check\": \"trace decode-success then close-preview\", \"actual\": \"thumbnail\", \"expected\": \"thumbnail\", \"passed\": true}, {\"check\": \"trace decode-failure then download-original\", \"actual\": \"download-pending\", \"expected\": \"download-pending\", \"passed\": true}, {\"check\": \"trace fetch-failure then retry-fetch\", \"actual\": \"fetching\", \"expected\": \"fetching\", \"passed\": true}, {\"check\": \"trace retry-fetch then content-ready\", \"actual\": \"decoding\", \"expected\": \"decoding\", \"passed\": true}, {\"check\": \"trace retry-fetch then fetch-failure\", \"actual\": \"fetch-error\", \"expected\": \"fetch-error\", \"passed\": true}, {\"check\": \"trace retry-fetch then close-preview\", \"actual\": \"canceled\", \"expected\": \"canceled\", \"passed\": true}, {\"check\": \"trace close-preview then preview-click\", \"actual\": \"fetching\", \"expected\": \"fetching\", \"passed\": true}, {\"check\": \"trace close-preview then late-content-ready\", \"actual\": \"thumbnail\", \"expected\": \"thumbnail\", \"passed\": true}, {\"check\": \"trace late-content-ready then preview-click\", \"actual\": \"fetching\", \"expected\": \"fetching\", \"passed\": true}, {\"check\": \"domain state regression 1: bytes\", \"actual\": {\"phase\": \"fetching\", \"value\": 0}, \"expected\": {\"phase\": \"fetching\", \"value\": 0}, \"passed\": true}, {\"check\": \"domain state regression 2: bytes\", \"actual\": {\"phase\": \"decoding\", \"value\": 7}, \"expected\": {\"phase\": \"decoding\", \"value\": 7}, \"passed\": true}, {\"check\": \"domain state regression 3: decoded\", \"actual\": {\"phase\": \"decode-error\", \"value\": false}, \"expected\": {\"phase\": \"decode-error\", \"value\": false}, \"passed\": true}, {\"check\": \"domain state regression 4: decoded\", \"actual\": {\"phase\": \"open\", \"value\": true}, \"expected\": {\"phase\": \"open\", \"value\": true}, \"passed\": true}, {\"check\": \"domain state regression 5: download\", \"actual\": {\"phase\": \"download-pending\", \"value\": [\"photo\"]}, \"expected\": {\"phase\": \"download-pending\", \"value\": [\"photo\"]}, \"passed\": true}, {\"check\": \"domain state regression 6: decoded\", \"actual\": {\"phase\": \"thumbnail\", \"value\": false}, \"expected\": {\"phase\": \"thumbnail\", \"value\": false}, \"passed\": true}, {\"check\": \"domain state regression 7: decoded\", \"actual\": {\"phase\": \"thumbnail\", \"value\": false}, \"expected\": {\"phase\": \"thumbnail\", \"value\": false}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}