FA-24211 / Client state / Open access
Client offline mutation outbox: Effective backlog · case 01
Effective backlog.
ROOT CAUSE
The effective-backlog client decision evaluates `len(commands)` instead of `sum(x[0] not in acknowledged and x[0] not in cancelled for x in commands)`.
VERIFIED REPAIR
Apply the modeled effective-backlog rule: `sum(x[0] not in acknowledged and x[0] not in cancelled for x in commands)`.
Unsuccessful approach: The partial repair `len(commands)-len(acknowledged)-len(cancelled)` still violates the explicit fixture contract.
Case contract
The client outbox is an ordered UI mutation log; commands use identity, not payload truthiness. Cancellation/acknowledgment remove only matching commands, offline mode retains unsent work, and a zero send budget sends nothing. Operation effective-backlog 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):
commands, cancelled, acknowledged, online, limit = s
if operation == 'cancel-preserves-other-commands':
return [x for x in commands if x[0] not in cancelled]
if operation == 'ack-removes-by-identity':
return [x for x in commands if x[0] not in acknowledged]
if operation == 'offline-send-suppression':
return commands[:limit] if online else []
if operation == 'effective-backlog':
return len(commands)
if operation == 'create-before-edit-order':
return [x[0] for x in commands]
if operation == 'destructive-command-warning':
return [x[0] for x in commands if x[1]=='delete' and x[0] not in cancelled]
if operation == 'unsent-tail-retention':
return commands[limit:] if online else commands
if operation == 'acknowledged-prefix-barrier':
return next((i for i,x in enumerate(commands) if x[0] not in acknowledged),len(commands))
if operation == 'zero-payload-retention':
return [x[2] for x in commands if x[1]=='edit']
if operation == 'cancel-request-intersection':
return [x[0] for x in commands if x[0] in cancelled]
raise ValueError('unknown modeled operation')
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('cancel-preserves-other-commands scenario 1', solve('cancel-preserves-other-commands', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), [('a','create',N),('c','delete',0)])
check('cancel-preserves-other-commands scenario 2', solve('cancel-preserves-other-commands', ([],[],[],True,2)), [])
check('cancel-preserves-other-commands scenario 3', solve('cancel-preserves-other-commands', ([('a','edit',0)],[],[],False,1)), [('a','edit',0)])
check('cancel-preserves-other-commands scenario 4', solve('cancel-preserves-other-commands', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), [('a','edit',1),('b','edit',2)])
check('cancel-preserves-other-commands scenario 5', solve('cancel-preserves-other-commands', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), [('b','create',N)])
check('cancel-preserves-other-commands scenario 6', solve('cancel-preserves-other-commands', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), [('a','create',1),('b','edit',2),('c','edit',3)])
check('ack-removes-by-identity scenario 1', solve('ack-removes-by-identity', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), [('b','edit',2),('c','delete',0)])
check('ack-removes-by-identity scenario 2', solve('ack-removes-by-identity', ([],[],[],True,2)), [])
check('ack-removes-by-identity scenario 3', solve('ack-removes-by-identity', ([('a','edit',0)],[],[],False,1)), [('a','edit',0)])
check('ack-removes-by-identity scenario 4', solve('ack-removes-by-identity', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), [('a','edit',1),('b','edit',2)])
check('ack-removes-by-identity scenario 5', solve('ack-removes-by-identity', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), [('a','delete',0),('b','create',N)])
check('ack-removes-by-identity scenario 6', solve('ack-removes-by-identity', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), [('a','create',1),('c','edit',3)])
check('offline-send-suppression scenario 1', solve('offline-send-suppression', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), [('a','create',N),('b','edit',2)])
check('offline-send-suppression scenario 2', solve('offline-send-suppression', ([],[],[],True,2)), [])
check('offline-send-suppression scenario 3', solve('offline-send-suppression', ([('a','edit',0)],[],[],False,1)), [])
check('offline-send-suppression scenario 4', solve('offline-send-suppression', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), [('a','edit',1)])
check('offline-send-suppression scenario 5', solve('offline-send-suppression', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), [])
check('offline-send-suppression scenario 6', solve('offline-send-suppression', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), [('a','create',1),('b','edit',2),('c','edit',3)])
check('effective-backlog scenario 1', solve('effective-backlog', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), 1)
check('effective-backlog scenario 2', solve('effective-backlog', ([],[],[],True,2)), 0)
check('effective-backlog scenario 3', solve('effective-backlog', ([('a','edit',0)],[],[],False,1)), 1)
check('effective-backlog scenario 4', solve('effective-backlog', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), 2)
check('effective-backlog scenario 5', solve('effective-backlog', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), 1)
check('effective-backlog scenario 6', solve('effective-backlog', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), 2)
check('create-before-edit-order scenario 1', solve('create-before-edit-order', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), ['a','b','c'])
check('create-before-edit-order scenario 2', solve('create-before-edit-order', ([],[],[],True,2)), [])
check('create-before-edit-order scenario 3', solve('create-before-edit-order', ([('a','edit',0)],[],[],False,1)), ['a'])
check('create-before-edit-order scenario 4', solve('create-before-edit-order', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), ['a','b'])
check('create-before-edit-order scenario 5', solve('create-before-edit-order', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), ['a','b'])
check('create-before-edit-order scenario 6', solve('create-before-edit-order', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), ['a','b','c'])
check('destructive-command-warning scenario 1', solve('destructive-command-warning', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), ['c'])
check('destructive-command-warning scenario 2', solve('destructive-command-warning', ([],[],[],True,2)), [])
check('destructive-command-warning scenario 3', solve('destructive-command-warning', ([('a','edit',0)],[],[],False,1)), [])
check('destructive-command-warning scenario 4', solve('destructive-command-warning', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), [])
check('destructive-command-warning scenario 5', solve('destructive-command-warning', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), [])
check('destructive-command-warning scenario 6', solve('destructive-command-warning', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), [])
check('unsent-tail-retention scenario 1', solve('unsent-tail-retention', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), [('c','delete',0)])
check('unsent-tail-retention scenario 2', solve('unsent-tail-retention', ([],[],[],True,2)), [])
check('unsent-tail-retention scenario 3', solve('unsent-tail-retention', ([('a','edit',0)],[],[],False,1)), [('a','edit',0)])
check('unsent-tail-retention scenario 4', solve('unsent-tail-retention', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), [('b','edit',2)])
check('unsent-tail-retention scenario 5', solve('unsent-tail-retention', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), [('a','delete',0),('b','create',N)])
check('unsent-tail-retention scenario 6', solve('unsent-tail-retention', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), [])
check('acknowledged-prefix-barrier scenario 1', solve('acknowledged-prefix-barrier', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), 1)
check('acknowledged-prefix-barrier scenario 2', solve('acknowledged-prefix-barrier', ([],[],[],True,2)), 0)
check('acknowledged-prefix-barrier scenario 3', solve('acknowledged-prefix-barrier', ([('a','edit',0)],[],[],False,1)), 0)
check('acknowledged-prefix-barrier scenario 4', solve('acknowledged-prefix-barrier', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), 0)
check('acknowledged-prefix-barrier scenario 5', solve('acknowledged-prefix-barrier', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), 0)
check('acknowledged-prefix-barrier scenario 6', solve('acknowledged-prefix-barrier', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), 0)
check('zero-payload-retention scenario 1', solve('zero-payload-retention', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), [2])
check('zero-payload-retention scenario 2', solve('zero-payload-retention', ([],[],[],True,2)), [])
check('zero-payload-retention scenario 3', solve('zero-payload-retention', ([('a','edit',0)],[],[],False,1)), [0])
check('zero-payload-retention scenario 4', solve('zero-payload-retention', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), [1,2])
check('zero-payload-retention scenario 5', solve('zero-payload-retention', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), [])
check('zero-payload-retention scenario 6', solve('zero-payload-retention', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), [2,3])
check('cancel-request-intersection scenario 1', solve('cancel-request-intersection', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), ['b'])
check('cancel-request-intersection scenario 2', solve('cancel-request-intersection', ([],[],[],True,2)), [])
check('cancel-request-intersection scenario 3', solve('cancel-request-intersection', ([('a','edit',0)],[],[],False,1)), [])
check('cancel-request-intersection scenario 4', solve('cancel-request-intersection', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), [])
check('cancel-request-intersection scenario 5', solve('cancel-request-intersection', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), ['a'])
check('cancel-request-intersection scenario 6', solve('cancel-request-intersection', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), [])
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| cancel-preserves-other-commands scenario 1 | [['a', 'create', 1], ['c', 'delete', 0]] | [['a', 'create', 1], ['c', 'delete', 0]] | Passed |
| cancel-preserves-other-commands scenario 2 | [] | [] | Passed |
| cancel-preserves-other-commands scenario 3 | [['a', 'edit', 0]] | [['a', 'edit', 0]] | Passed |
| cancel-preserves-other-commands scenario 4 | [['a', 'edit', 1], ['b', 'edit', 2]] | [['a', 'edit', 1], ['b', 'edit', 2]] | Passed |
| cancel-preserves-other-commands scenario 5 | [['b', 'create', 1]] | [['b', 'create', 1]] | Passed |
| cancel-preserves-other-commands scenario 6 | [['a', 'create', 1], ['b', 'edit', 2], ['c', 'edit', 3]] | [['a', 'create', 1], ['b', 'edit', 2], ['c', 'edit', 3]] | Passed |
| ack-removes-by-identity scenario 1 | [['b', 'edit', 2], ['c', 'delete', 0]] | [['b', 'edit', 2], ['c', 'delete', 0]] | Passed |
| ack-removes-by-identity scenario 2 | [] | [] | Passed |
| ack-removes-by-identity scenario 3 | [['a', 'edit', 0]] | [['a', 'edit', 0]] | Passed |
| ack-removes-by-identity scenario 4 | [['a', 'edit', 1], ['b', 'edit', 2]] | [['a', 'edit', 1], ['b', 'edit', 2]] | Passed |
| ack-removes-by-identity scenario 5 | [['a', 'delete', 0], ['b', 'create', 1]] | [['a', 'delete', 0], ['b', 'create', 1]] | Passed |
| ack-removes-by-identity scenario 6 | [['a', 'create', 1], ['c', 'edit', 3]] | [['a', 'create', 1], ['c', 'edit', 3]] | Passed |
| offline-send-suppression scenario 1 | [['a', 'create', 1], ['b', 'edit', 2]] | [['a', 'create', 1], ['b', 'edit', 2]] | Passed |
| offline-send-suppression scenario 2 | [] | [] | Passed |
| offline-send-suppression scenario 3 | [] | [] | Passed |
| offline-send-suppression scenario 4 | [['a', 'edit', 1]] | [['a', 'edit', 1]] | Passed |
| offline-send-suppression scenario 5 | [] | [] | Passed |
| offline-send-suppression scenario 6 | [['a', 'create', 1], ['b', 'edit', 2], ['c', 'edit', 3]] | [['a', 'create', 1], ['b', 'edit', 2], ['c', 'edit', 3]] | Passed |
| effective-backlog scenario 1 | 3 | 1 | Failed |
| effective-backlog scenario 2 | 0 | 0 | Passed |
| effective-backlog scenario 3 | 1 | 1 | Passed |
| effective-backlog scenario 4 | 2 | 2 | Passed |
| effective-backlog scenario 5 | 2 | 1 | Failed |
| effective-backlog scenario 6 | 3 | 2 | Failed |
| create-before-edit-order scenario 1 | ['a', 'b', 'c'] | ['a', 'b', 'c'] | Passed |
| create-before-edit-order scenario 2 | [] | [] | Passed |
| create-before-edit-order scenario 3 | ['a'] | ['a'] | Passed |
| create-before-edit-order scenario 4 | ['a', 'b'] | ['a', 'b'] | Passed |
| create-before-edit-order scenario 5 | ['a', 'b'] | ['a', 'b'] | Passed |
| create-before-edit-order scenario 6 | ['a', 'b', 'c'] | ['a', 'b', 'c'] | Passed |
| destructive-command-warning scenario 1 | ['c'] | ['c'] | Passed |
| destructive-command-warning scenario 2 | [] | [] | Passed |
| destructive-command-warning scenario 3 | [] | [] | Passed |
| destructive-command-warning scenario 4 | [] | [] | Passed |
| destructive-command-warning scenario 5 | [] | [] | Passed |
| destructive-command-warning scenario 6 | [] | [] | Passed |
| unsent-tail-retention scenario 1 | [['c', 'delete', 0]] | [['c', 'delete', 0]] | Passed |
| unsent-tail-retention scenario 2 | [] | [] | Passed |
| unsent-tail-retention scenario 3 | [['a', 'edit', 0]] | [['a', 'edit', 0]] | Passed |
| unsent-tail-retention scenario 4 | [['b', 'edit', 2]] | [['b', 'edit', 2]] | Passed |
| unsent-tail-retention scenario 5 | [['a', 'delete', 0], ['b', 'create', 1]] | [['a', 'delete', 0], ['b', 'create', 1]] | Passed |
| unsent-tail-retention scenario 6 | [] | [] | Passed |
| acknowledged-prefix-barrier scenario 1 | 1 | 1 | Passed |
| acknowledged-prefix-barrier scenario 2 | 0 | 0 | Passed |
| acknowledged-prefix-barrier scenario 3 | 0 | 0 | Passed |
| acknowledged-prefix-barrier scenario 4 | 0 | 0 | Passed |
| acknowledged-prefix-barrier scenario 5 | 0 | 0 | Passed |
| acknowledged-prefix-barrier scenario 6 | 0 | 0 | Passed |
| zero-payload-retention scenario 1 | [2] | [2] | Passed |
| zero-payload-retention scenario 2 | [] | [] | Passed |
| zero-payload-retention scenario 3 | [0] | [0] | Passed |
| zero-payload-retention scenario 4 | [1, 2] | [1, 2] | Passed |
| zero-payload-retention scenario 5 | [] | [] | Passed |
| zero-payload-retention scenario 6 | [2, 3] | [2, 3] | Passed |
| cancel-request-intersection scenario 1 | ['b'] | ['b'] | Passed |
| cancel-request-intersection scenario 2 | [] | [] | Passed |
| cancel-request-intersection scenario 3 | [] | [] | Passed |
| cancel-request-intersection scenario 4 | [] | [] | Passed |
| cancel-request-intersection scenario 5 | ['a'] | ['a'] | Passed |
| cancel-request-intersection scenario 6 | [] | [] | Passed |
SHA-256 / 85c778dcf5f77a5d40f882d695ff4b94b5241ac5de4468a577d9d68746749723
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(operation, s):
commands, cancelled, acknowledged, online, limit = s
if operation == 'cancel-preserves-other-commands':
return [x for x in commands if x[0] not in cancelled]
if operation == 'ack-removes-by-identity':
return [x for x in commands if x[0] not in acknowledged]
if operation == 'offline-send-suppression':
return commands[:limit] if online else []
if operation == 'effective-backlog':
return len(commands)-len(acknowledged)-len(cancelled)
if operation == 'create-before-edit-order':
return [x[0] for x in commands]
if operation == 'destructive-command-warning':
return [x[0] for x in commands if x[1]=='delete' and x[0] not in cancelled]
if operation == 'unsent-tail-retention':
return commands[limit:] if online else commands
if operation == 'acknowledged-prefix-barrier':
return next((i for i,x in enumerate(commands) if x[0] not in acknowledged),len(commands))
if operation == 'zero-payload-retention':
return [x[2] for x in commands if x[1]=='edit']
if operation == 'cancel-request-intersection':
return [x[0] for x in commands if x[0] in cancelled]
raise ValueError('unknown modeled operation')
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('cancel-preserves-other-commands scenario 1', solve('cancel-preserves-other-commands', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), [('a','create',N),('c','delete',0)])
check('cancel-preserves-other-commands scenario 2', solve('cancel-preserves-other-commands', ([],[],[],True,2)), [])
check('cancel-preserves-other-commands scenario 3', solve('cancel-preserves-other-commands', ([('a','edit',0)],[],[],False,1)), [('a','edit',0)])
check('cancel-preserves-other-commands scenario 4', solve('cancel-preserves-other-commands', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), [('a','edit',1),('b','edit',2)])
check('cancel-preserves-other-commands scenario 5', solve('cancel-preserves-other-commands', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), [('b','create',N)])
check('cancel-preserves-other-commands scenario 6', solve('cancel-preserves-other-commands', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), [('a','create',1),('b','edit',2),('c','edit',3)])
check('ack-removes-by-identity scenario 1', solve('ack-removes-by-identity', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), [('b','edit',2),('c','delete',0)])
check('ack-removes-by-identity scenario 2', solve('ack-removes-by-identity', ([],[],[],True,2)), [])
check('ack-removes-by-identity scenario 3', solve('ack-removes-by-identity', ([('a','edit',0)],[],[],False,1)), [('a','edit',0)])
check('ack-removes-by-identity scenario 4', solve('ack-removes-by-identity', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), [('a','edit',1),('b','edit',2)])
check('ack-removes-by-identity scenario 5', solve('ack-removes-by-identity', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), [('a','delete',0),('b','create',N)])
check('ack-removes-by-identity scenario 6', solve('ack-removes-by-identity', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), [('a','create',1),('c','edit',3)])
check('offline-send-suppression scenario 1', solve('offline-send-suppression', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), [('a','create',N),('b','edit',2)])
check('offline-send-suppression scenario 2', solve('offline-send-suppression', ([],[],[],True,2)), [])
check('offline-send-suppression scenario 3', solve('offline-send-suppression', ([('a','edit',0)],[],[],False,1)), [])
check('offline-send-suppression scenario 4', solve('offline-send-suppression', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), [('a','edit',1)])
check('offline-send-suppression scenario 5', solve('offline-send-suppression', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), [])
check('offline-send-suppression scenario 6', solve('offline-send-suppression', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), [('a','create',1),('b','edit',2),('c','edit',3)])
check('effective-backlog scenario 1', solve('effective-backlog', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), 1)
check('effective-backlog scenario 2', solve('effective-backlog', ([],[],[],True,2)), 0)
check('effective-backlog scenario 3', solve('effective-backlog', ([('a','edit',0)],[],[],False,1)), 1)
check('effective-backlog scenario 4', solve('effective-backlog', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), 2)
check('effective-backlog scenario 5', solve('effective-backlog', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), 1)
check('effective-backlog scenario 6', solve('effective-backlog', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), 2)
check('create-before-edit-order scenario 1', solve('create-before-edit-order', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), ['a','b','c'])
check('create-before-edit-order scenario 2', solve('create-before-edit-order', ([],[],[],True,2)), [])
check('create-before-edit-order scenario 3', solve('create-before-edit-order', ([('a','edit',0)],[],[],False,1)), ['a'])
check('create-before-edit-order scenario 4', solve('create-before-edit-order', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), ['a','b'])
check('create-before-edit-order scenario 5', solve('create-before-edit-order', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), ['a','b'])
check('create-before-edit-order scenario 6', solve('create-before-edit-order', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), ['a','b','c'])
check('destructive-command-warning scenario 1', solve('destructive-command-warning', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), ['c'])
check('destructive-command-warning scenario 2', solve('destructive-command-warning', ([],[],[],True,2)), [])
check('destructive-command-warning scenario 3', solve('destructive-command-warning', ([('a','edit',0)],[],[],False,1)), [])
check('destructive-command-warning scenario 4', solve('destructive-command-warning', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), [])
check('destructive-command-warning scenario 5', solve('destructive-command-warning', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), [])
check('destructive-command-warning scenario 6', solve('destructive-command-warning', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), [])
check('unsent-tail-retention scenario 1', solve('unsent-tail-retention', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), [('c','delete',0)])
check('unsent-tail-retention scenario 2', solve('unsent-tail-retention', ([],[],[],True,2)), [])
check('unsent-tail-retention scenario 3', solve('unsent-tail-retention', ([('a','edit',0)],[],[],False,1)), [('a','edit',0)])
check('unsent-tail-retention scenario 4', solve('unsent-tail-retention', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), [('b','edit',2)])
check('unsent-tail-retention scenario 5', solve('unsent-tail-retention', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), [('a','delete',0),('b','create',N)])
check('unsent-tail-retention scenario 6', solve('unsent-tail-retention', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), [])
check('acknowledged-prefix-barrier scenario 1', solve('acknowledged-prefix-barrier', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), 1)
check('acknowledged-prefix-barrier scenario 2', solve('acknowledged-prefix-barrier', ([],[],[],True,2)), 0)
check('acknowledged-prefix-barrier scenario 3', solve('acknowledged-prefix-barrier', ([('a','edit',0)],[],[],False,1)), 0)
check('acknowledged-prefix-barrier scenario 4', solve('acknowledged-prefix-barrier', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), 0)
check('acknowledged-prefix-barrier scenario 5', solve('acknowledged-prefix-barrier', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), 0)
check('acknowledged-prefix-barrier scenario 6', solve('acknowledged-prefix-barrier', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), 0)
check('zero-payload-retention scenario 1', solve('zero-payload-retention', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), [2])
check('zero-payload-retention scenario 2', solve('zero-payload-retention', ([],[],[],True,2)), [])
check('zero-payload-retention scenario 3', solve('zero-payload-retention', ([('a','edit',0)],[],[],False,1)), [0])
check('zero-payload-retention scenario 4', solve('zero-payload-retention', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), [1,2])
check('zero-payload-retention scenario 5', solve('zero-payload-retention', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), [])
check('zero-payload-retention scenario 6', solve('zero-payload-retention', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), [2,3])
check('cancel-request-intersection scenario 1', solve('cancel-request-intersection', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), ['b'])
check('cancel-request-intersection scenario 2', solve('cancel-request-intersection', ([],[],[],True,2)), [])
check('cancel-request-intersection scenario 3', solve('cancel-request-intersection', ([('a','edit',0)],[],[],False,1)), [])
check('cancel-request-intersection scenario 4', solve('cancel-request-intersection', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), [])
check('cancel-request-intersection scenario 5', solve('cancel-request-intersection', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), ['a'])
check('cancel-request-intersection scenario 6', solve('cancel-request-intersection', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), [])
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| cancel-preserves-other-commands scenario 1 | [['a', 'create', 1], ['c', 'delete', 0]] | [['a', 'create', 1], ['c', 'delete', 0]] | Passed |
| cancel-preserves-other-commands scenario 2 | [] | [] | Passed |
| cancel-preserves-other-commands scenario 3 | [['a', 'edit', 0]] | [['a', 'edit', 0]] | Passed |
| cancel-preserves-other-commands scenario 4 | [['a', 'edit', 1], ['b', 'edit', 2]] | [['a', 'edit', 1], ['b', 'edit', 2]] | Passed |
| cancel-preserves-other-commands scenario 5 | [['b', 'create', 1]] | [['b', 'create', 1]] | Passed |
| cancel-preserves-other-commands scenario 6 | [['a', 'create', 1], ['b', 'edit', 2], ['c', 'edit', 3]] | [['a', 'create', 1], ['b', 'edit', 2], ['c', 'edit', 3]] | Passed |
| ack-removes-by-identity scenario 1 | [['b', 'edit', 2], ['c', 'delete', 0]] | [['b', 'edit', 2], ['c', 'delete', 0]] | Passed |
| ack-removes-by-identity scenario 2 | [] | [] | Passed |
| ack-removes-by-identity scenario 3 | [['a', 'edit', 0]] | [['a', 'edit', 0]] | Passed |
| ack-removes-by-identity scenario 4 | [['a', 'edit', 1], ['b', 'edit', 2]] | [['a', 'edit', 1], ['b', 'edit', 2]] | Passed |
| ack-removes-by-identity scenario 5 | [['a', 'delete', 0], ['b', 'create', 1]] | [['a', 'delete', 0], ['b', 'create', 1]] | Passed |
| ack-removes-by-identity scenario 6 | [['a', 'create', 1], ['c', 'edit', 3]] | [['a', 'create', 1], ['c', 'edit', 3]] | Passed |
| offline-send-suppression scenario 1 | [['a', 'create', 1], ['b', 'edit', 2]] | [['a', 'create', 1], ['b', 'edit', 2]] | Passed |
| offline-send-suppression scenario 2 | [] | [] | Passed |
| offline-send-suppression scenario 3 | [] | [] | Passed |
| offline-send-suppression scenario 4 | [['a', 'edit', 1]] | [['a', 'edit', 1]] | Passed |
| offline-send-suppression scenario 5 | [] | [] | Passed |
| offline-send-suppression scenario 6 | [['a', 'create', 1], ['b', 'edit', 2], ['c', 'edit', 3]] | [['a', 'create', 1], ['b', 'edit', 2], ['c', 'edit', 3]] | Passed |
| effective-backlog scenario 1 | 1 | 1 | Passed |
| effective-backlog scenario 2 | 0 | 0 | Passed |
| effective-backlog scenario 3 | 1 | 1 | Passed |
| effective-backlog scenario 4 | 1 | 2 | Failed |
| effective-backlog scenario 5 | 0 | 1 | Failed |
| effective-backlog scenario 6 | 2 | 2 | Passed |
| create-before-edit-order scenario 1 | ['a', 'b', 'c'] | ['a', 'b', 'c'] | Passed |
| create-before-edit-order scenario 2 | [] | [] | Passed |
| create-before-edit-order scenario 3 | ['a'] | ['a'] | Passed |
| create-before-edit-order scenario 4 | ['a', 'b'] | ['a', 'b'] | Passed |
| create-before-edit-order scenario 5 | ['a', 'b'] | ['a', 'b'] | Passed |
| create-before-edit-order scenario 6 | ['a', 'b', 'c'] | ['a', 'b', 'c'] | Passed |
| destructive-command-warning scenario 1 | ['c'] | ['c'] | Passed |
| destructive-command-warning scenario 2 | [] | [] | Passed |
| destructive-command-warning scenario 3 | [] | [] | Passed |
| destructive-command-warning scenario 4 | [] | [] | Passed |
| destructive-command-warning scenario 5 | [] | [] | Passed |
| destructive-command-warning scenario 6 | [] | [] | Passed |
| unsent-tail-retention scenario 1 | [['c', 'delete', 0]] | [['c', 'delete', 0]] | Passed |
| unsent-tail-retention scenario 2 | [] | [] | Passed |
| unsent-tail-retention scenario 3 | [['a', 'edit', 0]] | [['a', 'edit', 0]] | Passed |
| unsent-tail-retention scenario 4 | [['b', 'edit', 2]] | [['b', 'edit', 2]] | Passed |
| unsent-tail-retention scenario 5 | [['a', 'delete', 0], ['b', 'create', 1]] | [['a', 'delete', 0], ['b', 'create', 1]] | Passed |
| unsent-tail-retention scenario 6 | [] | [] | Passed |
| acknowledged-prefix-barrier scenario 1 | 1 | 1 | Passed |
| acknowledged-prefix-barrier scenario 2 | 0 | 0 | Passed |
| acknowledged-prefix-barrier scenario 3 | 0 | 0 | Passed |
| acknowledged-prefix-barrier scenario 4 | 0 | 0 | Passed |
| acknowledged-prefix-barrier scenario 5 | 0 | 0 | Passed |
| acknowledged-prefix-barrier scenario 6 | 0 | 0 | Passed |
| zero-payload-retention scenario 1 | [2] | [2] | Passed |
| zero-payload-retention scenario 2 | [] | [] | Passed |
| zero-payload-retention scenario 3 | [0] | [0] | Passed |
| zero-payload-retention scenario 4 | [1, 2] | [1, 2] | Passed |
| zero-payload-retention scenario 5 | [] | [] | Passed |
| zero-payload-retention scenario 6 | [2, 3] | [2, 3] | Passed |
| cancel-request-intersection scenario 1 | ['b'] | ['b'] | Passed |
| cancel-request-intersection scenario 2 | [] | [] | Passed |
| cancel-request-intersection scenario 3 | [] | [] | Passed |
| cancel-request-intersection scenario 4 | [] | [] | Passed |
| cancel-request-intersection scenario 5 | ['a'] | ['a'] | Passed |
| cancel-request-intersection scenario 6 | [] | [] | Passed |
SHA-256 / 29585c6b080ec36fd93eccc005bc3b7b43169e0ea48441ffab9671e14ab5326b
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(operation, s):
commands, cancelled, acknowledged, online, limit = s
if operation == 'cancel-preserves-other-commands':
return [x for x in commands if x[0] not in cancelled]
if operation == 'ack-removes-by-identity':
return [x for x in commands if x[0] not in acknowledged]
if operation == 'offline-send-suppression':
return commands[:limit] if online else []
if operation == 'effective-backlog':
return sum(x[0] not in acknowledged and x[0] not in cancelled for x in commands)
if operation == 'create-before-edit-order':
return [x[0] for x in commands]
if operation == 'destructive-command-warning':
return [x[0] for x in commands if x[1]=='delete' and x[0] not in cancelled]
if operation == 'unsent-tail-retention':
return commands[limit:] if online else commands
if operation == 'acknowledged-prefix-barrier':
return next((i for i,x in enumerate(commands) if x[0] not in acknowledged),len(commands))
if operation == 'zero-payload-retention':
return [x[2] for x in commands if x[1]=='edit']
if operation == 'cancel-request-intersection':
return [x[0] for x in commands if x[0] in cancelled]
raise ValueError('unknown modeled operation')
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('cancel-preserves-other-commands scenario 1', solve('cancel-preserves-other-commands', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), [('a','create',N),('c','delete',0)])
check('cancel-preserves-other-commands scenario 2', solve('cancel-preserves-other-commands', ([],[],[],True,2)), [])
check('cancel-preserves-other-commands scenario 3', solve('cancel-preserves-other-commands', ([('a','edit',0)],[],[],False,1)), [('a','edit',0)])
check('cancel-preserves-other-commands scenario 4', solve('cancel-preserves-other-commands', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), [('a','edit',1),('b','edit',2)])
check('cancel-preserves-other-commands scenario 5', solve('cancel-preserves-other-commands', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), [('b','create',N)])
check('cancel-preserves-other-commands scenario 6', solve('cancel-preserves-other-commands', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), [('a','create',1),('b','edit',2),('c','edit',3)])
check('ack-removes-by-identity scenario 1', solve('ack-removes-by-identity', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), [('b','edit',2),('c','delete',0)])
check('ack-removes-by-identity scenario 2', solve('ack-removes-by-identity', ([],[],[],True,2)), [])
check('ack-removes-by-identity scenario 3', solve('ack-removes-by-identity', ([('a','edit',0)],[],[],False,1)), [('a','edit',0)])
check('ack-removes-by-identity scenario 4', solve('ack-removes-by-identity', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), [('a','edit',1),('b','edit',2)])
check('ack-removes-by-identity scenario 5', solve('ack-removes-by-identity', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), [('a','delete',0),('b','create',N)])
check('ack-removes-by-identity scenario 6', solve('ack-removes-by-identity', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), [('a','create',1),('c','edit',3)])
check('offline-send-suppression scenario 1', solve('offline-send-suppression', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), [('a','create',N),('b','edit',2)])
check('offline-send-suppression scenario 2', solve('offline-send-suppression', ([],[],[],True,2)), [])
check('offline-send-suppression scenario 3', solve('offline-send-suppression', ([('a','edit',0)],[],[],False,1)), [])
check('offline-send-suppression scenario 4', solve('offline-send-suppression', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), [('a','edit',1)])
check('offline-send-suppression scenario 5', solve('offline-send-suppression', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), [])
check('offline-send-suppression scenario 6', solve('offline-send-suppression', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), [('a','create',1),('b','edit',2),('c','edit',3)])
check('effective-backlog scenario 1', solve('effective-backlog', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), 1)
check('effective-backlog scenario 2', solve('effective-backlog', ([],[],[],True,2)), 0)
check('effective-backlog scenario 3', solve('effective-backlog', ([('a','edit',0)],[],[],False,1)), 1)
check('effective-backlog scenario 4', solve('effective-backlog', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), 2)
check('effective-backlog scenario 5', solve('effective-backlog', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), 1)
check('effective-backlog scenario 6', solve('effective-backlog', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), 2)
check('create-before-edit-order scenario 1', solve('create-before-edit-order', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), ['a','b','c'])
check('create-before-edit-order scenario 2', solve('create-before-edit-order', ([],[],[],True,2)), [])
check('create-before-edit-order scenario 3', solve('create-before-edit-order', ([('a','edit',0)],[],[],False,1)), ['a'])
check('create-before-edit-order scenario 4', solve('create-before-edit-order', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), ['a','b'])
check('create-before-edit-order scenario 5', solve('create-before-edit-order', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), ['a','b'])
check('create-before-edit-order scenario 6', solve('create-before-edit-order', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), ['a','b','c'])
check('destructive-command-warning scenario 1', solve('destructive-command-warning', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), ['c'])
check('destructive-command-warning scenario 2', solve('destructive-command-warning', ([],[],[],True,2)), [])
check('destructive-command-warning scenario 3', solve('destructive-command-warning', ([('a','edit',0)],[],[],False,1)), [])
check('destructive-command-warning scenario 4', solve('destructive-command-warning', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), [])
check('destructive-command-warning scenario 5', solve('destructive-command-warning', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), [])
check('destructive-command-warning scenario 6', solve('destructive-command-warning', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), [])
check('unsent-tail-retention scenario 1', solve('unsent-tail-retention', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), [('c','delete',0)])
check('unsent-tail-retention scenario 2', solve('unsent-tail-retention', ([],[],[],True,2)), [])
check('unsent-tail-retention scenario 3', solve('unsent-tail-retention', ([('a','edit',0)],[],[],False,1)), [('a','edit',0)])
check('unsent-tail-retention scenario 4', solve('unsent-tail-retention', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), [('b','edit',2)])
check('unsent-tail-retention scenario 5', solve('unsent-tail-retention', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), [('a','delete',0),('b','create',N)])
check('unsent-tail-retention scenario 6', solve('unsent-tail-retention', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), [])
check('acknowledged-prefix-barrier scenario 1', solve('acknowledged-prefix-barrier', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), 1)
check('acknowledged-prefix-barrier scenario 2', solve('acknowledged-prefix-barrier', ([],[],[],True,2)), 0)
check('acknowledged-prefix-barrier scenario 3', solve('acknowledged-prefix-barrier', ([('a','edit',0)],[],[],False,1)), 0)
check('acknowledged-prefix-barrier scenario 4', solve('acknowledged-prefix-barrier', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), 0)
check('acknowledged-prefix-barrier scenario 5', solve('acknowledged-prefix-barrier', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), 0)
check('acknowledged-prefix-barrier scenario 6', solve('acknowledged-prefix-barrier', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), 0)
check('zero-payload-retention scenario 1', solve('zero-payload-retention', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), [2])
check('zero-payload-retention scenario 2', solve('zero-payload-retention', ([],[],[],True,2)), [])
check('zero-payload-retention scenario 3', solve('zero-payload-retention', ([('a','edit',0)],[],[],False,1)), [0])
check('zero-payload-retention scenario 4', solve('zero-payload-retention', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), [1,2])
check('zero-payload-retention scenario 5', solve('zero-payload-retention', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), [])
check('zero-payload-retention scenario 6', solve('zero-payload-retention', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), [2,3])
check('cancel-request-intersection scenario 1', solve('cancel-request-intersection', ([('a','create',N),('b','edit',2),('c','delete',0)],['b'],['a'],True,2)), ['b'])
check('cancel-request-intersection scenario 2', solve('cancel-request-intersection', ([],[],[],True,2)), [])
check('cancel-request-intersection scenario 3', solve('cancel-request-intersection', ([('a','edit',0)],[],[],False,1)), [])
check('cancel-request-intersection scenario 4', solve('cancel-request-intersection', ([('a','edit',1),('b','edit',2)],['x'],[],True,1)), [])
check('cancel-request-intersection scenario 5', solve('cancel-request-intersection', ([('a','delete',0),('b','create',N)],['a'],['x'],True,0)), ['a'])
check('cancel-request-intersection scenario 6', solve('cancel-request-intersection', ([('a','create',1),('b','edit',2),('c','edit',3)],[],['b'],True,5)), [])
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| cancel-preserves-other-commands scenario 1 | [['a', 'create', 1], ['c', 'delete', 0]] | [['a', 'create', 1], ['c', 'delete', 0]] | Passed |
| cancel-preserves-other-commands scenario 2 | [] | [] | Passed |
| cancel-preserves-other-commands scenario 3 | [['a', 'edit', 0]] | [['a', 'edit', 0]] | Passed |
| cancel-preserves-other-commands scenario 4 | [['a', 'edit', 1], ['b', 'edit', 2]] | [['a', 'edit', 1], ['b', 'edit', 2]] | Passed |
| cancel-preserves-other-commands scenario 5 | [['b', 'create', 1]] | [['b', 'create', 1]] | Passed |
| cancel-preserves-other-commands scenario 6 | [['a', 'create', 1], ['b', 'edit', 2], ['c', 'edit', 3]] | [['a', 'create', 1], ['b', 'edit', 2], ['c', 'edit', 3]] | Passed |
| ack-removes-by-identity scenario 1 | [['b', 'edit', 2], ['c', 'delete', 0]] | [['b', 'edit', 2], ['c', 'delete', 0]] | Passed |
| ack-removes-by-identity scenario 2 | [] | [] | Passed |
| ack-removes-by-identity scenario 3 | [['a', 'edit', 0]] | [['a', 'edit', 0]] | Passed |
| ack-removes-by-identity scenario 4 | [['a', 'edit', 1], ['b', 'edit', 2]] | [['a', 'edit', 1], ['b', 'edit', 2]] | Passed |
| ack-removes-by-identity scenario 5 | [['a', 'delete', 0], ['b', 'create', 1]] | [['a', 'delete', 0], ['b', 'create', 1]] | Passed |
| ack-removes-by-identity scenario 6 | [['a', 'create', 1], ['c', 'edit', 3]] | [['a', 'create', 1], ['c', 'edit', 3]] | Passed |
| offline-send-suppression scenario 1 | [['a', 'create', 1], ['b', 'edit', 2]] | [['a', 'create', 1], ['b', 'edit', 2]] | Passed |
| offline-send-suppression scenario 2 | [] | [] | Passed |
| offline-send-suppression scenario 3 | [] | [] | Passed |
| offline-send-suppression scenario 4 | [['a', 'edit', 1]] | [['a', 'edit', 1]] | Passed |
| offline-send-suppression scenario 5 | [] | [] | Passed |
| offline-send-suppression scenario 6 | [['a', 'create', 1], ['b', 'edit', 2], ['c', 'edit', 3]] | [['a', 'create', 1], ['b', 'edit', 2], ['c', 'edit', 3]] | Passed |
| effective-backlog scenario 1 | 1 | 1 | Passed |
| effective-backlog scenario 2 | 0 | 0 | Passed |
| effective-backlog scenario 3 | 1 | 1 | Passed |
| effective-backlog scenario 4 | 2 | 2 | Passed |
| effective-backlog scenario 5 | 1 | 1 | Passed |
| effective-backlog scenario 6 | 2 | 2 | Passed |
| create-before-edit-order scenario 1 | ['a', 'b', 'c'] | ['a', 'b', 'c'] | Passed |
| create-before-edit-order scenario 2 | [] | [] | Passed |
| create-before-edit-order scenario 3 | ['a'] | ['a'] | Passed |
| create-before-edit-order scenario 4 | ['a', 'b'] | ['a', 'b'] | Passed |
| create-before-edit-order scenario 5 | ['a', 'b'] | ['a', 'b'] | Passed |
| create-before-edit-order scenario 6 | ['a', 'b', 'c'] | ['a', 'b', 'c'] | Passed |
| destructive-command-warning scenario 1 | ['c'] | ['c'] | Passed |
| destructive-command-warning scenario 2 | [] | [] | Passed |
| destructive-command-warning scenario 3 | [] | [] | Passed |
| destructive-command-warning scenario 4 | [] | [] | Passed |
| destructive-command-warning scenario 5 | [] | [] | Passed |
| destructive-command-warning scenario 6 | [] | [] | Passed |
| unsent-tail-retention scenario 1 | [['c', 'delete', 0]] | [['c', 'delete', 0]] | Passed |
| unsent-tail-retention scenario 2 | [] | [] | Passed |
| unsent-tail-retention scenario 3 | [['a', 'edit', 0]] | [['a', 'edit', 0]] | Passed |
| unsent-tail-retention scenario 4 | [['b', 'edit', 2]] | [['b', 'edit', 2]] | Passed |
| unsent-tail-retention scenario 5 | [['a', 'delete', 0], ['b', 'create', 1]] | [['a', 'delete', 0], ['b', 'create', 1]] | Passed |
| unsent-tail-retention scenario 6 | [] | [] | Passed |
| acknowledged-prefix-barrier scenario 1 | 1 | 1 | Passed |
| acknowledged-prefix-barrier scenario 2 | 0 | 0 | Passed |
| acknowledged-prefix-barrier scenario 3 | 0 | 0 | Passed |
| acknowledged-prefix-barrier scenario 4 | 0 | 0 | Passed |
| acknowledged-prefix-barrier scenario 5 | 0 | 0 | Passed |
| acknowledged-prefix-barrier scenario 6 | 0 | 0 | Passed |
| zero-payload-retention scenario 1 | [2] | [2] | Passed |
| zero-payload-retention scenario 2 | [] | [] | Passed |
| zero-payload-retention scenario 3 | [0] | [0] | Passed |
| zero-payload-retention scenario 4 | [1, 2] | [1, 2] | Passed |
| zero-payload-retention scenario 5 | [] | [] | Passed |
| zero-payload-retention scenario 6 | [2, 3] | [2, 3] | Passed |
| cancel-request-intersection scenario 1 | ['b'] | ['b'] | Passed |
| cancel-request-intersection scenario 2 | [] | [] | Passed |
| cancel-request-intersection scenario 3 | [] | [] | Passed |
| cancel-request-intersection scenario 4 | [] | [] | Passed |
| cancel-request-intersection scenario 5 | ['a'] | ['a'] | Passed |
| cancel-request-intersection scenario 6 | [] | [] | Passed |
SHA-256 / f611436ea71e4f0b6aa65596619c0cc56bf3c988c482c5a82f7c7fea1dd90dc8
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:55.097979+00:00.
Case digest / ea346bde1b6c95649adc154e6896df8fdfa3246851478b4a30045a5b766b455f