broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    r0 = x['context']
    r1 = x['selection'] if x['context'] in x['selection'] else [x['context']]
    r2 = x['active']
    r3 = x['context'] in x['dirty']
    r4 = 'unpin' if x['active'] in x['pins'] else 'pin'
    r5 = x['tabs'].index(x['context'])
    return [r0,r1,r2,r3,r4,r5]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'tabs': ['a', 'b', 'c', 'd'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd'], 'active': 'a', 'context': 'a', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['a', ['a'], 'a', False, 'pin', 0]), ({'tabs': ['a', 'b', 'c', 'd'], 'active': 'a', 'context': 'b', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['b', ['b', 'c'], 'a', False, 'unpin', 1]), ({'tabs': ['a', 'b', 'c', 'd'], 'active': 'a', 'context': 'c', 'selection': [], 'dirty': ['c'], 'pins': ['b']}, ['c', ['c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd'], 'active': 'd', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'd', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['b', 'c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2])], 2: [({'tabs': ['a', 'b', 'c', 'd', 'background0'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0'], 'active': 'a', 'context': 'a', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['a', ['a'], 'a', False, 'pin', 0]), ({'tabs': ['a', 'b', 'c', 'd', 'background0'], 'active': 'a', 'context': 'b', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['b', ['b', 'c'], 'a', False, 'unpin', 1]), ({'tabs': ['a', 'b', 'c', 'd', 'background0'], 'active': 'a', 'context': 'c', 'selection': [], 'dirty': ['c'], 'pins': ['b']}, ['c', ['c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0'], 'active': 'd', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'd', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['b', 'c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2])], 3: [({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'a', 'context': 'a', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['a', ['a'], 'a', False, 'pin', 0]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'a', 'context': 'b', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['b', ['b', 'c'], 'a', False, 'unpin', 1]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'a', 'context': 'c', 'selection': [], 'dirty': ['c'], 'pins': ['b']}, ['c', ['c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'd', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'd', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['b', 'c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2])], 4: [({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'a', 'context': 'a', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['a', ['a'], 'a', False, 'pin', 0]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'a', 'context': 'b', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['b', ['b', 'c'], 'a', False, 'unpin', 1]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'a', 'context': 'c', 'selection': [], 'dirty': ['c'], 'pins': ['b']}, ['c', ['c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'd', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'd', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['b', 'c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2])], 5: [({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'a', 'context': 'a', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['a', ['a'], 'a', False, 'pin', 0]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'a', 'context': 'b', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['b', ['b', 'c'], 'a', False, 'unpin', 1]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'a', 'context': 'c', 'selection': [], 'dirty': ['c'], 'pins': ['b']}, ['c', ['c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'd', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'd', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['b', 'c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2])]}
for i, (inputs, expected) in enumerate(fixtures[N]):
    check("workspace regression "+str(i), solve(inputs), expected)
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)

prompt:
The tab workspace reports an incorrect context pin action.

Context commands act on the right-clicked tab even when another tab is active; bulk commands expand only when that target belongs to the existing multiselection.

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    r0 = x['context']
    r1 = x['selection'] if x['context'] in x['selection'] else [x['context']]
    r2 = x['active']
    r3 = x['context'] in x['dirty']
    r4 = 'unpin' if x['context'] in x['pins'] else 'pin'
    r5 = x['tabs'].index(x['active'])
    return [r0,r1,r2,r3,r4,r5]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'tabs': ['a', 'b', 'c', 'd'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd'], 'active': 'a', 'context': 'a', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['a', ['a'], 'a', False, 'pin', 0]), ({'tabs': ['a', 'b', 'c', 'd'], 'active': 'a', 'context': 'b', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['b', ['b', 'c'], 'a', False, 'unpin', 1]), ({'tabs': ['a', 'b', 'c', 'd'], 'active': 'a', 'context': 'c', 'selection': [], 'dirty': ['c'], 'pins': ['b']}, ['c', ['c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd'], 'active': 'd', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'd', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['b', 'c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2])], 2: [({'tabs': ['a', 'b', 'c', 'd', 'background0'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0'], 'active': 'a', 'context': 'a', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['a', ['a'], 'a', False, 'pin', 0]), ({'tabs': ['a', 'b', 'c', 'd', 'background0'], 'active': 'a', 'context': 'b', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['b', ['b', 'c'], 'a', False, 'unpin', 1]), ({'tabs': ['a', 'b', 'c', 'd', 'background0'], 'active': 'a', 'context': 'c', 'selection': [], 'dirty': ['c'], 'pins': ['b']}, ['c', ['c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0'], 'active': 'd', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'd', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['b', 'c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2])], 3: [({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'a', 'context': 'a', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['a', ['a'], 'a', False, 'pin', 0]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'a', 'context': 'b', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['b', ['b', 'c'], 'a', False, 'unpin', 1]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'a', 'context': 'c', 'selection': [], 'dirty': ['c'], 'pins': ['b']}, ['c', ['c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'd', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'd', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['b', 'c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2])], 4: [({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'a', 'context': 'a', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['a', ['a'], 'a', False, 'pin', 0]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'a', 'context': 'b', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['b', ['b', 'c'], 'a', False, 'unpin', 1]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'a', 'context': 'c', 'selection': [], 'dirty': ['c'], 'pins': ['b']}, ['c', ['c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'd', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'd', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['b', 'c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2])], 5: [({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'a', 'context': 'a', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['a', ['a'], 'a', False, 'pin', 0]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'a', 'context': 'b', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['b', ['b', 'c'], 'a', False, 'unpin', 1]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'a', 'context': 'c', 'selection': [], 'dirty': ['c'], 'pins': ['b']}, ['c', ['c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'd', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'd', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['b', 'c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2])]}
for i, (inputs, expected) in enumerate(fixtures[N]):
    check("workspace regression "+str(i), solve(inputs), expected)
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)

meaning: Fixture-count band, not measured model difficulty

deps: stdlib

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    r0 = x['context']
    r1 = x['selection'] if x['context'] in x['selection'] else [x['context']]
    r2 = x['active']
    r3 = x['context'] in x['dirty']
    r4 = 'unpin' if x['context'] in x['pins'] else 'pin'
    r5 = 0
    return [r0,r1,r2,r3,r4,r5]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'tabs': ['a', 'b', 'c', 'd'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd'], 'active': 'a', 'context': 'a', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['a', ['a'], 'a', False, 'pin', 0]), ({'tabs': ['a', 'b', 'c', 'd'], 'active': 'a', 'context': 'b', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['b', ['b', 'c'], 'a', False, 'unpin', 1]), ({'tabs': ['a', 'b', 'c', 'd'], 'active': 'a', 'context': 'c', 'selection': [], 'dirty': ['c'], 'pins': ['b']}, ['c', ['c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd'], 'active': 'd', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'd', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['b', 'c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2])], 2: [({'tabs': ['a', 'b', 'c', 'd', 'background0'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0'], 'active': 'a', 'context': 'a', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['a', ['a'], 'a', False, 'pin', 0]), ({'tabs': ['a', 'b', 'c', 'd', 'background0'], 'active': 'a', 'context': 'b', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['b', ['b', 'c'], 'a', False, 'unpin', 1]), ({'tabs': ['a', 'b', 'c', 'd', 'background0'], 'active': 'a', 'context': 'c', 'selection': [], 'dirty': ['c'], 'pins': ['b']}, ['c', ['c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0'], 'active': 'd', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'd', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['b', 'c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2])], 3: [({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'a', 'context': 'a', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['a', ['a'], 'a', False, 'pin', 0]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'a', 'context': 'b', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['b', ['b', 'c'], 'a', False, 'unpin', 1]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'a', 'context': 'c', 'selection': [], 'dirty': ['c'], 'pins': ['b']}, ['c', ['c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'd', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'd', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['b', 'c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2])], 4: [({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'a', 'context': 'a', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['a', ['a'], 'a', False, 'pin', 0]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'a', 'context': 'b', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['b', ['b', 'c'], 'a', False, 'unpin', 1]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'a', 'context': 'c', 'selection': [], 'dirty': ['c'], 'pins': ['b']}, ['c', ['c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'd', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'd', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['b', 'c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2])], 5: [({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'a', 'context': 'a', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['a', ['a'], 'a', False, 'pin', 0]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'a', 'context': 'b', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['b', ['b', 'c'], 'a', False, 'unpin', 1]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'a', 'context': 'c', 'selection': [], 'dirty': ['c'], 'pins': ['b']}, ['c', ['c'], 'a', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'd', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['c'], 'pins': ['b']}, ['c', ['b', 'c'], 'd', True, 'pin', 2]), ({'tabs': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'a', 'context': 'c', 'selection': ['b', 'c'], 'dirty': ['b', 'c'], 'pins': ['b']}, ['c', ['b', 'c'], 'a', True, 'pin', 2])]}
for i, (inputs, expected) in enumerate(fixtures[N]):
    check("workspace regression "+str(i), solve(inputs), expected)
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)

prompt:
The tab workspace reports an incorrect context relative index.

Context commands act on the right-clicked tab even when another tab is active; bulk commands expand only when that target belongs to the existing multiselection.

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    r0 = True
    r1 = x['status']=='accepted'
    r2 = [t for t in x['source'] if t!=x['moving']] if x['status']=='accepted' and x['transfer']==x['ack'] and not x['already_committed'] else x['source']
    r3 = x['already_committed']
    r4 = x['status']=='failed' and not x['already_committed']
    r5 = x['status']=='pending' and not x['already_committed']
    return [r0,r1,r2,r3,r4,r5]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 7, 'ack': 6, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 2: [({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 14, 'ack': 12, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 3: [({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 21, 'ack': 18, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 4: [({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 28, 'ack': 24, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 5: [({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 35, 'ack': 30, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])]}
for i, (inputs, expected) in enumerate(fixtures[N]):
    check("workspace regression "+str(i), solve(inputs), expected)
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)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    r0 = x['ack']<=x['transfer']
    r1 = x['status']=='accepted'
    r2 = [t for t in x['source'] if t!=x['moving']] if x['status']=='accepted' and x['transfer']==x['ack'] and not x['already_committed'] else x['source']
    r3 = x['already_committed']
    r4 = x['status']=='failed' and not x['already_committed']
    r5 = x['status']=='pending' and not x['already_committed']
    return [r0,r1,r2,r3,r4,r5]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 7, 'ack': 6, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 2: [({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 14, 'ack': 12, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 3: [({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 21, 'ack': 18, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 4: [({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 28, 'ack': 24, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 5: [({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 35, 'ack': 30, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])]}
for i, (inputs, expected) in enumerate(fixtures[N]):
    check("workspace regression "+str(i), solve(inputs), expected)
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)

prompt:
The tab workspace reports an incorrect matching transfer receipt.

A tab tearoff retains the source until the destination acknowledges the exact transfer. Failure restores source placement; duplicate acknowledgements do not remove another tab.

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    r0 = x['transfer']==x['ack']
    r1 = x['status']!='failed'
    r2 = [t for t in x['source'] if t!=x['moving']] if x['status']=='accepted' and x['transfer']==x['ack'] and not x['already_committed'] else x['source']
    r3 = x['already_committed']
    r4 = x['status']=='failed' and not x['already_committed']
    r5 = x['status']=='pending' and not x['already_committed']
    return [r0,r1,r2,r3,r4,r5]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 7, 'ack': 6, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 2: [({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 14, 'ack': 12, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 3: [({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 21, 'ack': 18, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 4: [({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 28, 'ack': 24, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 5: [({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 35, 'ack': 30, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])]}
for i, (inputs, expected) in enumerate(fixtures[N]):
    check("workspace regression "+str(i), solve(inputs), expected)
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)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    r0 = x['transfer']==x['ack']
    r1 = bool(x['status'])
    r2 = [t for t in x['source'] if t!=x['moving']] if x['status']=='accepted' and x['transfer']==x['ack'] and not x['already_committed'] else x['source']
    r3 = x['already_committed']
    r4 = x['status']=='failed' and not x['already_committed']
    r5 = x['status']=='pending' and not x['already_committed']
    return [r0,r1,r2,r3,r4,r5]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 7, 'ack': 6, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 2: [({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 14, 'ack': 12, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 3: [({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 21, 'ack': 18, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 4: [({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 28, 'ack': 24, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 5: [({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 35, 'ack': 30, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])]}
for i, (inputs, expected) in enumerate(fixtures[N]):
    check("workspace regression "+str(i), solve(inputs), expected)
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)

prompt:
The tab workspace reports an incorrect destination acceptance.

A tab tearoff retains the source until the destination acknowledges the exact transfer. Failure restores source placement; duplicate acknowledgements do not remove another tab.

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    r0 = x['transfer']==x['ack']
    r1 = x['status']=='accepted'
    r2 = [t for t in x['source'] if t!=x['moving']]
    r3 = x['already_committed']
    r4 = x['status']=='failed' and not x['already_committed']
    r5 = x['status']=='pending' and not x['already_committed']
    return [r0,r1,r2,r3,r4,r5]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 7, 'ack': 6, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 2: [({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 14, 'ack': 12, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 3: [({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 21, 'ack': 18, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 4: [({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 28, 'ack': 24, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 5: [({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 35, 'ack': 30, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])]}
for i, (inputs, expected) in enumerate(fixtures[N]):
    check("workspace regression "+str(i), solve(inputs), expected)
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)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    r0 = x['transfer']==x['ack']
    r1 = x['status']=='accepted'
    r2 = [t for t in x['source'] if t!=x['moving']] if x['status']=='accepted' else x['source']
    r3 = x['already_committed']
    r4 = x['status']=='failed' and not x['already_committed']
    r5 = x['status']=='pending' and not x['already_committed']
    return [r0,r1,r2,r3,r4,r5]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 7, 'ack': 6, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 2: [({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 14, 'ack': 12, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 3: [({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 21, 'ack': 18, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 4: [({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 28, 'ack': 24, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 5: [({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 35, 'ack': 30, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])]}
for i, (inputs, expected) in enumerate(fixtures[N]):
    check("workspace regression "+str(i), solve(inputs), expected)
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)

prompt:
The tab workspace reports an incorrect source commit removal.

A tab tearoff retains the source until the destination acknowledges the exact transfer. Failure restores source placement; duplicate acknowledgements do not remove another tab.

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    r0 = x['transfer']==x['ack']
    r1 = x['status']=='accepted'
    r2 = [t for t in x['source'] if t!=x['moving']] if x['status']=='accepted' and x['transfer']==x['ack'] and not x['already_committed'] else x['source']
    r3 = False
    r4 = x['status']=='failed' and not x['already_committed']
    r5 = x['status']=='pending' and not x['already_committed']
    return [r0,r1,r2,r3,r4,r5]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 7, 'ack': 6, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 2: [({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 14, 'ack': 12, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 3: [({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 21, 'ack': 18, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 4: [({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 28, 'ack': 24, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 5: [({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 35, 'ack': 30, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])]}
for i, (inputs, expected) in enumerate(fixtures[N]):
    check("workspace regression "+str(i), solve(inputs), expected)
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)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    r0 = x['transfer']==x['ack']
    r1 = x['status']=='accepted'
    r2 = [t for t in x['source'] if t!=x['moving']] if x['status']=='accepted' and x['transfer']==x['ack'] and not x['already_committed'] else x['source']
    r3 = x['status']=='accepted'
    r4 = x['status']=='failed' and not x['already_committed']
    r5 = x['status']=='pending' and not x['already_committed']
    return [r0,r1,r2,r3,r4,r5]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 7, 'ack': 6, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 2: [({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 14, 'ack': 12, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 3: [({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 21, 'ack': 18, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 4: [({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 28, 'ack': 24, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 5: [({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 35, 'ack': 30, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])]}
for i, (inputs, expected) in enumerate(fixtures[N]):
    check("workspace regression "+str(i), solve(inputs), expected)
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)

prompt:
The tab workspace reports an incorrect duplicate receipt noop.

A tab tearoff retains the source until the destination acknowledges the exact transfer. Failure restores source placement; duplicate acknowledgements do not remove another tab.

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    r0 = x['transfer']==x['ack']
    r1 = x['status']=='accepted'
    r2 = [t for t in x['source'] if t!=x['moving']] if x['status']=='accepted' and x['transfer']==x['ack'] and not x['already_committed'] else x['source']
    r3 = x['already_committed']
    r4 = x['status']!='accepted'
    r5 = x['status']=='pending' and not x['already_committed']
    return [r0,r1,r2,r3,r4,r5]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 7, 'ack': 6, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 2: [({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 14, 'ack': 12, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 3: [({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 21, 'ack': 18, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 4: [({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 28, 'ack': 24, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 5: [({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 35, 'ack': 30, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])]}
for i, (inputs, expected) in enumerate(fixtures[N]):
    check("workspace regression "+str(i), solve(inputs), expected)
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)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    r0 = x['transfer']==x['ack']
    r1 = x['status']=='accepted'
    r2 = [t for t in x['source'] if t!=x['moving']] if x['status']=='accepted' and x['transfer']==x['ack'] and not x['already_committed'] else x['source']
    r3 = x['already_committed']
    r4 = False
    r5 = x['status']=='pending' and not x['already_committed']
    return [r0,r1,r2,r3,r4,r5]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 7, 'ack': 6, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 7, 'ack': 7, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 2: [({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 14, 'ack': 12, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 14, 'ack': 14, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 3: [({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 21, 'ack': 18, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 21, 'ack': 21, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 4: [({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 28, 'ack': 24, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 28, 'ack': 28, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])], 5: [({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, True, ['a', 'c'], False, False, False]), ({'transfer': 35, 'ack': 30, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [False, True, ['a', 'b', 'c'], False, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'failed', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, True, False]), ({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': True}, [True, True, ['a', 'b', 'c'], True, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'accepted', 'source': ['a', 'b', 'c'], 'moving': 'a', 'destination': ['d'], 'already_committed': False}, [True, True, ['b', 'c'], False, False, False]), ({'transfer': 35, 'ack': 35, 'status': 'pending', 'source': ['a', 'b', 'c'], 'moving': 'b', 'destination': ['d'], 'already_committed': False}, [True, False, ['a', 'b', 'c'], False, False, True])]}
for i, (inputs, expected) in enumerate(fixtures[N]):
    check("workspace regression "+str(i), solve(inputs), expected)
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)

prompt:
The tab workspace reports an incorrect failure source restoration.

A tab tearoff retains the source until the destination acknowledges the exact transfer. Failure restores source placement; duplicate acknowledgements do not remove another tab.

split: open-access