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.
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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