FAILURE MAP
← Case archive

FA-36801 / Tab interfaces / Open access

Related tab opener path: closed opener path splice · case 01

The tab workspace reports an incorrect closed opener path splice.

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

ROOT CAUSE

The closed opener path splice decision uses {t:path for t,path in x['paths'].items() if t!=x['closing']} instead of {t:[p for p in path if p!=x['closing']] for t,path in x['paths'].items() if t!=x['closing']}.

VERIFIED REPAIR

Use the stipulated workspace rule: {t:[p for p in path if p!=x['closing']] for t,path in x['paths'].items() if t!=x['closing']}.

Unsuccessful approach: The partial repair {t:[] for t in x['paths'] if t!=x['closing']} still violates a workspace boundary or normal case.

Case contract

An opener path lists ancestor tab IDs from root to direct opener. Related tabs are inserted after the opener subtree in strip order; closing an opener reparents descendants by removing that identity from their paths.

Why this case matters

Offline tab/panel workspace behavior; no browser or desktop framework is emulated.

1 / The failure

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

N = 1
observations = []
def solve(x):
    r0 = [t for t in x['tabs'] if x['paths'].get(t,[]) and x['paths'][t][-1]==x['opener']]
    r1 = [t for t in x['tabs'] if x['opener'] in x['paths'].get(t,[])]
    r2 = max(i for i,t in enumerate(x['tabs']) if t==x['opener'] or x['opener'] in x['paths'].get(t,[]))+1
    r3 = x['paths'][x['opener']]+[x['opener']]
    r4 = {t:path for t,path in x['paths'].items() if t!=x['closing']}
    r5 = x['paths'][x['opener']][0] if x['paths'][x['opener']] else x['opener']
    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', 'e'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'b', 'closing': 'b', 'new': 'f'}, [['c'], ['c'], 3, ['a', 'b'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'e', 'closing': 'b', 'new': 'f'}, [[], [], 5, ['e'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'e']), ({'tabs': ['a', 'b', 'c', 'd', 'e'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'a', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'b': [], 'c': ['b'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': [], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b'], ['b', 'c'], 3, ['a'], {'a': [], 'c': ['a'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'd', 'b', 'c', 'e'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['d', 'b'], ['d', 'b', 'c'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a'])], 2: [({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'b', 'closing': 'b', 'new': 'f'}, [['c'], ['c'], 3, ['a', 'b'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'e', 'closing': 'b', 'new': 'f'}, [[], [], 5, ['e'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'e']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'a', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'b': [], 'c': ['b'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': [], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b'], ['b', 'c'], 3, ['a'], {'a': [], 'c': ['a'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'd', 'b', 'c', 'e', 'background0'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['d', 'b'], ['d', 'b', 'c'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a'])], 3: [({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'b', 'closing': 'b', 'new': 'f'}, [['c'], ['c'], 3, ['a', 'b'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'e', 'closing': 'b', 'new': 'f'}, [[], [], 5, ['e'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'e']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'a', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'b': [], 'c': ['b'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': [], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b'], ['b', 'c'], 3, ['a'], {'a': [], 'c': ['a'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'd', 'b', 'c', 'e', 'background0', 'background1'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['d', 'b'], ['d', 'b', 'c'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a'])], 4: [({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'b', 'closing': 'b', 'new': 'f'}, [['c'], ['c'], 3, ['a', 'b'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'e', 'closing': 'b', 'new': 'f'}, [[], [], 5, ['e'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'e']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'a', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'b': [], 'c': ['b'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': [], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b'], ['b', 'c'], 3, ['a'], {'a': [], 'c': ['a'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'd', 'b', 'c', 'e', 'background0', 'background1', 'background2'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['d', 'b'], ['d', 'b', 'c'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a'])], 5: [({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2', 'background3'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2', 'background3'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'b', 'closing': 'b', 'new': 'f'}, [['c'], ['c'], 3, ['a', 'b'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2', 'background3'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'e', 'closing': 'b', 'new': 'f'}, [[], [], 5, ['e'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'e']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2', 'background3'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'a', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'b': [], 'c': ['b'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2', 'background3'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': [], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b'], ['b', 'c'], 3, ['a'], {'a': [], 'c': ['a'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'd', 'b', 'c', 'e', 'background0', 'background1', 'background2', 'background3'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['d', 'b'], ['d', 'b', 'c'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a'])]}
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)
Boundary fixtureActualExpectedOutcome
workspace regression 0[['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'a': [], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'a'][['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']Failed
workspace regression 1[['c'], ['c'], 3, ['a', 'b'], {'a': [], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'a'][['c'], ['c'], 3, ['a', 'b'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']Failed
workspace regression 2[[], [], 5, ['e'], {'a': [], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'e'][[], [], 5, ['e'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'e']Failed
workspace regression 3[['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'a'][['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'b': [], 'c': ['b'], 'd': [], 'e': []}, 'a']Failed
workspace regression 4[['b'], ['b', 'c'], 3, ['a'], {'a': [], 'c': ['a', 'b'], 'd': [], 'e': []}, 'a'][['b'], ['b', 'c'], 3, ['a'], {'a': [], 'c': ['a'], 'd': [], 'e': []}, 'a']Failed
workspace regression 5[['d', 'b'], ['d', 'b', 'c'], 4, ['a'], {'a': [], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'a'][['d', 'b'], ['d', 'b', 'c'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']Failed

SHA-256 / 682348ffed126def7806f7754bd46cde31104d5185da9b8e6ac758a47e672a82

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(x):
    r0 = [t for t in x['tabs'] if x['paths'].get(t,[]) and x['paths'][t][-1]==x['opener']]
    r1 = [t for t in x['tabs'] if x['opener'] in x['paths'].get(t,[])]
    r2 = max(i for i,t in enumerate(x['tabs']) if t==x['opener'] or x['opener'] in x['paths'].get(t,[]))+1
    r3 = x['paths'][x['opener']]+[x['opener']]
    r4 = {t:[] for t in x['paths'] if t!=x['closing']}
    r5 = x['paths'][x['opener']][0] if x['paths'][x['opener']] else x['opener']
    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', 'e'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'b', 'closing': 'b', 'new': 'f'}, [['c'], ['c'], 3, ['a', 'b'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'e', 'closing': 'b', 'new': 'f'}, [[], [], 5, ['e'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'e']), ({'tabs': ['a', 'b', 'c', 'd', 'e'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'a', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'b': [], 'c': ['b'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': [], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b'], ['b', 'c'], 3, ['a'], {'a': [], 'c': ['a'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'd', 'b', 'c', 'e'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['d', 'b'], ['d', 'b', 'c'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a'])], 2: [({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'b', 'closing': 'b', 'new': 'f'}, [['c'], ['c'], 3, ['a', 'b'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'e', 'closing': 'b', 'new': 'f'}, [[], [], 5, ['e'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'e']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'a', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'b': [], 'c': ['b'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': [], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b'], ['b', 'c'], 3, ['a'], {'a': [], 'c': ['a'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'd', 'b', 'c', 'e', 'background0'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['d', 'b'], ['d', 'b', 'c'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a'])], 3: [({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'b', 'closing': 'b', 'new': 'f'}, [['c'], ['c'], 3, ['a', 'b'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'e', 'closing': 'b', 'new': 'f'}, [[], [], 5, ['e'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'e']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'a', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'b': [], 'c': ['b'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': [], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b'], ['b', 'c'], 3, ['a'], {'a': [], 'c': ['a'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'd', 'b', 'c', 'e', 'background0', 'background1'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['d', 'b'], ['d', 'b', 'c'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a'])], 4: [({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'b', 'closing': 'b', 'new': 'f'}, [['c'], ['c'], 3, ['a', 'b'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'e', 'closing': 'b', 'new': 'f'}, [[], [], 5, ['e'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'e']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'a', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'b': [], 'c': ['b'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': [], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b'], ['b', 'c'], 3, ['a'], {'a': [], 'c': ['a'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'd', 'b', 'c', 'e', 'background0', 'background1', 'background2'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['d', 'b'], ['d', 'b', 'c'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a'])], 5: [({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2', 'background3'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2', 'background3'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'b', 'closing': 'b', 'new': 'f'}, [['c'], ['c'], 3, ['a', 'b'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2', 'background3'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'e', 'closing': 'b', 'new': 'f'}, [[], [], 5, ['e'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'e']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2', 'background3'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'a', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'b': [], 'c': ['b'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2', 'background3'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': [], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b'], ['b', 'c'], 3, ['a'], {'a': [], 'c': ['a'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'd', 'b', 'c', 'e', 'background0', 'background1', 'background2', 'background3'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['d', 'b'], ['d', 'b', 'c'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a'])]}
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)
Boundary fixtureActualExpectedOutcome
workspace regression 0[['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'a': [], 'c': [], 'd': [], 'e': []}, 'a'][['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']Failed
workspace regression 1[['c'], ['c'], 3, ['a', 'b'], {'a': [], 'c': [], 'd': [], 'e': []}, 'a'][['c'], ['c'], 3, ['a', 'b'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']Failed
workspace regression 2[[], [], 5, ['e'], {'a': [], 'c': [], 'd': [], 'e': []}, 'e'][[], [], 5, ['e'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'e']Failed
workspace regression 3[['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'b': [], 'c': [], 'd': [], 'e': []}, 'a'][['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'b': [], 'c': ['b'], 'd': [], 'e': []}, 'a']Failed
workspace regression 4[['b'], ['b', 'c'], 3, ['a'], {'a': [], 'c': [], 'd': [], 'e': []}, 'a'][['b'], ['b', 'c'], 3, ['a'], {'a': [], 'c': ['a'], 'd': [], 'e': []}, 'a']Failed
workspace regression 5[['d', 'b'], ['d', 'b', 'c'], 4, ['a'], {'a': [], 'c': [], 'd': [], 'e': []}, 'a'][['d', 'b'], ['d', 'b', 'c'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']Failed

SHA-256 / d8f2efddf270ef17002819efe94605d919cfdcab420e3084d990869c01beb1f7

3 / The verified repair

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

N = 1
observations = []
def solve(x):
    r0 = [t for t in x['tabs'] if x['paths'].get(t,[]) and x['paths'][t][-1]==x['opener']]
    r1 = [t for t in x['tabs'] if x['opener'] in x['paths'].get(t,[])]
    r2 = max(i for i,t in enumerate(x['tabs']) if t==x['opener'] or x['opener'] in x['paths'].get(t,[]))+1
    r3 = x['paths'][x['opener']]+[x['opener']]
    r4 = {t:[p for p in path if p!=x['closing']] for t,path in x['paths'].items() if t!=x['closing']}
    r5 = x['paths'][x['opener']][0] if x['paths'][x['opener']] else x['opener']
    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', 'e'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'b', 'closing': 'b', 'new': 'f'}, [['c'], ['c'], 3, ['a', 'b'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'e', 'closing': 'b', 'new': 'f'}, [[], [], 5, ['e'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'e']), ({'tabs': ['a', 'b', 'c', 'd', 'e'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'a', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'b': [], 'c': ['b'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': [], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b'], ['b', 'c'], 3, ['a'], {'a': [], 'c': ['a'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'd', 'b', 'c', 'e'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['d', 'b'], ['d', 'b', 'c'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a'])], 2: [({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'b', 'closing': 'b', 'new': 'f'}, [['c'], ['c'], 3, ['a', 'b'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'e', 'closing': 'b', 'new': 'f'}, [[], [], 5, ['e'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'e']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'a', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'b': [], 'c': ['b'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': [], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b'], ['b', 'c'], 3, ['a'], {'a': [], 'c': ['a'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'd', 'b', 'c', 'e', 'background0'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['d', 'b'], ['d', 'b', 'c'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a'])], 3: [({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'b', 'closing': 'b', 'new': 'f'}, [['c'], ['c'], 3, ['a', 'b'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'e', 'closing': 'b', 'new': 'f'}, [[], [], 5, ['e'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'e']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'a', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'b': [], 'c': ['b'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': [], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b'], ['b', 'c'], 3, ['a'], {'a': [], 'c': ['a'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'd', 'b', 'c', 'e', 'background0', 'background1'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['d', 'b'], ['d', 'b', 'c'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a'])], 4: [({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'b', 'closing': 'b', 'new': 'f'}, [['c'], ['c'], 3, ['a', 'b'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'e', 'closing': 'b', 'new': 'f'}, [[], [], 5, ['e'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'e']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'a', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'b': [], 'c': ['b'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': [], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b'], ['b', 'c'], 3, ['a'], {'a': [], 'c': ['a'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'd', 'b', 'c', 'e', 'background0', 'background1', 'background2'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['d', 'b'], ['d', 'b', 'c'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a'])], 5: [({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2', 'background3'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2', 'background3'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'b', 'closing': 'b', 'new': 'f'}, [['c'], ['c'], 3, ['a', 'b'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2', 'background3'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'e', 'closing': 'b', 'new': 'f'}, [[], [], 5, ['e'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'e']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2', 'background3'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'a', 'new': 'f'}, [['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'b': [], 'c': ['b'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'b', 'c', 'd', 'e', 'background0', 'background1', 'background2', 'background3'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': [], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['b'], ['b', 'c'], 3, ['a'], {'a': [], 'c': ['a'], 'd': [], 'e': []}, 'a']), ({'tabs': ['a', 'd', 'b', 'c', 'e', 'background0', 'background1', 'background2', 'background3'], 'paths': {'a': [], 'b': ['a'], 'c': ['a', 'b'], 'd': ['a'], 'e': []}, 'opener': 'a', 'closing': 'b', 'new': 'f'}, [['d', 'b'], ['d', 'b', 'c'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a'])]}
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)
Boundary fixtureActualExpectedOutcome
workspace regression 0[['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a'][['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']Passed
workspace regression 1[['c'], ['c'], 3, ['a', 'b'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a'][['c'], ['c'], 3, ['a', 'b'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']Passed
workspace regression 2[[], [], 5, ['e'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'e'][[], [], 5, ['e'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'e']Passed
workspace regression 3[['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'b': [], 'c': ['b'], 'd': [], 'e': []}, 'a'][['b', 'd'], ['b', 'c', 'd'], 4, ['a'], {'b': [], 'c': ['b'], 'd': [], 'e': []}, 'a']Passed
workspace regression 4[['b'], ['b', 'c'], 3, ['a'], {'a': [], 'c': ['a'], 'd': [], 'e': []}, 'a'][['b'], ['b', 'c'], 3, ['a'], {'a': [], 'c': ['a'], 'd': [], 'e': []}, 'a']Passed
workspace regression 5[['d', 'b'], ['d', 'b', 'c'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a'][['d', 'b'], ['d', 'b', 'c'], 4, ['a'], {'a': [], 'c': ['a'], 'd': ['a'], 'e': []}, 'a']Passed

SHA-256 / a75bc8046ab306eb1dc34a030ed4046877f98f079779a35163befa48b84bde48

Verification & scope

Finite stipulated workspace snapshots only. Independent result fields describe observable obligations, not a full UI runtime. 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:42:54.908717+00:00.

Case digest / b90a7f9954c6643fb44c207190139cb76db561795fea90ff949a6914f6c2b432