FAILURE MAP
← Case archive

FA-23341 / Client state / Open access

Hydration snapshot reconciliation: Dirty pre-hydration edits are overwritten · case 01

Dirty pre-hydration edits are overwritten.

Verified by executionVariant 1 · 60 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The dirty-overlay client decision evaluates `s['server']` instead of `{**s['server'], **{k:v for k,v in s['client'].items() if k in s['dirty']}}`.

VERIFIED REPAIR

Apply the modeled dirty-overlay rule: `{**s['server'], **{k:v for k,v in s['client'].items() if k in s['dirty']}}`.

Unsuccessful approach: The partial repair `{**s['server'], **s['client']}` still violates the explicit fixture contract.

Case 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 dirty-overlay has the six explicit input/output oracles below.

Why this case matters

An offline client lifecycle model that isolates a state-management defect without DOM rendering or network services.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(operation, s):
    if operation == 'dirty-overlay':
        return s['server']
    if operation == 'missing-client-key':
        return s['client']['a'] if 'a' in s['client'] else s['server'].get('a')
    if operation == 'snapshot-admission':
        return s['revision'] >= s['client_revision']
    if operation == 'root-binding':
        return s['root'] == s['incoming_root']
    if operation == 'replay-gate':
        return s['pending'] if s['ready'] else []
    if operation == 'consumed-filter':
        return [e for e in s['pending'] if e not in s['consumed']]
    if operation == 'tombstones':
        return {k:v for k,v in s['server'].items() if k not in s['removed']}
    if operation == 'dirty-pruning':
        return [k for k in s['dirty'] if k in s['client']]
    if operation == 'new-client-fields':
        return sorted(set(s['client'])-set(s['server']))
    if operation == 'hydration-status':
        return 'hydrated' if s['ready'] else 'waiting'
    raise ValueError('unknown modeled operation')
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('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})
check('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})
check('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})
check('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})
check('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})
check('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})
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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'])
check('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=[])), [])
check('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=[])), [])
check('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'])
check('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'])), [])
check('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'])
check('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'])
check('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'])
check('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=[])), [])
check('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'])), [])
check('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'])
check('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'])
check('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})
check('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})
check('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=[])), {})
check('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})
check('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})
check('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})
check('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'])
check('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=[])), [])
check('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'])
check('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'])
check('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'])), [])
check('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=[])), [])
check('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'])), [])
check('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'])
check('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'])
check('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'])), [])
check('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'])), [])
check('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=[])), [])
check('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')
check('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')
check('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')
check('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')
check('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')
check('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')
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
dirty-overlay scenario 1{'a': 1, 'b': 2}{'a': 9, 'b': 2}Failed
dirty-overlay scenario 2{'a': None}{'a': None}Passed
dirty-overlay scenario 3{}{'a': 1}Failed
dirty-overlay scenario 4{'a': 0, 'b': 1}{'a': None, 'b': 1}Failed
dirty-overlay scenario 5{'a': 1}{'a': 1}Passed
dirty-overlay scenario 6{'a': False}{'a': False}Passed
missing-client-key scenario 199Passed
missing-client-key scenario 200Passed
missing-client-key scenario 311Passed
missing-client-key scenario 4NoneNonePassed
missing-client-key scenario 511Passed
missing-client-key scenario 6TrueTruePassed
snapshot-admission scenario 1TrueTruePassed
snapshot-admission scenario 2FalseFalsePassed
snapshot-admission scenario 3TrueTruePassed
snapshot-admission scenario 4TrueTruePassed
snapshot-admission scenario 5TrueTruePassed
snapshot-admission scenario 6FalseFalsePassed
root-binding scenario 1TrueTruePassed
root-binding scenario 2FalseFalsePassed
root-binding scenario 3TrueTruePassed
root-binding scenario 4FalseFalsePassed
root-binding scenario 5TrueTruePassed
root-binding scenario 6TrueTruePassed
replay-gate scenario 1['e1', 'e2']['e1', 'e2']Passed
replay-gate scenario 2[][]Passed
replay-gate scenario 3[][]Passed
replay-gate scenario 4['e2']['e2']Passed
replay-gate scenario 5[][]Passed
replay-gate scenario 6['e4']['e4']Passed
consumed-filter scenario 1['e2']['e2']Passed
consumed-filter scenario 2['e1']['e1']Passed
consumed-filter scenario 3[][]Passed
consumed-filter scenario 4[][]Passed
consumed-filter scenario 5['e3']['e3']Passed
consumed-filter scenario 6['e4']['e4']Passed
tombstones scenario 1{'a': 1}{'a': 1}Passed
tombstones scenario 2{'a': None}{'a': None}Passed
tombstones scenario 3{}{}Passed
tombstones scenario 4{'b': 1}{'b': 1}Passed
tombstones scenario 5{'a': 1}{'a': 1}Passed
tombstones scenario 6{'a': False}{'a': False}Passed
dirty-pruning scenario 1['a']['a']Passed
dirty-pruning scenario 2[][]Passed
dirty-pruning scenario 3['a']['a']Passed
dirty-pruning scenario 4['a']['a']Passed
dirty-pruning scenario 5[][]Passed
dirty-pruning scenario 6[][]Passed
new-client-fields scenario 1[][]Passed
new-client-fields scenario 2['c']['c']Passed
new-client-fields scenario 3['a']['a']Passed
new-client-fields scenario 4[][]Passed
new-client-fields scenario 5[][]Passed
new-client-fields scenario 6[][]Passed
hydration-status scenario 1hydratedhydratedPassed
hydration-status scenario 2waitingwaitingPassed
hydration-status scenario 3hydratedhydratedPassed
hydration-status scenario 4hydratedhydratedPassed
hydration-status scenario 5waitingwaitingPassed
hydration-status scenario 6hydratedhydratedPassed

SHA-256 / 83b2987f2a2d164862767fe1db1c7d008da3c8c7b3c0a1259ff72c53f2e47440

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(operation, s):
    if operation == 'dirty-overlay':
        return {**s['server'], **s['client']}
    if operation == 'missing-client-key':
        return s['client']['a'] if 'a' in s['client'] else s['server'].get('a')
    if operation == 'snapshot-admission':
        return s['revision'] >= s['client_revision']
    if operation == 'root-binding':
        return s['root'] == s['incoming_root']
    if operation == 'replay-gate':
        return s['pending'] if s['ready'] else []
    if operation == 'consumed-filter':
        return [e for e in s['pending'] if e not in s['consumed']]
    if operation == 'tombstones':
        return {k:v for k,v in s['server'].items() if k not in s['removed']}
    if operation == 'dirty-pruning':
        return [k for k in s['dirty'] if k in s['client']]
    if operation == 'new-client-fields':
        return sorted(set(s['client'])-set(s['server']))
    if operation == 'hydration-status':
        return 'hydrated' if s['ready'] else 'waiting'
    raise ValueError('unknown modeled operation')
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('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})
check('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})
check('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})
check('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})
check('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})
check('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})
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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'])
check('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=[])), [])
check('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=[])), [])
check('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'])
check('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'])), [])
check('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'])
check('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'])
check('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'])
check('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=[])), [])
check('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'])), [])
check('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'])
check('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'])
check('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})
check('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})
check('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=[])), {})
check('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})
check('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})
check('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})
check('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'])
check('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=[])), [])
check('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'])
check('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'])
check('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'])), [])
check('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=[])), [])
check('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'])), [])
check('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'])
check('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'])
check('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'])), [])
check('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'])), [])
check('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=[])), [])
check('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')
check('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')
check('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')
check('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')
check('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')
check('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')
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
dirty-overlay scenario 1{'a': 9, 'b': 3}{'a': 9, 'b': 2}Failed
dirty-overlay scenario 2{'a': 0, 'c': 1}{'a': None}Failed
dirty-overlay scenario 3{'a': 1}{'a': 1}Passed
dirty-overlay scenario 4{'a': None, 'b': 1}{'a': None, 'b': 1}Passed
dirty-overlay scenario 5{'a': 1}{'a': 1}Passed
dirty-overlay scenario 6{'a': True}{'a': False}Failed
missing-client-key scenario 199Passed
missing-client-key scenario 200Passed
missing-client-key scenario 311Passed
missing-client-key scenario 4NoneNonePassed
missing-client-key scenario 511Passed
missing-client-key scenario 6TrueTruePassed
snapshot-admission scenario 1TrueTruePassed
snapshot-admission scenario 2FalseFalsePassed
snapshot-admission scenario 3TrueTruePassed
snapshot-admission scenario 4TrueTruePassed
snapshot-admission scenario 5TrueTruePassed
snapshot-admission scenario 6FalseFalsePassed
root-binding scenario 1TrueTruePassed
root-binding scenario 2FalseFalsePassed
root-binding scenario 3TrueTruePassed
root-binding scenario 4FalseFalsePassed
root-binding scenario 5TrueTruePassed
root-binding scenario 6TrueTruePassed
replay-gate scenario 1['e1', 'e2']['e1', 'e2']Passed
replay-gate scenario 2[][]Passed
replay-gate scenario 3[][]Passed
replay-gate scenario 4['e2']['e2']Passed
replay-gate scenario 5[][]Passed
replay-gate scenario 6['e4']['e4']Passed
consumed-filter scenario 1['e2']['e2']Passed
consumed-filter scenario 2['e1']['e1']Passed
consumed-filter scenario 3[][]Passed
consumed-filter scenario 4[][]Passed
consumed-filter scenario 5['e3']['e3']Passed
consumed-filter scenario 6['e4']['e4']Passed
tombstones scenario 1{'a': 1}{'a': 1}Passed
tombstones scenario 2{'a': None}{'a': None}Passed
tombstones scenario 3{}{}Passed
tombstones scenario 4{'b': 1}{'b': 1}Passed
tombstones scenario 5{'a': 1}{'a': 1}Passed
tombstones scenario 6{'a': False}{'a': False}Passed
dirty-pruning scenario 1['a']['a']Passed
dirty-pruning scenario 2[][]Passed
dirty-pruning scenario 3['a']['a']Passed
dirty-pruning scenario 4['a']['a']Passed
dirty-pruning scenario 5[][]Passed
dirty-pruning scenario 6[][]Passed
new-client-fields scenario 1[][]Passed
new-client-fields scenario 2['c']['c']Passed
new-client-fields scenario 3['a']['a']Passed
new-client-fields scenario 4[][]Passed
new-client-fields scenario 5[][]Passed
new-client-fields scenario 6[][]Passed
hydration-status scenario 1hydratedhydratedPassed
hydration-status scenario 2waitingwaitingPassed
hydration-status scenario 3hydratedhydratedPassed
hydration-status scenario 4hydratedhydratedPassed
hydration-status scenario 5waitingwaitingPassed
hydration-status scenario 6hydratedhydratedPassed

SHA-256 / ed0f019e402e47c8c7905b4de0997356e7c6e6d13ffe4cb773040da450fdfa53

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(operation, s):
    if operation == 'dirty-overlay':
        return {**s['server'], **{k:v for k,v in s['client'].items() if k in s['dirty']}}
    if operation == 'missing-client-key':
        return s['client']['a'] if 'a' in s['client'] else s['server'].get('a')
    if operation == 'snapshot-admission':
        return s['revision'] >= s['client_revision']
    if operation == 'root-binding':
        return s['root'] == s['incoming_root']
    if operation == 'replay-gate':
        return s['pending'] if s['ready'] else []
    if operation == 'consumed-filter':
        return [e for e in s['pending'] if e not in s['consumed']]
    if operation == 'tombstones':
        return {k:v for k,v in s['server'].items() if k not in s['removed']}
    if operation == 'dirty-pruning':
        return [k for k in s['dirty'] if k in s['client']]
    if operation == 'new-client-fields':
        return sorted(set(s['client'])-set(s['server']))
    if operation == 'hydration-status':
        return 'hydrated' if s['ready'] else 'waiting'
    raise ValueError('unknown modeled operation')
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('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})
check('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})
check('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})
check('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})
check('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})
check('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})
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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)
check('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'])
check('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=[])), [])
check('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=[])), [])
check('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'])
check('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'])), [])
check('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'])
check('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'])
check('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'])
check('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=[])), [])
check('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'])), [])
check('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'])
check('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'])
check('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})
check('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})
check('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=[])), {})
check('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})
check('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})
check('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})
check('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'])
check('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=[])), [])
check('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'])
check('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'])
check('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'])), [])
check('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=[])), [])
check('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'])), [])
check('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'])
check('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'])
check('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'])), [])
check('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'])), [])
check('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=[])), [])
check('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')
check('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')
check('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')
check('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')
check('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')
check('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')
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
dirty-overlay scenario 1{'a': 9, 'b': 2}{'a': 9, 'b': 2}Passed
dirty-overlay scenario 2{'a': None}{'a': None}Passed
dirty-overlay scenario 3{'a': 1}{'a': 1}Passed
dirty-overlay scenario 4{'a': None, 'b': 1}{'a': None, 'b': 1}Passed
dirty-overlay scenario 5{'a': 1}{'a': 1}Passed
dirty-overlay scenario 6{'a': False}{'a': False}Passed
missing-client-key scenario 199Passed
missing-client-key scenario 200Passed
missing-client-key scenario 311Passed
missing-client-key scenario 4NoneNonePassed
missing-client-key scenario 511Passed
missing-client-key scenario 6TrueTruePassed
snapshot-admission scenario 1TrueTruePassed
snapshot-admission scenario 2FalseFalsePassed
snapshot-admission scenario 3TrueTruePassed
snapshot-admission scenario 4TrueTruePassed
snapshot-admission scenario 5TrueTruePassed
snapshot-admission scenario 6FalseFalsePassed
root-binding scenario 1TrueTruePassed
root-binding scenario 2FalseFalsePassed
root-binding scenario 3TrueTruePassed
root-binding scenario 4FalseFalsePassed
root-binding scenario 5TrueTruePassed
root-binding scenario 6TrueTruePassed
replay-gate scenario 1['e1', 'e2']['e1', 'e2']Passed
replay-gate scenario 2[][]Passed
replay-gate scenario 3[][]Passed
replay-gate scenario 4['e2']['e2']Passed
replay-gate scenario 5[][]Passed
replay-gate scenario 6['e4']['e4']Passed
consumed-filter scenario 1['e2']['e2']Passed
consumed-filter scenario 2['e1']['e1']Passed
consumed-filter scenario 3[][]Passed
consumed-filter scenario 4[][]Passed
consumed-filter scenario 5['e3']['e3']Passed
consumed-filter scenario 6['e4']['e4']Passed
tombstones scenario 1{'a': 1}{'a': 1}Passed
tombstones scenario 2{'a': None}{'a': None}Passed
tombstones scenario 3{}{}Passed
tombstones scenario 4{'b': 1}{'b': 1}Passed
tombstones scenario 5{'a': 1}{'a': 1}Passed
tombstones scenario 6{'a': False}{'a': False}Passed
dirty-pruning scenario 1['a']['a']Passed
dirty-pruning scenario 2[][]Passed
dirty-pruning scenario 3['a']['a']Passed
dirty-pruning scenario 4['a']['a']Passed
dirty-pruning scenario 5[][]Passed
dirty-pruning scenario 6[][]Passed
new-client-fields scenario 1[][]Passed
new-client-fields scenario 2['c']['c']Passed
new-client-fields scenario 3['a']['a']Passed
new-client-fields scenario 4[][]Passed
new-client-fields scenario 5[][]Passed
new-client-fields scenario 6[][]Passed
hydration-status scenario 1hydratedhydratedPassed
hydration-status scenario 2waitingwaitingPassed
hydration-status scenario 3hydratedhydratedPassed
hydration-status scenario 4hydratedhydratedPassed
hydration-status scenario 5waitingwaitingPassed
hydration-status scenario 6hydratedhydratedPassed

SHA-256 / f6c6e3d06f31bf1a1cb63263397f07bc794f69f9ddcb2f6a4b659b1dfd3324b6

Verification & scope

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.

Observations recorded using Python 3.12.14 at 2026-09-29T14:40:46.744288+00:00.

Case digest / 924f0903b0689e1fed59fedd12ab8f3d2aaa1017e15639f99f79303270cf7d36