FA-35621 / Tab interfaces / Open access
Recently closed stack: restore position · case 01
The tab workspace reports an incorrect restore position.
ROOT CAUSE
The restore position decision uses x['stack'][-1][2] instead of next((min(r[2],x['group_sizes'][r[1]]) for r in reversed(x['stack']) if r[0] not in x['deleted']),None).
VERIFIED REPAIR
Use the stipulated workspace rule: next((min(r[2],x['group_sizes'][r[1]]) for r in reversed(x['stack']) if r[0] not in x['deleted']),None).
Unsuccessful approach: The partial repair 0 still violates a workspace boundary or normal case.
Case contract
Closed tabs are restored LIFO with original group, insertion slot, document and viewport; skip tombstones and keep remaining stack order.
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 = next((r[0] for r in reversed(x['stack']) if r[0] not in x['deleted']),None)
r1 = next((r[1] for r in reversed(x['stack']) if r[0] not in x['deleted']),None)
r2 = x['stack'][-1][2]
r3 = next((r[3] for r in reversed(x['stack']) if r[0] not in x['deleted']),None)
r4 = [r[0] for r in x['stack'] if r[0] not in x['deleted']]
r5 = [r[0] for r in x['stack'] if r[0] not in x['deleted']][:-1]
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: [({'stack': [['a', 'g', 2, 30], ['b', 'h', 0, 50], ['c', 'g', 1, 20]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 0, 50, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 30], ['b', 'h', 0, 50], ['c', 'g', 1, 20]], 'deleted': [], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 20, ['a', 'b', 'c'], ['a', 'b']]), ({'stack': [['a', 'g', 2, 30], ['b', 'h', 0, 50], ['c', 'g', 1, 20]], 'deleted': ['b', 'c'], 'group_sizes': {'g': 1, 'h': 2}}, ['a', 'g', 1, 30, ['a'], []]), ({'stack': [['a', 'g', 2, 30], ['b', 'h', 0, 50], ['c', 'g', 1, 20]], 'deleted': ['c'], 'group_sizes': {'g': 4, 'h': 0}}, ['b', 'h', 0, 50, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 30], ['b', 'h', 0, 50], ['c', 'g', 1, 20]], 'deleted': ['a'], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 20, ['b', 'c'], ['b']]), ({'stack': [['a', 'g', 2, 30], ['b', 'h', 1, 0]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 1, 0, ['a', 'b'], ['a']])], 2: [({'stack': [['a', 'g', 2, 60], ['b', 'h', 0, 100], ['c', 'g', 1, 40]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 0, 100, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 60], ['b', 'h', 0, 100], ['c', 'g', 1, 40]], 'deleted': [], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 40, ['a', 'b', 'c'], ['a', 'b']]), ({'stack': [['a', 'g', 2, 60], ['b', 'h', 0, 100], ['c', 'g', 1, 40]], 'deleted': ['b', 'c'], 'group_sizes': {'g': 1, 'h': 2}}, ['a', 'g', 1, 60, ['a'], []]), ({'stack': [['a', 'g', 2, 60], ['b', 'h', 0, 100], ['c', 'g', 1, 40]], 'deleted': ['c'], 'group_sizes': {'g': 4, 'h': 0}}, ['b', 'h', 0, 100, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 60], ['b', 'h', 0, 100], ['c', 'g', 1, 40]], 'deleted': ['a'], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 40, ['b', 'c'], ['b']]), ({'stack': [['a', 'g', 2, 60], ['b', 'h', 1, 0]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 1, 0, ['a', 'b'], ['a']])], 3: [({'stack': [['a', 'g', 2, 90], ['b', 'h', 0, 150], ['c', 'g', 1, 60]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 0, 150, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 90], ['b', 'h', 0, 150], ['c', 'g', 1, 60]], 'deleted': [], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 60, ['a', 'b', 'c'], ['a', 'b']]), ({'stack': [['a', 'g', 2, 90], ['b', 'h', 0, 150], ['c', 'g', 1, 60]], 'deleted': ['b', 'c'], 'group_sizes': {'g': 1, 'h': 2}}, ['a', 'g', 1, 90, ['a'], []]), ({'stack': [['a', 'g', 2, 90], ['b', 'h', 0, 150], ['c', 'g', 1, 60]], 'deleted': ['c'], 'group_sizes': {'g': 4, 'h': 0}}, ['b', 'h', 0, 150, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 90], ['b', 'h', 0, 150], ['c', 'g', 1, 60]], 'deleted': ['a'], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 60, ['b', 'c'], ['b']]), ({'stack': [['a', 'g', 2, 90], ['b', 'h', 1, 0]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 1, 0, ['a', 'b'], ['a']])], 4: [({'stack': [['a', 'g', 2, 120], ['b', 'h', 0, 200], ['c', 'g', 1, 80]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 0, 200, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 120], ['b', 'h', 0, 200], ['c', 'g', 1, 80]], 'deleted': [], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 80, ['a', 'b', 'c'], ['a', 'b']]), ({'stack': [['a', 'g', 2, 120], ['b', 'h', 0, 200], ['c', 'g', 1, 80]], 'deleted': ['b', 'c'], 'group_sizes': {'g': 1, 'h': 2}}, ['a', 'g', 1, 120, ['a'], []]), ({'stack': [['a', 'g', 2, 120], ['b', 'h', 0, 200], ['c', 'g', 1, 80]], 'deleted': ['c'], 'group_sizes': {'g': 4, 'h': 0}}, ['b', 'h', 0, 200, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 120], ['b', 'h', 0, 200], ['c', 'g', 1, 80]], 'deleted': ['a'], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 80, ['b', 'c'], ['b']]), ({'stack': [['a', 'g', 2, 120], ['b', 'h', 1, 0]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 1, 0, ['a', 'b'], ['a']])], 5: [({'stack': [['a', 'g', 2, 150], ['b', 'h', 0, 250], ['c', 'g', 1, 100]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 0, 250, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 150], ['b', 'h', 0, 250], ['c', 'g', 1, 100]], 'deleted': [], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 100, ['a', 'b', 'c'], ['a', 'b']]), ({'stack': [['a', 'g', 2, 150], ['b', 'h', 0, 250], ['c', 'g', 1, 100]], 'deleted': ['b', 'c'], 'group_sizes': {'g': 1, 'h': 2}}, ['a', 'g', 1, 150, ['a'], []]), ({'stack': [['a', 'g', 2, 150], ['b', 'h', 0, 250], ['c', 'g', 1, 100]], 'deleted': ['c'], 'group_sizes': {'g': 4, 'h': 0}}, ['b', 'h', 0, 250, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 150], ['b', 'h', 0, 250], ['c', 'g', 1, 100]], 'deleted': ['a'], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 100, ['b', 'c'], ['b']]), ({'stack': [['a', 'g', 2, 150], ['b', 'h', 1, 0]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 1, 0, ['a', 'b'], ['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', 'h', 1, 50, ['a', 'b'], ['a']] | ['b', 'h', 0, 50, ['a', 'b'], ['a']] | Failed |
| workspace regression 1 | ['c', 'g', 1, 20, ['a', 'b', 'c'], ['a', 'b']] | ['c', 'g', 1, 20, ['a', 'b', 'c'], ['a', 'b']] | Passed |
| workspace regression 2 | ['a', 'g', 1, 30, ['a'], []] | ['a', 'g', 1, 30, ['a'], []] | Passed |
| workspace regression 3 | ['b', 'h', 1, 50, ['a', 'b'], ['a']] | ['b', 'h', 0, 50, ['a', 'b'], ['a']] | Failed |
| workspace regression 4 | ['c', 'g', 1, 20, ['b', 'c'], ['b']] | ['c', 'g', 1, 20, ['b', 'c'], ['b']] | Passed |
| workspace regression 5 | ['b', 'h', 1, 0, ['a', 'b'], ['a']] | ['b', 'h', 1, 0, ['a', 'b'], ['a']] | Passed |
SHA-256 / 923ad55906c505acfeed3db1821229f4a45150026d6658799832550abd8054c7
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
r0 = next((r[0] for r in reversed(x['stack']) if r[0] not in x['deleted']),None)
r1 = next((r[1] for r in reversed(x['stack']) if r[0] not in x['deleted']),None)
r2 = 0
r3 = next((r[3] for r in reversed(x['stack']) if r[0] not in x['deleted']),None)
r4 = [r[0] for r in x['stack'] if r[0] not in x['deleted']]
r5 = [r[0] for r in x['stack'] if r[0] not in x['deleted']][:-1]
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: [({'stack': [['a', 'g', 2, 30], ['b', 'h', 0, 50], ['c', 'g', 1, 20]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 0, 50, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 30], ['b', 'h', 0, 50], ['c', 'g', 1, 20]], 'deleted': [], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 20, ['a', 'b', 'c'], ['a', 'b']]), ({'stack': [['a', 'g', 2, 30], ['b', 'h', 0, 50], ['c', 'g', 1, 20]], 'deleted': ['b', 'c'], 'group_sizes': {'g': 1, 'h': 2}}, ['a', 'g', 1, 30, ['a'], []]), ({'stack': [['a', 'g', 2, 30], ['b', 'h', 0, 50], ['c', 'g', 1, 20]], 'deleted': ['c'], 'group_sizes': {'g': 4, 'h': 0}}, ['b', 'h', 0, 50, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 30], ['b', 'h', 0, 50], ['c', 'g', 1, 20]], 'deleted': ['a'], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 20, ['b', 'c'], ['b']]), ({'stack': [['a', 'g', 2, 30], ['b', 'h', 1, 0]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 1, 0, ['a', 'b'], ['a']])], 2: [({'stack': [['a', 'g', 2, 60], ['b', 'h', 0, 100], ['c', 'g', 1, 40]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 0, 100, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 60], ['b', 'h', 0, 100], ['c', 'g', 1, 40]], 'deleted': [], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 40, ['a', 'b', 'c'], ['a', 'b']]), ({'stack': [['a', 'g', 2, 60], ['b', 'h', 0, 100], ['c', 'g', 1, 40]], 'deleted': ['b', 'c'], 'group_sizes': {'g': 1, 'h': 2}}, ['a', 'g', 1, 60, ['a'], []]), ({'stack': [['a', 'g', 2, 60], ['b', 'h', 0, 100], ['c', 'g', 1, 40]], 'deleted': ['c'], 'group_sizes': {'g': 4, 'h': 0}}, ['b', 'h', 0, 100, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 60], ['b', 'h', 0, 100], ['c', 'g', 1, 40]], 'deleted': ['a'], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 40, ['b', 'c'], ['b']]), ({'stack': [['a', 'g', 2, 60], ['b', 'h', 1, 0]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 1, 0, ['a', 'b'], ['a']])], 3: [({'stack': [['a', 'g', 2, 90], ['b', 'h', 0, 150], ['c', 'g', 1, 60]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 0, 150, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 90], ['b', 'h', 0, 150], ['c', 'g', 1, 60]], 'deleted': [], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 60, ['a', 'b', 'c'], ['a', 'b']]), ({'stack': [['a', 'g', 2, 90], ['b', 'h', 0, 150], ['c', 'g', 1, 60]], 'deleted': ['b', 'c'], 'group_sizes': {'g': 1, 'h': 2}}, ['a', 'g', 1, 90, ['a'], []]), ({'stack': [['a', 'g', 2, 90], ['b', 'h', 0, 150], ['c', 'g', 1, 60]], 'deleted': ['c'], 'group_sizes': {'g': 4, 'h': 0}}, ['b', 'h', 0, 150, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 90], ['b', 'h', 0, 150], ['c', 'g', 1, 60]], 'deleted': ['a'], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 60, ['b', 'c'], ['b']]), ({'stack': [['a', 'g', 2, 90], ['b', 'h', 1, 0]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 1, 0, ['a', 'b'], ['a']])], 4: [({'stack': [['a', 'g', 2, 120], ['b', 'h', 0, 200], ['c', 'g', 1, 80]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 0, 200, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 120], ['b', 'h', 0, 200], ['c', 'g', 1, 80]], 'deleted': [], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 80, ['a', 'b', 'c'], ['a', 'b']]), ({'stack': [['a', 'g', 2, 120], ['b', 'h', 0, 200], ['c', 'g', 1, 80]], 'deleted': ['b', 'c'], 'group_sizes': {'g': 1, 'h': 2}}, ['a', 'g', 1, 120, ['a'], []]), ({'stack': [['a', 'g', 2, 120], ['b', 'h', 0, 200], ['c', 'g', 1, 80]], 'deleted': ['c'], 'group_sizes': {'g': 4, 'h': 0}}, ['b', 'h', 0, 200, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 120], ['b', 'h', 0, 200], ['c', 'g', 1, 80]], 'deleted': ['a'], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 80, ['b', 'c'], ['b']]), ({'stack': [['a', 'g', 2, 120], ['b', 'h', 1, 0]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 1, 0, ['a', 'b'], ['a']])], 5: [({'stack': [['a', 'g', 2, 150], ['b', 'h', 0, 250], ['c', 'g', 1, 100]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 0, 250, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 150], ['b', 'h', 0, 250], ['c', 'g', 1, 100]], 'deleted': [], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 100, ['a', 'b', 'c'], ['a', 'b']]), ({'stack': [['a', 'g', 2, 150], ['b', 'h', 0, 250], ['c', 'g', 1, 100]], 'deleted': ['b', 'c'], 'group_sizes': {'g': 1, 'h': 2}}, ['a', 'g', 1, 150, ['a'], []]), ({'stack': [['a', 'g', 2, 150], ['b', 'h', 0, 250], ['c', 'g', 1, 100]], 'deleted': ['c'], 'group_sizes': {'g': 4, 'h': 0}}, ['b', 'h', 0, 250, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 150], ['b', 'h', 0, 250], ['c', 'g', 1, 100]], 'deleted': ['a'], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 100, ['b', 'c'], ['b']]), ({'stack': [['a', 'g', 2, 150], ['b', 'h', 1, 0]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 1, 0, ['a', 'b'], ['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', 'h', 0, 50, ['a', 'b'], ['a']] | ['b', 'h', 0, 50, ['a', 'b'], ['a']] | Passed |
| workspace regression 1 | ['c', 'g', 0, 20, ['a', 'b', 'c'], ['a', 'b']] | ['c', 'g', 1, 20, ['a', 'b', 'c'], ['a', 'b']] | Failed |
| workspace regression 2 | ['a', 'g', 0, 30, ['a'], []] | ['a', 'g', 1, 30, ['a'], []] | Failed |
| workspace regression 3 | ['b', 'h', 0, 50, ['a', 'b'], ['a']] | ['b', 'h', 0, 50, ['a', 'b'], ['a']] | Passed |
| workspace regression 4 | ['c', 'g', 0, 20, ['b', 'c'], ['b']] | ['c', 'g', 1, 20, ['b', 'c'], ['b']] | Failed |
| workspace regression 5 | ['b', 'h', 0, 0, ['a', 'b'], ['a']] | ['b', 'h', 1, 0, ['a', 'b'], ['a']] | Failed |
SHA-256 / 96eccc6327e9df7b719ccdbf94aaaac6c4185b6e6a020821a348e117494c52dd
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
r0 = next((r[0] for r in reversed(x['stack']) if r[0] not in x['deleted']),None)
r1 = next((r[1] for r in reversed(x['stack']) if r[0] not in x['deleted']),None)
r2 = next((min(r[2],x['group_sizes'][r[1]]) for r in reversed(x['stack']) if r[0] not in x['deleted']),None)
r3 = next((r[3] for r in reversed(x['stack']) if r[0] not in x['deleted']),None)
r4 = [r[0] for r in x['stack'] if r[0] not in x['deleted']]
r5 = [r[0] for r in x['stack'] if r[0] not in x['deleted']][:-1]
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: [({'stack': [['a', 'g', 2, 30], ['b', 'h', 0, 50], ['c', 'g', 1, 20]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 0, 50, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 30], ['b', 'h', 0, 50], ['c', 'g', 1, 20]], 'deleted': [], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 20, ['a', 'b', 'c'], ['a', 'b']]), ({'stack': [['a', 'g', 2, 30], ['b', 'h', 0, 50], ['c', 'g', 1, 20]], 'deleted': ['b', 'c'], 'group_sizes': {'g': 1, 'h': 2}}, ['a', 'g', 1, 30, ['a'], []]), ({'stack': [['a', 'g', 2, 30], ['b', 'h', 0, 50], ['c', 'g', 1, 20]], 'deleted': ['c'], 'group_sizes': {'g': 4, 'h': 0}}, ['b', 'h', 0, 50, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 30], ['b', 'h', 0, 50], ['c', 'g', 1, 20]], 'deleted': ['a'], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 20, ['b', 'c'], ['b']]), ({'stack': [['a', 'g', 2, 30], ['b', 'h', 1, 0]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 1, 0, ['a', 'b'], ['a']])], 2: [({'stack': [['a', 'g', 2, 60], ['b', 'h', 0, 100], ['c', 'g', 1, 40]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 0, 100, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 60], ['b', 'h', 0, 100], ['c', 'g', 1, 40]], 'deleted': [], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 40, ['a', 'b', 'c'], ['a', 'b']]), ({'stack': [['a', 'g', 2, 60], ['b', 'h', 0, 100], ['c', 'g', 1, 40]], 'deleted': ['b', 'c'], 'group_sizes': {'g': 1, 'h': 2}}, ['a', 'g', 1, 60, ['a'], []]), ({'stack': [['a', 'g', 2, 60], ['b', 'h', 0, 100], ['c', 'g', 1, 40]], 'deleted': ['c'], 'group_sizes': {'g': 4, 'h': 0}}, ['b', 'h', 0, 100, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 60], ['b', 'h', 0, 100], ['c', 'g', 1, 40]], 'deleted': ['a'], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 40, ['b', 'c'], ['b']]), ({'stack': [['a', 'g', 2, 60], ['b', 'h', 1, 0]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 1, 0, ['a', 'b'], ['a']])], 3: [({'stack': [['a', 'g', 2, 90], ['b', 'h', 0, 150], ['c', 'g', 1, 60]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 0, 150, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 90], ['b', 'h', 0, 150], ['c', 'g', 1, 60]], 'deleted': [], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 60, ['a', 'b', 'c'], ['a', 'b']]), ({'stack': [['a', 'g', 2, 90], ['b', 'h', 0, 150], ['c', 'g', 1, 60]], 'deleted': ['b', 'c'], 'group_sizes': {'g': 1, 'h': 2}}, ['a', 'g', 1, 90, ['a'], []]), ({'stack': [['a', 'g', 2, 90], ['b', 'h', 0, 150], ['c', 'g', 1, 60]], 'deleted': ['c'], 'group_sizes': {'g': 4, 'h': 0}}, ['b', 'h', 0, 150, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 90], ['b', 'h', 0, 150], ['c', 'g', 1, 60]], 'deleted': ['a'], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 60, ['b', 'c'], ['b']]), ({'stack': [['a', 'g', 2, 90], ['b', 'h', 1, 0]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 1, 0, ['a', 'b'], ['a']])], 4: [({'stack': [['a', 'g', 2, 120], ['b', 'h', 0, 200], ['c', 'g', 1, 80]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 0, 200, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 120], ['b', 'h', 0, 200], ['c', 'g', 1, 80]], 'deleted': [], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 80, ['a', 'b', 'c'], ['a', 'b']]), ({'stack': [['a', 'g', 2, 120], ['b', 'h', 0, 200], ['c', 'g', 1, 80]], 'deleted': ['b', 'c'], 'group_sizes': {'g': 1, 'h': 2}}, ['a', 'g', 1, 120, ['a'], []]), ({'stack': [['a', 'g', 2, 120], ['b', 'h', 0, 200], ['c', 'g', 1, 80]], 'deleted': ['c'], 'group_sizes': {'g': 4, 'h': 0}}, ['b', 'h', 0, 200, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 120], ['b', 'h', 0, 200], ['c', 'g', 1, 80]], 'deleted': ['a'], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 80, ['b', 'c'], ['b']]), ({'stack': [['a', 'g', 2, 120], ['b', 'h', 1, 0]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 1, 0, ['a', 'b'], ['a']])], 5: [({'stack': [['a', 'g', 2, 150], ['b', 'h', 0, 250], ['c', 'g', 1, 100]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 0, 250, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 150], ['b', 'h', 0, 250], ['c', 'g', 1, 100]], 'deleted': [], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 100, ['a', 'b', 'c'], ['a', 'b']]), ({'stack': [['a', 'g', 2, 150], ['b', 'h', 0, 250], ['c', 'g', 1, 100]], 'deleted': ['b', 'c'], 'group_sizes': {'g': 1, 'h': 2}}, ['a', 'g', 1, 150, ['a'], []]), ({'stack': [['a', 'g', 2, 150], ['b', 'h', 0, 250], ['c', 'g', 1, 100]], 'deleted': ['c'], 'group_sizes': {'g': 4, 'h': 0}}, ['b', 'h', 0, 250, ['a', 'b'], ['a']]), ({'stack': [['a', 'g', 2, 150], ['b', 'h', 0, 250], ['c', 'g', 1, 100]], 'deleted': ['a'], 'group_sizes': {'g': 1, 'h': 2}}, ['c', 'g', 1, 100, ['b', 'c'], ['b']]), ({'stack': [['a', 'g', 2, 150], ['b', 'h', 1, 0]], 'deleted': ['c'], 'group_sizes': {'g': 1, 'h': 2}}, ['b', 'h', 1, 0, ['a', 'b'], ['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', 'h', 0, 50, ['a', 'b'], ['a']] | ['b', 'h', 0, 50, ['a', 'b'], ['a']] | Passed |
| workspace regression 1 | ['c', 'g', 1, 20, ['a', 'b', 'c'], ['a', 'b']] | ['c', 'g', 1, 20, ['a', 'b', 'c'], ['a', 'b']] | Passed |
| workspace regression 2 | ['a', 'g', 1, 30, ['a'], []] | ['a', 'g', 1, 30, ['a'], []] | Passed |
| workspace regression 3 | ['b', 'h', 0, 50, ['a', 'b'], ['a']] | ['b', 'h', 0, 50, ['a', 'b'], ['a']] | Passed |
| workspace regression 4 | ['c', 'g', 1, 20, ['b', 'c'], ['b']] | ['c', 'g', 1, 20, ['b', 'c'], ['b']] | Passed |
| workspace regression 5 | ['b', 'h', 1, 0, ['a', 'b'], ['a']] | ['b', 'h', 1, 0, ['a', 'b'], ['a']] | Passed |
SHA-256 / e60bd678a02720fc761c7b9e201f6a3ea39cd6dea6a2e5e3c5293d954ad9a112
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:43.353665+00:00.
Case digest / 6c7fd5cdbe74d77e8b30252a1e8d4beb363f9e3be5a747055fef4d8850f07996