FAILURE MAP
← Case archive

FA-35536 / Tab interfaces / Open access

Suspension victims: eviction demand · case 01

The tab workspace reports an incorrect eviction demand.

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

ROOT CAUSE

The eviction demand decision uses x['budget'] instead of max(0,len(x['lru'])-x['budget']).

VERIFIED REPAIR

Use the stipulated workspace rule: max(0,len(x['lru'])-x['budget']).

Unsuccessful approach: The partial repair len(x['lru']) still violates a workspace boundary or normal case.

Case contract

Suspend inactive clean unpinned panels in least-recently-used order until the stated panel-count budget is met; active, dirty and pinned panels remain resident.

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['lru'] if t!=x['active']]
    r1 = [t for t in x['lru'] if t not in x['dirty']]
    r2 = [t for t in x['lru'] if t not in x['pins']]
    r3 = x['budget']
    r4 = [t for t in x['lru'] if t!=x['active'] and t not in x['dirty'] and t not in x['pins']]
    r5 = [t for t in x['lru'] if t!=x['active'] and t not in x['dirty'] and t not in x['pins']][:max(0,len(x['lru'])-x['budget'])]
    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: [({'lru': ['a', 'b', 'c', 'd'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 2, ['a'], ['a']]), ({'lru': ['a', 'b', 'c', 'd'], 'active': 'd', 'dirty': [], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c'], ['a', 'b', 'c', 'd'], ['a', 'b', 'd'], 2, ['a', 'b'], ['a', 'b']]), ({'lru': ['a', 'b', 'c', 'd'], 'active': 'd', 'dirty': ['b'], 'pins': [], 'budget': 2}, [['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'c', 'd'], 2, ['a', 'c'], ['a', 'c']]), ({'lru': ['a', 'b', 'c', 'd'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 4}, [['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 0, ['a'], []]), ({'lru': ['a', 'b', 'c', 'd'], 'active': 'a', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['b', 'c', 'd'], ['a', 'c', 'd'], ['a', 'b', 'd'], 2, ['d'], ['d']]), ({'lru': ['a', 'b', 'c', 'd'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 0}, [['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 4, ['a'], ['a']])], 2: [({'lru': ['a', 'b', 'c', 'd', 'background0'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c', 'background0'], ['a', 'c', 'd', 'background0'], ['a', 'b', 'd', 'background0'], 3, ['a', 'background0'], ['a', 'background0']]), ({'lru': ['a', 'b', 'c', 'd', 'background0'], 'active': 'd', 'dirty': [], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c', 'background0'], ['a', 'b', 'c', 'd', 'background0'], ['a', 'b', 'd', 'background0'], 3, ['a', 'b', 'background0'], ['a', 'b', 'background0']]), ({'lru': ['a', 'b', 'c', 'd', 'background0'], 'active': 'd', 'dirty': ['b'], 'pins': [], 'budget': 2}, [['a', 'b', 'c', 'background0'], ['a', 'c', 'd', 'background0'], ['a', 'b', 'c', 'd', 'background0'], 3, ['a', 'c', 'background0'], ['a', 'c', 'background0']]), ({'lru': ['a', 'b', 'c', 'd', 'background0'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 4}, [['a', 'b', 'c', 'background0'], ['a', 'c', 'd', 'background0'], ['a', 'b', 'd', 'background0'], 1, ['a', 'background0'], ['a']]), ({'lru': ['a', 'b', 'c', 'd', 'background0'], 'active': 'a', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['b', 'c', 'd', 'background0'], ['a', 'c', 'd', 'background0'], ['a', 'b', 'd', 'background0'], 3, ['d', 'background0'], ['d', 'background0']]), ({'lru': ['a', 'b', 'c', 'd', 'background0'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 0}, [['a', 'b', 'c', 'background0'], ['a', 'c', 'd', 'background0'], ['a', 'b', 'd', 'background0'], 5, ['a', 'background0'], ['a', 'background0']])], 3: [({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1'], ['a', 'c', 'd', 'background0', 'background1'], ['a', 'b', 'd', 'background0', 'background1'], 4, ['a', 'background0', 'background1'], ['a', 'background0', 'background1']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'd', 'dirty': [], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1'], ['a', 'b', 'c', 'd', 'background0', 'background1'], ['a', 'b', 'd', 'background0', 'background1'], 4, ['a', 'b', 'background0', 'background1'], ['a', 'b', 'background0', 'background1']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'd', 'dirty': ['b'], 'pins': [], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1'], ['a', 'c', 'd', 'background0', 'background1'], ['a', 'b', 'c', 'd', 'background0', 'background1'], 4, ['a', 'c', 'background0', 'background1'], ['a', 'c', 'background0', 'background1']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 4}, [['a', 'b', 'c', 'background0', 'background1'], ['a', 'c', 'd', 'background0', 'background1'], ['a', 'b', 'd', 'background0', 'background1'], 2, ['a', 'background0', 'background1'], ['a', 'background0']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'a', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['b', 'c', 'd', 'background0', 'background1'], ['a', 'c', 'd', 'background0', 'background1'], ['a', 'b', 'd', 'background0', 'background1'], 4, ['d', 'background0', 'background1'], ['d', 'background0', 'background1']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 0}, [['a', 'b', 'c', 'background0', 'background1'], ['a', 'c', 'd', 'background0', 'background1'], ['a', 'b', 'd', 'background0', 'background1'], 6, ['a', 'background0', 'background1'], ['a', 'background0', 'background1']])], 4: [({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1', 'background2'], ['a', 'c', 'd', 'background0', 'background1', 'background2'], ['a', 'b', 'd', 'background0', 'background1', 'background2'], 5, ['a', 'background0', 'background1', 'background2'], ['a', 'background0', 'background1', 'background2']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'd', 'dirty': [], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1', 'background2'], ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], ['a', 'b', 'd', 'background0', 'background1', 'background2'], 5, ['a', 'b', 'background0', 'background1', 'background2'], ['a', 'b', 'background0', 'background1', 'background2']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'd', 'dirty': ['b'], 'pins': [], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1', 'background2'], ['a', 'c', 'd', 'background0', 'background1', 'background2'], ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 5, ['a', 'c', 'background0', 'background1', 'background2'], ['a', 'c', 'background0', 'background1', 'background2']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 4}, [['a', 'b', 'c', 'background0', 'background1', 'background2'], ['a', 'c', 'd', 'background0', 'background1', 'background2'], ['a', 'b', 'd', 'background0', 'background1', 'background2'], 3, ['a', 'background0', 'background1', 'background2'], ['a', 'background0', 'background1']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'a', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['b', 'c', 'd', 'background0', 'background1', 'background2'], ['a', 'c', 'd', 'background0', 'background1', 'background2'], ['a', 'b', 'd', 'background0', 'background1', 'background2'], 5, ['d', 'background0', 'background1', 'background2'], ['d', 'background0', 'background1', 'background2']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 0}, [['a', 'b', 'c', 'background0', 'background1', 'background2'], ['a', 'c', 'd', 'background0', 'background1', 'background2'], ['a', 'b', 'd', 'background0', 'background1', 'background2'], 7, ['a', 'background0', 'background1', 'background2'], ['a', 'background0', 'background1', 'background2']])], 5: [({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1', 'background2', 'background3'], ['a', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], ['a', 'b', 'd', 'background0', 'background1', 'background2', 'background3'], 6, ['a', 'background0', 'background1', 'background2', 'background3'], ['a', 'background0', 'background1', 'background2', 'background3']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'd', 'dirty': [], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1', 'background2', 'background3'], ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], ['a', 'b', 'd', 'background0', 'background1', 'background2', 'background3'], 6, ['a', 'b', 'background0', 'background1', 'background2', 'background3'], ['a', 'b', 'background0', 'background1', 'background2', 'background3']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'd', 'dirty': ['b'], 'pins': [], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1', 'background2', 'background3'], ['a', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 6, ['a', 'c', 'background0', 'background1', 'background2', 'background3'], ['a', 'c', 'background0', 'background1', 'background2', 'background3']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 4}, [['a', 'b', 'c', 'background0', 'background1', 'background2', 'background3'], ['a', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], ['a', 'b', 'd', 'background0', 'background1', 'background2', 'background3'], 4, ['a', 'background0', 'background1', 'background2', 'background3'], ['a', 'background0', 'background1', 'background2']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'a', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], ['a', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], ['a', 'b', 'd', 'background0', 'background1', 'background2', 'background3'], 6, ['d', 'background0', 'background1', 'background2', 'background3'], ['d', 'background0', 'background1', 'background2', 'background3']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 0}, [['a', 'b', 'c', 'background0', 'background1', 'background2', 'background3'], ['a', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], ['a', 'b', 'd', 'background0', 'background1', 'background2', 'background3'], 8, ['a', 'background0', 'background1', 'background2', 'background3'], ['a', 'background0', 'background1', 'background2', 'background3']])]}
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', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 2, ['a'], ['a']][['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 2, ['a'], ['a']]Passed
workspace regression 1[['a', 'b', 'c'], ['a', 'b', 'c', 'd'], ['a', 'b', 'd'], 2, ['a', 'b'], ['a', 'b']][['a', 'b', 'c'], ['a', 'b', 'c', 'd'], ['a', 'b', 'd'], 2, ['a', 'b'], ['a', 'b']]Passed
workspace regression 2[['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'c', 'd'], 2, ['a', 'c'], ['a', 'c']][['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'c', 'd'], 2, ['a', 'c'], ['a', 'c']]Passed
workspace regression 3[['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 4, ['a'], []][['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 0, ['a'], []]Failed
workspace regression 4[['b', 'c', 'd'], ['a', 'c', 'd'], ['a', 'b', 'd'], 2, ['d'], ['d']][['b', 'c', 'd'], ['a', 'c', 'd'], ['a', 'b', 'd'], 2, ['d'], ['d']]Passed
workspace regression 5[['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 0, ['a'], ['a']][['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 4, ['a'], ['a']]Failed

SHA-256 / ba4a06c197b1bfa91cdab8a39b83ffe4a1177f21ce41a32ad491d954df75065e

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['lru'] if t!=x['active']]
    r1 = [t for t in x['lru'] if t not in x['dirty']]
    r2 = [t for t in x['lru'] if t not in x['pins']]
    r3 = len(x['lru'])
    r4 = [t for t in x['lru'] if t!=x['active'] and t not in x['dirty'] and t not in x['pins']]
    r5 = [t for t in x['lru'] if t!=x['active'] and t not in x['dirty'] and t not in x['pins']][:max(0,len(x['lru'])-x['budget'])]
    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: [({'lru': ['a', 'b', 'c', 'd'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 2, ['a'], ['a']]), ({'lru': ['a', 'b', 'c', 'd'], 'active': 'd', 'dirty': [], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c'], ['a', 'b', 'c', 'd'], ['a', 'b', 'd'], 2, ['a', 'b'], ['a', 'b']]), ({'lru': ['a', 'b', 'c', 'd'], 'active': 'd', 'dirty': ['b'], 'pins': [], 'budget': 2}, [['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'c', 'd'], 2, ['a', 'c'], ['a', 'c']]), ({'lru': ['a', 'b', 'c', 'd'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 4}, [['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 0, ['a'], []]), ({'lru': ['a', 'b', 'c', 'd'], 'active': 'a', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['b', 'c', 'd'], ['a', 'c', 'd'], ['a', 'b', 'd'], 2, ['d'], ['d']]), ({'lru': ['a', 'b', 'c', 'd'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 0}, [['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 4, ['a'], ['a']])], 2: [({'lru': ['a', 'b', 'c', 'd', 'background0'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c', 'background0'], ['a', 'c', 'd', 'background0'], ['a', 'b', 'd', 'background0'], 3, ['a', 'background0'], ['a', 'background0']]), ({'lru': ['a', 'b', 'c', 'd', 'background0'], 'active': 'd', 'dirty': [], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c', 'background0'], ['a', 'b', 'c', 'd', 'background0'], ['a', 'b', 'd', 'background0'], 3, ['a', 'b', 'background0'], ['a', 'b', 'background0']]), ({'lru': ['a', 'b', 'c', 'd', 'background0'], 'active': 'd', 'dirty': ['b'], 'pins': [], 'budget': 2}, [['a', 'b', 'c', 'background0'], ['a', 'c', 'd', 'background0'], ['a', 'b', 'c', 'd', 'background0'], 3, ['a', 'c', 'background0'], ['a', 'c', 'background0']]), ({'lru': ['a', 'b', 'c', 'd', 'background0'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 4}, [['a', 'b', 'c', 'background0'], ['a', 'c', 'd', 'background0'], ['a', 'b', 'd', 'background0'], 1, ['a', 'background0'], ['a']]), ({'lru': ['a', 'b', 'c', 'd', 'background0'], 'active': 'a', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['b', 'c', 'd', 'background0'], ['a', 'c', 'd', 'background0'], ['a', 'b', 'd', 'background0'], 3, ['d', 'background0'], ['d', 'background0']]), ({'lru': ['a', 'b', 'c', 'd', 'background0'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 0}, [['a', 'b', 'c', 'background0'], ['a', 'c', 'd', 'background0'], ['a', 'b', 'd', 'background0'], 5, ['a', 'background0'], ['a', 'background0']])], 3: [({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1'], ['a', 'c', 'd', 'background0', 'background1'], ['a', 'b', 'd', 'background0', 'background1'], 4, ['a', 'background0', 'background1'], ['a', 'background0', 'background1']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'd', 'dirty': [], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1'], ['a', 'b', 'c', 'd', 'background0', 'background1'], ['a', 'b', 'd', 'background0', 'background1'], 4, ['a', 'b', 'background0', 'background1'], ['a', 'b', 'background0', 'background1']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'd', 'dirty': ['b'], 'pins': [], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1'], ['a', 'c', 'd', 'background0', 'background1'], ['a', 'b', 'c', 'd', 'background0', 'background1'], 4, ['a', 'c', 'background0', 'background1'], ['a', 'c', 'background0', 'background1']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 4}, [['a', 'b', 'c', 'background0', 'background1'], ['a', 'c', 'd', 'background0', 'background1'], ['a', 'b', 'd', 'background0', 'background1'], 2, ['a', 'background0', 'background1'], ['a', 'background0']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'a', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['b', 'c', 'd', 'background0', 'background1'], ['a', 'c', 'd', 'background0', 'background1'], ['a', 'b', 'd', 'background0', 'background1'], 4, ['d', 'background0', 'background1'], ['d', 'background0', 'background1']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 0}, [['a', 'b', 'c', 'background0', 'background1'], ['a', 'c', 'd', 'background0', 'background1'], ['a', 'b', 'd', 'background0', 'background1'], 6, ['a', 'background0', 'background1'], ['a', 'background0', 'background1']])], 4: [({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1', 'background2'], ['a', 'c', 'd', 'background0', 'background1', 'background2'], ['a', 'b', 'd', 'background0', 'background1', 'background2'], 5, ['a', 'background0', 'background1', 'background2'], ['a', 'background0', 'background1', 'background2']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'd', 'dirty': [], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1', 'background2'], ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], ['a', 'b', 'd', 'background0', 'background1', 'background2'], 5, ['a', 'b', 'background0', 'background1', 'background2'], ['a', 'b', 'background0', 'background1', 'background2']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'd', 'dirty': ['b'], 'pins': [], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1', 'background2'], ['a', 'c', 'd', 'background0', 'background1', 'background2'], ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 5, ['a', 'c', 'background0', 'background1', 'background2'], ['a', 'c', 'background0', 'background1', 'background2']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 4}, [['a', 'b', 'c', 'background0', 'background1', 'background2'], ['a', 'c', 'd', 'background0', 'background1', 'background2'], ['a', 'b', 'd', 'background0', 'background1', 'background2'], 3, ['a', 'background0', 'background1', 'background2'], ['a', 'background0', 'background1']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'a', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['b', 'c', 'd', 'background0', 'background1', 'background2'], ['a', 'c', 'd', 'background0', 'background1', 'background2'], ['a', 'b', 'd', 'background0', 'background1', 'background2'], 5, ['d', 'background0', 'background1', 'background2'], ['d', 'background0', 'background1', 'background2']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 0}, [['a', 'b', 'c', 'background0', 'background1', 'background2'], ['a', 'c', 'd', 'background0', 'background1', 'background2'], ['a', 'b', 'd', 'background0', 'background1', 'background2'], 7, ['a', 'background0', 'background1', 'background2'], ['a', 'background0', 'background1', 'background2']])], 5: [({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1', 'background2', 'background3'], ['a', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], ['a', 'b', 'd', 'background0', 'background1', 'background2', 'background3'], 6, ['a', 'background0', 'background1', 'background2', 'background3'], ['a', 'background0', 'background1', 'background2', 'background3']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'd', 'dirty': [], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1', 'background2', 'background3'], ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], ['a', 'b', 'd', 'background0', 'background1', 'background2', 'background3'], 6, ['a', 'b', 'background0', 'background1', 'background2', 'background3'], ['a', 'b', 'background0', 'background1', 'background2', 'background3']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'd', 'dirty': ['b'], 'pins': [], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1', 'background2', 'background3'], ['a', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 6, ['a', 'c', 'background0', 'background1', 'background2', 'background3'], ['a', 'c', 'background0', 'background1', 'background2', 'background3']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 4}, [['a', 'b', 'c', 'background0', 'background1', 'background2', 'background3'], ['a', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], ['a', 'b', 'd', 'background0', 'background1', 'background2', 'background3'], 4, ['a', 'background0', 'background1', 'background2', 'background3'], ['a', 'background0', 'background1', 'background2']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'a', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], ['a', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], ['a', 'b', 'd', 'background0', 'background1', 'background2', 'background3'], 6, ['d', 'background0', 'background1', 'background2', 'background3'], ['d', 'background0', 'background1', 'background2', 'background3']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 0}, [['a', 'b', 'c', 'background0', 'background1', 'background2', 'background3'], ['a', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], ['a', 'b', 'd', 'background0', 'background1', 'background2', 'background3'], 8, ['a', 'background0', 'background1', 'background2', 'background3'], ['a', 'background0', 'background1', 'background2', 'background3']])]}
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', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 4, ['a'], ['a']][['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 2, ['a'], ['a']]Failed
workspace regression 1[['a', 'b', 'c'], ['a', 'b', 'c', 'd'], ['a', 'b', 'd'], 4, ['a', 'b'], ['a', 'b']][['a', 'b', 'c'], ['a', 'b', 'c', 'd'], ['a', 'b', 'd'], 2, ['a', 'b'], ['a', 'b']]Failed
workspace regression 2[['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'c', 'd'], 4, ['a', 'c'], ['a', 'c']][['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'c', 'd'], 2, ['a', 'c'], ['a', 'c']]Failed
workspace regression 3[['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 4, ['a'], []][['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 0, ['a'], []]Failed
workspace regression 4[['b', 'c', 'd'], ['a', 'c', 'd'], ['a', 'b', 'd'], 4, ['d'], ['d']][['b', 'c', 'd'], ['a', 'c', 'd'], ['a', 'b', 'd'], 2, ['d'], ['d']]Failed
workspace regression 5[['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 4, ['a'], ['a']][['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 4, ['a'], ['a']]Passed

SHA-256 / 81d934f033d432e0e2e5337e525daf50aaa3b776d7563a309cd0d8ced50401b7

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['lru'] if t!=x['active']]
    r1 = [t for t in x['lru'] if t not in x['dirty']]
    r2 = [t for t in x['lru'] if t not in x['pins']]
    r3 = max(0,len(x['lru'])-x['budget'])
    r4 = [t for t in x['lru'] if t!=x['active'] and t not in x['dirty'] and t not in x['pins']]
    r5 = [t for t in x['lru'] if t!=x['active'] and t not in x['dirty'] and t not in x['pins']][:max(0,len(x['lru'])-x['budget'])]
    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: [({'lru': ['a', 'b', 'c', 'd'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 2, ['a'], ['a']]), ({'lru': ['a', 'b', 'c', 'd'], 'active': 'd', 'dirty': [], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c'], ['a', 'b', 'c', 'd'], ['a', 'b', 'd'], 2, ['a', 'b'], ['a', 'b']]), ({'lru': ['a', 'b', 'c', 'd'], 'active': 'd', 'dirty': ['b'], 'pins': [], 'budget': 2}, [['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'c', 'd'], 2, ['a', 'c'], ['a', 'c']]), ({'lru': ['a', 'b', 'c', 'd'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 4}, [['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 0, ['a'], []]), ({'lru': ['a', 'b', 'c', 'd'], 'active': 'a', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['b', 'c', 'd'], ['a', 'c', 'd'], ['a', 'b', 'd'], 2, ['d'], ['d']]), ({'lru': ['a', 'b', 'c', 'd'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 0}, [['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 4, ['a'], ['a']])], 2: [({'lru': ['a', 'b', 'c', 'd', 'background0'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c', 'background0'], ['a', 'c', 'd', 'background0'], ['a', 'b', 'd', 'background0'], 3, ['a', 'background0'], ['a', 'background0']]), ({'lru': ['a', 'b', 'c', 'd', 'background0'], 'active': 'd', 'dirty': [], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c', 'background0'], ['a', 'b', 'c', 'd', 'background0'], ['a', 'b', 'd', 'background0'], 3, ['a', 'b', 'background0'], ['a', 'b', 'background0']]), ({'lru': ['a', 'b', 'c', 'd', 'background0'], 'active': 'd', 'dirty': ['b'], 'pins': [], 'budget': 2}, [['a', 'b', 'c', 'background0'], ['a', 'c', 'd', 'background0'], ['a', 'b', 'c', 'd', 'background0'], 3, ['a', 'c', 'background0'], ['a', 'c', 'background0']]), ({'lru': ['a', 'b', 'c', 'd', 'background0'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 4}, [['a', 'b', 'c', 'background0'], ['a', 'c', 'd', 'background0'], ['a', 'b', 'd', 'background0'], 1, ['a', 'background0'], ['a']]), ({'lru': ['a', 'b', 'c', 'd', 'background0'], 'active': 'a', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['b', 'c', 'd', 'background0'], ['a', 'c', 'd', 'background0'], ['a', 'b', 'd', 'background0'], 3, ['d', 'background0'], ['d', 'background0']]), ({'lru': ['a', 'b', 'c', 'd', 'background0'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 0}, [['a', 'b', 'c', 'background0'], ['a', 'c', 'd', 'background0'], ['a', 'b', 'd', 'background0'], 5, ['a', 'background0'], ['a', 'background0']])], 3: [({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1'], ['a', 'c', 'd', 'background0', 'background1'], ['a', 'b', 'd', 'background0', 'background1'], 4, ['a', 'background0', 'background1'], ['a', 'background0', 'background1']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'd', 'dirty': [], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1'], ['a', 'b', 'c', 'd', 'background0', 'background1'], ['a', 'b', 'd', 'background0', 'background1'], 4, ['a', 'b', 'background0', 'background1'], ['a', 'b', 'background0', 'background1']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'd', 'dirty': ['b'], 'pins': [], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1'], ['a', 'c', 'd', 'background0', 'background1'], ['a', 'b', 'c', 'd', 'background0', 'background1'], 4, ['a', 'c', 'background0', 'background1'], ['a', 'c', 'background0', 'background1']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 4}, [['a', 'b', 'c', 'background0', 'background1'], ['a', 'c', 'd', 'background0', 'background1'], ['a', 'b', 'd', 'background0', 'background1'], 2, ['a', 'background0', 'background1'], ['a', 'background0']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'a', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['b', 'c', 'd', 'background0', 'background1'], ['a', 'c', 'd', 'background0', 'background1'], ['a', 'b', 'd', 'background0', 'background1'], 4, ['d', 'background0', 'background1'], ['d', 'background0', 'background1']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 0}, [['a', 'b', 'c', 'background0', 'background1'], ['a', 'c', 'd', 'background0', 'background1'], ['a', 'b', 'd', 'background0', 'background1'], 6, ['a', 'background0', 'background1'], ['a', 'background0', 'background1']])], 4: [({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1', 'background2'], ['a', 'c', 'd', 'background0', 'background1', 'background2'], ['a', 'b', 'd', 'background0', 'background1', 'background2'], 5, ['a', 'background0', 'background1', 'background2'], ['a', 'background0', 'background1', 'background2']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'd', 'dirty': [], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1', 'background2'], ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], ['a', 'b', 'd', 'background0', 'background1', 'background2'], 5, ['a', 'b', 'background0', 'background1', 'background2'], ['a', 'b', 'background0', 'background1', 'background2']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'd', 'dirty': ['b'], 'pins': [], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1', 'background2'], ['a', 'c', 'd', 'background0', 'background1', 'background2'], ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 5, ['a', 'c', 'background0', 'background1', 'background2'], ['a', 'c', 'background0', 'background1', 'background2']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 4}, [['a', 'b', 'c', 'background0', 'background1', 'background2'], ['a', 'c', 'd', 'background0', 'background1', 'background2'], ['a', 'b', 'd', 'background0', 'background1', 'background2'], 3, ['a', 'background0', 'background1', 'background2'], ['a', 'background0', 'background1']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'a', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['b', 'c', 'd', 'background0', 'background1', 'background2'], ['a', 'c', 'd', 'background0', 'background1', 'background2'], ['a', 'b', 'd', 'background0', 'background1', 'background2'], 5, ['d', 'background0', 'background1', 'background2'], ['d', 'background0', 'background1', 'background2']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 0}, [['a', 'b', 'c', 'background0', 'background1', 'background2'], ['a', 'c', 'd', 'background0', 'background1', 'background2'], ['a', 'b', 'd', 'background0', 'background1', 'background2'], 7, ['a', 'background0', 'background1', 'background2'], ['a', 'background0', 'background1', 'background2']])], 5: [({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1', 'background2', 'background3'], ['a', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], ['a', 'b', 'd', 'background0', 'background1', 'background2', 'background3'], 6, ['a', 'background0', 'background1', 'background2', 'background3'], ['a', 'background0', 'background1', 'background2', 'background3']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'd', 'dirty': [], 'pins': ['c'], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1', 'background2', 'background3'], ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], ['a', 'b', 'd', 'background0', 'background1', 'background2', 'background3'], 6, ['a', 'b', 'background0', 'background1', 'background2', 'background3'], ['a', 'b', 'background0', 'background1', 'background2', 'background3']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'd', 'dirty': ['b'], 'pins': [], 'budget': 2}, [['a', 'b', 'c', 'background0', 'background1', 'background2', 'background3'], ['a', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 6, ['a', 'c', 'background0', 'background1', 'background2', 'background3'], ['a', 'c', 'background0', 'background1', 'background2', 'background3']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 4}, [['a', 'b', 'c', 'background0', 'background1', 'background2', 'background3'], ['a', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], ['a', 'b', 'd', 'background0', 'background1', 'background2', 'background3'], 4, ['a', 'background0', 'background1', 'background2', 'background3'], ['a', 'background0', 'background1', 'background2']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'a', 'dirty': ['b'], 'pins': ['c'], 'budget': 2}, [['b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], ['a', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], ['a', 'b', 'd', 'background0', 'background1', 'background2', 'background3'], 6, ['d', 'background0', 'background1', 'background2', 'background3'], ['d', 'background0', 'background1', 'background2', 'background3']]), ({'lru': ['a', 'b', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], 'active': 'd', 'dirty': ['b'], 'pins': ['c'], 'budget': 0}, [['a', 'b', 'c', 'background0', 'background1', 'background2', 'background3'], ['a', 'c', 'd', 'background0', 'background1', 'background2', 'background3'], ['a', 'b', 'd', 'background0', 'background1', 'background2', 'background3'], 8, ['a', 'background0', 'background1', 'background2', 'background3'], ['a', 'background0', 'background1', 'background2', 'background3']])]}
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', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 2, ['a'], ['a']][['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 2, ['a'], ['a']]Passed
workspace regression 1[['a', 'b', 'c'], ['a', 'b', 'c', 'd'], ['a', 'b', 'd'], 2, ['a', 'b'], ['a', 'b']][['a', 'b', 'c'], ['a', 'b', 'c', 'd'], ['a', 'b', 'd'], 2, ['a', 'b'], ['a', 'b']]Passed
workspace regression 2[['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'c', 'd'], 2, ['a', 'c'], ['a', 'c']][['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'c', 'd'], 2, ['a', 'c'], ['a', 'c']]Passed
workspace regression 3[['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 0, ['a'], []][['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 0, ['a'], []]Passed
workspace regression 4[['b', 'c', 'd'], ['a', 'c', 'd'], ['a', 'b', 'd'], 2, ['d'], ['d']][['b', 'c', 'd'], ['a', 'c', 'd'], ['a', 'b', 'd'], 2, ['d'], ['d']]Passed
workspace regression 5[['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 4, ['a'], ['a']][['a', 'b', 'c'], ['a', 'c', 'd'], ['a', 'b', 'd'], 4, ['a'], ['a']]Passed

SHA-256 / f91f353567cc32cf4e01b1f37a4596d6e77f6ef81042de429a193ef2fa880221

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

Case digest / 670cd25cd1eed4c3bdd73ee132c296b6dbb421f9ca7d800243ba648f1cec2cc6