FAILURE MAP
← Case archive

FA-36641 / Tab interfaces / Open access

Panel background tasks: background index retention · case 01

The tab workspace reports an incorrect background index retention.

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

ROOT CAUSE

The background index retention decision uses [j for j in x['jobs'] if j[0] in x['visible'] and j[1]=='index'] instead of [j for j in x['jobs'] if j[0] in x['mounted'] and j[1]=='index'].

VERIFIED REPAIR

Use the stipulated workspace rule: [j for j in x['jobs'] if j[0] in x['mounted'] and j[1]=='index'].

Unsuccessful approach: The partial repair [j for j in x['jobs'] if j[1]=='index' and j[0] not in x['visible']] still violates a workspace boundary or normal case.

Case contract

Tab panel jobs are classified into visible rendering, background-safe work and paused work. Hidden panes pause render-only jobs but retain explicit background-safe tasks.

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 = [j for j in x['jobs'] if j[0] in x['visible'] and j[1]=='render']
    r1 = [j for j in x['jobs'] if j[0] in x['mounted'] and j[0] not in x['visible'] and j[1]=='render']
    r2 = [j for j in x['jobs'] if j[0] in x['visible'] and j[1]=='index']
    r3 = [j for j in x['jobs'] if j[0] in x['closed']]
    r4 = sorted(set(j[0] for j in x['jobs'] if j[0] in x['mounted'] and j[0] not in x['visible'] and j[1]=='render'))
    r5 = [j for j in x['jobs'] if j[0] in x['mounted'] and (j[1]=='index' or j[0] in x['visible'])]
    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: [({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render']], 'visible': ['a'], 'mounted': ['a', 'b'], 'closed': ['c']}, [[['a', 'render']], [['b', 'render']], [['a', 'index'], ['b', 'index']], [['c', 'render']], ['b'], [['a', 'render'], ['a', 'index'], ['b', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render']], 'visible': ['b'], 'mounted': ['a', 'b'], 'closed': ['c']}, [[['b', 'render']], [['a', 'render']], [['a', 'index'], ['b', 'index']], [['c', 'render']], ['a'], [['a', 'index'], ['b', 'render'], ['b', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render']], 'visible': ['a', 'b'], 'mounted': ['a', 'b'], 'closed': ['c']}, [[['a', 'render'], ['b', 'render']], [], [['a', 'index'], ['b', 'index']], [['c', 'render']], [], [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render']], 'visible': ['a'], 'mounted': ['a', 'b', 'c'], 'closed': []}, [[['a', 'render']], [['b', 'render'], ['c', 'render']], [['a', 'index'], ['b', 'index']], [], ['b', 'c'], [['a', 'render'], ['a', 'index'], ['b', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render']], 'visible': [], 'mounted': ['a', 'b'], 'closed': ['c']}, [[], [['a', 'render'], ['b', 'render']], [['a', 'index'], ['b', 'index']], [['c', 'render']], ['a', 'b'], [['a', 'index'], ['b', 'index']]]), ({'jobs': [['a', 'index'], ['b', 'render']], 'visible': ['a'], 'mounted': ['a', 'b'], 'closed': ['c']}, [[], [['b', 'render']], [['a', 'index']], [], ['b'], [['a', 'index']]])], 2: [({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'extra0'], 'closed': ['c']}, [[['a', 'render']], [['b', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index']], [['c', 'render']], ['b'], [['a', 'render'], ['a', 'index'], ['b', 'index'], ['extra0', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index']], 'visible': ['b'], 'mounted': ['a', 'b', 'extra0'], 'closed': ['c']}, [[['b', 'render']], [['a', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index']], [['c', 'render']], ['a'], [['a', 'index'], ['b', 'render'], ['b', 'index'], ['extra0', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index']], 'visible': ['a', 'b'], 'mounted': ['a', 'b', 'extra0'], 'closed': ['c']}, [[['a', 'render'], ['b', 'render']], [], [['a', 'index'], ['b', 'index'], ['extra0', 'index']], [['c', 'render']], [], [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['extra0', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'c', 'extra0'], 'closed': []}, [[['a', 'render']], [['b', 'render'], ['c', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index']], [], ['b', 'c'], [['a', 'render'], ['a', 'index'], ['b', 'index'], ['extra0', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index']], 'visible': [], 'mounted': ['a', 'b', 'extra0'], 'closed': ['c']}, [[], [['a', 'render'], ['b', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index']], [['c', 'render']], ['a', 'b'], [['a', 'index'], ['b', 'index'], ['extra0', 'index']]]), ({'jobs': [['a', 'index'], ['b', 'render'], ['extra0', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'extra0'], 'closed': ['c']}, [[], [['b', 'render']], [['a', 'index'], ['extra0', 'index']], [], ['b'], [['a', 'index'], ['extra0', 'index']]])], 3: [({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'extra0', 'extra1'], 'closed': ['c']}, [[['a', 'render']], [['b', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']], [['c', 'render']], ['b'], [['a', 'render'], ['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index']], 'visible': ['b'], 'mounted': ['a', 'b', 'extra0', 'extra1'], 'closed': ['c']}, [[['b', 'render']], [['a', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']], [['c', 'render']], ['a'], [['a', 'index'], ['b', 'render'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index']], 'visible': ['a', 'b'], 'mounted': ['a', 'b', 'extra0', 'extra1'], 'closed': ['c']}, [[['a', 'render'], ['b', 'render']], [], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']], [['c', 'render']], [], [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'c', 'extra0', 'extra1'], 'closed': []}, [[['a', 'render']], [['b', 'render'], ['c', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']], [], ['b', 'c'], [['a', 'render'], ['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index']], 'visible': [], 'mounted': ['a', 'b', 'extra0', 'extra1'], 'closed': ['c']}, [[], [['a', 'render'], ['b', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']], [['c', 'render']], ['a', 'b'], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']]]), ({'jobs': [['a', 'index'], ['b', 'render'], ['extra0', 'index'], ['extra1', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'extra0', 'extra1'], 'closed': ['c']}, [[], [['b', 'render']], [['a', 'index'], ['extra0', 'index'], ['extra1', 'index']], [], ['b'], [['a', 'index'], ['extra0', 'index'], ['extra1', 'index']]])], 4: [({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2'], 'closed': ['c']}, [[['a', 'render']], [['b', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], [['c', 'render']], ['b'], [['a', 'render'], ['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], 'visible': ['b'], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2'], 'closed': ['c']}, [[['b', 'render']], [['a', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], [['c', 'render']], ['a'], [['a', 'index'], ['b', 'render'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], 'visible': ['a', 'b'], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2'], 'closed': ['c']}, [[['a', 'render'], ['b', 'render']], [], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], [['c', 'render']], [], [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2'], 'closed': []}, [[['a', 'render']], [['b', 'render'], ['c', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], [], ['b', 'c'], [['a', 'render'], ['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], 'visible': [], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2'], 'closed': ['c']}, [[], [['a', 'render'], ['b', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], [['c', 'render']], ['a', 'b'], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']]]), ({'jobs': [['a', 'index'], ['b', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2'], 'closed': ['c']}, [[], [['b', 'render']], [['a', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], [], ['b'], [['a', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']]])], 5: [({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2', 'extra3'], 'closed': ['c']}, [[['a', 'render']], [['b', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], [['c', 'render']], ['b'], [['a', 'render'], ['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], 'visible': ['b'], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2', 'extra3'], 'closed': ['c']}, [[['b', 'render']], [['a', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], [['c', 'render']], ['a'], [['a', 'index'], ['b', 'render'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], 'visible': ['a', 'b'], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2', 'extra3'], 'closed': ['c']}, [[['a', 'render'], ['b', 'render']], [], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], [['c', 'render']], [], [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'closed': []}, [[['a', 'render']], [['b', 'render'], ['c', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], [], ['b', 'c'], [['a', 'render'], ['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], 'visible': [], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2', 'extra3'], 'closed': ['c']}, [[], [['a', 'render'], ['b', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], [['c', 'render']], ['a', 'b'], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']]]), ({'jobs': [['a', 'index'], ['b', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2', 'extra3'], 'closed': ['c']}, [[], [['b', 'render']], [['a', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], [], ['b'], [['a', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']]])]}
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[[['a', 'render']], [['b', 'render']], [['a', 'index']], [['c', 'render']], ['b'], [['a', 'render'], ['a', 'index'], ['b', 'index']]][[['a', 'render']], [['b', 'render']], [['a', 'index'], ['b', 'index']], [['c', 'render']], ['b'], [['a', 'render'], ['a', 'index'], ['b', 'index']]]Failed
workspace regression 1[[['b', 'render']], [['a', 'render']], [['b', 'index']], [['c', 'render']], ['a'], [['a', 'index'], ['b', 'render'], ['b', 'index']]][[['b', 'render']], [['a', 'render']], [['a', 'index'], ['b', 'index']], [['c', 'render']], ['a'], [['a', 'index'], ['b', 'render'], ['b', 'index']]]Failed
workspace regression 2[[['a', 'render'], ['b', 'render']], [], [['a', 'index'], ['b', 'index']], [['c', 'render']], [], [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index']]][[['a', 'render'], ['b', 'render']], [], [['a', 'index'], ['b', 'index']], [['c', 'render']], [], [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index']]]Passed
workspace regression 3[[['a', 'render']], [['b', 'render'], ['c', 'render']], [['a', 'index']], [], ['b', 'c'], [['a', 'render'], ['a', 'index'], ['b', 'index']]][[['a', 'render']], [['b', 'render'], ['c', 'render']], [['a', 'index'], ['b', 'index']], [], ['b', 'c'], [['a', 'render'], ['a', 'index'], ['b', 'index']]]Failed
workspace regression 4[[], [['a', 'render'], ['b', 'render']], [], [['c', 'render']], ['a', 'b'], [['a', 'index'], ['b', 'index']]][[], [['a', 'render'], ['b', 'render']], [['a', 'index'], ['b', 'index']], [['c', 'render']], ['a', 'b'], [['a', 'index'], ['b', 'index']]]Failed
workspace regression 5[[], [['b', 'render']], [['a', 'index']], [], ['b'], [['a', 'index']]][[], [['b', 'render']], [['a', 'index']], [], ['b'], [['a', 'index']]]Passed

SHA-256 / bb74b1c271e94e4f236a2bc4a4ce65b2781801b3c7890774e9a65bfac8fd5730

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(x):
    r0 = [j for j in x['jobs'] if j[0] in x['visible'] and j[1]=='render']
    r1 = [j for j in x['jobs'] if j[0] in x['mounted'] and j[0] not in x['visible'] and j[1]=='render']
    r2 = [j for j in x['jobs'] if j[1]=='index' and j[0] not in x['visible']]
    r3 = [j for j in x['jobs'] if j[0] in x['closed']]
    r4 = sorted(set(j[0] for j in x['jobs'] if j[0] in x['mounted'] and j[0] not in x['visible'] and j[1]=='render'))
    r5 = [j for j in x['jobs'] if j[0] in x['mounted'] and (j[1]=='index' or j[0] in x['visible'])]
    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: [({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render']], 'visible': ['a'], 'mounted': ['a', 'b'], 'closed': ['c']}, [[['a', 'render']], [['b', 'render']], [['a', 'index'], ['b', 'index']], [['c', 'render']], ['b'], [['a', 'render'], ['a', 'index'], ['b', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render']], 'visible': ['b'], 'mounted': ['a', 'b'], 'closed': ['c']}, [[['b', 'render']], [['a', 'render']], [['a', 'index'], ['b', 'index']], [['c', 'render']], ['a'], [['a', 'index'], ['b', 'render'], ['b', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render']], 'visible': ['a', 'b'], 'mounted': ['a', 'b'], 'closed': ['c']}, [[['a', 'render'], ['b', 'render']], [], [['a', 'index'], ['b', 'index']], [['c', 'render']], [], [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render']], 'visible': ['a'], 'mounted': ['a', 'b', 'c'], 'closed': []}, [[['a', 'render']], [['b', 'render'], ['c', 'render']], [['a', 'index'], ['b', 'index']], [], ['b', 'c'], [['a', 'render'], ['a', 'index'], ['b', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render']], 'visible': [], 'mounted': ['a', 'b'], 'closed': ['c']}, [[], [['a', 'render'], ['b', 'render']], [['a', 'index'], ['b', 'index']], [['c', 'render']], ['a', 'b'], [['a', 'index'], ['b', 'index']]]), ({'jobs': [['a', 'index'], ['b', 'render']], 'visible': ['a'], 'mounted': ['a', 'b'], 'closed': ['c']}, [[], [['b', 'render']], [['a', 'index']], [], ['b'], [['a', 'index']]])], 2: [({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'extra0'], 'closed': ['c']}, [[['a', 'render']], [['b', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index']], [['c', 'render']], ['b'], [['a', 'render'], ['a', 'index'], ['b', 'index'], ['extra0', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index']], 'visible': ['b'], 'mounted': ['a', 'b', 'extra0'], 'closed': ['c']}, [[['b', 'render']], [['a', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index']], [['c', 'render']], ['a'], [['a', 'index'], ['b', 'render'], ['b', 'index'], ['extra0', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index']], 'visible': ['a', 'b'], 'mounted': ['a', 'b', 'extra0'], 'closed': ['c']}, [[['a', 'render'], ['b', 'render']], [], [['a', 'index'], ['b', 'index'], ['extra0', 'index']], [['c', 'render']], [], [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['extra0', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'c', 'extra0'], 'closed': []}, [[['a', 'render']], [['b', 'render'], ['c', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index']], [], ['b', 'c'], [['a', 'render'], ['a', 'index'], ['b', 'index'], ['extra0', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index']], 'visible': [], 'mounted': ['a', 'b', 'extra0'], 'closed': ['c']}, [[], [['a', 'render'], ['b', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index']], [['c', 'render']], ['a', 'b'], [['a', 'index'], ['b', 'index'], ['extra0', 'index']]]), ({'jobs': [['a', 'index'], ['b', 'render'], ['extra0', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'extra0'], 'closed': ['c']}, [[], [['b', 'render']], [['a', 'index'], ['extra0', 'index']], [], ['b'], [['a', 'index'], ['extra0', 'index']]])], 3: [({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'extra0', 'extra1'], 'closed': ['c']}, [[['a', 'render']], [['b', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']], [['c', 'render']], ['b'], [['a', 'render'], ['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index']], 'visible': ['b'], 'mounted': ['a', 'b', 'extra0', 'extra1'], 'closed': ['c']}, [[['b', 'render']], [['a', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']], [['c', 'render']], ['a'], [['a', 'index'], ['b', 'render'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index']], 'visible': ['a', 'b'], 'mounted': ['a', 'b', 'extra0', 'extra1'], 'closed': ['c']}, [[['a', 'render'], ['b', 'render']], [], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']], [['c', 'render']], [], [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'c', 'extra0', 'extra1'], 'closed': []}, [[['a', 'render']], [['b', 'render'], ['c', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']], [], ['b', 'c'], [['a', 'render'], ['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index']], 'visible': [], 'mounted': ['a', 'b', 'extra0', 'extra1'], 'closed': ['c']}, [[], [['a', 'render'], ['b', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']], [['c', 'render']], ['a', 'b'], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']]]), ({'jobs': [['a', 'index'], ['b', 'render'], ['extra0', 'index'], ['extra1', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'extra0', 'extra1'], 'closed': ['c']}, [[], [['b', 'render']], [['a', 'index'], ['extra0', 'index'], ['extra1', 'index']], [], ['b'], [['a', 'index'], ['extra0', 'index'], ['extra1', 'index']]])], 4: [({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2'], 'closed': ['c']}, [[['a', 'render']], [['b', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], [['c', 'render']], ['b'], [['a', 'render'], ['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], 'visible': ['b'], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2'], 'closed': ['c']}, [[['b', 'render']], [['a', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], [['c', 'render']], ['a'], [['a', 'index'], ['b', 'render'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], 'visible': ['a', 'b'], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2'], 'closed': ['c']}, [[['a', 'render'], ['b', 'render']], [], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], [['c', 'render']], [], [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2'], 'closed': []}, [[['a', 'render']], [['b', 'render'], ['c', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], [], ['b', 'c'], [['a', 'render'], ['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], 'visible': [], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2'], 'closed': ['c']}, [[], [['a', 'render'], ['b', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], [['c', 'render']], ['a', 'b'], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']]]), ({'jobs': [['a', 'index'], ['b', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2'], 'closed': ['c']}, [[], [['b', 'render']], [['a', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], [], ['b'], [['a', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']]])], 5: [({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2', 'extra3'], 'closed': ['c']}, [[['a', 'render']], [['b', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], [['c', 'render']], ['b'], [['a', 'render'], ['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], 'visible': ['b'], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2', 'extra3'], 'closed': ['c']}, [[['b', 'render']], [['a', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], [['c', 'render']], ['a'], [['a', 'index'], ['b', 'render'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], 'visible': ['a', 'b'], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2', 'extra3'], 'closed': ['c']}, [[['a', 'render'], ['b', 'render']], [], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], [['c', 'render']], [], [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'closed': []}, [[['a', 'render']], [['b', 'render'], ['c', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], [], ['b', 'c'], [['a', 'render'], ['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], 'visible': [], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2', 'extra3'], 'closed': ['c']}, [[], [['a', 'render'], ['b', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], [['c', 'render']], ['a', 'b'], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']]]), ({'jobs': [['a', 'index'], ['b', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2', 'extra3'], 'closed': ['c']}, [[], [['b', 'render']], [['a', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], [], ['b'], [['a', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']]])]}
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[[['a', 'render']], [['b', 'render']], [['b', 'index']], [['c', 'render']], ['b'], [['a', 'render'], ['a', 'index'], ['b', 'index']]][[['a', 'render']], [['b', 'render']], [['a', 'index'], ['b', 'index']], [['c', 'render']], ['b'], [['a', 'render'], ['a', 'index'], ['b', 'index']]]Failed
workspace regression 1[[['b', 'render']], [['a', 'render']], [['a', 'index']], [['c', 'render']], ['a'], [['a', 'index'], ['b', 'render'], ['b', 'index']]][[['b', 'render']], [['a', 'render']], [['a', 'index'], ['b', 'index']], [['c', 'render']], ['a'], [['a', 'index'], ['b', 'render'], ['b', 'index']]]Failed
workspace regression 2[[['a', 'render'], ['b', 'render']], [], [], [['c', 'render']], [], [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index']]][[['a', 'render'], ['b', 'render']], [], [['a', 'index'], ['b', 'index']], [['c', 'render']], [], [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index']]]Failed
workspace regression 3[[['a', 'render']], [['b', 'render'], ['c', 'render']], [['b', 'index']], [], ['b', 'c'], [['a', 'render'], ['a', 'index'], ['b', 'index']]][[['a', 'render']], [['b', 'render'], ['c', 'render']], [['a', 'index'], ['b', 'index']], [], ['b', 'c'], [['a', 'render'], ['a', 'index'], ['b', 'index']]]Failed
workspace regression 4[[], [['a', 'render'], ['b', 'render']], [['a', 'index'], ['b', 'index']], [['c', 'render']], ['a', 'b'], [['a', 'index'], ['b', 'index']]][[], [['a', 'render'], ['b', 'render']], [['a', 'index'], ['b', 'index']], [['c', 'render']], ['a', 'b'], [['a', 'index'], ['b', 'index']]]Passed
workspace regression 5[[], [['b', 'render']], [], [], ['b'], [['a', 'index']]][[], [['b', 'render']], [['a', 'index']], [], ['b'], [['a', 'index']]]Failed

SHA-256 / a89f98aa14b4de47b11f210fc0ea7dba0560753f4f91ffa3cc0462444f9d1640

3 / The verified repair

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

N = 1
observations = []
def solve(x):
    r0 = [j for j in x['jobs'] if j[0] in x['visible'] and j[1]=='render']
    r1 = [j for j in x['jobs'] if j[0] in x['mounted'] and j[0] not in x['visible'] and j[1]=='render']
    r2 = [j for j in x['jobs'] if j[0] in x['mounted'] and j[1]=='index']
    r3 = [j for j in x['jobs'] if j[0] in x['closed']]
    r4 = sorted(set(j[0] for j in x['jobs'] if j[0] in x['mounted'] and j[0] not in x['visible'] and j[1]=='render'))
    r5 = [j for j in x['jobs'] if j[0] in x['mounted'] and (j[1]=='index' or j[0] in x['visible'])]
    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: [({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render']], 'visible': ['a'], 'mounted': ['a', 'b'], 'closed': ['c']}, [[['a', 'render']], [['b', 'render']], [['a', 'index'], ['b', 'index']], [['c', 'render']], ['b'], [['a', 'render'], ['a', 'index'], ['b', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render']], 'visible': ['b'], 'mounted': ['a', 'b'], 'closed': ['c']}, [[['b', 'render']], [['a', 'render']], [['a', 'index'], ['b', 'index']], [['c', 'render']], ['a'], [['a', 'index'], ['b', 'render'], ['b', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render']], 'visible': ['a', 'b'], 'mounted': ['a', 'b'], 'closed': ['c']}, [[['a', 'render'], ['b', 'render']], [], [['a', 'index'], ['b', 'index']], [['c', 'render']], [], [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render']], 'visible': ['a'], 'mounted': ['a', 'b', 'c'], 'closed': []}, [[['a', 'render']], [['b', 'render'], ['c', 'render']], [['a', 'index'], ['b', 'index']], [], ['b', 'c'], [['a', 'render'], ['a', 'index'], ['b', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render']], 'visible': [], 'mounted': ['a', 'b'], 'closed': ['c']}, [[], [['a', 'render'], ['b', 'render']], [['a', 'index'], ['b', 'index']], [['c', 'render']], ['a', 'b'], [['a', 'index'], ['b', 'index']]]), ({'jobs': [['a', 'index'], ['b', 'render']], 'visible': ['a'], 'mounted': ['a', 'b'], 'closed': ['c']}, [[], [['b', 'render']], [['a', 'index']], [], ['b'], [['a', 'index']]])], 2: [({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'extra0'], 'closed': ['c']}, [[['a', 'render']], [['b', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index']], [['c', 'render']], ['b'], [['a', 'render'], ['a', 'index'], ['b', 'index'], ['extra0', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index']], 'visible': ['b'], 'mounted': ['a', 'b', 'extra0'], 'closed': ['c']}, [[['b', 'render']], [['a', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index']], [['c', 'render']], ['a'], [['a', 'index'], ['b', 'render'], ['b', 'index'], ['extra0', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index']], 'visible': ['a', 'b'], 'mounted': ['a', 'b', 'extra0'], 'closed': ['c']}, [[['a', 'render'], ['b', 'render']], [], [['a', 'index'], ['b', 'index'], ['extra0', 'index']], [['c', 'render']], [], [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['extra0', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'c', 'extra0'], 'closed': []}, [[['a', 'render']], [['b', 'render'], ['c', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index']], [], ['b', 'c'], [['a', 'render'], ['a', 'index'], ['b', 'index'], ['extra0', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index']], 'visible': [], 'mounted': ['a', 'b', 'extra0'], 'closed': ['c']}, [[], [['a', 'render'], ['b', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index']], [['c', 'render']], ['a', 'b'], [['a', 'index'], ['b', 'index'], ['extra0', 'index']]]), ({'jobs': [['a', 'index'], ['b', 'render'], ['extra0', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'extra0'], 'closed': ['c']}, [[], [['b', 'render']], [['a', 'index'], ['extra0', 'index']], [], ['b'], [['a', 'index'], ['extra0', 'index']]])], 3: [({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'extra0', 'extra1'], 'closed': ['c']}, [[['a', 'render']], [['b', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']], [['c', 'render']], ['b'], [['a', 'render'], ['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index']], 'visible': ['b'], 'mounted': ['a', 'b', 'extra0', 'extra1'], 'closed': ['c']}, [[['b', 'render']], [['a', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']], [['c', 'render']], ['a'], [['a', 'index'], ['b', 'render'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index']], 'visible': ['a', 'b'], 'mounted': ['a', 'b', 'extra0', 'extra1'], 'closed': ['c']}, [[['a', 'render'], ['b', 'render']], [], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']], [['c', 'render']], [], [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'c', 'extra0', 'extra1'], 'closed': []}, [[['a', 'render']], [['b', 'render'], ['c', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']], [], ['b', 'c'], [['a', 'render'], ['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index']], 'visible': [], 'mounted': ['a', 'b', 'extra0', 'extra1'], 'closed': ['c']}, [[], [['a', 'render'], ['b', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']], [['c', 'render']], ['a', 'b'], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index']]]), ({'jobs': [['a', 'index'], ['b', 'render'], ['extra0', 'index'], ['extra1', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'extra0', 'extra1'], 'closed': ['c']}, [[], [['b', 'render']], [['a', 'index'], ['extra0', 'index'], ['extra1', 'index']], [], ['b'], [['a', 'index'], ['extra0', 'index'], ['extra1', 'index']]])], 4: [({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2'], 'closed': ['c']}, [[['a', 'render']], [['b', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], [['c', 'render']], ['b'], [['a', 'render'], ['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], 'visible': ['b'], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2'], 'closed': ['c']}, [[['b', 'render']], [['a', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], [['c', 'render']], ['a'], [['a', 'index'], ['b', 'render'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], 'visible': ['a', 'b'], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2'], 'closed': ['c']}, [[['a', 'render'], ['b', 'render']], [], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], [['c', 'render']], [], [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2'], 'closed': []}, [[['a', 'render']], [['b', 'render'], ['c', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], [], ['b', 'c'], [['a', 'render'], ['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], 'visible': [], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2'], 'closed': ['c']}, [[], [['a', 'render'], ['b', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], [['c', 'render']], ['a', 'b'], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']]]), ({'jobs': [['a', 'index'], ['b', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2'], 'closed': ['c']}, [[], [['b', 'render']], [['a', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']], [], ['b'], [['a', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index']]])], 5: [({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2', 'extra3'], 'closed': ['c']}, [[['a', 'render']], [['b', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], [['c', 'render']], ['b'], [['a', 'render'], ['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], 'visible': ['b'], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2', 'extra3'], 'closed': ['c']}, [[['b', 'render']], [['a', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], [['c', 'render']], ['a'], [['a', 'index'], ['b', 'render'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], 'visible': ['a', 'b'], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2', 'extra3'], 'closed': ['c']}, [[['a', 'render'], ['b', 'render']], [], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], [['c', 'render']], [], [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'closed': []}, [[['a', 'render']], [['b', 'render'], ['c', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], [], ['b', 'c'], [['a', 'render'], ['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']]]), ({'jobs': [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index'], ['c', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], 'visible': [], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2', 'extra3'], 'closed': ['c']}, [[], [['a', 'render'], ['b', 'render']], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], [['c', 'render']], ['a', 'b'], [['a', 'index'], ['b', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']]]), ({'jobs': [['a', 'index'], ['b', 'render'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], 'visible': ['a'], 'mounted': ['a', 'b', 'extra0', 'extra1', 'extra2', 'extra3'], 'closed': ['c']}, [[], [['b', 'render']], [['a', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']], [], ['b'], [['a', 'index'], ['extra0', 'index'], ['extra1', 'index'], ['extra2', 'index'], ['extra3', 'index']]])]}
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[[['a', 'render']], [['b', 'render']], [['a', 'index'], ['b', 'index']], [['c', 'render']], ['b'], [['a', 'render'], ['a', 'index'], ['b', 'index']]][[['a', 'render']], [['b', 'render']], [['a', 'index'], ['b', 'index']], [['c', 'render']], ['b'], [['a', 'render'], ['a', 'index'], ['b', 'index']]]Passed
workspace regression 1[[['b', 'render']], [['a', 'render']], [['a', 'index'], ['b', 'index']], [['c', 'render']], ['a'], [['a', 'index'], ['b', 'render'], ['b', 'index']]][[['b', 'render']], [['a', 'render']], [['a', 'index'], ['b', 'index']], [['c', 'render']], ['a'], [['a', 'index'], ['b', 'render'], ['b', 'index']]]Passed
workspace regression 2[[['a', 'render'], ['b', 'render']], [], [['a', 'index'], ['b', 'index']], [['c', 'render']], [], [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index']]][[['a', 'render'], ['b', 'render']], [], [['a', 'index'], ['b', 'index']], [['c', 'render']], [], [['a', 'render'], ['a', 'index'], ['b', 'render'], ['b', 'index']]]Passed
workspace regression 3[[['a', 'render']], [['b', 'render'], ['c', 'render']], [['a', 'index'], ['b', 'index']], [], ['b', 'c'], [['a', 'render'], ['a', 'index'], ['b', 'index']]][[['a', 'render']], [['b', 'render'], ['c', 'render']], [['a', 'index'], ['b', 'index']], [], ['b', 'c'], [['a', 'render'], ['a', 'index'], ['b', 'index']]]Passed
workspace regression 4[[], [['a', 'render'], ['b', 'render']], [['a', 'index'], ['b', 'index']], [['c', 'render']], ['a', 'b'], [['a', 'index'], ['b', 'index']]][[], [['a', 'render'], ['b', 'render']], [['a', 'index'], ['b', 'index']], [['c', 'render']], ['a', 'b'], [['a', 'index'], ['b', 'index']]]Passed
workspace regression 5[[], [['b', 'render']], [['a', 'index']], [], ['b'], [['a', 'index']]][[], [['b', 'render']], [['a', 'index']], [], ['b'], [['a', 'index']]]Passed

SHA-256 / d42c2db7bbb6a2309365a6cec6a2fe5a9c524366515fc5428012ff33625577e4

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:53.321315+00:00.

Case digest / 61bfa2046bad8bc57e23ed02e2a6aaf0377fd8e0619e172229d7f3205478befe