{"abstract":"Older client snapshot blocks newer server revision.","category":"Client state","checks":60,"contract":"Server snapshot supplies untouched keys; pre-hydration edits win only for dirty keys. Missing and null differ. Revision, roots, readiness and replay are separate hydration facts. Operation snapshot-admission has the six explicit input/output oracles below.","evaluation_group":"s3-client-state-hydrate-snapshot","failed_approach":"The partial repair `s['revision'] > s['client_revision']` still violates the explicit fixture contract.","family":"s3-client-state-hydrate-snapshot-snapshot-admission","id":"FA-23351","implementations":{"attempt":{"sha256":"6571f02602d23e9b3dfbd164f11987413c4682ce511cb8610db8e3731a87f2a0","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(operation, s):\n    if operation == 'dirty-overlay':\n        return {**s['server'], **{k:v for k,v in s['client'].items() if k in s['dirty']}}\n    if operation == 'missing-client-key':\n        return s['client']['a'] if 'a' in s['client'] else s['server'].get('a')\n    if operation == 'snapshot-admission':\n        return s['revision'] > s['client_revision']\n    if operation == 'root-binding':\n        return s['root'] == s['incoming_root']\n    if operation == 'replay-gate':\n        return s['pending'] if s['ready'] else []\n    if operation == 'consumed-filter':\n        return [e for e in s['pending'] if e not in s['consumed']]\n    if operation == 'tombstones':\n        return {k:v for k,v in s['server'].items() if k not in s['removed']}\n    if operation == 'dirty-pruning':\n        return [k for k in s['dirty'] if k in s['client']]\n    if operation == 'new-client-fields':\n        return sorted(set(s['client'])-set(s['server']))\n    if operation == 'hydration-status':\n        return 'hydrated' if s['ready'] else 'waiting'\n    raise ValueError('unknown modeled operation')\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('dirty-overlay scenario 1', solve('dirty-overlay', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), {'a':9,'b':2})\ncheck('dirty-overlay scenario 2', solve('dirty-overlay', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), {'a':None})\ncheck('dirty-overlay scenario 3', solve('dirty-overlay', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), {'a':N})\ncheck('dirty-overlay scenario 4', solve('dirty-overlay', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), {'a':None,'b':N})\ncheck('dirty-overlay scenario 5', solve('dirty-overlay', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), {'a':N})\ncheck('dirty-overlay scenario 6', solve('dirty-overlay', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), {'a':False})\ncheck('missing-client-key scenario 1', solve('missing-client-key', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), 9)\ncheck('missing-client-key scenario 2', solve('missing-client-key', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), 0)\ncheck('missing-client-key scenario 3', solve('missing-client-key', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), N)\ncheck('missing-client-key scenario 4', solve('missing-client-key', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), None)\ncheck('missing-client-key scenario 5', solve('missing-client-key', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), N)\ncheck('missing-client-key scenario 6', solve('missing-client-key', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), True)\ncheck('snapshot-admission scenario 1', solve('snapshot-admission', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), True)\ncheck('snapshot-admission scenario 2', solve('snapshot-admission', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), False)\ncheck('snapshot-admission scenario 3', solve('snapshot-admission', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), True)\ncheck('snapshot-admission scenario 4', solve('snapshot-admission', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), True)\ncheck('snapshot-admission scenario 5', solve('snapshot-admission', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), True)\ncheck('snapshot-admission scenario 6', solve('snapshot-admission', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), False)\ncheck('root-binding scenario 1', solve('root-binding', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), True)\ncheck('root-binding scenario 2', solve('root-binding', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), False)\ncheck('root-binding scenario 3', solve('root-binding', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), True)\ncheck('root-binding scenario 4', solve('root-binding', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), False)\ncheck('root-binding scenario 5', solve('root-binding', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), True)\ncheck('root-binding scenario 6', solve('root-binding', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), True)\ncheck('replay-gate scenario 1', solve('replay-gate', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), ['e1','e2'])\ncheck('replay-gate scenario 2', solve('replay-gate', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), [])\ncheck('replay-gate scenario 3', solve('replay-gate', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), [])\ncheck('replay-gate scenario 4', solve('replay-gate', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), ['e2'])\ncheck('replay-gate scenario 5', solve('replay-gate', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), [])\ncheck('replay-gate scenario 6', solve('replay-gate', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), ['e4'])\ncheck('consumed-filter scenario 1', solve('consumed-filter', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), ['e2'])\ncheck('consumed-filter scenario 2', solve('consumed-filter', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), ['e1'])\ncheck('consumed-filter scenario 3', solve('consumed-filter', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), [])\ncheck('consumed-filter scenario 4', solve('consumed-filter', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), [])\ncheck('consumed-filter scenario 5', solve('consumed-filter', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), ['e3'])\ncheck('consumed-filter scenario 6', solve('consumed-filter', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), ['e4'])\ncheck('tombstones scenario 1', solve('tombstones', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), {'a':N})\ncheck('tombstones scenario 2', solve('tombstones', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), {'a':None})\ncheck('tombstones scenario 3', solve('tombstones', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), {})\ncheck('tombstones scenario 4', solve('tombstones', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), {'b':N})\ncheck('tombstones scenario 5', solve('tombstones', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), {'a':N})\ncheck('tombstones scenario 6', solve('tombstones', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), {'a':False})\ncheck('dirty-pruning scenario 1', solve('dirty-pruning', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), ['a'])\ncheck('dirty-pruning scenario 2', solve('dirty-pruning', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), [])\ncheck('dirty-pruning scenario 3', solve('dirty-pruning', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), ['a'])\ncheck('dirty-pruning scenario 4', solve('dirty-pruning', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), ['a'])\ncheck('dirty-pruning scenario 5', solve('dirty-pruning', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), [])\ncheck('dirty-pruning scenario 6', solve('dirty-pruning', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), [])\ncheck('new-client-fields scenario 1', solve('new-client-fields', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), [])\ncheck('new-client-fields scenario 2', solve('new-client-fields', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), ['c'])\ncheck('new-client-fields scenario 3', solve('new-client-fields', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), ['a'])\ncheck('new-client-fields scenario 4', solve('new-client-fields', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), [])\ncheck('new-client-fields scenario 5', solve('new-client-fields', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), [])\ncheck('new-client-fields scenario 6', solve('new-client-fields', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), [])\ncheck('hydration-status scenario 1', solve('hydration-status', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), 'hydrated')\ncheck('hydration-status scenario 2', solve('hydration-status', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), 'waiting')\ncheck('hydration-status scenario 3', solve('hydration-status', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), 'hydrated')\ncheck('hydration-status scenario 4', solve('hydration-status', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), 'hydrated')\ncheck('hydration-status scenario 5', solve('hydration-status', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), 'waiting')\ncheck('hydration-status scenario 6', solve('hydration-status', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), 'hydrated')\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":"22dd8454e5d40e1c4464f6500ee01be6597ee3e4815a7f1b6e5a7d3a351f6c19","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(operation, s):\n    if operation == 'dirty-overlay':\n        return {**s['server'], **{k:v for k,v in s['client'].items() if k in s['dirty']}}\n    if operation == 'missing-client-key':\n        return s['client']['a'] if 'a' in s['client'] else s['server'].get('a')\n    if operation == 'snapshot-admission':\n        return s['revision'] == s['client_revision']\n    if operation == 'root-binding':\n        return s['root'] == s['incoming_root']\n    if operation == 'replay-gate':\n        return s['pending'] if s['ready'] else []\n    if operation == 'consumed-filter':\n        return [e for e in s['pending'] if e not in s['consumed']]\n    if operation == 'tombstones':\n        return {k:v for k,v in s['server'].items() if k not in s['removed']}\n    if operation == 'dirty-pruning':\n        return [k for k in s['dirty'] if k in s['client']]\n    if operation == 'new-client-fields':\n        return sorted(set(s['client'])-set(s['server']))\n    if operation == 'hydration-status':\n        return 'hydrated' if s['ready'] else 'waiting'\n    raise ValueError('unknown modeled operation')\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('dirty-overlay scenario 1', solve('dirty-overlay', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), {'a':9,'b':2})\ncheck('dirty-overlay scenario 2', solve('dirty-overlay', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), {'a':None})\ncheck('dirty-overlay scenario 3', solve('dirty-overlay', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), {'a':N})\ncheck('dirty-overlay scenario 4', solve('dirty-overlay', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), {'a':None,'b':N})\ncheck('dirty-overlay scenario 5', solve('dirty-overlay', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), {'a':N})\ncheck('dirty-overlay scenario 6', solve('dirty-overlay', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), {'a':False})\ncheck('missing-client-key scenario 1', solve('missing-client-key', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), 9)\ncheck('missing-client-key scenario 2', solve('missing-client-key', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), 0)\ncheck('missing-client-key scenario 3', solve('missing-client-key', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), N)\ncheck('missing-client-key scenario 4', solve('missing-client-key', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), None)\ncheck('missing-client-key scenario 5', solve('missing-client-key', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), N)\ncheck('missing-client-key scenario 6', solve('missing-client-key', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), True)\ncheck('snapshot-admission scenario 1', solve('snapshot-admission', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), True)\ncheck('snapshot-admission scenario 2', solve('snapshot-admission', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), False)\ncheck('snapshot-admission scenario 3', solve('snapshot-admission', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), True)\ncheck('snapshot-admission scenario 4', solve('snapshot-admission', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), True)\ncheck('snapshot-admission scenario 5', solve('snapshot-admission', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), True)\ncheck('snapshot-admission scenario 6', solve('snapshot-admission', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), False)\ncheck('root-binding scenario 1', solve('root-binding', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), True)\ncheck('root-binding scenario 2', solve('root-binding', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), False)\ncheck('root-binding scenario 3', solve('root-binding', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), True)\ncheck('root-binding scenario 4', solve('root-binding', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), False)\ncheck('root-binding scenario 5', solve('root-binding', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), True)\ncheck('root-binding scenario 6', solve('root-binding', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), True)\ncheck('replay-gate scenario 1', solve('replay-gate', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), ['e1','e2'])\ncheck('replay-gate scenario 2', solve('replay-gate', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), [])\ncheck('replay-gate scenario 3', solve('replay-gate', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), [])\ncheck('replay-gate scenario 4', solve('replay-gate', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), ['e2'])\ncheck('replay-gate scenario 5', solve('replay-gate', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), [])\ncheck('replay-gate scenario 6', solve('replay-gate', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), ['e4'])\ncheck('consumed-filter scenario 1', solve('consumed-filter', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), ['e2'])\ncheck('consumed-filter scenario 2', solve('consumed-filter', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), ['e1'])\ncheck('consumed-filter scenario 3', solve('consumed-filter', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), [])\ncheck('consumed-filter scenario 4', solve('consumed-filter', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), [])\ncheck('consumed-filter scenario 5', solve('consumed-filter', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), ['e3'])\ncheck('consumed-filter scenario 6', solve('consumed-filter', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), ['e4'])\ncheck('tombstones scenario 1', solve('tombstones', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), {'a':N})\ncheck('tombstones scenario 2', solve('tombstones', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), {'a':None})\ncheck('tombstones scenario 3', solve('tombstones', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), {})\ncheck('tombstones scenario 4', solve('tombstones', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), {'b':N})\ncheck('tombstones scenario 5', solve('tombstones', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), {'a':N})\ncheck('tombstones scenario 6', solve('tombstones', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), {'a':False})\ncheck('dirty-pruning scenario 1', solve('dirty-pruning', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), ['a'])\ncheck('dirty-pruning scenario 2', solve('dirty-pruning', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), [])\ncheck('dirty-pruning scenario 3', solve('dirty-pruning', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), ['a'])\ncheck('dirty-pruning scenario 4', solve('dirty-pruning', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), ['a'])\ncheck('dirty-pruning scenario 5', solve('dirty-pruning', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), [])\ncheck('dirty-pruning scenario 6', solve('dirty-pruning', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), [])\ncheck('new-client-fields scenario 1', solve('new-client-fields', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), [])\ncheck('new-client-fields scenario 2', solve('new-client-fields', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), ['c'])\ncheck('new-client-fields scenario 3', solve('new-client-fields', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), ['a'])\ncheck('new-client-fields scenario 4', solve('new-client-fields', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), [])\ncheck('new-client-fields scenario 5', solve('new-client-fields', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), [])\ncheck('new-client-fields scenario 6', solve('new-client-fields', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), [])\ncheck('hydration-status scenario 1', solve('hydration-status', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), 'hydrated')\ncheck('hydration-status scenario 2', solve('hydration-status', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), 'waiting')\ncheck('hydration-status scenario 3', solve('hydration-status', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), 'hydrated')\ncheck('hydration-status scenario 4', solve('hydration-status', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), 'hydrated')\ncheck('hydration-status scenario 5', solve('hydration-status', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), 'waiting')\ncheck('hydration-status scenario 6', solve('hydration-status', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), 'hydrated')\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":"f6c6e3d06f31bf1a1cb63263397f07bc794f69f9ddcb2f6a4b659b1dfd3324b6","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(operation, s):\n    if operation == 'dirty-overlay':\n        return {**s['server'], **{k:v for k,v in s['client'].items() if k in s['dirty']}}\n    if operation == 'missing-client-key':\n        return s['client']['a'] if 'a' in s['client'] else s['server'].get('a')\n    if operation == 'snapshot-admission':\n        return s['revision'] >= s['client_revision']\n    if operation == 'root-binding':\n        return s['root'] == s['incoming_root']\n    if operation == 'replay-gate':\n        return s['pending'] if s['ready'] else []\n    if operation == 'consumed-filter':\n        return [e for e in s['pending'] if e not in s['consumed']]\n    if operation == 'tombstones':\n        return {k:v for k,v in s['server'].items() if k not in s['removed']}\n    if operation == 'dirty-pruning':\n        return [k for k in s['dirty'] if k in s['client']]\n    if operation == 'new-client-fields':\n        return sorted(set(s['client'])-set(s['server']))\n    if operation == 'hydration-status':\n        return 'hydrated' if s['ready'] else 'waiting'\n    raise ValueError('unknown modeled operation')\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('dirty-overlay scenario 1', solve('dirty-overlay', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), {'a':9,'b':2})\ncheck('dirty-overlay scenario 2', solve('dirty-overlay', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), {'a':None})\ncheck('dirty-overlay scenario 3', solve('dirty-overlay', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), {'a':N})\ncheck('dirty-overlay scenario 4', solve('dirty-overlay', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), {'a':None,'b':N})\ncheck('dirty-overlay scenario 5', solve('dirty-overlay', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), {'a':N})\ncheck('dirty-overlay scenario 6', solve('dirty-overlay', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), {'a':False})\ncheck('missing-client-key scenario 1', solve('missing-client-key', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), 9)\ncheck('missing-client-key scenario 2', solve('missing-client-key', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), 0)\ncheck('missing-client-key scenario 3', solve('missing-client-key', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), N)\ncheck('missing-client-key scenario 4', solve('missing-client-key', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), None)\ncheck('missing-client-key scenario 5', solve('missing-client-key', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), N)\ncheck('missing-client-key scenario 6', solve('missing-client-key', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), True)\ncheck('snapshot-admission scenario 1', solve('snapshot-admission', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), True)\ncheck('snapshot-admission scenario 2', solve('snapshot-admission', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), False)\ncheck('snapshot-admission scenario 3', solve('snapshot-admission', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), True)\ncheck('snapshot-admission scenario 4', solve('snapshot-admission', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), True)\ncheck('snapshot-admission scenario 5', solve('snapshot-admission', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), True)\ncheck('snapshot-admission scenario 6', solve('snapshot-admission', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), False)\ncheck('root-binding scenario 1', solve('root-binding', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), True)\ncheck('root-binding scenario 2', solve('root-binding', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), False)\ncheck('root-binding scenario 3', solve('root-binding', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), True)\ncheck('root-binding scenario 4', solve('root-binding', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), False)\ncheck('root-binding scenario 5', solve('root-binding', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), True)\ncheck('root-binding scenario 6', solve('root-binding', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), True)\ncheck('replay-gate scenario 1', solve('replay-gate', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), ['e1','e2'])\ncheck('replay-gate scenario 2', solve('replay-gate', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), [])\ncheck('replay-gate scenario 3', solve('replay-gate', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), [])\ncheck('replay-gate scenario 4', solve('replay-gate', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), ['e2'])\ncheck('replay-gate scenario 5', solve('replay-gate', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), [])\ncheck('replay-gate scenario 6', solve('replay-gate', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), ['e4'])\ncheck('consumed-filter scenario 1', solve('consumed-filter', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), ['e2'])\ncheck('consumed-filter scenario 2', solve('consumed-filter', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), ['e1'])\ncheck('consumed-filter scenario 3', solve('consumed-filter', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), [])\ncheck('consumed-filter scenario 4', solve('consumed-filter', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), [])\ncheck('consumed-filter scenario 5', solve('consumed-filter', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), ['e3'])\ncheck('consumed-filter scenario 6', solve('consumed-filter', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), ['e4'])\ncheck('tombstones scenario 1', solve('tombstones', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), {'a':N})\ncheck('tombstones scenario 2', solve('tombstones', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), {'a':None})\ncheck('tombstones scenario 3', solve('tombstones', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), {})\ncheck('tombstones scenario 4', solve('tombstones', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), {'b':N})\ncheck('tombstones scenario 5', solve('tombstones', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), {'a':N})\ncheck('tombstones scenario 6', solve('tombstones', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), {'a':False})\ncheck('dirty-pruning scenario 1', solve('dirty-pruning', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), ['a'])\ncheck('dirty-pruning scenario 2', solve('dirty-pruning', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), [])\ncheck('dirty-pruning scenario 3', solve('dirty-pruning', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), ['a'])\ncheck('dirty-pruning scenario 4', solve('dirty-pruning', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), ['a'])\ncheck('dirty-pruning scenario 5', solve('dirty-pruning', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), [])\ncheck('dirty-pruning scenario 6', solve('dirty-pruning', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), [])\ncheck('new-client-fields scenario 1', solve('new-client-fields', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), [])\ncheck('new-client-fields scenario 2', solve('new-client-fields', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), ['c'])\ncheck('new-client-fields scenario 3', solve('new-client-fields', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), ['a'])\ncheck('new-client-fields scenario 4', solve('new-client-fields', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), [])\ncheck('new-client-fields scenario 5', solve('new-client-fields', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), [])\ncheck('new-client-fields scenario 6', solve('new-client-fields', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), [])\ncheck('hydration-status scenario 1', solve('hydration-status', dict(server={'a':N,'b':2}, client={'a':9,'b':3}, dirty=['a'], revision=2, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e1','e2'], consumed=['e1'], removed=['b'])), 'hydrated')\ncheck('hydration-status scenario 2', solve('hydration-status', dict(server={'a':None}, client={'a':0,'c':N}, dirty=[], revision=1, client_revision=2, root='r', incoming_root='x', ready=False, pending=['e1'], consumed=[], removed=[])), 'waiting')\ncheck('hydration-status scenario 3', solve('hydration-status', dict(server={}, client={'a':N}, dirty=['a'], revision=0, client_revision=0, root='x', incoming_root='x', ready=True, pending=[], consumed=[], removed=[])), 'hydrated')\ncheck('hydration-status scenario 4', solve('hydration-status', dict(server={'a':0,'b':N}, client={'a':None}, dirty=['a'], revision=3, client_revision=3, root='x', incoming_root='r', ready=True, pending=['e2'], consumed=['e2'], removed=['a'])), 'hydrated')\ncheck('hydration-status scenario 5', solve('hydration-status', dict(server={'a':N}, client={}, dirty=[], revision=1, client_revision=0, root='r', incoming_root='r', ready=False, pending=['e3','e1'], consumed=['e1'], removed=['z'])), 'waiting')\ncheck('hydration-status scenario 6', solve('hydration-status', dict(server={'a':False}, client={'a':True}, dirty=['z'], revision=0, client_revision=1, root='r', incoming_root='r', ready=True, pending=['e4'], consumed=['e9'], removed=[])), 'hydrated')\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":"Only the explicitly specified operations and finite deterministic records are modeled; no browser or framework conformance is claimed. 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-client-state-hydrate-snapshot-snapshot-admission","generated_at":"2026-09-29T14:40:46.831980+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"An offline client lifecycle model that isolates a state-management defect without DOM rendering or network services.","repair":"Apply the modeled snapshot-admission rule: `s['revision'] >= s['client_revision']`.","root_cause":"The snapshot-admission client decision evaluates `s['revision'] == s['client_revision']` instead of `s['revision'] >= s['client_revision']`.","sha256":"0a2a411c74525224b92657a877b9e46ccac724d4e2079ab2530def8ce5e9d016","title":"Hydration snapshot reconciliation: Older client snapshot blocks newer server revision · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.715,"exit_code":1,"observations":[{"actual":{"a":9,"b":2},"check":"dirty-overlay scenario 1","expected":{"a":9,"b":2},"passed":true},{"actual":{"a":null},"check":"dirty-overlay scenario 2","expected":{"a":null},"passed":true},{"actual":{"a":1},"check":"dirty-overlay scenario 3","expected":{"a":1},"passed":true},{"actual":{"a":null,"b":1},"check":"dirty-overlay scenario 4","expected":{"a":null,"b":1},"passed":true},{"actual":{"a":1},"check":"dirty-overlay scenario 5","expected":{"a":1},"passed":true},{"actual":{"a":false},"check":"dirty-overlay scenario 6","expected":{"a":false},"passed":true},{"actual":9,"check":"missing-client-key scenario 1","expected":9,"passed":true},{"actual":0,"check":"missing-client-key scenario 2","expected":0,"passed":true},{"actual":1,"check":"missing-client-key scenario 3","expected":1,"passed":true},{"actual":null,"check":"missing-client-key scenario 4","expected":null,"passed":true},{"actual":1,"check":"missing-client-key scenario 5","expected":1,"passed":true},{"actual":true,"check":"missing-client-key scenario 6","expected":true,"passed":true},{"actual":true,"check":"snapshot-admission scenario 1","expected":true,"passed":true},{"actual":false,"check":"snapshot-admission scenario 2","expected":false,"passed":true},{"actual":false,"check":"snapshot-admission scenario 3","expected":true,"passed":false},{"actual":false,"check":"snapshot-admission scenario 4","expected":true,"passed":false},{"actual":true,"check":"snapshot-admission scenario 5","expected":true,"passed":true},{"actual":false,"check":"snapshot-admission scenario 6","expected":false,"passed":true},{"actual":true,"check":"root-binding scenario 1","expected":true,"passed":true},{"actual":false,"check":"root-binding scenario 2","expected":false,"passed":true},{"actual":true,"check":"root-binding scenario 3","expected":true,"passed":true},{"actual":false,"check":"root-binding scenario 4","expected":false,"passed":true},{"actual":true,"check":"root-binding scenario 5","expected":true,"passed":true},{"actual":true,"check":"root-binding scenario 6","expected":true,"passed":true},{"actual":["e1","e2"],"check":"replay-gate scenario 1","expected":["e1","e2"],"passed":true},{"actual":[],"check":"replay-gate scenario 2","expected":[],"passed":true},{"actual":[],"check":"replay-gate scenario 3","expected":[],"passed":true},{"actual":["e2"],"check":"replay-gate scenario 4","expected":["e2"],"passed":true},{"actual":[],"check":"replay-gate scenario 5","expected":[],"passed":true},{"actual":["e4"],"check":"replay-gate scenario 6","expected":["e4"],"passed":true},{"actual":["e2"],"check":"consumed-filter scenario 1","expected":["e2"],"passed":true},{"actual":["e1"],"check":"consumed-filter scenario 2","expected":["e1"],"passed":true},{"actual":[],"check":"consumed-filter scenario 3","expected":[],"passed":true},{"actual":[],"check":"consumed-filter scenario 4","expected":[],"passed":true},{"actual":["e3"],"check":"consumed-filter scenario 5","expected":["e3"],"passed":true},{"actual":["e4"],"check":"consumed-filter scenario 6","expected":["e4"],"passed":true},{"actual":{"a":1},"check":"tombstones scenario 1","expected":{"a":1},"passed":true},{"actual":{"a":null},"check":"tombstones scenario 2","expected":{"a":null},"passed":true},{"actual":{},"check":"tombstones scenario 3","expected":{},"passed":true},{"actual":{"b":1},"check":"tombstones scenario 4","expected":{"b":1},"passed":true},{"actual":{"a":1},"check":"tombstones scenario 5","expected":{"a":1},"passed":true},{"actual":{"a":false},"check":"tombstones scenario 6","expected":{"a":false},"passed":true},{"actual":["a"],"check":"dirty-pruning scenario 1","expected":["a"],"passed":true},{"actual":[],"check":"dirty-pruning scenario 2","expected":[],"passed":true},{"actual":["a"],"check":"dirty-pruning scenario 3","expected":["a"],"passed":true},{"actual":["a"],"check":"dirty-pruning scenario 4","expected":["a"],"passed":true},{"actual":[],"check":"dirty-pruning scenario 5","expected":[],"passed":true},{"actual":[],"check":"dirty-pruning scenario 6","expected":[],"passed":true},{"actual":[],"check":"new-client-fields scenario 1","expected":[],"passed":true},{"actual":["c"],"check":"new-client-fields scenario 2","expected":["c"],"passed":true},{"actual":["a"],"check":"new-client-fields scenario 3","expected":["a"],"passed":true},{"actual":[],"check":"new-client-fields scenario 4","expected":[],"passed":true},{"actual":[],"check":"new-client-fields scenario 5","expected":[],"passed":true},{"actual":[],"check":"new-client-fields scenario 6","expected":[],"passed":true},{"actual":"hydrated","check":"hydration-status scenario 1","expected":"hydrated","passed":true},{"actual":"waiting","check":"hydration-status scenario 2","expected":"waiting","passed":true},{"actual":"hydrated","check":"hydration-status scenario 3","expected":"hydrated","passed":true},{"actual":"hydrated","check":"hydration-status scenario 4","expected":"hydrated","passed":true},{"actual":"waiting","check":"hydration-status scenario 5","expected":"waiting","passed":true},{"actual":"hydrated","check":"hydration-status scenario 6","expected":"hydrated","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"dirty-overlay scenario 1\", \"actual\": {\"a\": 9, \"b\": 2}, \"expected\": {\"a\": 9, \"b\": 2}, \"passed\": true}, {\"check\": \"dirty-overlay scenario 2\", \"actual\": {\"a\": null}, \"expected\": {\"a\": null}, \"passed\": true}, {\"check\": \"dirty-overlay scenario 3\", \"actual\": {\"a\": 1}, \"expected\": {\"a\": 1}, \"passed\": true}, {\"check\": \"dirty-overlay scenario 4\", \"actual\": {\"a\": null, \"b\": 1}, \"expected\": {\"a\": null, \"b\": 1}, \"passed\": true}, {\"check\": \"dirty-overlay scenario 5\", \"actual\": {\"a\": 1}, \"expected\": {\"a\": 1}, \"passed\": true}, {\"check\": \"dirty-overlay scenario 6\", \"actual\": {\"a\": false}, \"expected\": {\"a\": false}, \"passed\": true}, {\"check\": \"missing-client-key scenario 1\", \"actual\": 9, \"expected\": 9, \"passed\": true}, {\"check\": \"missing-client-key scenario 2\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"missing-client-key scenario 3\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"missing-client-key scenario 4\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"missing-client-key scenario 5\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"missing-client-key scenario 6\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"snapshot-admission scenario 1\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"snapshot-admission scenario 2\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"snapshot-admission scenario 3\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"snapshot-admission scenario 4\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"snapshot-admission scenario 5\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"snapshot-admission scenario 6\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"root-binding scenario 1\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"root-binding scenario 2\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"root-binding scenario 3\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"root-binding scenario 4\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"root-binding scenario 5\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"root-binding scenario 6\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"replay-gate scenario 1\", \"actual\": [\"e1\", \"e2\"], \"expected\": [\"e1\", \"e2\"], \"passed\": true}, {\"check\": \"replay-gate scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"replay-gate scenario 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"replay-gate scenario 4\", \"actual\": [\"e2\"], \"expected\": [\"e2\"], \"passed\": true}, {\"check\": \"replay-gate scenario 5\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"replay-gate scenario 6\", \"actual\": [\"e4\"], \"expected\": [\"e4\"], \"passed\": true}, {\"check\": \"consumed-filter scenario 1\", \"actual\": [\"e2\"], \"expected\": [\"e2\"], \"passed\": true}, {\"check\": \"consumed-filter scenario 2\", \"actual\": [\"e1\"], \"expected\": [\"e1\"], \"passed\": true}, {\"check\": \"consumed-filter scenario 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"consumed-filter scenario 4\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"consumed-filter scenario 5\", \"actual\": [\"e3\"], \"expected\": [\"e3\"], \"passed\": true}, {\"check\": \"consumed-filter scenario 6\", \"actual\": [\"e4\"], \"expected\": [\"e4\"], \"passed\": true}, {\"check\": \"tombstones scenario 1\", \"actual\": {\"a\": 1}, \"expected\": {\"a\": 1}, \"passed\": true}, {\"check\": \"tombstones scenario 2\", \"actual\": {\"a\": null}, \"expected\": {\"a\": null}, \"passed\": true}, {\"check\": \"tombstones scenario 3\", \"actual\": {}, \"expected\": {}, \"passed\": true}, {\"check\": \"tombstones scenario 4\", \"actual\": {\"b\": 1}, \"expected\": {\"b\": 1}, \"passed\": true}, {\"check\": \"tombstones scenario 5\", \"actual\": {\"a\": 1}, \"expected\": {\"a\": 1}, \"passed\": true}, {\"check\": \"tombstones scenario 6\", \"actual\": {\"a\": false}, \"expected\": {\"a\": false}, \"passed\": true}, {\"check\": \"dirty-pruning scenario 1\", \"actual\": [\"a\"], \"expected\": [\"a\"], \"passed\": true}, {\"check\": \"dirty-pruning scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"dirty-pruning scenario 3\", \"actual\": [\"a\"], \"expected\": [\"a\"], \"passed\": true}, {\"check\": \"dirty-pruning scenario 4\", \"actual\": [\"a\"], \"expected\": [\"a\"], \"passed\": true}, {\"check\": \"dirty-pruning scenario 5\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"dirty-pruning scenario 6\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"new-client-fields scenario 1\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"new-client-fields scenario 2\", \"actual\": [\"c\"], \"expected\": [\"c\"], \"passed\": true}, {\"check\": \"new-client-fields scenario 3\", \"actual\": [\"a\"], \"expected\": [\"a\"], \"passed\": true}, {\"check\": \"new-client-fields scenario 4\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"new-client-fields scenario 5\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"new-client-fields scenario 6\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"hydration-status scenario 1\", \"actual\": \"hydrated\", \"expected\": \"hydrated\", \"passed\": true}, {\"check\": \"hydration-status scenario 2\", \"actual\": \"waiting\", \"expected\": \"waiting\", \"passed\": true}, {\"check\": \"hydration-status scenario 3\", \"actual\": \"hydrated\", \"expected\": \"hydrated\", \"passed\": true}, {\"check\": \"hydration-status scenario 4\", \"actual\": \"hydrated\", \"expected\": \"hydrated\", \"passed\": true}, {\"check\": \"hydration-status scenario 5\", \"actual\": \"waiting\", \"expected\": \"waiting\", \"passed\": true}, {\"check\": \"hydration-status scenario 6\", \"actual\": \"hydrated\", \"expected\": \"hydrated\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.827,"exit_code":1,"observations":[{"actual":{"a":9,"b":2},"check":"dirty-overlay scenario 1","expected":{"a":9,"b":2},"passed":true},{"actual":{"a":null},"check":"dirty-overlay scenario 2","expected":{"a":null},"passed":true},{"actual":{"a":1},"check":"dirty-overlay scenario 3","expected":{"a":1},"passed":true},{"actual":{"a":null,"b":1},"check":"dirty-overlay scenario 4","expected":{"a":null,"b":1},"passed":true},{"actual":{"a":1},"check":"dirty-overlay scenario 5","expected":{"a":1},"passed":true},{"actual":{"a":false},"check":"dirty-overlay scenario 6","expected":{"a":false},"passed":true},{"actual":9,"check":"missing-client-key scenario 1","expected":9,"passed":true},{"actual":0,"check":"missing-client-key scenario 2","expected":0,"passed":true},{"actual":1,"check":"missing-client-key scenario 3","expected":1,"passed":true},{"actual":null,"check":"missing-client-key scenario 4","expected":null,"passed":true},{"actual":1,"check":"missing-client-key scenario 5","expected":1,"passed":true},{"actual":true,"check":"missing-client-key scenario 6","expected":true,"passed":true},{"actual":false,"check":"snapshot-admission scenario 1","expected":true,"passed":false},{"actual":false,"check":"snapshot-admission scenario 2","expected":false,"passed":true},{"actual":true,"check":"snapshot-admission scenario 3","expected":true,"passed":true},{"actual":true,"check":"snapshot-admission scenario 4","expected":true,"passed":true},{"actual":false,"check":"snapshot-admission scenario 5","expected":true,"passed":false},{"actual":false,"check":"snapshot-admission scenario 6","expected":false,"passed":true},{"actual":true,"check":"root-binding scenario 1","expected":true,"passed":true},{"actual":false,"check":"root-binding scenario 2","expected":false,"passed":true},{"actual":true,"check":"root-binding scenario 3","expected":true,"passed":true},{"actual":false,"check":"root-binding scenario 4","expected":false,"passed":true},{"actual":true,"check":"root-binding scenario 5","expected":true,"passed":true},{"actual":true,"check":"root-binding scenario 6","expected":true,"passed":true},{"actual":["e1","e2"],"check":"replay-gate scenario 1","expected":["e1","e2"],"passed":true},{"actual":[],"check":"replay-gate scenario 2","expected":[],"passed":true},{"actual":[],"check":"replay-gate scenario 3","expected":[],"passed":true},{"actual":["e2"],"check":"replay-gate scenario 4","expected":["e2"],"passed":true},{"actual":[],"check":"replay-gate scenario 5","expected":[],"passed":true},{"actual":["e4"],"check":"replay-gate scenario 6","expected":["e4"],"passed":true},{"actual":["e2"],"check":"consumed-filter scenario 1","expected":["e2"],"passed":true},{"actual":["e1"],"check":"consumed-filter scenario 2","expected":["e1"],"passed":true},{"actual":[],"check":"consumed-filter scenario 3","expected":[],"passed":true},{"actual":[],"check":"consumed-filter scenario 4","expected":[],"passed":true},{"actual":["e3"],"check":"consumed-filter scenario 5","expected":["e3"],"passed":true},{"actual":["e4"],"check":"consumed-filter scenario 6","expected":["e4"],"passed":true},{"actual":{"a":1},"check":"tombstones scenario 1","expected":{"a":1},"passed":true},{"actual":{"a":null},"check":"tombstones scenario 2","expected":{"a":null},"passed":true},{"actual":{},"check":"tombstones scenario 3","expected":{},"passed":true},{"actual":{"b":1},"check":"tombstones scenario 4","expected":{"b":1},"passed":true},{"actual":{"a":1},"check":"tombstones scenario 5","expected":{"a":1},"passed":true},{"actual":{"a":false},"check":"tombstones scenario 6","expected":{"a":false},"passed":true},{"actual":["a"],"check":"dirty-pruning scenario 1","expected":["a"],"passed":true},{"actual":[],"check":"dirty-pruning scenario 2","expected":[],"passed":true},{"actual":["a"],"check":"dirty-pruning scenario 3","expected":["a"],"passed":true},{"actual":["a"],"check":"dirty-pruning scenario 4","expected":["a"],"passed":true},{"actual":[],"check":"dirty-pruning scenario 5","expected":[],"passed":true},{"actual":[],"check":"dirty-pruning scenario 6","expected":[],"passed":true},{"actual":[],"check":"new-client-fields scenario 1","expected":[],"passed":true},{"actual":["c"],"check":"new-client-fields scenario 2","expected":["c"],"passed":true},{"actual":["a"],"check":"new-client-fields scenario 3","expected":["a"],"passed":true},{"actual":[],"check":"new-client-fields scenario 4","expected":[],"passed":true},{"actual":[],"check":"new-client-fields scenario 5","expected":[],"passed":true},{"actual":[],"check":"new-client-fields scenario 6","expected":[],"passed":true},{"actual":"hydrated","check":"hydration-status scenario 1","expected":"hydrated","passed":true},{"actual":"waiting","check":"hydration-status scenario 2","expected":"waiting","passed":true},{"actual":"hydrated","check":"hydration-status scenario 3","expected":"hydrated","passed":true},{"actual":"hydrated","check":"hydration-status scenario 4","expected":"hydrated","passed":true},{"actual":"waiting","check":"hydration-status scenario 5","expected":"waiting","passed":true},{"actual":"hydrated","check":"hydration-status scenario 6","expected":"hydrated","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"dirty-overlay scenario 1\", \"actual\": {\"a\": 9, \"b\": 2}, \"expected\": {\"a\": 9, \"b\": 2}, \"passed\": true}, {\"check\": \"dirty-overlay scenario 2\", \"actual\": {\"a\": null}, \"expected\": {\"a\": null}, \"passed\": true}, {\"check\": \"dirty-overlay scenario 3\", \"actual\": {\"a\": 1}, \"expected\": {\"a\": 1}, \"passed\": true}, {\"check\": \"dirty-overlay scenario 4\", \"actual\": {\"a\": null, \"b\": 1}, \"expected\": {\"a\": null, \"b\": 1}, \"passed\": true}, {\"check\": \"dirty-overlay scenario 5\", \"actual\": {\"a\": 1}, \"expected\": {\"a\": 1}, \"passed\": true}, {\"check\": \"dirty-overlay scenario 6\", \"actual\": {\"a\": false}, \"expected\": {\"a\": false}, \"passed\": true}, {\"check\": \"missing-client-key scenario 1\", \"actual\": 9, \"expected\": 9, \"passed\": true}, {\"check\": \"missing-client-key scenario 2\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"missing-client-key scenario 3\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"missing-client-key scenario 4\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"missing-client-key scenario 5\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"missing-client-key scenario 6\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"snapshot-admission scenario 1\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"snapshot-admission scenario 2\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"snapshot-admission scenario 3\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"snapshot-admission scenario 4\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"snapshot-admission scenario 5\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"snapshot-admission scenario 6\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"root-binding scenario 1\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"root-binding scenario 2\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"root-binding scenario 3\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"root-binding scenario 4\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"root-binding scenario 5\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"root-binding scenario 6\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"replay-gate scenario 1\", \"actual\": [\"e1\", \"e2\"], \"expected\": [\"e1\", \"e2\"], \"passed\": true}, {\"check\": \"replay-gate scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"replay-gate scenario 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"replay-gate scenario 4\", \"actual\": [\"e2\"], \"expected\": [\"e2\"], \"passed\": true}, {\"check\": \"replay-gate scenario 5\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"replay-gate scenario 6\", \"actual\": [\"e4\"], \"expected\": [\"e4\"], \"passed\": true}, {\"check\": \"consumed-filter scenario 1\", \"actual\": [\"e2\"], \"expected\": [\"e2\"], \"passed\": true}, {\"check\": \"consumed-filter scenario 2\", \"actual\": [\"e1\"], \"expected\": [\"e1\"], \"passed\": true}, {\"check\": \"consumed-filter scenario 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"consumed-filter scenario 4\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"consumed-filter scenario 5\", \"actual\": [\"e3\"], \"expected\": [\"e3\"], \"passed\": true}, {\"check\": \"consumed-filter scenario 6\", \"actual\": [\"e4\"], \"expected\": [\"e4\"], \"passed\": true}, {\"check\": \"tombstones scenario 1\", \"actual\": {\"a\": 1}, \"expected\": {\"a\": 1}, \"passed\": true}, {\"check\": \"tombstones scenario 2\", \"actual\": {\"a\": null}, \"expected\": {\"a\": null}, \"passed\": true}, {\"check\": \"tombstones scenario 3\", \"actual\": {}, \"expected\": {}, \"passed\": true}, {\"check\": \"tombstones scenario 4\", \"actual\": {\"b\": 1}, \"expected\": {\"b\": 1}, \"passed\": true}, {\"check\": \"tombstones scenario 5\", \"actual\": {\"a\": 1}, \"expected\": {\"a\": 1}, \"passed\": true}, {\"check\": \"tombstones scenario 6\", \"actual\": {\"a\": false}, \"expected\": {\"a\": false}, \"passed\": true}, {\"check\": \"dirty-pruning scenario 1\", \"actual\": [\"a\"], \"expected\": [\"a\"], \"passed\": true}, {\"check\": \"dirty-pruning scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"dirty-pruning scenario 3\", \"actual\": [\"a\"], \"expected\": [\"a\"], \"passed\": true}, {\"check\": \"dirty-pruning scenario 4\", \"actual\": [\"a\"], \"expected\": [\"a\"], \"passed\": true}, {\"check\": \"dirty-pruning scenario 5\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"dirty-pruning scenario 6\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"new-client-fields scenario 1\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"new-client-fields scenario 2\", \"actual\": [\"c\"], \"expected\": [\"c\"], \"passed\": true}, {\"check\": \"new-client-fields scenario 3\", \"actual\": [\"a\"], \"expected\": [\"a\"], \"passed\": true}, {\"check\": \"new-client-fields scenario 4\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"new-client-fields scenario 5\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"new-client-fields scenario 6\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"hydration-status scenario 1\", \"actual\": \"hydrated\", \"expected\": \"hydrated\", \"passed\": true}, {\"check\": \"hydration-status scenario 2\", \"actual\": \"waiting\", \"expected\": \"waiting\", \"passed\": true}, {\"check\": \"hydration-status scenario 3\", \"actual\": \"hydrated\", \"expected\": \"hydrated\", \"passed\": true}, {\"check\": \"hydration-status scenario 4\", \"actual\": \"hydrated\", \"expected\": \"hydrated\", \"passed\": true}, {\"check\": \"hydration-status scenario 5\", \"actual\": \"waiting\", \"expected\": \"waiting\", \"passed\": true}, {\"check\": \"hydration-status scenario 6\", \"actual\": \"hydrated\", \"expected\": \"hydrated\", \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":44.265,"exit_code":0,"observations":[{"actual":{"a":9,"b":2},"check":"dirty-overlay scenario 1","expected":{"a":9,"b":2},"passed":true},{"actual":{"a":null},"check":"dirty-overlay scenario 2","expected":{"a":null},"passed":true},{"actual":{"a":1},"check":"dirty-overlay scenario 3","expected":{"a":1},"passed":true},{"actual":{"a":null,"b":1},"check":"dirty-overlay scenario 4","expected":{"a":null,"b":1},"passed":true},{"actual":{"a":1},"check":"dirty-overlay scenario 5","expected":{"a":1},"passed":true},{"actual":{"a":false},"check":"dirty-overlay scenario 6","expected":{"a":false},"passed":true},{"actual":9,"check":"missing-client-key scenario 1","expected":9,"passed":true},{"actual":0,"check":"missing-client-key scenario 2","expected":0,"passed":true},{"actual":1,"check":"missing-client-key scenario 3","expected":1,"passed":true},{"actual":null,"check":"missing-client-key scenario 4","expected":null,"passed":true},{"actual":1,"check":"missing-client-key scenario 5","expected":1,"passed":true},{"actual":true,"check":"missing-client-key scenario 6","expected":true,"passed":true},{"actual":true,"check":"snapshot-admission scenario 1","expected":true,"passed":true},{"actual":false,"check":"snapshot-admission scenario 2","expected":false,"passed":true},{"actual":true,"check":"snapshot-admission scenario 3","expected":true,"passed":true},{"actual":true,"check":"snapshot-admission scenario 4","expected":true,"passed":true},{"actual":true,"check":"snapshot-admission scenario 5","expected":true,"passed":true},{"actual":false,"check":"snapshot-admission scenario 6","expected":false,"passed":true},{"actual":true,"check":"root-binding scenario 1","expected":true,"passed":true},{"actual":false,"check":"root-binding scenario 2","expected":false,"passed":true},{"actual":true,"check":"root-binding scenario 3","expected":true,"passed":true},{"actual":false,"check":"root-binding scenario 4","expected":false,"passed":true},{"actual":true,"check":"root-binding scenario 5","expected":true,"passed":true},{"actual":true,"check":"root-binding scenario 6","expected":true,"passed":true},{"actual":["e1","e2"],"check":"replay-gate scenario 1","expected":["e1","e2"],"passed":true},{"actual":[],"check":"replay-gate scenario 2","expected":[],"passed":true},{"actual":[],"check":"replay-gate scenario 3","expected":[],"passed":true},{"actual":["e2"],"check":"replay-gate scenario 4","expected":["e2"],"passed":true},{"actual":[],"check":"replay-gate scenario 5","expected":[],"passed":true},{"actual":["e4"],"check":"replay-gate scenario 6","expected":["e4"],"passed":true},{"actual":["e2"],"check":"consumed-filter scenario 1","expected":["e2"],"passed":true},{"actual":["e1"],"check":"consumed-filter scenario 2","expected":["e1"],"passed":true},{"actual":[],"check":"consumed-filter scenario 3","expected":[],"passed":true},{"actual":[],"check":"consumed-filter scenario 4","expected":[],"passed":true},{"actual":["e3"],"check":"consumed-filter scenario 5","expected":["e3"],"passed":true},{"actual":["e4"],"check":"consumed-filter scenario 6","expected":["e4"],"passed":true},{"actual":{"a":1},"check":"tombstones scenario 1","expected":{"a":1},"passed":true},{"actual":{"a":null},"check":"tombstones scenario 2","expected":{"a":null},"passed":true},{"actual":{},"check":"tombstones scenario 3","expected":{},"passed":true},{"actual":{"b":1},"check":"tombstones scenario 4","expected":{"b":1},"passed":true},{"actual":{"a":1},"check":"tombstones scenario 5","expected":{"a":1},"passed":true},{"actual":{"a":false},"check":"tombstones scenario 6","expected":{"a":false},"passed":true},{"actual":["a"],"check":"dirty-pruning scenario 1","expected":["a"],"passed":true},{"actual":[],"check":"dirty-pruning scenario 2","expected":[],"passed":true},{"actual":["a"],"check":"dirty-pruning scenario 3","expected":["a"],"passed":true},{"actual":["a"],"check":"dirty-pruning scenario 4","expected":["a"],"passed":true},{"actual":[],"check":"dirty-pruning scenario 5","expected":[],"passed":true},{"actual":[],"check":"dirty-pruning scenario 6","expected":[],"passed":true},{"actual":[],"check":"new-client-fields scenario 1","expected":[],"passed":true},{"actual":["c"],"check":"new-client-fields scenario 2","expected":["c"],"passed":true},{"actual":["a"],"check":"new-client-fields scenario 3","expected":["a"],"passed":true},{"actual":[],"check":"new-client-fields scenario 4","expected":[],"passed":true},{"actual":[],"check":"new-client-fields scenario 5","expected":[],"passed":true},{"actual":[],"check":"new-client-fields scenario 6","expected":[],"passed":true},{"actual":"hydrated","check":"hydration-status scenario 1","expected":"hydrated","passed":true},{"actual":"waiting","check":"hydration-status scenario 2","expected":"waiting","passed":true},{"actual":"hydrated","check":"hydration-status scenario 3","expected":"hydrated","passed":true},{"actual":"hydrated","check":"hydration-status scenario 4","expected":"hydrated","passed":true},{"actual":"waiting","check":"hydration-status scenario 5","expected":"waiting","passed":true},{"actual":"hydrated","check":"hydration-status scenario 6","expected":"hydrated","passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"dirty-overlay scenario 1\", \"actual\": {\"a\": 9, \"b\": 2}, \"expected\": {\"a\": 9, \"b\": 2}, \"passed\": true}, {\"check\": \"dirty-overlay scenario 2\", \"actual\": {\"a\": null}, \"expected\": {\"a\": null}, \"passed\": true}, {\"check\": \"dirty-overlay scenario 3\", \"actual\": {\"a\": 1}, \"expected\": {\"a\": 1}, \"passed\": true}, {\"check\": \"dirty-overlay scenario 4\", \"actual\": {\"a\": null, \"b\": 1}, \"expected\": {\"a\": null, \"b\": 1}, \"passed\": true}, {\"check\": \"dirty-overlay scenario 5\", \"actual\": {\"a\": 1}, \"expected\": {\"a\": 1}, \"passed\": true}, {\"check\": \"dirty-overlay scenario 6\", \"actual\": {\"a\": false}, \"expected\": {\"a\": false}, \"passed\": true}, {\"check\": \"missing-client-key scenario 1\", \"actual\": 9, \"expected\": 9, \"passed\": true}, {\"check\": \"missing-client-key scenario 2\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"missing-client-key scenario 3\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"missing-client-key scenario 4\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"missing-client-key scenario 5\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"missing-client-key scenario 6\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"snapshot-admission scenario 1\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"snapshot-admission scenario 2\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"snapshot-admission scenario 3\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"snapshot-admission scenario 4\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"snapshot-admission scenario 5\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"snapshot-admission scenario 6\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"root-binding scenario 1\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"root-binding scenario 2\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"root-binding scenario 3\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"root-binding scenario 4\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"root-binding scenario 5\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"root-binding scenario 6\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"replay-gate scenario 1\", \"actual\": [\"e1\", \"e2\"], \"expected\": [\"e1\", \"e2\"], \"passed\": true}, {\"check\": \"replay-gate scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"replay-gate scenario 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"replay-gate scenario 4\", \"actual\": [\"e2\"], \"expected\": [\"e2\"], \"passed\": true}, {\"check\": \"replay-gate scenario 5\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"replay-gate scenario 6\", \"actual\": [\"e4\"], \"expected\": [\"e4\"], \"passed\": true}, {\"check\": \"consumed-filter scenario 1\", \"actual\": [\"e2\"], \"expected\": [\"e2\"], \"passed\": true}, {\"check\": \"consumed-filter scenario 2\", \"actual\": [\"e1\"], \"expected\": [\"e1\"], \"passed\": true}, {\"check\": \"consumed-filter scenario 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"consumed-filter scenario 4\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"consumed-filter scenario 5\", \"actual\": [\"e3\"], \"expected\": [\"e3\"], \"passed\": true}, {\"check\": \"consumed-filter scenario 6\", \"actual\": [\"e4\"], \"expected\": [\"e4\"], \"passed\": true}, {\"check\": \"tombstones scenario 1\", \"actual\": {\"a\": 1}, \"expected\": {\"a\": 1}, \"passed\": true}, {\"check\": \"tombstones scenario 2\", \"actual\": {\"a\": null}, \"expected\": {\"a\": null}, \"passed\": true}, {\"check\": \"tombstones scenario 3\", \"actual\": {}, \"expected\": {}, \"passed\": true}, {\"check\": \"tombstones scenario 4\", \"actual\": {\"b\": 1}, \"expected\": {\"b\": 1}, \"passed\": true}, {\"check\": \"tombstones scenario 5\", \"actual\": {\"a\": 1}, \"expected\": {\"a\": 1}, \"passed\": true}, {\"check\": \"tombstones scenario 6\", \"actual\": {\"a\": false}, \"expected\": {\"a\": false}, \"passed\": true}, {\"check\": \"dirty-pruning scenario 1\", \"actual\": [\"a\"], \"expected\": [\"a\"], \"passed\": true}, {\"check\": \"dirty-pruning scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"dirty-pruning scenario 3\", \"actual\": [\"a\"], \"expected\": [\"a\"], \"passed\": true}, {\"check\": \"dirty-pruning scenario 4\", \"actual\": [\"a\"], \"expected\": [\"a\"], \"passed\": true}, {\"check\": \"dirty-pruning scenario 5\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"dirty-pruning scenario 6\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"new-client-fields scenario 1\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"new-client-fields scenario 2\", \"actual\": [\"c\"], \"expected\": [\"c\"], \"passed\": true}, {\"check\": \"new-client-fields scenario 3\", \"actual\": [\"a\"], \"expected\": [\"a\"], \"passed\": true}, {\"check\": \"new-client-fields scenario 4\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"new-client-fields scenario 5\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"new-client-fields scenario 6\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"hydration-status scenario 1\", \"actual\": \"hydrated\", \"expected\": \"hydrated\", \"passed\": true}, {\"check\": \"hydration-status scenario 2\", \"actual\": \"waiting\", \"expected\": \"waiting\", \"passed\": true}, {\"check\": \"hydration-status scenario 3\", \"actual\": \"hydrated\", \"expected\": \"hydrated\", \"passed\": true}, {\"check\": \"hydration-status scenario 4\", \"actual\": \"hydrated\", \"expected\": \"hydrated\", \"passed\": true}, {\"check\": \"hydration-status scenario 5\", \"actual\": \"waiting\", \"expected\": \"waiting\", \"passed\": true}, {\"check\": \"hydration-status scenario 6\", \"actual\": \"hydrated\", \"expected\": \"hydrated\", \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}