{"abstract":"The show-digest event leaves a notification in published instead of publishing.","category":"Notification interfaces","checks":35,"contract":"Notification digest assembly presentation is a bounded visual-notification workflow with mutable policy state {'members': ['a', 'b'], 'sealed': [], 'next_window': [], 'shown': []}. Its default transition relation is {('collecting', 'close-window'): 'sealing', ('sealing', 'seal-success'): 'ready', ('ready', 'show-digest'): 'publishing', ('publishing', 'paint-success'): 'published', ('publishing', 'paint-failure'): 'publish-error', ('publish-error', 'retry-show'): 'publishing', ('published', 'expand-digest'): 'expanded', ('expanded', 'collapse-digest'): 'published', ('sealing', 'late-item'): 'sealing', ('collecting', 'close-empty-window'): 'empty'}; 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-digest","failed_approach":"Returning to collection mutates an already sealed digest.","family":"s3-notification-interfaces-digest-03","id":"FA-34301","implementations":{"attempt":{"sha256":"159d5b66fc1f0feed0484d56e598e619bd4eadee599f182afb0c7c7a253b052d","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 = {('collecting', 'close-window'): 'sealing', ('sealing', 'seal-success'): 'ready', ('ready', 'show-digest'): 'collecting', ('publishing', 'paint-success'): 'published', ('publishing', 'paint-failure'): 'publish-error', ('publish-error', 'retry-show'): 'publishing', ('published', 'expand-digest'): 'expanded', ('expanded', 'collapse-digest'): 'published', ('sealing', 'late-item'): 'sealing', ('collecting', 'close-empty-window'): 'empty'}\n    data = json.loads(json.dumps({'members': ['a', 'b'], 'sealed': [], 'next_window': [], 'shown': []})) if payload is None else {**json.loads(json.dumps({'members': ['a', 'b'], 'sealed': [], 'next_window': [], 'shown': []})), **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 == 'close-empty-window' and data['members']: event = 'close-window'\n            if event == 'late-item': data['next_window'].append(arg.get('item','late'))\n            if event == 'seal-success': data['sealed'] = data['members'][:]\n            state = table.get((state, event), state)\n            if state == 'published': data['shown'] = data['sealed'][:]\n            if state == 'empty': data['shown'] = []\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('collecting / close-window', solve('collecting', [('close-window', N)], N), 'sealing')\ncheck('sealing / seal-success', solve('sealing', [('seal-success', N)], N), 'ready')\ncheck('ready / show-digest', solve('ready', [('show-digest', N)], N), 'publishing')\ncheck('publishing / paint-success', solve('publishing', [('paint-success', N)], N), 'published')\ncheck('publishing / paint-failure', solve('publishing', [('paint-failure', N)], N), 'publish-error')\ncheck('publish-error / retry-show', solve('publish-error', [('retry-show', N)], N), 'publishing')\ncheck('published / expand-digest', solve('published', [('expand-digest', N)], N), 'expanded')\ncheck('expanded / collapse-digest', solve('expanded', [('collapse-digest', N)], N), 'published')\ncheck('sealing / late-item', solve('sealing', [('late-item', N)], N), 'sealing')\ncheck('collecting / close-empty-window', solve('collecting', [('close-empty-window', N)], N, {'members': []}), 'empty')\ncheck('older notification incarnation', solve('collecting', [('close-window', N - 1)], N), 'collecting')\ncheck('future notification incarnation', solve('collecting', [('close-window', N + 1)], N), 'collecting')\ncheck('unknown event is inert', solve('collecting', [('unknown-event', N)], N), 'collecting')\ncheck('empty delivery batch', solve('collecting', [], N), 'collecting')\ncheck('N stale deliveries before current delivery', solve('collecting', [('close-window', N - 1)] * N + [('close-window', N)], N), 'sealing')\ncheck('trace close-window then seal-success', solve('collecting', [('close-window', N), ('seal-success', N)], N), 'ready')\ncheck('trace close-window then late-item', solve('collecting', [('close-window', N), ('late-item', N)], N), 'sealing')\ncheck('trace seal-success then show-digest', solve('sealing', [('seal-success', N), ('show-digest', N)], N), 'publishing')\ncheck('trace show-digest then paint-success', solve('ready', [('show-digest', N), ('paint-success', N)], N), 'published')\ncheck('trace show-digest then paint-failure', solve('ready', [('show-digest', N), ('paint-failure', N)], N), 'publish-error')\ncheck('trace paint-success then expand-digest', solve('publishing', [('paint-success', N), ('expand-digest', N)], N), 'expanded')\ncheck('trace paint-failure then retry-show', solve('publishing', [('paint-failure', N), ('retry-show', N)], N), 'publishing')\ncheck('trace retry-show then paint-success', solve('publish-error', [('retry-show', N), ('paint-success', N)], N), 'published')\ncheck('trace retry-show then paint-failure', solve('publish-error', [('retry-show', N), ('paint-failure', N)], N), 'publish-error')\ncheck('trace expand-digest then collapse-digest', solve('published', [('expand-digest', N), ('collapse-digest', N)], N), 'published')\ncheck('trace collapse-digest then expand-digest', solve('expanded', [('collapse-digest', N), ('expand-digest', N)], N), 'expanded')\ncheck('trace late-item then seal-success', solve('sealing', [('late-item', N), ('seal-success', N)], N), 'ready')\ncheck('trace late-item then late-item', solve('sealing', [('late-item', N), ('late-item', N)], N), 'sealing')\ncheck('domain state regression 1: members', solve('collecting', [('close-empty-window', N, {})], N, {}, 'members'), {'phase': 'sealing', 'value': ['a', 'b']})\ncheck('domain state regression 2: shown', solve('collecting', [('close-empty-window', N, {})], N, {'members': []}, 'shown'), {'phase': 'empty', 'value': []})\ncheck('domain state regression 3: sealed', solve('sealing', [('seal-success', N, {})], N, {}, 'sealed'), {'phase': 'ready', 'value': ['a', 'b']})\ncheck('domain state regression 4: members', solve('sealing', [('late-item', N, {'item': 'c'})], N, {}, 'members'), {'phase': 'sealing', 'value': ['a', 'b']})\ncheck('domain state regression 5: next_window', solve('sealing', [('late-item', N, {'item': 'c'})], N, {}, 'next_window'), {'phase': 'sealing', 'value': ['c']})\ncheck('domain state regression 6: shown', solve('publishing', [('paint-success', N, {})], N, {'sealed': ['a']}, 'shown'), {'phase': 'published', 'value': ['a']})\ncheck('domain state regression 7: shown', solve('collecting', [('close-window', N, {}), ('late-item', N, {'item': 'c'}), ('seal-success', N, {}), ('show-digest', N, {}), ('paint-success', N, {})], N, {}, 'shown'), {'phase': 'published', 'value': ['a', 'b']})\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":"aa2cfc1f27489dffae7622182c76e4244470884c7658fc1c2b5d7165d0cd7fe6","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 = {('collecting', 'close-window'): 'sealing', ('sealing', 'seal-success'): 'ready', ('ready', 'show-digest'): 'published', ('publishing', 'paint-success'): 'published', ('publishing', 'paint-failure'): 'publish-error', ('publish-error', 'retry-show'): 'publishing', ('published', 'expand-digest'): 'expanded', ('expanded', 'collapse-digest'): 'published', ('sealing', 'late-item'): 'sealing', ('collecting', 'close-empty-window'): 'empty'}\n    data = json.loads(json.dumps({'members': ['a', 'b'], 'sealed': [], 'next_window': [], 'shown': []})) if payload is None else {**json.loads(json.dumps({'members': ['a', 'b'], 'sealed': [], 'next_window': [], 'shown': []})), **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 == 'close-empty-window' and data['members']: event = 'close-window'\n            if event == 'late-item': data['next_window'].append(arg.get('item','late'))\n            if event == 'seal-success': data['sealed'] = data['members'][:]\n            state = table.get((state, event), state)\n            if state == 'published': data['shown'] = data['sealed'][:]\n            if state == 'empty': data['shown'] = []\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('collecting / close-window', solve('collecting', [('close-window', N)], N), 'sealing')\ncheck('sealing / seal-success', solve('sealing', [('seal-success', N)], N), 'ready')\ncheck('ready / show-digest', solve('ready', [('show-digest', N)], N), 'publishing')\ncheck('publishing / paint-success', solve('publishing', [('paint-success', N)], N), 'published')\ncheck('publishing / paint-failure', solve('publishing', [('paint-failure', N)], N), 'publish-error')\ncheck('publish-error / retry-show', solve('publish-error', [('retry-show', N)], N), 'publishing')\ncheck('published / expand-digest', solve('published', [('expand-digest', N)], N), 'expanded')\ncheck('expanded / collapse-digest', solve('expanded', [('collapse-digest', N)], N), 'published')\ncheck('sealing / late-item', solve('sealing', [('late-item', N)], N), 'sealing')\ncheck('collecting / close-empty-window', solve('collecting', [('close-empty-window', N)], N, {'members': []}), 'empty')\ncheck('older notification incarnation', solve('collecting', [('close-window', N - 1)], N), 'collecting')\ncheck('future notification incarnation', solve('collecting', [('close-window', N + 1)], N), 'collecting')\ncheck('unknown event is inert', solve('collecting', [('unknown-event', N)], N), 'collecting')\ncheck('empty delivery batch', solve('collecting', [], N), 'collecting')\ncheck('N stale deliveries before current delivery', solve('collecting', [('close-window', N - 1)] * N + [('close-window', N)], N), 'sealing')\ncheck('trace close-window then seal-success', solve('collecting', [('close-window', N), ('seal-success', N)], N), 'ready')\ncheck('trace close-window then late-item', solve('collecting', [('close-window', N), ('late-item', N)], N), 'sealing')\ncheck('trace seal-success then show-digest', solve('sealing', [('seal-success', N), ('show-digest', N)], N), 'publishing')\ncheck('trace show-digest then paint-success', solve('ready', [('show-digest', N), ('paint-success', N)], N), 'published')\ncheck('trace show-digest then paint-failure', solve('ready', [('show-digest', N), ('paint-failure', N)], N), 'publish-error')\ncheck('trace paint-success then expand-digest', solve('publishing', [('paint-success', N), ('expand-digest', N)], N), 'expanded')\ncheck('trace paint-failure then retry-show', solve('publishing', [('paint-failure', N), ('retry-show', N)], N), 'publishing')\ncheck('trace retry-show then paint-success', solve('publish-error', [('retry-show', N), ('paint-success', N)], N), 'published')\ncheck('trace retry-show then paint-failure', solve('publish-error', [('retry-show', N), ('paint-failure', N)], N), 'publish-error')\ncheck('trace expand-digest then collapse-digest', solve('published', [('expand-digest', N), ('collapse-digest', N)], N), 'published')\ncheck('trace collapse-digest then expand-digest', solve('expanded', [('collapse-digest', N), ('expand-digest', N)], N), 'expanded')\ncheck('trace late-item then seal-success', solve('sealing', [('late-item', N), ('seal-success', N)], N), 'ready')\ncheck('trace late-item then late-item', solve('sealing', [('late-item', N), ('late-item', N)], N), 'sealing')\ncheck('domain state regression 1: members', solve('collecting', [('close-empty-window', N, {})], N, {}, 'members'), {'phase': 'sealing', 'value': ['a', 'b']})\ncheck('domain state regression 2: shown', solve('collecting', [('close-empty-window', N, {})], N, {'members': []}, 'shown'), {'phase': 'empty', 'value': []})\ncheck('domain state regression 3: sealed', solve('sealing', [('seal-success', N, {})], N, {}, 'sealed'), {'phase': 'ready', 'value': ['a', 'b']})\ncheck('domain state regression 4: members', solve('sealing', [('late-item', N, {'item': 'c'})], N, {}, 'members'), {'phase': 'sealing', 'value': ['a', 'b']})\ncheck('domain state regression 5: next_window', solve('sealing', [('late-item', N, {'item': 'c'})], N, {}, 'next_window'), {'phase': 'sealing', 'value': ['c']})\ncheck('domain state regression 6: shown', solve('publishing', [('paint-success', N, {})], N, {'sealed': ['a']}, 'shown'), {'phase': 'published', 'value': ['a']})\ncheck('domain state regression 7: shown', solve('collecting', [('close-window', N, {}), ('late-item', N, {'item': 'c'}), ('seal-success', N, {}), ('show-digest', N, {}), ('paint-success', N, {})], N, {}, 'shown'), {'phase': 'published', 'value': ['a', 'b']})\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":"46cfa1f268daa20ec839d5150d42fd1434e94e5a1dddc22ad14dd80e0b54b7d0","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 = {('collecting', 'close-window'): 'sealing', ('sealing', 'seal-success'): 'ready', ('ready', 'show-digest'): 'publishing', ('publishing', 'paint-success'): 'published', ('publishing', 'paint-failure'): 'publish-error', ('publish-error', 'retry-show'): 'publishing', ('published', 'expand-digest'): 'expanded', ('expanded', 'collapse-digest'): 'published', ('sealing', 'late-item'): 'sealing', ('collecting', 'close-empty-window'): 'empty'}\n    data = json.loads(json.dumps({'members': ['a', 'b'], 'sealed': [], 'next_window': [], 'shown': []})) if payload is None else {**json.loads(json.dumps({'members': ['a', 'b'], 'sealed': [], 'next_window': [], 'shown': []})), **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 == 'close-empty-window' and data['members']: event = 'close-window'\n            if event == 'late-item': data['next_window'].append(arg.get('item','late'))\n            if event == 'seal-success': data['sealed'] = data['members'][:]\n            state = table.get((state, event), state)\n            if state == 'published': data['shown'] = data['sealed'][:]\n            if state == 'empty': data['shown'] = []\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('collecting / close-window', solve('collecting', [('close-window', N)], N), 'sealing')\ncheck('sealing / seal-success', solve('sealing', [('seal-success', N)], N), 'ready')\ncheck('ready / show-digest', solve('ready', [('show-digest', N)], N), 'publishing')\ncheck('publishing / paint-success', solve('publishing', [('paint-success', N)], N), 'published')\ncheck('publishing / paint-failure', solve('publishing', [('paint-failure', N)], N), 'publish-error')\ncheck('publish-error / retry-show', solve('publish-error', [('retry-show', N)], N), 'publishing')\ncheck('published / expand-digest', solve('published', [('expand-digest', N)], N), 'expanded')\ncheck('expanded / collapse-digest', solve('expanded', [('collapse-digest', N)], N), 'published')\ncheck('sealing / late-item', solve('sealing', [('late-item', N)], N), 'sealing')\ncheck('collecting / close-empty-window', solve('collecting', [('close-empty-window', N)], N, {'members': []}), 'empty')\ncheck('older notification incarnation', solve('collecting', [('close-window', N - 1)], N), 'collecting')\ncheck('future notification incarnation', solve('collecting', [('close-window', N + 1)], N), 'collecting')\ncheck('unknown event is inert', solve('collecting', [('unknown-event', N)], N), 'collecting')\ncheck('empty delivery batch', solve('collecting', [], N), 'collecting')\ncheck('N stale deliveries before current delivery', solve('collecting', [('close-window', N - 1)] * N + [('close-window', N)], N), 'sealing')\ncheck('trace close-window then seal-success', solve('collecting', [('close-window', N), ('seal-success', N)], N), 'ready')\ncheck('trace close-window then late-item', solve('collecting', [('close-window', N), ('late-item', N)], N), 'sealing')\ncheck('trace seal-success then show-digest', solve('sealing', [('seal-success', N), ('show-digest', N)], N), 'publishing')\ncheck('trace show-digest then paint-success', solve('ready', [('show-digest', N), ('paint-success', N)], N), 'published')\ncheck('trace show-digest then paint-failure', solve('ready', [('show-digest', N), ('paint-failure', N)], N), 'publish-error')\ncheck('trace paint-success then expand-digest', solve('publishing', [('paint-success', N), ('expand-digest', N)], N), 'expanded')\ncheck('trace paint-failure then retry-show', solve('publishing', [('paint-failure', N), ('retry-show', N)], N), 'publishing')\ncheck('trace retry-show then paint-success', solve('publish-error', [('retry-show', N), ('paint-success', N)], N), 'published')\ncheck('trace retry-show then paint-failure', solve('publish-error', [('retry-show', N), ('paint-failure', N)], N), 'publish-error')\ncheck('trace expand-digest then collapse-digest', solve('published', [('expand-digest', N), ('collapse-digest', N)], N), 'published')\ncheck('trace collapse-digest then expand-digest', solve('expanded', [('collapse-digest', N), ('expand-digest', N)], N), 'expanded')\ncheck('trace late-item then seal-success', solve('sealing', [('late-item', N), ('seal-success', N)], N), 'ready')\ncheck('trace late-item then late-item', solve('sealing', [('late-item', N), ('late-item', N)], N), 'sealing')\ncheck('domain state regression 1: members', solve('collecting', [('close-empty-window', N, {})], N, {}, 'members'), {'phase': 'sealing', 'value': ['a', 'b']})\ncheck('domain state regression 2: shown', solve('collecting', [('close-empty-window', N, {})], N, {'members': []}, 'shown'), {'phase': 'empty', 'value': []})\ncheck('domain state regression 3: sealed', solve('sealing', [('seal-success', N, {})], N, {}, 'sealed'), {'phase': 'ready', 'value': ['a', 'b']})\ncheck('domain state regression 4: members', solve('sealing', [('late-item', N, {'item': 'c'})], N, {}, 'members'), {'phase': 'sealing', 'value': ['a', 'b']})\ncheck('domain state regression 5: next_window', solve('sealing', [('late-item', N, {'item': 'c'})], N, {}, 'next_window'), {'phase': 'sealing', 'value': ['c']})\ncheck('domain state regression 6: shown', solve('publishing', [('paint-success', N, {})], N, {'sealed': ['a']}, 'shown'), {'phase': 'published', 'value': ['a']})\ncheck('domain state regression 7: shown', solve('collecting', [('close-window', N, {}), ('late-item', N, {'item': 'c'}), ('seal-success', N, {}), ('show-digest', N, {}), ('paint-success', N, {})], N, {}, 'shown'), {'phase': 'published', 'value': ['a', 'b']})\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-digest-03","generated_at":"2026-09-29T14:42:30.538192+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 ready / show-digest transition to publishing; preserve the other explicitly stipulated transitions.","root_cause":"The digest is marked exposed before mounting succeeds.","sha256":"ce817fe9b7c312eafad66b03c83b685ad7cc7dd40ce142addf44b68b42ec878e","title":"Notification digest assembly presentation: show-digest from ready · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.882,"exit_code":1,"observations":[{"actual":"sealing","check":"collecting / close-window","expected":"sealing","passed":true},{"actual":"ready","check":"sealing / seal-success","expected":"ready","passed":true},{"actual":"collecting","check":"ready / show-digest","expected":"publishing","passed":false},{"actual":"published","check":"publishing / paint-success","expected":"published","passed":true},{"actual":"publish-error","check":"publishing / paint-failure","expected":"publish-error","passed":true},{"actual":"publishing","check":"publish-error / retry-show","expected":"publishing","passed":true},{"actual":"expanded","check":"published / expand-digest","expected":"expanded","passed":true},{"actual":"published","check":"expanded / collapse-digest","expected":"published","passed":true},{"actual":"sealing","check":"sealing / late-item","expected":"sealing","passed":true},{"actual":"empty","check":"collecting / close-empty-window","expected":"empty","passed":true},{"actual":"collecting","check":"older notification incarnation","expected":"collecting","passed":true},{"actual":"collecting","check":"future notification incarnation","expected":"collecting","passed":true},{"actual":"collecting","check":"unknown event is inert","expected":"collecting","passed":true},{"actual":"collecting","check":"empty delivery batch","expected":"collecting","passed":true},{"actual":"sealing","check":"N stale deliveries before current delivery","expected":"sealing","passed":true},{"actual":"ready","check":"trace close-window then seal-success","expected":"ready","passed":true},{"actual":"sealing","check":"trace close-window then late-item","expected":"sealing","passed":true},{"actual":"collecting","check":"trace seal-success then show-digest","expected":"publishing","passed":false},{"actual":"collecting","check":"trace show-digest then paint-success","expected":"published","passed":false},{"actual":"collecting","check":"trace show-digest then paint-failure","expected":"publish-error","passed":false},{"actual":"expanded","check":"trace paint-success then expand-digest","expected":"expanded","passed":true},{"actual":"publishing","check":"trace paint-failure then retry-show","expected":"publishing","passed":true},{"actual":"published","check":"trace retry-show then paint-success","expected":"published","passed":true},{"actual":"publish-error","check":"trace retry-show then paint-failure","expected":"publish-error","passed":true},{"actual":"published","check":"trace expand-digest then collapse-digest","expected":"published","passed":true},{"actual":"expanded","check":"trace collapse-digest then expand-digest","expected":"expanded","passed":true},{"actual":"ready","check":"trace late-item then seal-success","expected":"ready","passed":true},{"actual":"sealing","check":"trace late-item then late-item","expected":"sealing","passed":true},{"actual":{"phase":"sealing","value":["a","b"]},"check":"domain state regression 1: members","expected":{"phase":"sealing","value":["a","b"]},"passed":true},{"actual":{"phase":"empty","value":[]},"check":"domain state regression 2: shown","expected":{"phase":"empty","value":[]},"passed":true},{"actual":{"phase":"ready","value":["a","b"]},"check":"domain state regression 3: sealed","expected":{"phase":"ready","value":["a","b"]},"passed":true},{"actual":{"phase":"sealing","value":["a","b"]},"check":"domain state regression 4: members","expected":{"phase":"sealing","value":["a","b"]},"passed":true},{"actual":{"phase":"sealing","value":["c"]},"check":"domain state regression 5: next_window","expected":{"phase":"sealing","value":["c"]},"passed":true},{"actual":{"phase":"published","value":["a"]},"check":"domain state regression 6: shown","expected":{"phase":"published","value":["a"]},"passed":true},{"actual":{"phase":"collecting","value":[]},"check":"domain state regression 7: shown","expected":{"phase":"published","value":["a","b"]},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"collecting / close-window\", \"actual\": \"sealing\", \"expected\": \"sealing\", \"passed\": true}, {\"check\": \"sealing / seal-success\", \"actual\": \"ready\", \"expected\": \"ready\", \"passed\": true}, {\"check\": \"ready / show-digest\", \"actual\": \"collecting\", \"expected\": \"publishing\", \"passed\": false}, {\"check\": \"publishing / paint-success\", \"actual\": \"published\", \"expected\": \"published\", \"passed\": true}, {\"check\": \"publishing / paint-failure\", \"actual\": \"publish-error\", \"expected\": \"publish-error\", \"passed\": true}, {\"check\": \"publish-error / retry-show\", \"actual\": \"publishing\", \"expected\": \"publishing\", \"passed\": true}, {\"check\": \"published / expand-digest\", \"actual\": \"expanded\", \"expected\": \"expanded\", \"passed\": true}, {\"check\": \"expanded / collapse-digest\", \"actual\": \"published\", \"expected\": \"published\", \"passed\": true}, {\"check\": \"sealing / late-item\", \"actual\": \"sealing\", \"expected\": \"sealing\", \"passed\": true}, {\"check\": \"collecting / close-empty-window\", \"actual\": \"empty\", \"expected\": \"empty\", \"passed\": true}, {\"check\": \"older notification incarnation\", \"actual\": \"collecting\", \"expected\": \"collecting\", \"passed\": true}, {\"check\": \"future notification incarnation\", \"actual\": \"collecting\", \"expected\": \"collecting\", \"passed\": true}, {\"check\": \"unknown event is inert\", \"actual\": \"collecting\", \"expected\": \"collecting\", \"passed\": true}, {\"check\": \"empty delivery batch\", \"actual\": \"collecting\", \"expected\": \"collecting\", \"passed\": true}, {\"check\": \"N stale deliveries before current delivery\", \"actual\": \"sealing\", \"expected\": \"sealing\", \"passed\": true}, {\"check\": \"trace close-window then seal-success\", \"actual\": \"ready\", \"expected\": \"ready\", \"passed\": true}, {\"check\": \"trace close-window then late-item\", \"actual\": \"sealing\", \"expected\": \"sealing\", \"passed\": true}, {\"check\": \"trace seal-success then show-digest\", \"actual\": \"collecting\", \"expected\": \"publishing\", \"passed\": false}, {\"check\": \"trace show-digest then paint-success\", \"actual\": \"collecting\", \"expected\": \"published\", \"passed\": false}, {\"check\": \"trace show-digest then paint-failure\", \"actual\": \"collecting\", \"expected\": \"publish-error\", \"passed\": false}, {\"check\": \"trace paint-success then expand-digest\", \"actual\": \"expanded\", \"expected\": \"expanded\", \"passed\": true}, {\"check\": \"trace paint-failure then retry-show\", \"actual\": \"publishing\", \"expected\": \"publishing\", \"passed\": true}, {\"check\": \"trace retry-show then paint-success\", \"actual\": \"published\", \"expected\": \"published\", \"passed\": true}, {\"check\": \"trace retry-show then paint-failure\", \"actual\": \"publish-error\", \"expected\": \"publish-error\", \"passed\": true}, {\"check\": \"trace expand-digest then collapse-digest\", \"actual\": \"published\", \"expected\": \"published\", \"passed\": true}, {\"check\": \"trace collapse-digest then expand-digest\", \"actual\": \"expanded\", \"expected\": \"expanded\", \"passed\": true}, {\"check\": \"trace late-item then seal-success\", \"actual\": \"ready\", \"expected\": \"ready\", \"passed\": true}, {\"check\": \"trace late-item then late-item\", \"actual\": \"sealing\", \"expected\": \"sealing\", \"passed\": true}, {\"check\": \"domain state regression 1: members\", \"actual\": {\"phase\": \"sealing\", \"value\": [\"a\", \"b\"]}, \"expected\": {\"phase\": \"sealing\", \"value\": [\"a\", \"b\"]}, \"passed\": true}, {\"check\": \"domain state regression 2: shown\", \"actual\": {\"phase\": \"empty\", \"value\": []}, \"expected\": {\"phase\": \"empty\", \"value\": []}, \"passed\": true}, {\"check\": \"domain state regression 3: sealed\", \"actual\": {\"phase\": \"ready\", \"value\": [\"a\", \"b\"]}, \"expected\": {\"phase\": \"ready\", \"value\": [\"a\", \"b\"]}, \"passed\": true}, {\"check\": \"domain state regression 4: members\", \"actual\": {\"phase\": \"sealing\", \"value\": [\"a\", \"b\"]}, \"expected\": {\"phase\": \"sealing\", \"value\": [\"a\", \"b\"]}, \"passed\": true}, {\"check\": \"domain state regression 5: next_window\", \"actual\": {\"phase\": \"sealing\", \"value\": [\"c\"]}, \"expected\": {\"phase\": \"sealing\", \"value\": [\"c\"]}, \"passed\": true}, {\"check\": \"domain state regression 6: shown\", \"actual\": {\"phase\": \"published\", \"value\": [\"a\"]}, \"expected\": {\"phase\": \"published\", \"value\": [\"a\"]}, \"passed\": true}, {\"check\": \"domain state regression 7: shown\", \"actual\": {\"phase\": \"collecting\", \"value\": []}, \"expected\": {\"phase\": \"published\", \"value\": [\"a\", \"b\"]}, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":45.701,"exit_code":1,"observations":[{"actual":"sealing","check":"collecting / close-window","expected":"sealing","passed":true},{"actual":"ready","check":"sealing / seal-success","expected":"ready","passed":true},{"actual":"published","check":"ready / show-digest","expected":"publishing","passed":false},{"actual":"published","check":"publishing / paint-success","expected":"published","passed":true},{"actual":"publish-error","check":"publishing / paint-failure","expected":"publish-error","passed":true},{"actual":"publishing","check":"publish-error / retry-show","expected":"publishing","passed":true},{"actual":"expanded","check":"published / expand-digest","expected":"expanded","passed":true},{"actual":"published","check":"expanded / collapse-digest","expected":"published","passed":true},{"actual":"sealing","check":"sealing / late-item","expected":"sealing","passed":true},{"actual":"empty","check":"collecting / close-empty-window","expected":"empty","passed":true},{"actual":"collecting","check":"older notification incarnation","expected":"collecting","passed":true},{"actual":"collecting","check":"future notification incarnation","expected":"collecting","passed":true},{"actual":"collecting","check":"unknown event is inert","expected":"collecting","passed":true},{"actual":"collecting","check":"empty delivery batch","expected":"collecting","passed":true},{"actual":"sealing","check":"N stale deliveries before current delivery","expected":"sealing","passed":true},{"actual":"ready","check":"trace close-window then seal-success","expected":"ready","passed":true},{"actual":"sealing","check":"trace close-window then late-item","expected":"sealing","passed":true},{"actual":"published","check":"trace seal-success then show-digest","expected":"publishing","passed":false},{"actual":"published","check":"trace show-digest then paint-success","expected":"published","passed":true},{"actual":"published","check":"trace show-digest then paint-failure","expected":"publish-error","passed":false},{"actual":"expanded","check":"trace paint-success then expand-digest","expected":"expanded","passed":true},{"actual":"publishing","check":"trace paint-failure then retry-show","expected":"publishing","passed":true},{"actual":"published","check":"trace retry-show then paint-success","expected":"published","passed":true},{"actual":"publish-error","check":"trace retry-show then paint-failure","expected":"publish-error","passed":true},{"actual":"published","check":"trace expand-digest then collapse-digest","expected":"published","passed":true},{"actual":"expanded","check":"trace collapse-digest then expand-digest","expected":"expanded","passed":true},{"actual":"ready","check":"trace late-item then seal-success","expected":"ready","passed":true},{"actual":"sealing","check":"trace late-item then late-item","expected":"sealing","passed":true},{"actual":{"phase":"sealing","value":["a","b"]},"check":"domain state regression 1: members","expected":{"phase":"sealing","value":["a","b"]},"passed":true},{"actual":{"phase":"empty","value":[]},"check":"domain state regression 2: shown","expected":{"phase":"empty","value":[]},"passed":true},{"actual":{"phase":"ready","value":["a","b"]},"check":"domain state regression 3: sealed","expected":{"phase":"ready","value":["a","b"]},"passed":true},{"actual":{"phase":"sealing","value":["a","b"]},"check":"domain state regression 4: members","expected":{"phase":"sealing","value":["a","b"]},"passed":true},{"actual":{"phase":"sealing","value":["c"]},"check":"domain state regression 5: next_window","expected":{"phase":"sealing","value":["c"]},"passed":true},{"actual":{"phase":"published","value":["a"]},"check":"domain state regression 6: shown","expected":{"phase":"published","value":["a"]},"passed":true},{"actual":{"phase":"published","value":["a","b"]},"check":"domain state regression 7: shown","expected":{"phase":"published","value":["a","b"]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"collecting / close-window\", \"actual\": \"sealing\", \"expected\": \"sealing\", \"passed\": true}, {\"check\": \"sealing / seal-success\", \"actual\": \"ready\", \"expected\": \"ready\", \"passed\": true}, {\"check\": \"ready / show-digest\", \"actual\": \"published\", \"expected\": \"publishing\", \"passed\": false}, {\"check\": \"publishing / paint-success\", \"actual\": \"published\", \"expected\": \"published\", \"passed\": true}, {\"check\": \"publishing / paint-failure\", \"actual\": \"publish-error\", \"expected\": \"publish-error\", \"passed\": true}, {\"check\": \"publish-error / retry-show\", \"actual\": \"publishing\", \"expected\": \"publishing\", \"passed\": true}, {\"check\": \"published / expand-digest\", \"actual\": \"expanded\", \"expected\": \"expanded\", \"passed\": true}, {\"check\": \"expanded / collapse-digest\", \"actual\": \"published\", \"expected\": \"published\", \"passed\": true}, {\"check\": \"sealing / late-item\", \"actual\": \"sealing\", \"expected\": \"sealing\", \"passed\": true}, {\"check\": \"collecting / close-empty-window\", \"actual\": \"empty\", \"expected\": \"empty\", \"passed\": true}, {\"check\": \"older notification incarnation\", \"actual\": \"collecting\", \"expected\": \"collecting\", \"passed\": true}, {\"check\": \"future notification incarnation\", \"actual\": \"collecting\", \"expected\": \"collecting\", \"passed\": true}, {\"check\": \"unknown event is inert\", \"actual\": \"collecting\", \"expected\": \"collecting\", \"passed\": true}, {\"check\": \"empty delivery batch\", \"actual\": \"collecting\", \"expected\": \"collecting\", \"passed\": true}, {\"check\": \"N stale deliveries before current delivery\", \"actual\": \"sealing\", \"expected\": \"sealing\", \"passed\": true}, {\"check\": \"trace close-window then seal-success\", \"actual\": \"ready\", \"expected\": \"ready\", \"passed\": true}, {\"check\": \"trace close-window then late-item\", \"actual\": \"sealing\", \"expected\": \"sealing\", \"passed\": true}, {\"check\": \"trace seal-success then show-digest\", \"actual\": \"published\", \"expected\": \"publishing\", \"passed\": false}, {\"check\": \"trace show-digest then paint-success\", \"actual\": \"published\", \"expected\": \"published\", \"passed\": true}, {\"check\": \"trace show-digest then paint-failure\", \"actual\": \"published\", \"expected\": \"publish-error\", \"passed\": false}, {\"check\": \"trace paint-success then expand-digest\", \"actual\": \"expanded\", \"expected\": \"expanded\", \"passed\": true}, {\"check\": \"trace paint-failure then retry-show\", \"actual\": \"publishing\", \"expected\": \"publishing\", \"passed\": true}, {\"check\": \"trace retry-show then paint-success\", \"actual\": \"published\", \"expected\": \"published\", \"passed\": true}, {\"check\": \"trace retry-show then paint-failure\", \"actual\": \"publish-error\", \"expected\": \"publish-error\", \"passed\": true}, {\"check\": \"trace expand-digest then collapse-digest\", \"actual\": \"published\", \"expected\": \"published\", \"passed\": true}, {\"check\": \"trace collapse-digest then expand-digest\", \"actual\": \"expanded\", \"expected\": \"expanded\", \"passed\": true}, {\"check\": \"trace late-item then seal-success\", \"actual\": \"ready\", \"expected\": \"ready\", \"passed\": true}, {\"check\": \"trace late-item then late-item\", \"actual\": \"sealing\", \"expected\": \"sealing\", \"passed\": true}, {\"check\": \"domain state regression 1: members\", \"actual\": {\"phase\": \"sealing\", \"value\": [\"a\", \"b\"]}, \"expected\": {\"phase\": \"sealing\", \"value\": [\"a\", \"b\"]}, \"passed\": true}, {\"check\": \"domain state regression 2: shown\", \"actual\": {\"phase\": \"empty\", \"value\": []}, \"expected\": {\"phase\": \"empty\", \"value\": []}, \"passed\": true}, {\"check\": \"domain state regression 3: sealed\", \"actual\": {\"phase\": \"ready\", \"value\": [\"a\", \"b\"]}, \"expected\": {\"phase\": \"ready\", \"value\": [\"a\", \"b\"]}, \"passed\": true}, {\"check\": \"domain state regression 4: members\", \"actual\": {\"phase\": \"sealing\", \"value\": [\"a\", \"b\"]}, \"expected\": {\"phase\": \"sealing\", \"value\": [\"a\", \"b\"]}, \"passed\": true}, {\"check\": \"domain state regression 5: next_window\", \"actual\": {\"phase\": \"sealing\", \"value\": [\"c\"]}, \"expected\": {\"phase\": \"sealing\", \"value\": [\"c\"]}, \"passed\": true}, {\"check\": \"domain state regression 6: shown\", \"actual\": {\"phase\": \"published\", \"value\": [\"a\"]}, \"expected\": {\"phase\": \"published\", \"value\": [\"a\"]}, \"passed\": true}, {\"check\": \"domain state regression 7: shown\", \"actual\": {\"phase\": \"published\", \"value\": [\"a\", \"b\"]}, \"expected\": {\"phase\": \"published\", \"value\": [\"a\", \"b\"]}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.843,"exit_code":0,"observations":[{"actual":"sealing","check":"collecting / close-window","expected":"sealing","passed":true},{"actual":"ready","check":"sealing / seal-success","expected":"ready","passed":true},{"actual":"publishing","check":"ready / show-digest","expected":"publishing","passed":true},{"actual":"published","check":"publishing / paint-success","expected":"published","passed":true},{"actual":"publish-error","check":"publishing / paint-failure","expected":"publish-error","passed":true},{"actual":"publishing","check":"publish-error / retry-show","expected":"publishing","passed":true},{"actual":"expanded","check":"published / expand-digest","expected":"expanded","passed":true},{"actual":"published","check":"expanded / collapse-digest","expected":"published","passed":true},{"actual":"sealing","check":"sealing / late-item","expected":"sealing","passed":true},{"actual":"empty","check":"collecting / close-empty-window","expected":"empty","passed":true},{"actual":"collecting","check":"older notification incarnation","expected":"collecting","passed":true},{"actual":"collecting","check":"future notification incarnation","expected":"collecting","passed":true},{"actual":"collecting","check":"unknown event is inert","expected":"collecting","passed":true},{"actual":"collecting","check":"empty delivery batch","expected":"collecting","passed":true},{"actual":"sealing","check":"N stale deliveries before current delivery","expected":"sealing","passed":true},{"actual":"ready","check":"trace close-window then seal-success","expected":"ready","passed":true},{"actual":"sealing","check":"trace close-window then late-item","expected":"sealing","passed":true},{"actual":"publishing","check":"trace seal-success then show-digest","expected":"publishing","passed":true},{"actual":"published","check":"trace show-digest then paint-success","expected":"published","passed":true},{"actual":"publish-error","check":"trace show-digest then paint-failure","expected":"publish-error","passed":true},{"actual":"expanded","check":"trace paint-success then expand-digest","expected":"expanded","passed":true},{"actual":"publishing","check":"trace paint-failure then retry-show","expected":"publishing","passed":true},{"actual":"published","check":"trace retry-show then paint-success","expected":"published","passed":true},{"actual":"publish-error","check":"trace retry-show then paint-failure","expected":"publish-error","passed":true},{"actual":"published","check":"trace expand-digest then collapse-digest","expected":"published","passed":true},{"actual":"expanded","check":"trace collapse-digest then expand-digest","expected":"expanded","passed":true},{"actual":"ready","check":"trace late-item then seal-success","expected":"ready","passed":true},{"actual":"sealing","check":"trace late-item then late-item","expected":"sealing","passed":true},{"actual":{"phase":"sealing","value":["a","b"]},"check":"domain state regression 1: members","expected":{"phase":"sealing","value":["a","b"]},"passed":true},{"actual":{"phase":"empty","value":[]},"check":"domain state regression 2: shown","expected":{"phase":"empty","value":[]},"passed":true},{"actual":{"phase":"ready","value":["a","b"]},"check":"domain state regression 3: sealed","expected":{"phase":"ready","value":["a","b"]},"passed":true},{"actual":{"phase":"sealing","value":["a","b"]},"check":"domain state regression 4: members","expected":{"phase":"sealing","value":["a","b"]},"passed":true},{"actual":{"phase":"sealing","value":["c"]},"check":"domain state regression 5: next_window","expected":{"phase":"sealing","value":["c"]},"passed":true},{"actual":{"phase":"published","value":["a"]},"check":"domain state regression 6: shown","expected":{"phase":"published","value":["a"]},"passed":true},{"actual":{"phase":"published","value":["a","b"]},"check":"domain state regression 7: shown","expected":{"phase":"published","value":["a","b"]},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"collecting / close-window\", \"actual\": \"sealing\", \"expected\": \"sealing\", \"passed\": true}, {\"check\": \"sealing / seal-success\", \"actual\": \"ready\", \"expected\": \"ready\", \"passed\": true}, {\"check\": \"ready / show-digest\", \"actual\": \"publishing\", \"expected\": \"publishing\", \"passed\": true}, {\"check\": \"publishing / paint-success\", \"actual\": \"published\", \"expected\": \"published\", \"passed\": true}, {\"check\": \"publishing / paint-failure\", \"actual\": \"publish-error\", \"expected\": \"publish-error\", \"passed\": true}, {\"check\": \"publish-error / retry-show\", \"actual\": \"publishing\", \"expected\": \"publishing\", \"passed\": true}, {\"check\": \"published / expand-digest\", \"actual\": \"expanded\", \"expected\": \"expanded\", \"passed\": true}, {\"check\": \"expanded / collapse-digest\", \"actual\": \"published\", \"expected\": \"published\", \"passed\": true}, {\"check\": \"sealing / late-item\", \"actual\": \"sealing\", \"expected\": \"sealing\", \"passed\": true}, {\"check\": \"collecting / close-empty-window\", \"actual\": \"empty\", \"expected\": \"empty\", \"passed\": true}, {\"check\": \"older notification incarnation\", \"actual\": \"collecting\", \"expected\": \"collecting\", \"passed\": true}, {\"check\": \"future notification incarnation\", \"actual\": \"collecting\", \"expected\": \"collecting\", \"passed\": true}, {\"check\": \"unknown event is inert\", \"actual\": \"collecting\", \"expected\": \"collecting\", \"passed\": true}, {\"check\": \"empty delivery batch\", \"actual\": \"collecting\", \"expected\": \"collecting\", \"passed\": true}, {\"check\": \"N stale deliveries before current delivery\", \"actual\": \"sealing\", \"expected\": \"sealing\", \"passed\": true}, {\"check\": \"trace close-window then seal-success\", \"actual\": \"ready\", \"expected\": \"ready\", \"passed\": true}, {\"check\": \"trace close-window then late-item\", \"actual\": \"sealing\", \"expected\": \"sealing\", \"passed\": true}, {\"check\": \"trace seal-success then show-digest\", \"actual\": \"publishing\", \"expected\": \"publishing\", \"passed\": true}, {\"check\": \"trace show-digest then paint-success\", \"actual\": \"published\", \"expected\": \"published\", \"passed\": true}, {\"check\": \"trace show-digest then paint-failure\", \"actual\": \"publish-error\", \"expected\": \"publish-error\", \"passed\": true}, {\"check\": \"trace paint-success then expand-digest\", \"actual\": \"expanded\", \"expected\": \"expanded\", \"passed\": true}, {\"check\": \"trace paint-failure then retry-show\", \"actual\": \"publishing\", \"expected\": \"publishing\", \"passed\": true}, {\"check\": \"trace retry-show then paint-success\", \"actual\": \"published\", \"expected\": \"published\", \"passed\": true}, {\"check\": \"trace retry-show then paint-failure\", \"actual\": \"publish-error\", \"expected\": \"publish-error\", \"passed\": true}, {\"check\": \"trace expand-digest then collapse-digest\", \"actual\": \"published\", \"expected\": \"published\", \"passed\": true}, {\"check\": \"trace collapse-digest then expand-digest\", \"actual\": \"expanded\", \"expected\": \"expanded\", \"passed\": true}, {\"check\": \"trace late-item then seal-success\", \"actual\": \"ready\", \"expected\": \"ready\", \"passed\": true}, {\"check\": \"trace late-item then late-item\", \"actual\": \"sealing\", \"expected\": \"sealing\", \"passed\": true}, {\"check\": \"domain state regression 1: members\", \"actual\": {\"phase\": \"sealing\", \"value\": [\"a\", \"b\"]}, \"expected\": {\"phase\": \"sealing\", \"value\": [\"a\", \"b\"]}, \"passed\": true}, {\"check\": \"domain state regression 2: shown\", \"actual\": {\"phase\": \"empty\", \"value\": []}, \"expected\": {\"phase\": \"empty\", \"value\": []}, \"passed\": true}, {\"check\": \"domain state regression 3: sealed\", \"actual\": {\"phase\": \"ready\", \"value\": [\"a\", \"b\"]}, \"expected\": {\"phase\": \"ready\", \"value\": [\"a\", \"b\"]}, \"passed\": true}, {\"check\": \"domain state regression 4: members\", \"actual\": {\"phase\": \"sealing\", \"value\": [\"a\", \"b\"]}, \"expected\": {\"phase\": \"sealing\", \"value\": [\"a\", \"b\"]}, \"passed\": true}, {\"check\": \"domain state regression 5: next_window\", \"actual\": {\"phase\": \"sealing\", \"value\": [\"c\"]}, \"expected\": {\"phase\": \"sealing\", \"value\": [\"c\"]}, \"passed\": true}, {\"check\": \"domain state regression 6: shown\", \"actual\": {\"phase\": \"published\", \"value\": [\"a\"]}, \"expected\": {\"phase\": \"published\", \"value\": [\"a\"]}, \"passed\": true}, {\"check\": \"domain state regression 7: shown\", \"actual\": {\"phase\": \"published\", \"value\": [\"a\", \"b\"]}, \"expected\": {\"phase\": \"published\", \"value\": [\"a\", \"b\"]}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}