{"abstract":"The extension-rejected event leaves a notification in valid instead of expired.","category":"Notification interfaces","checks":34,"contract":"Time-limited notification content expiry is a bounded visual-notification workflow with mutable policy state {'deadline': 20, 'now': 5, 'started': None, 'completed': False}. Its default transition relation is {('valid', 'deadline-near'): 'expiring', ('expiring', 'deadline-reached'): 'expired', ('valid', 'open-action'): 'action-pending', ('action-pending', 'deadline-reached'): 'pending-at-expiry', ('pending-at-expiry', 'action-success'): 'completed', ('pending-at-expiry', 'action-failure'): 'expired-action-error', ('expired', 'deadline-extension'): 'revalidation-pending', ('revalidation-pending', 'extension-validated'): 'valid', ('revalidation-pending', 'extension-rejected'): 'expired', ('completed', 'late-expiry'): 'completed'}; 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-content-expiry","failed_approach":"Showing completed hides that no valid action occurred.","family":"s3-notification-interfaces-content-expiry-09","id":"FA-35131","implementations":{"attempt":{"sha256":"f0c0c9ede21771522972dac3ff8185064493959e88ce6f6515382c895109d47e","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 = {('valid', 'deadline-near'): 'expiring', ('expiring', 'deadline-reached'): 'expired', ('valid', 'open-action'): 'action-pending', ('action-pending', 'deadline-reached'): 'pending-at-expiry', ('pending-at-expiry', 'action-success'): 'completed', ('pending-at-expiry', 'action-failure'): 'expired-action-error', ('expired', 'deadline-extension'): 'revalidation-pending', ('revalidation-pending', 'extension-validated'): 'valid', ('revalidation-pending', 'extension-rejected'): 'completed', ('completed', 'late-expiry'): 'completed'}\n    data = json.loads(json.dumps({'deadline': 20, 'now': 5, 'started': None, 'completed': False})) if payload is None else {**json.loads(json.dumps({'deadline': 20, 'now': 5, 'started': None, 'completed': False})), **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            data['now'] = max(data['now'],arg.get('now',data['now']))\n            if event == 'open-action':\n                if data['now'] >= data['deadline']: event = 'unknown-event'\n                else: data['started'] = data['now']\n            if event == 'deadline-reached' and data['now'] < data['deadline'] and 'now' in arg: event = 'unknown-event'\n            if event == 'extension-validated': data['deadline'] = max(data['deadline'],arg.get('deadline',data['deadline']+10))\n            state = table.get((state, event), state)\n            if state == 'completed': data['completed'] = True\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('valid / deadline-near', solve('valid', [('deadline-near', N)], N), 'expiring')\ncheck('expiring / deadline-reached', solve('expiring', [('deadline-reached', N)], N), 'expired')\ncheck('valid / open-action', solve('valid', [('open-action', N)], N), 'action-pending')\ncheck('action-pending / deadline-reached', solve('action-pending', [('deadline-reached', N)], N), 'pending-at-expiry')\ncheck('pending-at-expiry / action-success', solve('pending-at-expiry', [('action-success', N)], N), 'completed')\ncheck('pending-at-expiry / action-failure', solve('pending-at-expiry', [('action-failure', N)], N), 'expired-action-error')\ncheck('expired / deadline-extension', solve('expired', [('deadline-extension', N)], N), 'revalidation-pending')\ncheck('revalidation-pending / extension-validated', solve('revalidation-pending', [('extension-validated', N)], N), 'valid')\ncheck('revalidation-pending / extension-rejected', solve('revalidation-pending', [('extension-rejected', N)], N), 'expired')\ncheck('completed / late-expiry', solve('completed', [('late-expiry', N)], N), 'completed')\ncheck('older notification incarnation', solve('valid', [('deadline-near', N - 1)], N), 'valid')\ncheck('future notification incarnation', solve('valid', [('deadline-near', N + 1)], N), 'valid')\ncheck('unknown event is inert', solve('valid', [('unknown-event', N)], N), 'valid')\ncheck('empty delivery batch', solve('valid', [], N), 'valid')\ncheck('N stale deliveries before current delivery', solve('valid', [('deadline-near', N - 1)] * N + [('deadline-near', N)], N), 'expiring')\ncheck('trace deadline-near then deadline-reached', solve('valid', [('deadline-near', N), ('deadline-reached', N)], N), 'expired')\ncheck('trace deadline-reached then deadline-extension', solve('expiring', [('deadline-reached', N), ('deadline-extension', N)], N), 'revalidation-pending')\ncheck('trace open-action then deadline-reached', solve('valid', [('open-action', N), ('deadline-reached', N)], N), 'pending-at-expiry')\ncheck('trace deadline-reached then action-success', solve('action-pending', [('deadline-reached', N), ('action-success', N)], N), 'completed')\ncheck('trace deadline-reached then action-failure', solve('action-pending', [('deadline-reached', N), ('action-failure', N)], N), 'expired-action-error')\ncheck('trace action-success then late-expiry', solve('pending-at-expiry', [('action-success', N), ('late-expiry', N)], N), 'completed')\ncheck('trace deadline-extension then extension-validated', solve('expired', [('deadline-extension', N), ('extension-validated', N)], N), 'valid')\ncheck('trace deadline-extension then extension-rejected', solve('expired', [('deadline-extension', N), ('extension-rejected', N)], N), 'expired')\ncheck('trace extension-validated then deadline-near', solve('revalidation-pending', [('extension-validated', N), ('deadline-near', N)], N), 'expiring')\ncheck('trace extension-validated then open-action', solve('revalidation-pending', [('extension-validated', N), ('open-action', N)], N), 'action-pending')\ncheck('trace extension-rejected then deadline-extension', solve('revalidation-pending', [('extension-rejected', N), ('deadline-extension', N)], N), 'revalidation-pending')\ncheck('trace late-expiry then late-expiry', solve('completed', [('late-expiry', N), ('late-expiry', N)], N), 'completed')\ncheck('domain state regression 1: started', solve('valid', [('open-action', N, {'now': 19})], N, {}, 'started'), {'phase': 'action-pending', 'value': 19})\ncheck('domain state regression 2: started', solve('valid', [('open-action', N, {'now': 20})], N, {}, 'started'), {'phase': 'valid', 'value': None})\ncheck('domain state regression 3: now', solve('expiring', [('deadline-reached', N, {'now': 19})], N, {}, 'now'), {'phase': 'expiring', 'value': 19})\ncheck('domain state regression 4: completed', solve('pending-at-expiry', [('action-success', N, {})], N, {'started': 19, 'now': 21}, 'completed'), {'phase': 'completed', 'value': True})\ncheck('domain state regression 5: deadline', solve('revalidation-pending', [('extension-validated', N, {'deadline': 15})], N, {}, 'deadline'), {'phase': 'valid', 'value': 20})\ncheck('domain state regression 6: completed', solve('completed', [('late-expiry', N, {})], N, {'completed': True}, 'completed'), {'phase': 'completed', 'value': True})\ncheck('domain state regression 7: started', solve('valid', [('open-action', N, {'now': 19}), ('deadline-reached', N, {'now': 20}), ('action-success', N, {})], N, {}, 'started'), {'phase': 'completed', 'value': 19})\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":"cffe20e7125bdd2cd4d10a15aef0ef71d676f24f50d42c3107b056aeda0b0bf4","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 = {('valid', 'deadline-near'): 'expiring', ('expiring', 'deadline-reached'): 'expired', ('valid', 'open-action'): 'action-pending', ('action-pending', 'deadline-reached'): 'pending-at-expiry', ('pending-at-expiry', 'action-success'): 'completed', ('pending-at-expiry', 'action-failure'): 'expired-action-error', ('expired', 'deadline-extension'): 'revalidation-pending', ('revalidation-pending', 'extension-validated'): 'valid', ('revalidation-pending', 'extension-rejected'): 'valid', ('completed', 'late-expiry'): 'completed'}\n    data = json.loads(json.dumps({'deadline': 20, 'now': 5, 'started': None, 'completed': False})) if payload is None else {**json.loads(json.dumps({'deadline': 20, 'now': 5, 'started': None, 'completed': False})), **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            data['now'] = max(data['now'],arg.get('now',data['now']))\n            if event == 'open-action':\n                if data['now'] >= data['deadline']: event = 'unknown-event'\n                else: data['started'] = data['now']\n            if event == 'deadline-reached' and data['now'] < data['deadline'] and 'now' in arg: event = 'unknown-event'\n            if event == 'extension-validated': data['deadline'] = max(data['deadline'],arg.get('deadline',data['deadline']+10))\n            state = table.get((state, event), state)\n            if state == 'completed': data['completed'] = True\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('valid / deadline-near', solve('valid', [('deadline-near', N)], N), 'expiring')\ncheck('expiring / deadline-reached', solve('expiring', [('deadline-reached', N)], N), 'expired')\ncheck('valid / open-action', solve('valid', [('open-action', N)], N), 'action-pending')\ncheck('action-pending / deadline-reached', solve('action-pending', [('deadline-reached', N)], N), 'pending-at-expiry')\ncheck('pending-at-expiry / action-success', solve('pending-at-expiry', [('action-success', N)], N), 'completed')\ncheck('pending-at-expiry / action-failure', solve('pending-at-expiry', [('action-failure', N)], N), 'expired-action-error')\ncheck('expired / deadline-extension', solve('expired', [('deadline-extension', N)], N), 'revalidation-pending')\ncheck('revalidation-pending / extension-validated', solve('revalidation-pending', [('extension-validated', N)], N), 'valid')\ncheck('revalidation-pending / extension-rejected', solve('revalidation-pending', [('extension-rejected', N)], N), 'expired')\ncheck('completed / late-expiry', solve('completed', [('late-expiry', N)], N), 'completed')\ncheck('older notification incarnation', solve('valid', [('deadline-near', N - 1)], N), 'valid')\ncheck('future notification incarnation', solve('valid', [('deadline-near', N + 1)], N), 'valid')\ncheck('unknown event is inert', solve('valid', [('unknown-event', N)], N), 'valid')\ncheck('empty delivery batch', solve('valid', [], N), 'valid')\ncheck('N stale deliveries before current delivery', solve('valid', [('deadline-near', N - 1)] * N + [('deadline-near', N)], N), 'expiring')\ncheck('trace deadline-near then deadline-reached', solve('valid', [('deadline-near', N), ('deadline-reached', N)], N), 'expired')\ncheck('trace deadline-reached then deadline-extension', solve('expiring', [('deadline-reached', N), ('deadline-extension', N)], N), 'revalidation-pending')\ncheck('trace open-action then deadline-reached', solve('valid', [('open-action', N), ('deadline-reached', N)], N), 'pending-at-expiry')\ncheck('trace deadline-reached then action-success', solve('action-pending', [('deadline-reached', N), ('action-success', N)], N), 'completed')\ncheck('trace deadline-reached then action-failure', solve('action-pending', [('deadline-reached', N), ('action-failure', N)], N), 'expired-action-error')\ncheck('trace action-success then late-expiry', solve('pending-at-expiry', [('action-success', N), ('late-expiry', N)], N), 'completed')\ncheck('trace deadline-extension then extension-validated', solve('expired', [('deadline-extension', N), ('extension-validated', N)], N), 'valid')\ncheck('trace deadline-extension then extension-rejected', solve('expired', [('deadline-extension', N), ('extension-rejected', N)], N), 'expired')\ncheck('trace extension-validated then deadline-near', solve('revalidation-pending', [('extension-validated', N), ('deadline-near', N)], N), 'expiring')\ncheck('trace extension-validated then open-action', solve('revalidation-pending', [('extension-validated', N), ('open-action', N)], N), 'action-pending')\ncheck('trace extension-rejected then deadline-extension', solve('revalidation-pending', [('extension-rejected', N), ('deadline-extension', N)], N), 'revalidation-pending')\ncheck('trace late-expiry then late-expiry', solve('completed', [('late-expiry', N), ('late-expiry', N)], N), 'completed')\ncheck('domain state regression 1: started', solve('valid', [('open-action', N, {'now': 19})], N, {}, 'started'), {'phase': 'action-pending', 'value': 19})\ncheck('domain state regression 2: started', solve('valid', [('open-action', N, {'now': 20})], N, {}, 'started'), {'phase': 'valid', 'value': None})\ncheck('domain state regression 3: now', solve('expiring', [('deadline-reached', N, {'now': 19})], N, {}, 'now'), {'phase': 'expiring', 'value': 19})\ncheck('domain state regression 4: completed', solve('pending-at-expiry', [('action-success', N, {})], N, {'started': 19, 'now': 21}, 'completed'), {'phase': 'completed', 'value': True})\ncheck('domain state regression 5: deadline', solve('revalidation-pending', [('extension-validated', N, {'deadline': 15})], N, {}, 'deadline'), {'phase': 'valid', 'value': 20})\ncheck('domain state regression 6: completed', solve('completed', [('late-expiry', N, {})], N, {'completed': True}, 'completed'), {'phase': 'completed', 'value': True})\ncheck('domain state regression 7: started', solve('valid', [('open-action', N, {'now': 19}), ('deadline-reached', N, {'now': 20}), ('action-success', N, {})], N, {}, 'started'), {'phase': 'completed', 'value': 19})\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":"24e51f6a8335f08ddd05447f068991f449e19e692894c4a23096d72906fa284b","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 = {('valid', 'deadline-near'): 'expiring', ('expiring', 'deadline-reached'): 'expired', ('valid', 'open-action'): 'action-pending', ('action-pending', 'deadline-reached'): 'pending-at-expiry', ('pending-at-expiry', 'action-success'): 'completed', ('pending-at-expiry', 'action-failure'): 'expired-action-error', ('expired', 'deadline-extension'): 'revalidation-pending', ('revalidation-pending', 'extension-validated'): 'valid', ('revalidation-pending', 'extension-rejected'): 'expired', ('completed', 'late-expiry'): 'completed'}\n    data = json.loads(json.dumps({'deadline': 20, 'now': 5, 'started': None, 'completed': False})) if payload is None else {**json.loads(json.dumps({'deadline': 20, 'now': 5, 'started': None, 'completed': False})), **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            data['now'] = max(data['now'],arg.get('now',data['now']))\n            if event == 'open-action':\n                if data['now'] >= data['deadline']: event = 'unknown-event'\n                else: data['started'] = data['now']\n            if event == 'deadline-reached' and data['now'] < data['deadline'] and 'now' in arg: event = 'unknown-event'\n            if event == 'extension-validated': data['deadline'] = max(data['deadline'],arg.get('deadline',data['deadline']+10))\n            state = table.get((state, event), state)\n            if state == 'completed': data['completed'] = True\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('valid / deadline-near', solve('valid', [('deadline-near', N)], N), 'expiring')\ncheck('expiring / deadline-reached', solve('expiring', [('deadline-reached', N)], N), 'expired')\ncheck('valid / open-action', solve('valid', [('open-action', N)], N), 'action-pending')\ncheck('action-pending / deadline-reached', solve('action-pending', [('deadline-reached', N)], N), 'pending-at-expiry')\ncheck('pending-at-expiry / action-success', solve('pending-at-expiry', [('action-success', N)], N), 'completed')\ncheck('pending-at-expiry / action-failure', solve('pending-at-expiry', [('action-failure', N)], N), 'expired-action-error')\ncheck('expired / deadline-extension', solve('expired', [('deadline-extension', N)], N), 'revalidation-pending')\ncheck('revalidation-pending / extension-validated', solve('revalidation-pending', [('extension-validated', N)], N), 'valid')\ncheck('revalidation-pending / extension-rejected', solve('revalidation-pending', [('extension-rejected', N)], N), 'expired')\ncheck('completed / late-expiry', solve('completed', [('late-expiry', N)], N), 'completed')\ncheck('older notification incarnation', solve('valid', [('deadline-near', N - 1)], N), 'valid')\ncheck('future notification incarnation', solve('valid', [('deadline-near', N + 1)], N), 'valid')\ncheck('unknown event is inert', solve('valid', [('unknown-event', N)], N), 'valid')\ncheck('empty delivery batch', solve('valid', [], N), 'valid')\ncheck('N stale deliveries before current delivery', solve('valid', [('deadline-near', N - 1)] * N + [('deadline-near', N)], N), 'expiring')\ncheck('trace deadline-near then deadline-reached', solve('valid', [('deadline-near', N), ('deadline-reached', N)], N), 'expired')\ncheck('trace deadline-reached then deadline-extension', solve('expiring', [('deadline-reached', N), ('deadline-extension', N)], N), 'revalidation-pending')\ncheck('trace open-action then deadline-reached', solve('valid', [('open-action', N), ('deadline-reached', N)], N), 'pending-at-expiry')\ncheck('trace deadline-reached then action-success', solve('action-pending', [('deadline-reached', N), ('action-success', N)], N), 'completed')\ncheck('trace deadline-reached then action-failure', solve('action-pending', [('deadline-reached', N), ('action-failure', N)], N), 'expired-action-error')\ncheck('trace action-success then late-expiry', solve('pending-at-expiry', [('action-success', N), ('late-expiry', N)], N), 'completed')\ncheck('trace deadline-extension then extension-validated', solve('expired', [('deadline-extension', N), ('extension-validated', N)], N), 'valid')\ncheck('trace deadline-extension then extension-rejected', solve('expired', [('deadline-extension', N), ('extension-rejected', N)], N), 'expired')\ncheck('trace extension-validated then deadline-near', solve('revalidation-pending', [('extension-validated', N), ('deadline-near', N)], N), 'expiring')\ncheck('trace extension-validated then open-action', solve('revalidation-pending', [('extension-validated', N), ('open-action', N)], N), 'action-pending')\ncheck('trace extension-rejected then deadline-extension', solve('revalidation-pending', [('extension-rejected', N), ('deadline-extension', N)], N), 'revalidation-pending')\ncheck('trace late-expiry then late-expiry', solve('completed', [('late-expiry', N), ('late-expiry', N)], N), 'completed')\ncheck('domain state regression 1: started', solve('valid', [('open-action', N, {'now': 19})], N, {}, 'started'), {'phase': 'action-pending', 'value': 19})\ncheck('domain state regression 2: started', solve('valid', [('open-action', N, {'now': 20})], N, {}, 'started'), {'phase': 'valid', 'value': None})\ncheck('domain state regression 3: now', solve('expiring', [('deadline-reached', N, {'now': 19})], N, {}, 'now'), {'phase': 'expiring', 'value': 19})\ncheck('domain state regression 4: completed', solve('pending-at-expiry', [('action-success', N, {})], N, {'started': 19, 'now': 21}, 'completed'), {'phase': 'completed', 'value': True})\ncheck('domain state regression 5: deadline', solve('revalidation-pending', [('extension-validated', N, {'deadline': 15})], N, {}, 'deadline'), {'phase': 'valid', 'value': 20})\ncheck('domain state regression 6: completed', solve('completed', [('late-expiry', N, {})], N, {'completed': True}, 'completed'), {'phase': 'completed', 'value': True})\ncheck('domain state regression 7: started', solve('valid', [('open-action', N, {'now': 19}), ('deadline-reached', N, {'now': 20}), ('action-success', N, {})], N, {}, 'started'), {'phase': 'completed', 'value': 19})\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-content-expiry-09","generated_at":"2026-09-29T14:42:38.579892+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 revalidation-pending / extension-rejected transition to expired; preserve the other explicitly stipulated transitions.","root_cause":"Rejected extension still reactivates expired content.","sha256":"4b896864a87c9f7ab6de4683f9a2b0d2c9a27acea0a2df298e2ca4f75dbc7d96","title":"Time-limited notification content expiry: extension-rejected from revalidation-pending · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":42.694,"exit_code":1,"observations":[{"actual":"expiring","check":"valid / deadline-near","expected":"expiring","passed":true},{"actual":"expired","check":"expiring / deadline-reached","expected":"expired","passed":true},{"actual":"action-pending","check":"valid / open-action","expected":"action-pending","passed":true},{"actual":"pending-at-expiry","check":"action-pending / deadline-reached","expected":"pending-at-expiry","passed":true},{"actual":"completed","check":"pending-at-expiry / action-success","expected":"completed","passed":true},{"actual":"expired-action-error","check":"pending-at-expiry / action-failure","expected":"expired-action-error","passed":true},{"actual":"revalidation-pending","check":"expired / deadline-extension","expected":"revalidation-pending","passed":true},{"actual":"valid","check":"revalidation-pending / extension-validated","expected":"valid","passed":true},{"actual":"completed","check":"revalidation-pending / extension-rejected","expected":"expired","passed":false},{"actual":"completed","check":"completed / late-expiry","expected":"completed","passed":true},{"actual":"valid","check":"older notification incarnation","expected":"valid","passed":true},{"actual":"valid","check":"future notification incarnation","expected":"valid","passed":true},{"actual":"valid","check":"unknown event is inert","expected":"valid","passed":true},{"actual":"valid","check":"empty delivery batch","expected":"valid","passed":true},{"actual":"expiring","check":"N stale deliveries before current delivery","expected":"expiring","passed":true},{"actual":"expired","check":"trace deadline-near then deadline-reached","expected":"expired","passed":true},{"actual":"revalidation-pending","check":"trace deadline-reached then deadline-extension","expected":"revalidation-pending","passed":true},{"actual":"pending-at-expiry","check":"trace open-action then deadline-reached","expected":"pending-at-expiry","passed":true},{"actual":"completed","check":"trace deadline-reached then action-success","expected":"completed","passed":true},{"actual":"expired-action-error","check":"trace deadline-reached then action-failure","expected":"expired-action-error","passed":true},{"actual":"completed","check":"trace action-success then late-expiry","expected":"completed","passed":true},{"actual":"valid","check":"trace deadline-extension then extension-validated","expected":"valid","passed":true},{"actual":"completed","check":"trace deadline-extension then extension-rejected","expected":"expired","passed":false},{"actual":"expiring","check":"trace extension-validated then deadline-near","expected":"expiring","passed":true},{"actual":"action-pending","check":"trace extension-validated then open-action","expected":"action-pending","passed":true},{"actual":"completed","check":"trace extension-rejected then deadline-extension","expected":"revalidation-pending","passed":false},{"actual":"completed","check":"trace late-expiry then late-expiry","expected":"completed","passed":true},{"actual":{"phase":"action-pending","value":19},"check":"domain state regression 1: started","expected":{"phase":"action-pending","value":19},"passed":true},{"actual":{"phase":"valid","value":null},"check":"domain state regression 2: started","expected":{"phase":"valid","value":null},"passed":true},{"actual":{"phase":"expiring","value":19},"check":"domain state regression 3: now","expected":{"phase":"expiring","value":19},"passed":true},{"actual":{"phase":"completed","value":true},"check":"domain state regression 4: completed","expected":{"phase":"completed","value":true},"passed":true},{"actual":{"phase":"valid","value":20},"check":"domain state regression 5: deadline","expected":{"phase":"valid","value":20},"passed":true},{"actual":{"phase":"completed","value":true},"check":"domain state regression 6: completed","expected":{"phase":"completed","value":true},"passed":true},{"actual":{"phase":"completed","value":19},"check":"domain state regression 7: started","expected":{"phase":"completed","value":19},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"valid / deadline-near\", \"actual\": \"expiring\", \"expected\": \"expiring\", \"passed\": true}, {\"check\": \"expiring / deadline-reached\", \"actual\": \"expired\", \"expected\": \"expired\", \"passed\": true}, {\"check\": \"valid / open-action\", \"actual\": \"action-pending\", \"expected\": \"action-pending\", \"passed\": true}, {\"check\": \"action-pending / deadline-reached\", \"actual\": \"pending-at-expiry\", \"expected\": \"pending-at-expiry\", \"passed\": true}, {\"check\": \"pending-at-expiry / action-success\", \"actual\": \"completed\", \"expected\": \"completed\", \"passed\": true}, {\"check\": \"pending-at-expiry / action-failure\", \"actual\": \"expired-action-error\", \"expected\": \"expired-action-error\", \"passed\": true}, {\"check\": \"expired / deadline-extension\", \"actual\": \"revalidation-pending\", \"expected\": \"revalidation-pending\", \"passed\": true}, {\"check\": \"revalidation-pending / extension-validated\", \"actual\": \"valid\", \"expected\": \"valid\", \"passed\": true}, {\"check\": \"revalidation-pending / extension-rejected\", \"actual\": \"completed\", \"expected\": \"expired\", \"passed\": false}, {\"check\": \"completed / late-expiry\", \"actual\": \"completed\", \"expected\": \"completed\", \"passed\": true}, {\"check\": \"older notification incarnation\", \"actual\": \"valid\", \"expected\": \"valid\", \"passed\": true}, {\"check\": \"future notification incarnation\", \"actual\": \"valid\", \"expected\": \"valid\", \"passed\": true}, {\"check\": \"unknown event is inert\", \"actual\": \"valid\", \"expected\": \"valid\", \"passed\": true}, {\"check\": \"empty delivery batch\", \"actual\": \"valid\", \"expected\": \"valid\", \"passed\": true}, {\"check\": \"N stale deliveries before current delivery\", \"actual\": \"expiring\", \"expected\": \"expiring\", \"passed\": true}, {\"check\": \"trace deadline-near then deadline-reached\", \"actual\": \"expired\", \"expected\": \"expired\", \"passed\": true}, {\"check\": \"trace deadline-reached then deadline-extension\", \"actual\": \"revalidation-pending\", \"expected\": \"revalidation-pending\", \"passed\": true}, {\"check\": \"trace open-action then deadline-reached\", \"actual\": \"pending-at-expiry\", \"expected\": \"pending-at-expiry\", \"passed\": true}, {\"check\": \"trace deadline-reached then action-success\", \"actual\": \"completed\", \"expected\": \"completed\", \"passed\": true}, {\"check\": \"trace deadline-reached then action-failure\", \"actual\": \"expired-action-error\", \"expected\": \"expired-action-error\", \"passed\": true}, {\"check\": \"trace action-success then late-expiry\", \"actual\": \"completed\", \"expected\": \"completed\", \"passed\": true}, {\"check\": \"trace deadline-extension then extension-validated\", \"actual\": \"valid\", \"expected\": \"valid\", \"passed\": true}, {\"check\": \"trace deadline-extension then extension-rejected\", \"actual\": \"completed\", \"expected\": \"expired\", \"passed\": false}, {\"check\": \"trace extension-validated then deadline-near\", \"actual\": \"expiring\", \"expected\": \"expiring\", \"passed\": true}, {\"check\": \"trace extension-validated then open-action\", \"actual\": \"action-pending\", \"expected\": \"action-pending\", \"passed\": true}, {\"check\": \"trace extension-rejected then deadline-extension\", \"actual\": \"completed\", \"expected\": \"revalidation-pending\", \"passed\": false}, {\"check\": \"trace late-expiry then late-expiry\", \"actual\": \"completed\", \"expected\": \"completed\", \"passed\": true}, {\"check\": \"domain state regression 1: started\", \"actual\": {\"phase\": \"action-pending\", \"value\": 19}, \"expected\": {\"phase\": \"action-pending\", \"value\": 19}, \"passed\": true}, {\"check\": \"domain state regression 2: started\", \"actual\": {\"phase\": \"valid\", \"value\": null}, \"expected\": {\"phase\": \"valid\", \"value\": null}, \"passed\": true}, {\"check\": \"domain state regression 3: now\", \"actual\": {\"phase\": \"expiring\", \"value\": 19}, \"expected\": {\"phase\": \"expiring\", \"value\": 19}, \"passed\": true}, {\"check\": \"domain state regression 4: completed\", \"actual\": {\"phase\": \"completed\", \"value\": true}, \"expected\": {\"phase\": \"completed\", \"value\": true}, \"passed\": true}, {\"check\": \"domain state regression 5: deadline\", \"actual\": {\"phase\": \"valid\", \"value\": 20}, \"expected\": {\"phase\": \"valid\", \"value\": 20}, \"passed\": true}, {\"check\": \"domain state regression 6: completed\", \"actual\": {\"phase\": \"completed\", \"value\": true}, \"expected\": {\"phase\": \"completed\", \"value\": true}, \"passed\": true}, {\"check\": \"domain state regression 7: started\", \"actual\": {\"phase\": \"completed\", \"value\": 19}, \"expected\": {\"phase\": \"completed\", \"value\": 19}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.793,"exit_code":1,"observations":[{"actual":"expiring","check":"valid / deadline-near","expected":"expiring","passed":true},{"actual":"expired","check":"expiring / deadline-reached","expected":"expired","passed":true},{"actual":"action-pending","check":"valid / open-action","expected":"action-pending","passed":true},{"actual":"pending-at-expiry","check":"action-pending / deadline-reached","expected":"pending-at-expiry","passed":true},{"actual":"completed","check":"pending-at-expiry / action-success","expected":"completed","passed":true},{"actual":"expired-action-error","check":"pending-at-expiry / action-failure","expected":"expired-action-error","passed":true},{"actual":"revalidation-pending","check":"expired / deadline-extension","expected":"revalidation-pending","passed":true},{"actual":"valid","check":"revalidation-pending / extension-validated","expected":"valid","passed":true},{"actual":"valid","check":"revalidation-pending / extension-rejected","expected":"expired","passed":false},{"actual":"completed","check":"completed / late-expiry","expected":"completed","passed":true},{"actual":"valid","check":"older notification incarnation","expected":"valid","passed":true},{"actual":"valid","check":"future notification incarnation","expected":"valid","passed":true},{"actual":"valid","check":"unknown event is inert","expected":"valid","passed":true},{"actual":"valid","check":"empty delivery batch","expected":"valid","passed":true},{"actual":"expiring","check":"N stale deliveries before current delivery","expected":"expiring","passed":true},{"actual":"expired","check":"trace deadline-near then deadline-reached","expected":"expired","passed":true},{"actual":"revalidation-pending","check":"trace deadline-reached then deadline-extension","expected":"revalidation-pending","passed":true},{"actual":"pending-at-expiry","check":"trace open-action then deadline-reached","expected":"pending-at-expiry","passed":true},{"actual":"completed","check":"trace deadline-reached then action-success","expected":"completed","passed":true},{"actual":"expired-action-error","check":"trace deadline-reached then action-failure","expected":"expired-action-error","passed":true},{"actual":"completed","check":"trace action-success then late-expiry","expected":"completed","passed":true},{"actual":"valid","check":"trace deadline-extension then extension-validated","expected":"valid","passed":true},{"actual":"valid","check":"trace deadline-extension then extension-rejected","expected":"expired","passed":false},{"actual":"expiring","check":"trace extension-validated then deadline-near","expected":"expiring","passed":true},{"actual":"action-pending","check":"trace extension-validated then open-action","expected":"action-pending","passed":true},{"actual":"valid","check":"trace extension-rejected then deadline-extension","expected":"revalidation-pending","passed":false},{"actual":"completed","check":"trace late-expiry then late-expiry","expected":"completed","passed":true},{"actual":{"phase":"action-pending","value":19},"check":"domain state regression 1: started","expected":{"phase":"action-pending","value":19},"passed":true},{"actual":{"phase":"valid","value":null},"check":"domain state regression 2: started","expected":{"phase":"valid","value":null},"passed":true},{"actual":{"phase":"expiring","value":19},"check":"domain state regression 3: now","expected":{"phase":"expiring","value":19},"passed":true},{"actual":{"phase":"completed","value":true},"check":"domain state regression 4: completed","expected":{"phase":"completed","value":true},"passed":true},{"actual":{"phase":"valid","value":20},"check":"domain state regression 5: deadline","expected":{"phase":"valid","value":20},"passed":true},{"actual":{"phase":"completed","value":true},"check":"domain state regression 6: completed","expected":{"phase":"completed","value":true},"passed":true},{"actual":{"phase":"completed","value":19},"check":"domain state regression 7: started","expected":{"phase":"completed","value":19},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"valid / deadline-near\", \"actual\": \"expiring\", \"expected\": \"expiring\", \"passed\": true}, {\"check\": \"expiring / deadline-reached\", \"actual\": \"expired\", \"expected\": \"expired\", \"passed\": true}, {\"check\": \"valid / open-action\", \"actual\": \"action-pending\", \"expected\": \"action-pending\", \"passed\": true}, {\"check\": \"action-pending / deadline-reached\", \"actual\": \"pending-at-expiry\", \"expected\": \"pending-at-expiry\", \"passed\": true}, {\"check\": \"pending-at-expiry / action-success\", \"actual\": \"completed\", \"expected\": \"completed\", \"passed\": true}, {\"check\": \"pending-at-expiry / action-failure\", \"actual\": \"expired-action-error\", \"expected\": \"expired-action-error\", \"passed\": true}, {\"check\": \"expired / deadline-extension\", \"actual\": \"revalidation-pending\", \"expected\": \"revalidation-pending\", \"passed\": true}, {\"check\": \"revalidation-pending / extension-validated\", \"actual\": \"valid\", \"expected\": \"valid\", \"passed\": true}, {\"check\": \"revalidation-pending / extension-rejected\", \"actual\": \"valid\", \"expected\": \"expired\", \"passed\": false}, {\"check\": \"completed / late-expiry\", \"actual\": \"completed\", \"expected\": \"completed\", \"passed\": true}, {\"check\": \"older notification incarnation\", \"actual\": \"valid\", \"expected\": \"valid\", \"passed\": true}, {\"check\": \"future notification incarnation\", \"actual\": \"valid\", \"expected\": \"valid\", \"passed\": true}, {\"check\": \"unknown event is inert\", \"actual\": \"valid\", \"expected\": \"valid\", \"passed\": true}, {\"check\": \"empty delivery batch\", \"actual\": \"valid\", \"expected\": \"valid\", \"passed\": true}, {\"check\": \"N stale deliveries before current delivery\", \"actual\": \"expiring\", \"expected\": \"expiring\", \"passed\": true}, {\"check\": \"trace deadline-near then deadline-reached\", \"actual\": \"expired\", \"expected\": \"expired\", \"passed\": true}, {\"check\": \"trace deadline-reached then deadline-extension\", \"actual\": \"revalidation-pending\", \"expected\": \"revalidation-pending\", \"passed\": true}, {\"check\": \"trace open-action then deadline-reached\", \"actual\": \"pending-at-expiry\", \"expected\": \"pending-at-expiry\", \"passed\": true}, {\"check\": \"trace deadline-reached then action-success\", \"actual\": \"completed\", \"expected\": \"completed\", \"passed\": true}, {\"check\": \"trace deadline-reached then action-failure\", \"actual\": \"expired-action-error\", \"expected\": \"expired-action-error\", \"passed\": true}, {\"check\": \"trace action-success then late-expiry\", \"actual\": \"completed\", \"expected\": \"completed\", \"passed\": true}, {\"check\": \"trace deadline-extension then extension-validated\", \"actual\": \"valid\", \"expected\": \"valid\", \"passed\": true}, {\"check\": \"trace deadline-extension then extension-rejected\", \"actual\": \"valid\", \"expected\": \"expired\", \"passed\": false}, {\"check\": \"trace extension-validated then deadline-near\", \"actual\": \"expiring\", \"expected\": \"expiring\", \"passed\": true}, {\"check\": \"trace extension-validated then open-action\", \"actual\": \"action-pending\", \"expected\": \"action-pending\", \"passed\": true}, {\"check\": \"trace extension-rejected then deadline-extension\", \"actual\": \"valid\", \"expected\": \"revalidation-pending\", \"passed\": false}, {\"check\": \"trace late-expiry then late-expiry\", \"actual\": \"completed\", \"expected\": \"completed\", \"passed\": true}, {\"check\": \"domain state regression 1: started\", \"actual\": {\"phase\": \"action-pending\", \"value\": 19}, \"expected\": {\"phase\": \"action-pending\", \"value\": 19}, \"passed\": true}, {\"check\": \"domain state regression 2: started\", \"actual\": {\"phase\": \"valid\", \"value\": null}, \"expected\": {\"phase\": \"valid\", \"value\": null}, \"passed\": true}, {\"check\": \"domain state regression 3: now\", \"actual\": {\"phase\": \"expiring\", \"value\": 19}, \"expected\": {\"phase\": \"expiring\", \"value\": 19}, \"passed\": true}, {\"check\": \"domain state regression 4: completed\", \"actual\": {\"phase\": \"completed\", \"value\": true}, \"expected\": {\"phase\": \"completed\", \"value\": true}, \"passed\": true}, {\"check\": \"domain state regression 5: deadline\", \"actual\": {\"phase\": \"valid\", \"value\": 20}, \"expected\": {\"phase\": \"valid\", \"value\": 20}, \"passed\": true}, {\"check\": \"domain state regression 6: completed\", \"actual\": {\"phase\": \"completed\", \"value\": true}, \"expected\": {\"phase\": \"completed\", \"value\": true}, \"passed\": true}, {\"check\": \"domain state regression 7: started\", \"actual\": {\"phase\": \"completed\", \"value\": 19}, \"expected\": {\"phase\": \"completed\", \"value\": 19}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":44.366,"exit_code":0,"observations":[{"actual":"expiring","check":"valid / deadline-near","expected":"expiring","passed":true},{"actual":"expired","check":"expiring / deadline-reached","expected":"expired","passed":true},{"actual":"action-pending","check":"valid / open-action","expected":"action-pending","passed":true},{"actual":"pending-at-expiry","check":"action-pending / deadline-reached","expected":"pending-at-expiry","passed":true},{"actual":"completed","check":"pending-at-expiry / action-success","expected":"completed","passed":true},{"actual":"expired-action-error","check":"pending-at-expiry / action-failure","expected":"expired-action-error","passed":true},{"actual":"revalidation-pending","check":"expired / deadline-extension","expected":"revalidation-pending","passed":true},{"actual":"valid","check":"revalidation-pending / extension-validated","expected":"valid","passed":true},{"actual":"expired","check":"revalidation-pending / extension-rejected","expected":"expired","passed":true},{"actual":"completed","check":"completed / late-expiry","expected":"completed","passed":true},{"actual":"valid","check":"older notification incarnation","expected":"valid","passed":true},{"actual":"valid","check":"future notification incarnation","expected":"valid","passed":true},{"actual":"valid","check":"unknown event is inert","expected":"valid","passed":true},{"actual":"valid","check":"empty delivery batch","expected":"valid","passed":true},{"actual":"expiring","check":"N stale deliveries before current delivery","expected":"expiring","passed":true},{"actual":"expired","check":"trace deadline-near then deadline-reached","expected":"expired","passed":true},{"actual":"revalidation-pending","check":"trace deadline-reached then deadline-extension","expected":"revalidation-pending","passed":true},{"actual":"pending-at-expiry","check":"trace open-action then deadline-reached","expected":"pending-at-expiry","passed":true},{"actual":"completed","check":"trace deadline-reached then action-success","expected":"completed","passed":true},{"actual":"expired-action-error","check":"trace deadline-reached then action-failure","expected":"expired-action-error","passed":true},{"actual":"completed","check":"trace action-success then late-expiry","expected":"completed","passed":true},{"actual":"valid","check":"trace deadline-extension then extension-validated","expected":"valid","passed":true},{"actual":"expired","check":"trace deadline-extension then extension-rejected","expected":"expired","passed":true},{"actual":"expiring","check":"trace extension-validated then deadline-near","expected":"expiring","passed":true},{"actual":"action-pending","check":"trace extension-validated then open-action","expected":"action-pending","passed":true},{"actual":"revalidation-pending","check":"trace extension-rejected then deadline-extension","expected":"revalidation-pending","passed":true},{"actual":"completed","check":"trace late-expiry then late-expiry","expected":"completed","passed":true},{"actual":{"phase":"action-pending","value":19},"check":"domain state regression 1: started","expected":{"phase":"action-pending","value":19},"passed":true},{"actual":{"phase":"valid","value":null},"check":"domain state regression 2: started","expected":{"phase":"valid","value":null},"passed":true},{"actual":{"phase":"expiring","value":19},"check":"domain state regression 3: now","expected":{"phase":"expiring","value":19},"passed":true},{"actual":{"phase":"completed","value":true},"check":"domain state regression 4: completed","expected":{"phase":"completed","value":true},"passed":true},{"actual":{"phase":"valid","value":20},"check":"domain state regression 5: deadline","expected":{"phase":"valid","value":20},"passed":true},{"actual":{"phase":"completed","value":true},"check":"domain state regression 6: completed","expected":{"phase":"completed","value":true},"passed":true},{"actual":{"phase":"completed","value":19},"check":"domain state regression 7: started","expected":{"phase":"completed","value":19},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"valid / deadline-near\", \"actual\": \"expiring\", \"expected\": \"expiring\", \"passed\": true}, {\"check\": \"expiring / deadline-reached\", \"actual\": \"expired\", \"expected\": \"expired\", \"passed\": true}, {\"check\": \"valid / open-action\", \"actual\": \"action-pending\", \"expected\": \"action-pending\", \"passed\": true}, {\"check\": \"action-pending / deadline-reached\", \"actual\": \"pending-at-expiry\", \"expected\": \"pending-at-expiry\", \"passed\": true}, {\"check\": \"pending-at-expiry / action-success\", \"actual\": \"completed\", \"expected\": \"completed\", \"passed\": true}, {\"check\": \"pending-at-expiry / action-failure\", \"actual\": \"expired-action-error\", \"expected\": \"expired-action-error\", \"passed\": true}, {\"check\": \"expired / deadline-extension\", \"actual\": \"revalidation-pending\", \"expected\": \"revalidation-pending\", \"passed\": true}, {\"check\": \"revalidation-pending / extension-validated\", \"actual\": \"valid\", \"expected\": \"valid\", \"passed\": true}, {\"check\": \"revalidation-pending / extension-rejected\", \"actual\": \"expired\", \"expected\": \"expired\", \"passed\": true}, {\"check\": \"completed / late-expiry\", \"actual\": \"completed\", \"expected\": \"completed\", \"passed\": true}, {\"check\": \"older notification incarnation\", \"actual\": \"valid\", \"expected\": \"valid\", \"passed\": true}, {\"check\": \"future notification incarnation\", \"actual\": \"valid\", \"expected\": \"valid\", \"passed\": true}, {\"check\": \"unknown event is inert\", \"actual\": \"valid\", \"expected\": \"valid\", \"passed\": true}, {\"check\": \"empty delivery batch\", \"actual\": \"valid\", \"expected\": \"valid\", \"passed\": true}, {\"check\": \"N stale deliveries before current delivery\", \"actual\": \"expiring\", \"expected\": \"expiring\", \"passed\": true}, {\"check\": \"trace deadline-near then deadline-reached\", \"actual\": \"expired\", \"expected\": \"expired\", \"passed\": true}, {\"check\": \"trace deadline-reached then deadline-extension\", \"actual\": \"revalidation-pending\", \"expected\": \"revalidation-pending\", \"passed\": true}, {\"check\": \"trace open-action then deadline-reached\", \"actual\": \"pending-at-expiry\", \"expected\": \"pending-at-expiry\", \"passed\": true}, {\"check\": \"trace deadline-reached then action-success\", \"actual\": \"completed\", \"expected\": \"completed\", \"passed\": true}, {\"check\": \"trace deadline-reached then action-failure\", \"actual\": \"expired-action-error\", \"expected\": \"expired-action-error\", \"passed\": true}, {\"check\": \"trace action-success then late-expiry\", \"actual\": \"completed\", \"expected\": \"completed\", \"passed\": true}, {\"check\": \"trace deadline-extension then extension-validated\", \"actual\": \"valid\", \"expected\": \"valid\", \"passed\": true}, {\"check\": \"trace deadline-extension then extension-rejected\", \"actual\": \"expired\", \"expected\": \"expired\", \"passed\": true}, {\"check\": \"trace extension-validated then deadline-near\", \"actual\": \"expiring\", \"expected\": \"expiring\", \"passed\": true}, {\"check\": \"trace extension-validated then open-action\", \"actual\": \"action-pending\", \"expected\": \"action-pending\", \"passed\": true}, {\"check\": \"trace extension-rejected then deadline-extension\", \"actual\": \"revalidation-pending\", \"expected\": \"revalidation-pending\", \"passed\": true}, {\"check\": \"trace late-expiry then late-expiry\", \"actual\": \"completed\", \"expected\": \"completed\", \"passed\": true}, {\"check\": \"domain state regression 1: started\", \"actual\": {\"phase\": \"action-pending\", \"value\": 19}, \"expected\": {\"phase\": \"action-pending\", \"value\": 19}, \"passed\": true}, {\"check\": \"domain state regression 2: started\", \"actual\": {\"phase\": \"valid\", \"value\": null}, \"expected\": {\"phase\": \"valid\", \"value\": null}, \"passed\": true}, {\"check\": \"domain state regression 3: now\", \"actual\": {\"phase\": \"expiring\", \"value\": 19}, \"expected\": {\"phase\": \"expiring\", \"value\": 19}, \"passed\": true}, {\"check\": \"domain state regression 4: completed\", \"actual\": {\"phase\": \"completed\", \"value\": true}, \"expected\": {\"phase\": \"completed\", \"value\": true}, \"passed\": true}, {\"check\": \"domain state regression 5: deadline\", \"actual\": {\"phase\": \"valid\", \"value\": 20}, \"expected\": {\"phase\": \"valid\", \"value\": 20}, \"passed\": true}, {\"check\": \"domain state regression 6: completed\", \"actual\": {\"phase\": \"completed\", \"value\": true}, \"expected\": {\"phase\": \"completed\", \"value\": true}, \"passed\": true}, {\"check\": \"domain state regression 7: started\", \"actual\": {\"phase\": \"completed\", \"value\": 19}, \"expected\": {\"phase\": \"completed\", \"value\": 19}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}