{"abstract":"The load-older event leaves a notification in end-of-history instead of loading-older.","category":"Notification interfaces","checks":37,"contract":"Inbox history pagination presentation is a bounded visual-notification workflow with mutable policy state {'rows': ['head'], 'filter': 2, 'anchor': 'head', 'has_more': True}. Its default transition relation is {('first-page', 'load-older'): 'loading-older', ('loading-older', 'nonempty-page'): 'older-appended', ('loading-older', 'empty-page'): 'end-of-history', ('loading-older', 'page-failure'): 'older-error', ('older-error', 'retry-older'): 'loading-older', ('older-appended', 'new-head-arrives'): 'head-update-pending', ('head-update-pending', 'show-new-head'): 'head-restoring', ('head-restoring', 'head-anchor-ready'): 'first-page', ('loading-older', 'filter-changed'): 'new-filter-loading', ('new-filter-loading', 'old-page-arrives'): 'new-filter-loading'}; 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-inbox-pagination","failed_approach":"Showing an appended page before receiving it fabricates content.","family":"s3-notification-interfaces-inbox-pagination-01","id":"FA-34841","implementations":{"attempt":{"sha256":"d26412769c51b2c13ca8611a7808ac536e98363f346ea08a1ffdab575b52b10b","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 = {('first-page', 'load-older'): 'older-appended', ('loading-older', 'nonempty-page'): 'older-appended', ('loading-older', 'empty-page'): 'end-of-history', ('loading-older', 'page-failure'): 'older-error', ('older-error', 'retry-older'): 'loading-older', ('older-appended', 'new-head-arrives'): 'head-update-pending', ('head-update-pending', 'show-new-head'): 'head-restoring', ('head-restoring', 'head-anchor-ready'): 'first-page', ('loading-older', 'filter-changed'): 'new-filter-loading', ('new-filter-loading', 'old-page-arrives'): 'new-filter-loading'}\n    data = json.loads(json.dumps({'rows': ['head'], 'filter': 2, 'anchor': 'head', 'has_more': True})) if payload is None else {**json.loads(json.dumps({'rows': ['head'], 'filter': 2, 'anchor': 'head', 'has_more': True})), **json.loads(json.dumps(payload))}\n    state = initial\n    for delivery in events:\n        event, event_generation = delivery[:2]\n        arg = delivery[2] if len(delivery) > 2 else {}\n        if event_generation == generation:\n            previous = state\n            if event in ('nonempty-page','empty-page','old-page-arrives') and arg.get('filter',data['filter']) != data['filter']: event = 'unknown-event'\n            if event == 'nonempty-page': data['rows'] += [x for x in arg.get('rows',['older']) if x not in data['rows']]\n            if event == 'filter-changed': data['filter'] += 1\n            state = table.get((state, event), state)\n            if state == 'end-of-history': data['has_more'] = False\n            if state == 'first-page': data['anchor'] = data['rows'][0] if data['rows'] else None\n            if state == 'new-filter-loading': data['rows'] = []\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('first-page / load-older', solve('first-page', [('load-older', N)], N), 'loading-older')\ncheck('loading-older / nonempty-page', solve('loading-older', [('nonempty-page', N)], N), 'older-appended')\ncheck('loading-older / empty-page', solve('loading-older', [('empty-page', N)], N), 'end-of-history')\ncheck('loading-older / page-failure', solve('loading-older', [('page-failure', N)], N), 'older-error')\ncheck('older-error / retry-older', solve('older-error', [('retry-older', N)], N), 'loading-older')\ncheck('older-appended / new-head-arrives', solve('older-appended', [('new-head-arrives', N)], N), 'head-update-pending')\ncheck('head-update-pending / show-new-head', solve('head-update-pending', [('show-new-head', N)], N), 'head-restoring')\ncheck('head-restoring / head-anchor-ready', solve('head-restoring', [('head-anchor-ready', N)], N), 'first-page')\ncheck('loading-older / filter-changed', solve('loading-older', [('filter-changed', N)], N), 'new-filter-loading')\ncheck('new-filter-loading / old-page-arrives', solve('new-filter-loading', [('old-page-arrives', N)], N), 'new-filter-loading')\ncheck('older notification incarnation', solve('first-page', [('load-older', N - 1)], N), 'first-page')\ncheck('future notification incarnation', solve('first-page', [('load-older', N + 1)], N), 'first-page')\ncheck('unknown event is inert', solve('first-page', [('unknown-event', N)], N), 'first-page')\ncheck('empty delivery batch', solve('first-page', [], N), 'first-page')\ncheck('N stale deliveries before current delivery', solve('first-page', [('load-older', N - 1)] * N + [('load-older', N)], N), 'loading-older')\ncheck('trace load-older then nonempty-page', solve('first-page', [('load-older', N), ('nonempty-page', N)], N), 'older-appended')\ncheck('trace load-older then empty-page', solve('first-page', [('load-older', N), ('empty-page', N)], N), 'end-of-history')\ncheck('trace load-older then page-failure', solve('first-page', [('load-older', N), ('page-failure', N)], N), 'older-error')\ncheck('trace load-older then filter-changed', solve('first-page', [('load-older', N), ('filter-changed', N)], N), 'new-filter-loading')\ncheck('trace nonempty-page then new-head-arrives', solve('loading-older', [('nonempty-page', N), ('new-head-arrives', N)], N), 'head-update-pending')\ncheck('trace page-failure then retry-older', solve('loading-older', [('page-failure', N), ('retry-older', N)], N), 'loading-older')\ncheck('trace retry-older then nonempty-page', solve('older-error', [('retry-older', N), ('nonempty-page', N)], N), 'older-appended')\ncheck('trace retry-older then empty-page', solve('older-error', [('retry-older', N), ('empty-page', N)], N), 'end-of-history')\ncheck('trace retry-older then page-failure', solve('older-error', [('retry-older', N), ('page-failure', N)], N), 'older-error')\ncheck('trace retry-older then filter-changed', solve('older-error', [('retry-older', N), ('filter-changed', N)], N), 'new-filter-loading')\ncheck('trace new-head-arrives then show-new-head', solve('older-appended', [('new-head-arrives', N), ('show-new-head', N)], N), 'head-restoring')\ncheck('trace show-new-head then head-anchor-ready', solve('head-update-pending', [('show-new-head', N), ('head-anchor-ready', N)], N), 'first-page')\ncheck('trace head-anchor-ready then load-older', solve('head-restoring', [('head-anchor-ready', N), ('load-older', N)], N), 'loading-older')\ncheck('trace filter-changed then old-page-arrives', solve('loading-older', [('filter-changed', N), ('old-page-arrives', N)], N), 'new-filter-loading')\ncheck('trace old-page-arrives then old-page-arrives', solve('new-filter-loading', [('old-page-arrives', N), ('old-page-arrives', N)], N), 'new-filter-loading')\ncheck('domain state regression 1: rows', solve('loading-older', [('nonempty-page', N, {'filter': 1, 'rows': ['stale']})], N, {}, 'rows'), {'phase': 'loading-older', 'value': ['head']})\ncheck('domain state regression 2: rows', solve('loading-older', [('nonempty-page', N, {'rows': ['head', 'old']})], N, {}, 'rows'), {'phase': 'older-appended', 'value': ['head', 'old']})\ncheck('domain state regression 3: has_more', solve('loading-older', [('empty-page', N, {})], N, {}, 'has_more'), {'phase': 'end-of-history', 'value': False})\ncheck('domain state regression 4: rows', solve('loading-older', [('filter-changed', N, {})], N, {}, 'rows'), {'phase': 'new-filter-loading', 'value': []})\ncheck('domain state regression 5: filter', solve('loading-older', [('filter-changed', N, {})], N, {}, 'filter'), {'phase': 'new-filter-loading', 'value': 3})\ncheck('domain state regression 6: anchor', solve('older-appended', [('new-head-arrives', N, {})], N, {'anchor': 'old'}, 'anchor'), {'phase': 'head-update-pending', 'value': 'old'})\ncheck('domain state regression 7: rows', solve('first-page', [('load-older', N, {}), ('filter-changed', N, {}), ('old-page-arrives', N, {'filter': 2, 'rows': ['old']})], N, {}, 'rows'), {'phase': 'new-filter-loading', 'value': []})\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":"4606eb32c093820cf8e7fd82f63797f0737299d46c25d7e2488f7552acd33099","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 = {('first-page', 'load-older'): 'end-of-history', ('loading-older', 'nonempty-page'): 'older-appended', ('loading-older', 'empty-page'): 'end-of-history', ('loading-older', 'page-failure'): 'older-error', ('older-error', 'retry-older'): 'loading-older', ('older-appended', 'new-head-arrives'): 'head-update-pending', ('head-update-pending', 'show-new-head'): 'head-restoring', ('head-restoring', 'head-anchor-ready'): 'first-page', ('loading-older', 'filter-changed'): 'new-filter-loading', ('new-filter-loading', 'old-page-arrives'): 'new-filter-loading'}\n    data = json.loads(json.dumps({'rows': ['head'], 'filter': 2, 'anchor': 'head', 'has_more': True})) if payload is None else {**json.loads(json.dumps({'rows': ['head'], 'filter': 2, 'anchor': 'head', 'has_more': True})), **json.loads(json.dumps(payload))}\n    state = initial\n    for delivery in events:\n        event, event_generation = delivery[:2]\n        arg = delivery[2] if len(delivery) > 2 else {}\n        if event_generation == generation:\n            previous = state\n            if event in ('nonempty-page','empty-page','old-page-arrives') and arg.get('filter',data['filter']) != data['filter']: event = 'unknown-event'\n            if event == 'nonempty-page': data['rows'] += [x for x in arg.get('rows',['older']) if x not in data['rows']]\n            if event == 'filter-changed': data['filter'] += 1\n            state = table.get((state, event), state)\n            if state == 'end-of-history': data['has_more'] = False\n            if state == 'first-page': data['anchor'] = data['rows'][0] if data['rows'] else None\n            if state == 'new-filter-loading': data['rows'] = []\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('first-page / load-older', solve('first-page', [('load-older', N)], N), 'loading-older')\ncheck('loading-older / nonempty-page', solve('loading-older', [('nonempty-page', N)], N), 'older-appended')\ncheck('loading-older / empty-page', solve('loading-older', [('empty-page', N)], N), 'end-of-history')\ncheck('loading-older / page-failure', solve('loading-older', [('page-failure', N)], N), 'older-error')\ncheck('older-error / retry-older', solve('older-error', [('retry-older', N)], N), 'loading-older')\ncheck('older-appended / new-head-arrives', solve('older-appended', [('new-head-arrives', N)], N), 'head-update-pending')\ncheck('head-update-pending / show-new-head', solve('head-update-pending', [('show-new-head', N)], N), 'head-restoring')\ncheck('head-restoring / head-anchor-ready', solve('head-restoring', [('head-anchor-ready', N)], N), 'first-page')\ncheck('loading-older / filter-changed', solve('loading-older', [('filter-changed', N)], N), 'new-filter-loading')\ncheck('new-filter-loading / old-page-arrives', solve('new-filter-loading', [('old-page-arrives', N)], N), 'new-filter-loading')\ncheck('older notification incarnation', solve('first-page', [('load-older', N - 1)], N), 'first-page')\ncheck('future notification incarnation', solve('first-page', [('load-older', N + 1)], N), 'first-page')\ncheck('unknown event is inert', solve('first-page', [('unknown-event', N)], N), 'first-page')\ncheck('empty delivery batch', solve('first-page', [], N), 'first-page')\ncheck('N stale deliveries before current delivery', solve('first-page', [('load-older', N - 1)] * N + [('load-older', N)], N), 'loading-older')\ncheck('trace load-older then nonempty-page', solve('first-page', [('load-older', N), ('nonempty-page', N)], N), 'older-appended')\ncheck('trace load-older then empty-page', solve('first-page', [('load-older', N), ('empty-page', N)], N), 'end-of-history')\ncheck('trace load-older then page-failure', solve('first-page', [('load-older', N), ('page-failure', N)], N), 'older-error')\ncheck('trace load-older then filter-changed', solve('first-page', [('load-older', N), ('filter-changed', N)], N), 'new-filter-loading')\ncheck('trace nonempty-page then new-head-arrives', solve('loading-older', [('nonempty-page', N), ('new-head-arrives', N)], N), 'head-update-pending')\ncheck('trace page-failure then retry-older', solve('loading-older', [('page-failure', N), ('retry-older', N)], N), 'loading-older')\ncheck('trace retry-older then nonempty-page', solve('older-error', [('retry-older', N), ('nonempty-page', N)], N), 'older-appended')\ncheck('trace retry-older then empty-page', solve('older-error', [('retry-older', N), ('empty-page', N)], N), 'end-of-history')\ncheck('trace retry-older then page-failure', solve('older-error', [('retry-older', N), ('page-failure', N)], N), 'older-error')\ncheck('trace retry-older then filter-changed', solve('older-error', [('retry-older', N), ('filter-changed', N)], N), 'new-filter-loading')\ncheck('trace new-head-arrives then show-new-head', solve('older-appended', [('new-head-arrives', N), ('show-new-head', N)], N), 'head-restoring')\ncheck('trace show-new-head then head-anchor-ready', solve('head-update-pending', [('show-new-head', N), ('head-anchor-ready', N)], N), 'first-page')\ncheck('trace head-anchor-ready then load-older', solve('head-restoring', [('head-anchor-ready', N), ('load-older', N)], N), 'loading-older')\ncheck('trace filter-changed then old-page-arrives', solve('loading-older', [('filter-changed', N), ('old-page-arrives', N)], N), 'new-filter-loading')\ncheck('trace old-page-arrives then old-page-arrives', solve('new-filter-loading', [('old-page-arrives', N), ('old-page-arrives', N)], N), 'new-filter-loading')\ncheck('domain state regression 1: rows', solve('loading-older', [('nonempty-page', N, {'filter': 1, 'rows': ['stale']})], N, {}, 'rows'), {'phase': 'loading-older', 'value': ['head']})\ncheck('domain state regression 2: rows', solve('loading-older', [('nonempty-page', N, {'rows': ['head', 'old']})], N, {}, 'rows'), {'phase': 'older-appended', 'value': ['head', 'old']})\ncheck('domain state regression 3: has_more', solve('loading-older', [('empty-page', N, {})], N, {}, 'has_more'), {'phase': 'end-of-history', 'value': False})\ncheck('domain state regression 4: rows', solve('loading-older', [('filter-changed', N, {})], N, {}, 'rows'), {'phase': 'new-filter-loading', 'value': []})\ncheck('domain state regression 5: filter', solve('loading-older', [('filter-changed', N, {})], N, {}, 'filter'), {'phase': 'new-filter-loading', 'value': 3})\ncheck('domain state regression 6: anchor', solve('older-appended', [('new-head-arrives', N, {})], N, {'anchor': 'old'}, 'anchor'), {'phase': 'head-update-pending', 'value': 'old'})\ncheck('domain state regression 7: rows', solve('first-page', [('load-older', N, {}), ('filter-changed', N, {}), ('old-page-arrives', N, {'filter': 2, 'rows': ['old']})], N, {}, 'rows'), {'phase': 'new-filter-loading', 'value': []})\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":"c4a1ca0d5b3fa3ee6da3f9771af70c65595eebef03e090e86fc811e85d99cc21","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 = {('first-page', 'load-older'): 'loading-older', ('loading-older', 'nonempty-page'): 'older-appended', ('loading-older', 'empty-page'): 'end-of-history', ('loading-older', 'page-failure'): 'older-error', ('older-error', 'retry-older'): 'loading-older', ('older-appended', 'new-head-arrives'): 'head-update-pending', ('head-update-pending', 'show-new-head'): 'head-restoring', ('head-restoring', 'head-anchor-ready'): 'first-page', ('loading-older', 'filter-changed'): 'new-filter-loading', ('new-filter-loading', 'old-page-arrives'): 'new-filter-loading'}\n    data = json.loads(json.dumps({'rows': ['head'], 'filter': 2, 'anchor': 'head', 'has_more': True})) if payload is None else {**json.loads(json.dumps({'rows': ['head'], 'filter': 2, 'anchor': 'head', 'has_more': True})), **json.loads(json.dumps(payload))}\n    state = initial\n    for delivery in events:\n        event, event_generation = delivery[:2]\n        arg = delivery[2] if len(delivery) > 2 else {}\n        if event_generation == generation:\n            previous = state\n            if event in ('nonempty-page','empty-page','old-page-arrives') and arg.get('filter',data['filter']) != data['filter']: event = 'unknown-event'\n            if event == 'nonempty-page': data['rows'] += [x for x in arg.get('rows',['older']) if x not in data['rows']]\n            if event == 'filter-changed': data['filter'] += 1\n            state = table.get((state, event), state)\n            if state == 'end-of-history': data['has_more'] = False\n            if state == 'first-page': data['anchor'] = data['rows'][0] if data['rows'] else None\n            if state == 'new-filter-loading': data['rows'] = []\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('first-page / load-older', solve('first-page', [('load-older', N)], N), 'loading-older')\ncheck('loading-older / nonempty-page', solve('loading-older', [('nonempty-page', N)], N), 'older-appended')\ncheck('loading-older / empty-page', solve('loading-older', [('empty-page', N)], N), 'end-of-history')\ncheck('loading-older / page-failure', solve('loading-older', [('page-failure', N)], N), 'older-error')\ncheck('older-error / retry-older', solve('older-error', [('retry-older', N)], N), 'loading-older')\ncheck('older-appended / new-head-arrives', solve('older-appended', [('new-head-arrives', N)], N), 'head-update-pending')\ncheck('head-update-pending / show-new-head', solve('head-update-pending', [('show-new-head', N)], N), 'head-restoring')\ncheck('head-restoring / head-anchor-ready', solve('head-restoring', [('head-anchor-ready', N)], N), 'first-page')\ncheck('loading-older / filter-changed', solve('loading-older', [('filter-changed', N)], N), 'new-filter-loading')\ncheck('new-filter-loading / old-page-arrives', solve('new-filter-loading', [('old-page-arrives', N)], N), 'new-filter-loading')\ncheck('older notification incarnation', solve('first-page', [('load-older', N - 1)], N), 'first-page')\ncheck('future notification incarnation', solve('first-page', [('load-older', N + 1)], N), 'first-page')\ncheck('unknown event is inert', solve('first-page', [('unknown-event', N)], N), 'first-page')\ncheck('empty delivery batch', solve('first-page', [], N), 'first-page')\ncheck('N stale deliveries before current delivery', solve('first-page', [('load-older', N - 1)] * N + [('load-older', N)], N), 'loading-older')\ncheck('trace load-older then nonempty-page', solve('first-page', [('load-older', N), ('nonempty-page', N)], N), 'older-appended')\ncheck('trace load-older then empty-page', solve('first-page', [('load-older', N), ('empty-page', N)], N), 'end-of-history')\ncheck('trace load-older then page-failure', solve('first-page', [('load-older', N), ('page-failure', N)], N), 'older-error')\ncheck('trace load-older then filter-changed', solve('first-page', [('load-older', N), ('filter-changed', N)], N), 'new-filter-loading')\ncheck('trace nonempty-page then new-head-arrives', solve('loading-older', [('nonempty-page', N), ('new-head-arrives', N)], N), 'head-update-pending')\ncheck('trace page-failure then retry-older', solve('loading-older', [('page-failure', N), ('retry-older', N)], N), 'loading-older')\ncheck('trace retry-older then nonempty-page', solve('older-error', [('retry-older', N), ('nonempty-page', N)], N), 'older-appended')\ncheck('trace retry-older then empty-page', solve('older-error', [('retry-older', N), ('empty-page', N)], N), 'end-of-history')\ncheck('trace retry-older then page-failure', solve('older-error', [('retry-older', N), ('page-failure', N)], N), 'older-error')\ncheck('trace retry-older then filter-changed', solve('older-error', [('retry-older', N), ('filter-changed', N)], N), 'new-filter-loading')\ncheck('trace new-head-arrives then show-new-head', solve('older-appended', [('new-head-arrives', N), ('show-new-head', N)], N), 'head-restoring')\ncheck('trace show-new-head then head-anchor-ready', solve('head-update-pending', [('show-new-head', N), ('head-anchor-ready', N)], N), 'first-page')\ncheck('trace head-anchor-ready then load-older', solve('head-restoring', [('head-anchor-ready', N), ('load-older', N)], N), 'loading-older')\ncheck('trace filter-changed then old-page-arrives', solve('loading-older', [('filter-changed', N), ('old-page-arrives', N)], N), 'new-filter-loading')\ncheck('trace old-page-arrives then old-page-arrives', solve('new-filter-loading', [('old-page-arrives', N), ('old-page-arrives', N)], N), 'new-filter-loading')\ncheck('domain state regression 1: rows', solve('loading-older', [('nonempty-page', N, {'filter': 1, 'rows': ['stale']})], N, {}, 'rows'), {'phase': 'loading-older', 'value': ['head']})\ncheck('domain state regression 2: rows', solve('loading-older', [('nonempty-page', N, {'rows': ['head', 'old']})], N, {}, 'rows'), {'phase': 'older-appended', 'value': ['head', 'old']})\ncheck('domain state regression 3: has_more', solve('loading-older', [('empty-page', N, {})], N, {}, 'has_more'), {'phase': 'end-of-history', 'value': False})\ncheck('domain state regression 4: rows', solve('loading-older', [('filter-changed', N, {})], N, {}, 'rows'), {'phase': 'new-filter-loading', 'value': []})\ncheck('domain state regression 5: filter', solve('loading-older', [('filter-changed', N, {})], N, {}, 'filter'), {'phase': 'new-filter-loading', 'value': 3})\ncheck('domain state regression 6: anchor', solve('older-appended', [('new-head-arrives', N, {})], N, {'anchor': 'old'}, 'anchor'), {'phase': 'head-update-pending', 'value': 'old'})\ncheck('domain state regression 7: rows', solve('first-page', [('load-older', N, {}), ('filter-changed', N, {}), ('old-page-arrives', N, {'filter': 2, 'rows': ['old']})], N, {}, 'rows'), {'phase': 'new-filter-loading', 'value': []})\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-inbox-pagination-01","generated_at":"2026-09-29T14:42:35.854723+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 first-page / load-older transition to loading-older; preserve the other explicitly stipulated transitions.","root_cause":"Requesting history incorrectly announces there are no more notifications.","sha256":"08a5a54fbcf77c258b4b0a7800fa913f6f6b44780ebaeeabccad4388872b55c4","title":"Inbox history pagination presentation: load-older from first-page · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.161,"exit_code":1,"observations":[{"actual":"older-appended","check":"first-page / load-older","expected":"loading-older","passed":false},{"actual":"older-appended","check":"loading-older / nonempty-page","expected":"older-appended","passed":true},{"actual":"end-of-history","check":"loading-older / empty-page","expected":"end-of-history","passed":true},{"actual":"older-error","check":"loading-older / page-failure","expected":"older-error","passed":true},{"actual":"loading-older","check":"older-error / retry-older","expected":"loading-older","passed":true},{"actual":"head-update-pending","check":"older-appended / new-head-arrives","expected":"head-update-pending","passed":true},{"actual":"head-restoring","check":"head-update-pending / show-new-head","expected":"head-restoring","passed":true},{"actual":"first-page","check":"head-restoring / head-anchor-ready","expected":"first-page","passed":true},{"actual":"new-filter-loading","check":"loading-older / filter-changed","expected":"new-filter-loading","passed":true},{"actual":"new-filter-loading","check":"new-filter-loading / old-page-arrives","expected":"new-filter-loading","passed":true},{"actual":"first-page","check":"older notification incarnation","expected":"first-page","passed":true},{"actual":"first-page","check":"future notification incarnation","expected":"first-page","passed":true},{"actual":"first-page","check":"unknown event is inert","expected":"first-page","passed":true},{"actual":"first-page","check":"empty delivery batch","expected":"first-page","passed":true},{"actual":"older-appended","check":"N stale deliveries before current delivery","expected":"loading-older","passed":false},{"actual":"older-appended","check":"trace load-older then nonempty-page","expected":"older-appended","passed":true},{"actual":"older-appended","check":"trace load-older then empty-page","expected":"end-of-history","passed":false},{"actual":"older-appended","check":"trace load-older then page-failure","expected":"older-error","passed":false},{"actual":"older-appended","check":"trace load-older then filter-changed","expected":"new-filter-loading","passed":false},{"actual":"head-update-pending","check":"trace nonempty-page then new-head-arrives","expected":"head-update-pending","passed":true},{"actual":"loading-older","check":"trace page-failure then retry-older","expected":"loading-older","passed":true},{"actual":"older-appended","check":"trace retry-older then nonempty-page","expected":"older-appended","passed":true},{"actual":"end-of-history","check":"trace retry-older then empty-page","expected":"end-of-history","passed":true},{"actual":"older-error","check":"trace retry-older then page-failure","expected":"older-error","passed":true},{"actual":"new-filter-loading","check":"trace retry-older then filter-changed","expected":"new-filter-loading","passed":true},{"actual":"head-restoring","check":"trace new-head-arrives then show-new-head","expected":"head-restoring","passed":true},{"actual":"first-page","check":"trace show-new-head then head-anchor-ready","expected":"first-page","passed":true},{"actual":"older-appended","check":"trace head-anchor-ready then load-older","expected":"loading-older","passed":false},{"actual":"new-filter-loading","check":"trace filter-changed then old-page-arrives","expected":"new-filter-loading","passed":true},{"actual":"new-filter-loading","check":"trace old-page-arrives then old-page-arrives","expected":"new-filter-loading","passed":true},{"actual":{"phase":"loading-older","value":["head"]},"check":"domain state regression 1: rows","expected":{"phase":"loading-older","value":["head"]},"passed":true},{"actual":{"phase":"older-appended","value":["head","old"]},"check":"domain state regression 2: rows","expected":{"phase":"older-appended","value":["head","old"]},"passed":true},{"actual":{"phase":"end-of-history","value":false},"check":"domain state regression 3: has_more","expected":{"phase":"end-of-history","value":false},"passed":true},{"actual":{"phase":"new-filter-loading","value":[]},"check":"domain state regression 4: rows","expected":{"phase":"new-filter-loading","value":[]},"passed":true},{"actual":{"phase":"new-filter-loading","value":3},"check":"domain state regression 5: filter","expected":{"phase":"new-filter-loading","value":3},"passed":true},{"actual":{"phase":"head-update-pending","value":"old"},"check":"domain state regression 6: anchor","expected":{"phase":"head-update-pending","value":"old"},"passed":true},{"actual":{"phase":"older-appended","value":["head"]},"check":"domain state regression 7: rows","expected":{"phase":"new-filter-loading","value":[]},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"first-page / load-older\", \"actual\": \"older-appended\", \"expected\": \"loading-older\", \"passed\": false}, {\"check\": \"loading-older / nonempty-page\", \"actual\": \"older-appended\", \"expected\": \"older-appended\", \"passed\": true}, {\"check\": \"loading-older / empty-page\", \"actual\": \"end-of-history\", \"expected\": \"end-of-history\", \"passed\": true}, {\"check\": \"loading-older / page-failure\", \"actual\": \"older-error\", \"expected\": \"older-error\", \"passed\": true}, {\"check\": \"older-error / retry-older\", \"actual\": \"loading-older\", \"expected\": \"loading-older\", \"passed\": true}, {\"check\": \"older-appended / new-head-arrives\", \"actual\": \"head-update-pending\", \"expected\": \"head-update-pending\", \"passed\": true}, {\"check\": \"head-update-pending / show-new-head\", \"actual\": \"head-restoring\", \"expected\": \"head-restoring\", \"passed\": true}, {\"check\": \"head-restoring / head-anchor-ready\", \"actual\": \"first-page\", \"expected\": \"first-page\", \"passed\": true}, {\"check\": \"loading-older / filter-changed\", \"actual\": \"new-filter-loading\", \"expected\": \"new-filter-loading\", \"passed\": true}, {\"check\": \"new-filter-loading / old-page-arrives\", \"actual\": \"new-filter-loading\", \"expected\": \"new-filter-loading\", \"passed\": true}, {\"check\": \"older notification incarnation\", \"actual\": \"first-page\", \"expected\": \"first-page\", \"passed\": true}, {\"check\": \"future notification incarnation\", \"actual\": \"first-page\", \"expected\": \"first-page\", \"passed\": true}, {\"check\": \"unknown event is inert\", \"actual\": \"first-page\", \"expected\": \"first-page\", \"passed\": true}, {\"check\": \"empty delivery batch\", \"actual\": \"first-page\", \"expected\": \"first-page\", \"passed\": true}, {\"check\": \"N stale deliveries before current delivery\", \"actual\": \"older-appended\", \"expected\": \"loading-older\", \"passed\": false}, {\"check\": \"trace load-older then nonempty-page\", \"actual\": \"older-appended\", \"expected\": \"older-appended\", \"passed\": true}, {\"check\": \"trace load-older then empty-page\", \"actual\": \"older-appended\", \"expected\": \"end-of-history\", \"passed\": false}, {\"check\": \"trace load-older then page-failure\", \"actual\": \"older-appended\", \"expected\": \"older-error\", \"passed\": false}, {\"check\": \"trace load-older then filter-changed\", \"actual\": \"older-appended\", \"expected\": \"new-filter-loading\", \"passed\": false}, {\"check\": \"trace nonempty-page then new-head-arrives\", \"actual\": \"head-update-pending\", \"expected\": \"head-update-pending\", \"passed\": true}, {\"check\": \"trace page-failure then retry-older\", \"actual\": \"loading-older\", \"expected\": \"loading-older\", \"passed\": true}, {\"check\": \"trace retry-older then nonempty-page\", \"actual\": \"older-appended\", \"expected\": \"older-appended\", \"passed\": true}, {\"check\": \"trace retry-older then empty-page\", \"actual\": \"end-of-history\", \"expected\": \"end-of-history\", \"passed\": true}, {\"check\": \"trace retry-older then page-failure\", \"actual\": \"older-error\", \"expected\": \"older-error\", \"passed\": true}, {\"check\": \"trace retry-older then filter-changed\", \"actual\": \"new-filter-loading\", \"expected\": \"new-filter-loading\", \"passed\": true}, {\"check\": \"trace new-head-arrives then show-new-head\", \"actual\": \"head-restoring\", \"expected\": \"head-restoring\", \"passed\": true}, {\"check\": \"trace show-new-head then head-anchor-ready\", \"actual\": \"first-page\", \"expected\": \"first-page\", \"passed\": true}, {\"check\": \"trace head-anchor-ready then load-older\", \"actual\": \"older-appended\", \"expected\": \"loading-older\", \"passed\": false}, {\"check\": \"trace filter-changed then old-page-arrives\", \"actual\": \"new-filter-loading\", \"expected\": \"new-filter-loading\", \"passed\": true}, {\"check\": \"trace old-page-arrives then old-page-arrives\", \"actual\": \"new-filter-loading\", \"expected\": \"new-filter-loading\", \"passed\": true}, {\"check\": \"domain state regression 1: rows\", \"actual\": {\"phase\": \"loading-older\", \"value\": [\"head\"]}, \"expected\": {\"phase\": \"loading-older\", \"value\": [\"head\"]}, \"passed\": true}, {\"check\": \"domain state regression 2: rows\", \"actual\": {\"phase\": \"older-appended\", \"value\": [\"head\", \"old\"]}, \"expected\": {\"phase\": \"older-appended\", \"value\": [\"head\", \"old\"]}, \"passed\": true}, {\"check\": \"domain state regression 3: has_more\", \"actual\": {\"phase\": \"end-of-history\", \"value\": false}, \"expected\": {\"phase\": \"end-of-history\", \"value\": false}, \"passed\": true}, {\"check\": \"domain state regression 4: rows\", \"actual\": {\"phase\": \"new-filter-loading\", \"value\": []}, \"expected\": {\"phase\": \"new-filter-loading\", \"value\": []}, \"passed\": true}, {\"check\": \"domain state regression 5: filter\", \"actual\": {\"phase\": \"new-filter-loading\", \"value\": 3}, \"expected\": {\"phase\": \"new-filter-loading\", \"value\": 3}, \"passed\": true}, {\"check\": \"domain state regression 6: anchor\", \"actual\": {\"phase\": \"head-update-pending\", \"value\": \"old\"}, \"expected\": {\"phase\": \"head-update-pending\", \"value\": \"old\"}, \"passed\": true}, {\"check\": \"domain state regression 7: rows\", \"actual\": {\"phase\": \"older-appended\", \"value\": [\"head\"]}, \"expected\": {\"phase\": \"new-filter-loading\", \"value\": []}, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.864,"exit_code":1,"observations":[{"actual":"end-of-history","check":"first-page / load-older","expected":"loading-older","passed":false},{"actual":"older-appended","check":"loading-older / nonempty-page","expected":"older-appended","passed":true},{"actual":"end-of-history","check":"loading-older / empty-page","expected":"end-of-history","passed":true},{"actual":"older-error","check":"loading-older / page-failure","expected":"older-error","passed":true},{"actual":"loading-older","check":"older-error / retry-older","expected":"loading-older","passed":true},{"actual":"head-update-pending","check":"older-appended / new-head-arrives","expected":"head-update-pending","passed":true},{"actual":"head-restoring","check":"head-update-pending / show-new-head","expected":"head-restoring","passed":true},{"actual":"first-page","check":"head-restoring / head-anchor-ready","expected":"first-page","passed":true},{"actual":"new-filter-loading","check":"loading-older / filter-changed","expected":"new-filter-loading","passed":true},{"actual":"new-filter-loading","check":"new-filter-loading / old-page-arrives","expected":"new-filter-loading","passed":true},{"actual":"first-page","check":"older notification incarnation","expected":"first-page","passed":true},{"actual":"first-page","check":"future notification incarnation","expected":"first-page","passed":true},{"actual":"first-page","check":"unknown event is inert","expected":"first-page","passed":true},{"actual":"first-page","check":"empty delivery batch","expected":"first-page","passed":true},{"actual":"end-of-history","check":"N stale deliveries before current delivery","expected":"loading-older","passed":false},{"actual":"end-of-history","check":"trace load-older then nonempty-page","expected":"older-appended","passed":false},{"actual":"end-of-history","check":"trace load-older then empty-page","expected":"end-of-history","passed":true},{"actual":"end-of-history","check":"trace load-older then page-failure","expected":"older-error","passed":false},{"actual":"end-of-history","check":"trace load-older then filter-changed","expected":"new-filter-loading","passed":false},{"actual":"head-update-pending","check":"trace nonempty-page then new-head-arrives","expected":"head-update-pending","passed":true},{"actual":"loading-older","check":"trace page-failure then retry-older","expected":"loading-older","passed":true},{"actual":"older-appended","check":"trace retry-older then nonempty-page","expected":"older-appended","passed":true},{"actual":"end-of-history","check":"trace retry-older then empty-page","expected":"end-of-history","passed":true},{"actual":"older-error","check":"trace retry-older then page-failure","expected":"older-error","passed":true},{"actual":"new-filter-loading","check":"trace retry-older then filter-changed","expected":"new-filter-loading","passed":true},{"actual":"head-restoring","check":"trace new-head-arrives then show-new-head","expected":"head-restoring","passed":true},{"actual":"first-page","check":"trace show-new-head then head-anchor-ready","expected":"first-page","passed":true},{"actual":"end-of-history","check":"trace head-anchor-ready then load-older","expected":"loading-older","passed":false},{"actual":"new-filter-loading","check":"trace filter-changed then old-page-arrives","expected":"new-filter-loading","passed":true},{"actual":"new-filter-loading","check":"trace old-page-arrives then old-page-arrives","expected":"new-filter-loading","passed":true},{"actual":{"phase":"loading-older","value":["head"]},"check":"domain state regression 1: rows","expected":{"phase":"loading-older","value":["head"]},"passed":true},{"actual":{"phase":"older-appended","value":["head","old"]},"check":"domain state regression 2: rows","expected":{"phase":"older-appended","value":["head","old"]},"passed":true},{"actual":{"phase":"end-of-history","value":false},"check":"domain state regression 3: has_more","expected":{"phase":"end-of-history","value":false},"passed":true},{"actual":{"phase":"new-filter-loading","value":[]},"check":"domain state regression 4: rows","expected":{"phase":"new-filter-loading","value":[]},"passed":true},{"actual":{"phase":"new-filter-loading","value":3},"check":"domain state regression 5: filter","expected":{"phase":"new-filter-loading","value":3},"passed":true},{"actual":{"phase":"head-update-pending","value":"old"},"check":"domain state regression 6: anchor","expected":{"phase":"head-update-pending","value":"old"},"passed":true},{"actual":{"phase":"end-of-history","value":["head"]},"check":"domain state regression 7: rows","expected":{"phase":"new-filter-loading","value":[]},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"first-page / load-older\", \"actual\": \"end-of-history\", \"expected\": \"loading-older\", \"passed\": false}, {\"check\": \"loading-older / nonempty-page\", \"actual\": \"older-appended\", \"expected\": \"older-appended\", \"passed\": true}, {\"check\": \"loading-older / empty-page\", \"actual\": \"end-of-history\", \"expected\": \"end-of-history\", \"passed\": true}, {\"check\": \"loading-older / page-failure\", \"actual\": \"older-error\", \"expected\": \"older-error\", \"passed\": true}, {\"check\": \"older-error / retry-older\", \"actual\": \"loading-older\", \"expected\": \"loading-older\", \"passed\": true}, {\"check\": \"older-appended / new-head-arrives\", \"actual\": \"head-update-pending\", \"expected\": \"head-update-pending\", \"passed\": true}, {\"check\": \"head-update-pending / show-new-head\", \"actual\": \"head-restoring\", \"expected\": \"head-restoring\", \"passed\": true}, {\"check\": \"head-restoring / head-anchor-ready\", \"actual\": \"first-page\", \"expected\": \"first-page\", \"passed\": true}, {\"check\": \"loading-older / filter-changed\", \"actual\": \"new-filter-loading\", \"expected\": \"new-filter-loading\", \"passed\": true}, {\"check\": \"new-filter-loading / old-page-arrives\", \"actual\": \"new-filter-loading\", \"expected\": \"new-filter-loading\", \"passed\": true}, {\"check\": \"older notification incarnation\", \"actual\": \"first-page\", \"expected\": \"first-page\", \"passed\": true}, {\"check\": \"future notification incarnation\", \"actual\": \"first-page\", \"expected\": \"first-page\", \"passed\": true}, {\"check\": \"unknown event is inert\", \"actual\": \"first-page\", \"expected\": \"first-page\", \"passed\": true}, {\"check\": \"empty delivery batch\", \"actual\": \"first-page\", \"expected\": \"first-page\", \"passed\": true}, {\"check\": \"N stale deliveries before current delivery\", \"actual\": \"end-of-history\", \"expected\": \"loading-older\", \"passed\": false}, {\"check\": \"trace load-older then nonempty-page\", \"actual\": \"end-of-history\", \"expected\": \"older-appended\", \"passed\": false}, {\"check\": \"trace load-older then empty-page\", \"actual\": \"end-of-history\", \"expected\": \"end-of-history\", \"passed\": true}, {\"check\": \"trace load-older then page-failure\", \"actual\": \"end-of-history\", \"expected\": \"older-error\", \"passed\": false}, {\"check\": \"trace load-older then filter-changed\", \"actual\": \"end-of-history\", \"expected\": \"new-filter-loading\", \"passed\": false}, {\"check\": \"trace nonempty-page then new-head-arrives\", \"actual\": \"head-update-pending\", \"expected\": \"head-update-pending\", \"passed\": true}, {\"check\": \"trace page-failure then retry-older\", \"actual\": \"loading-older\", \"expected\": \"loading-older\", \"passed\": true}, {\"check\": \"trace retry-older then nonempty-page\", \"actual\": \"older-appended\", \"expected\": \"older-appended\", \"passed\": true}, {\"check\": \"trace retry-older then empty-page\", \"actual\": \"end-of-history\", \"expected\": \"end-of-history\", \"passed\": true}, {\"check\": \"trace retry-older then page-failure\", \"actual\": \"older-error\", \"expected\": \"older-error\", \"passed\": true}, {\"check\": \"trace retry-older then filter-changed\", \"actual\": \"new-filter-loading\", \"expected\": \"new-filter-loading\", \"passed\": true}, {\"check\": \"trace new-head-arrives then show-new-head\", \"actual\": \"head-restoring\", \"expected\": \"head-restoring\", \"passed\": true}, {\"check\": \"trace show-new-head then head-anchor-ready\", \"actual\": \"first-page\", \"expected\": \"first-page\", \"passed\": true}, {\"check\": \"trace head-anchor-ready then load-older\", \"actual\": \"end-of-history\", \"expected\": \"loading-older\", \"passed\": false}, {\"check\": \"trace filter-changed then old-page-arrives\", \"actual\": \"new-filter-loading\", \"expected\": \"new-filter-loading\", \"passed\": true}, {\"check\": \"trace old-page-arrives then old-page-arrives\", \"actual\": \"new-filter-loading\", \"expected\": \"new-filter-loading\", \"passed\": true}, {\"check\": \"domain state regression 1: rows\", \"actual\": {\"phase\": \"loading-older\", \"value\": [\"head\"]}, \"expected\": {\"phase\": \"loading-older\", \"value\": [\"head\"]}, \"passed\": true}, {\"check\": \"domain state regression 2: rows\", \"actual\": {\"phase\": \"older-appended\", \"value\": [\"head\", \"old\"]}, \"expected\": {\"phase\": \"older-appended\", \"value\": [\"head\", \"old\"]}, \"passed\": true}, {\"check\": \"domain state regression 3: has_more\", \"actual\": {\"phase\": \"end-of-history\", \"value\": false}, \"expected\": {\"phase\": \"end-of-history\", \"value\": false}, \"passed\": true}, {\"check\": \"domain state regression 4: rows\", \"actual\": {\"phase\": \"new-filter-loading\", \"value\": []}, \"expected\": {\"phase\": \"new-filter-loading\", \"value\": []}, \"passed\": true}, {\"check\": \"domain state regression 5: filter\", \"actual\": {\"phase\": \"new-filter-loading\", \"value\": 3}, \"expected\": {\"phase\": \"new-filter-loading\", \"value\": 3}, \"passed\": true}, {\"check\": \"domain state regression 6: anchor\", \"actual\": {\"phase\": \"head-update-pending\", \"value\": \"old\"}, \"expected\": {\"phase\": \"head-update-pending\", \"value\": \"old\"}, \"passed\": true}, {\"check\": \"domain state regression 7: rows\", \"actual\": {\"phase\": \"end-of-history\", \"value\": [\"head\"]}, \"expected\": {\"phase\": \"new-filter-loading\", \"value\": []}, \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":44.879,"exit_code":0,"observations":[{"actual":"loading-older","check":"first-page / load-older","expected":"loading-older","passed":true},{"actual":"older-appended","check":"loading-older / nonempty-page","expected":"older-appended","passed":true},{"actual":"end-of-history","check":"loading-older / empty-page","expected":"end-of-history","passed":true},{"actual":"older-error","check":"loading-older / page-failure","expected":"older-error","passed":true},{"actual":"loading-older","check":"older-error / retry-older","expected":"loading-older","passed":true},{"actual":"head-update-pending","check":"older-appended / new-head-arrives","expected":"head-update-pending","passed":true},{"actual":"head-restoring","check":"head-update-pending / show-new-head","expected":"head-restoring","passed":true},{"actual":"first-page","check":"head-restoring / head-anchor-ready","expected":"first-page","passed":true},{"actual":"new-filter-loading","check":"loading-older / filter-changed","expected":"new-filter-loading","passed":true},{"actual":"new-filter-loading","check":"new-filter-loading / old-page-arrives","expected":"new-filter-loading","passed":true},{"actual":"first-page","check":"older notification incarnation","expected":"first-page","passed":true},{"actual":"first-page","check":"future notification incarnation","expected":"first-page","passed":true},{"actual":"first-page","check":"unknown event is inert","expected":"first-page","passed":true},{"actual":"first-page","check":"empty delivery batch","expected":"first-page","passed":true},{"actual":"loading-older","check":"N stale deliveries before current delivery","expected":"loading-older","passed":true},{"actual":"older-appended","check":"trace load-older then nonempty-page","expected":"older-appended","passed":true},{"actual":"end-of-history","check":"trace load-older then empty-page","expected":"end-of-history","passed":true},{"actual":"older-error","check":"trace load-older then page-failure","expected":"older-error","passed":true},{"actual":"new-filter-loading","check":"trace load-older then filter-changed","expected":"new-filter-loading","passed":true},{"actual":"head-update-pending","check":"trace nonempty-page then new-head-arrives","expected":"head-update-pending","passed":true},{"actual":"loading-older","check":"trace page-failure then retry-older","expected":"loading-older","passed":true},{"actual":"older-appended","check":"trace retry-older then nonempty-page","expected":"older-appended","passed":true},{"actual":"end-of-history","check":"trace retry-older then empty-page","expected":"end-of-history","passed":true},{"actual":"older-error","check":"trace retry-older then page-failure","expected":"older-error","passed":true},{"actual":"new-filter-loading","check":"trace retry-older then filter-changed","expected":"new-filter-loading","passed":true},{"actual":"head-restoring","check":"trace new-head-arrives then show-new-head","expected":"head-restoring","passed":true},{"actual":"first-page","check":"trace show-new-head then head-anchor-ready","expected":"first-page","passed":true},{"actual":"loading-older","check":"trace head-anchor-ready then load-older","expected":"loading-older","passed":true},{"actual":"new-filter-loading","check":"trace filter-changed then old-page-arrives","expected":"new-filter-loading","passed":true},{"actual":"new-filter-loading","check":"trace old-page-arrives then old-page-arrives","expected":"new-filter-loading","passed":true},{"actual":{"phase":"loading-older","value":["head"]},"check":"domain state regression 1: rows","expected":{"phase":"loading-older","value":["head"]},"passed":true},{"actual":{"phase":"older-appended","value":["head","old"]},"check":"domain state regression 2: rows","expected":{"phase":"older-appended","value":["head","old"]},"passed":true},{"actual":{"phase":"end-of-history","value":false},"check":"domain state regression 3: has_more","expected":{"phase":"end-of-history","value":false},"passed":true},{"actual":{"phase":"new-filter-loading","value":[]},"check":"domain state regression 4: rows","expected":{"phase":"new-filter-loading","value":[]},"passed":true},{"actual":{"phase":"new-filter-loading","value":3},"check":"domain state regression 5: filter","expected":{"phase":"new-filter-loading","value":3},"passed":true},{"actual":{"phase":"head-update-pending","value":"old"},"check":"domain state regression 6: anchor","expected":{"phase":"head-update-pending","value":"old"},"passed":true},{"actual":{"phase":"new-filter-loading","value":[]},"check":"domain state regression 7: rows","expected":{"phase":"new-filter-loading","value":[]},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"first-page / load-older\", \"actual\": \"loading-older\", \"expected\": \"loading-older\", \"passed\": true}, {\"check\": \"loading-older / nonempty-page\", \"actual\": \"older-appended\", \"expected\": \"older-appended\", \"passed\": true}, {\"check\": \"loading-older / empty-page\", \"actual\": \"end-of-history\", \"expected\": \"end-of-history\", \"passed\": true}, {\"check\": \"loading-older / page-failure\", \"actual\": \"older-error\", \"expected\": \"older-error\", \"passed\": true}, {\"check\": \"older-error / retry-older\", \"actual\": \"loading-older\", \"expected\": \"loading-older\", \"passed\": true}, {\"check\": \"older-appended / new-head-arrives\", \"actual\": \"head-update-pending\", \"expected\": \"head-update-pending\", \"passed\": true}, {\"check\": \"head-update-pending / show-new-head\", \"actual\": \"head-restoring\", \"expected\": \"head-restoring\", \"passed\": true}, {\"check\": \"head-restoring / head-anchor-ready\", \"actual\": \"first-page\", \"expected\": \"first-page\", \"passed\": true}, {\"check\": \"loading-older / filter-changed\", \"actual\": \"new-filter-loading\", \"expected\": \"new-filter-loading\", \"passed\": true}, {\"check\": \"new-filter-loading / old-page-arrives\", \"actual\": \"new-filter-loading\", \"expected\": \"new-filter-loading\", \"passed\": true}, {\"check\": \"older notification incarnation\", \"actual\": \"first-page\", \"expected\": \"first-page\", \"passed\": true}, {\"check\": \"future notification incarnation\", \"actual\": \"first-page\", \"expected\": \"first-page\", \"passed\": true}, {\"check\": \"unknown event is inert\", \"actual\": \"first-page\", \"expected\": \"first-page\", \"passed\": true}, {\"check\": \"empty delivery batch\", \"actual\": \"first-page\", \"expected\": \"first-page\", \"passed\": true}, {\"check\": \"N stale deliveries before current delivery\", \"actual\": \"loading-older\", \"expected\": \"loading-older\", \"passed\": true}, {\"check\": \"trace load-older then nonempty-page\", \"actual\": \"older-appended\", \"expected\": \"older-appended\", \"passed\": true}, {\"check\": \"trace load-older then empty-page\", \"actual\": \"end-of-history\", \"expected\": \"end-of-history\", \"passed\": true}, {\"check\": \"trace load-older then page-failure\", \"actual\": \"older-error\", \"expected\": \"older-error\", \"passed\": true}, {\"check\": \"trace load-older then filter-changed\", \"actual\": \"new-filter-loading\", \"expected\": \"new-filter-loading\", \"passed\": true}, {\"check\": \"trace nonempty-page then new-head-arrives\", \"actual\": \"head-update-pending\", \"expected\": \"head-update-pending\", \"passed\": true}, {\"check\": \"trace page-failure then retry-older\", \"actual\": \"loading-older\", \"expected\": \"loading-older\", \"passed\": true}, {\"check\": \"trace retry-older then nonempty-page\", \"actual\": \"older-appended\", \"expected\": \"older-appended\", \"passed\": true}, {\"check\": \"trace retry-older then empty-page\", \"actual\": \"end-of-history\", \"expected\": \"end-of-history\", \"passed\": true}, {\"check\": \"trace retry-older then page-failure\", \"actual\": \"older-error\", \"expected\": \"older-error\", \"passed\": true}, {\"check\": \"trace retry-older then filter-changed\", \"actual\": \"new-filter-loading\", \"expected\": \"new-filter-loading\", \"passed\": true}, {\"check\": \"trace new-head-arrives then show-new-head\", \"actual\": \"head-restoring\", \"expected\": \"head-restoring\", \"passed\": true}, {\"check\": \"trace show-new-head then head-anchor-ready\", \"actual\": \"first-page\", \"expected\": \"first-page\", \"passed\": true}, {\"check\": \"trace head-anchor-ready then load-older\", \"actual\": \"loading-older\", \"expected\": \"loading-older\", \"passed\": true}, {\"check\": \"trace filter-changed then old-page-arrives\", \"actual\": \"new-filter-loading\", \"expected\": \"new-filter-loading\", \"passed\": true}, {\"check\": \"trace old-page-arrives then old-page-arrives\", \"actual\": \"new-filter-loading\", \"expected\": \"new-filter-loading\", \"passed\": true}, {\"check\": \"domain state regression 1: rows\", \"actual\": {\"phase\": \"loading-older\", \"value\": [\"head\"]}, \"expected\": {\"phase\": \"loading-older\", \"value\": [\"head\"]}, \"passed\": true}, {\"check\": \"domain state regression 2: rows\", \"actual\": {\"phase\": \"older-appended\", \"value\": [\"head\", \"old\"]}, \"expected\": {\"phase\": \"older-appended\", \"value\": [\"head\", \"old\"]}, \"passed\": true}, {\"check\": \"domain state regression 3: has_more\", \"actual\": {\"phase\": \"end-of-history\", \"value\": false}, \"expected\": {\"phase\": \"end-of-history\", \"value\": false}, \"passed\": true}, {\"check\": \"domain state regression 4: rows\", \"actual\": {\"phase\": \"new-filter-loading\", \"value\": []}, \"expected\": {\"phase\": \"new-filter-loading\", \"value\": []}, \"passed\": true}, {\"check\": \"domain state regression 5: filter\", \"actual\": {\"phase\": \"new-filter-loading\", \"value\": 3}, \"expected\": {\"phase\": \"new-filter-loading\", \"value\": 3}, \"passed\": true}, {\"check\": \"domain state regression 6: anchor\", \"actual\": {\"phase\": \"head-update-pending\", \"value\": \"old\"}, \"expected\": {\"phase\": \"head-update-pending\", \"value\": \"old\"}, \"passed\": true}, {\"check\": \"domain state regression 7: rows\", \"actual\": {\"phase\": \"new-filter-loading\", \"value\": []}, \"expected\": {\"phase\": \"new-filter-loading\", \"value\": []}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}