FA-24081 / Client state / Open access
Application workspace switch transaction: Resource scope key · case 01
Resource scope key.
ROOT CAUSE
The resource-scope-key client decision evaluates `[(new,k) for w,k in resources]` instead of `[(new,k) for w,k in resources if w==new]`.
THE FAILURE
The resource-scope-key client decision evaluates `[(new,k) for w,k in resources]` instead of `[(new,k) for w,k in resources if w==new]`.
Unsuccessful approach: The partial repair `resources` still violates the explicit fixture contract.
Case contract
Workspace switches preserve each workspace draft, detach only outgoing subscriptions and requests, retain unrelated workspace work, rewrite only the old route prefix, and keep the old workspace if access is not allowed. Operation resource-scope-key has the six explicit input/output oracles below.
Why this case matters
An offline client lifecycle model that isolates a state-management defect without DOM rendering or network services.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(operation, s):
old, new, drafts, resources, pending, location, allowed = s
if operation == 'workspace-draft-selection':
return drafts.get(new)
if operation == 'outgoing-resource-detach':
return [(w,k) for w,k in resources if w!=old]
if operation == 'outgoing-request-cancel':
return [k for w,k in pending if w==old]
if operation == 'switch-authorization':
return new in allowed
if operation == 'draft-preservation-on-switch':
return dict(drafts)
if operation == 'workspace-route-rewrite':
return '/'+new+location[len('/'+old):] if location=='/'+old or location.startswith('/'+old+'/') else location
if operation == 'same-workspace-no-switch':
return old!=new
if operation == 'resource-scope-key':
return [(new,k) for w,k in resources]
if operation == 'forbidden-switch-retains-owner':
return new if new in allowed else old
if operation == 'pending-other-workspaces':
return [(w,k) for w,k in pending if w!=old]
raise ValueError('unknown modeled operation')
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('workspace-draft-selection scenario 1', solve('workspace-draft-selection', ('a','b',{'a':N,'b':2},[('a','x'),('b','y')],[('a','p'),('b','q')],'/a/doc',['b'])), 2)
check('workspace-draft-selection scenario 2', solve('workspace-draft-selection', ('a','a',{'a':0},[('a','x')],[], '/a', ['a'])), 0)
check('workspace-draft-selection scenario 3', solve('workspace-draft-selection', ('a','c',{},[],[('a','p')],'/a/doc',[])), None)
check('workspace-draft-selection scenario 4', solve('workspace-draft-selection', ('b','a',{'b':None},[('b','x'),('b','y')],[], '/b', ['a','b'])), None)
check('workspace-draft-selection scenario 5', solve('workspace-draft-selection', ('a','b',{'b':False},[('c','x')],[('c','p')],'/shared',['b'])), False)
check('workspace-draft-selection scenario 6', solve('workspace-draft-selection', ('a','b',{'a':N},[],[('a','p'),('a','q')],'/a',['b'])), None)
check('outgoing-resource-detach scenario 1', solve('outgoing-resource-detach', ('a','b',{'a':N,'b':2},[('a','x'),('b','y')],[('a','p'),('b','q')],'/a/doc',['b'])), [('b','y')])
check('outgoing-resource-detach scenario 2', solve('outgoing-resource-detach', ('a','a',{'a':0},[('a','x')],[], '/a', ['a'])), [])
check('outgoing-resource-detach scenario 3', solve('outgoing-resource-detach', ('a','c',{},[],[('a','p')],'/a/doc',[])), [])
check('outgoing-resource-detach scenario 4', solve('outgoing-resource-detach', ('b','a',{'b':None},[('b','x'),('b','y')],[], '/b', ['a','b'])), [])
check('outgoing-resource-detach scenario 5', solve('outgoing-resource-detach', ('a','b',{'b':False},[('c','x')],[('c','p')],'/shared',['b'])), [('c','x')])
check('outgoing-resource-detach scenario 6', solve('outgoing-resource-detach', ('a','b',{'a':N},[],[('a','p'),('a','q')],'/a',['b'])), [])
check('outgoing-request-cancel scenario 1', solve('outgoing-request-cancel', ('a','b',{'a':N,'b':2},[('a','x'),('b','y')],[('a','p'),('b','q')],'/a/doc',['b'])), ['p'])
check('outgoing-request-cancel scenario 2', solve('outgoing-request-cancel', ('a','a',{'a':0},[('a','x')],[], '/a', ['a'])), [])
check('outgoing-request-cancel scenario 3', solve('outgoing-request-cancel', ('a','c',{},[],[('a','p')],'/a/doc',[])), ['p'])
check('outgoing-request-cancel scenario 4', solve('outgoing-request-cancel', ('b','a',{'b':None},[('b','x'),('b','y')],[], '/b', ['a','b'])), [])
check('outgoing-request-cancel scenario 5', solve('outgoing-request-cancel', ('a','b',{'b':False},[('c','x')],[('c','p')],'/shared',['b'])), [])
check('outgoing-request-cancel scenario 6', solve('outgoing-request-cancel', ('a','b',{'a':N},[],[('a','p'),('a','q')],'/a',['b'])), ['p','q'])
check('switch-authorization scenario 1', solve('switch-authorization', ('a','b',{'a':N,'b':2},[('a','x'),('b','y')],[('a','p'),('b','q')],'/a/doc',['b'])), True)
check('switch-authorization scenario 2', solve('switch-authorization', ('a','a',{'a':0},[('a','x')],[], '/a', ['a'])), True)
check('switch-authorization scenario 3', solve('switch-authorization', ('a','c',{},[],[('a','p')],'/a/doc',[])), False)
check('switch-authorization scenario 4', solve('switch-authorization', ('b','a',{'b':None},[('b','x'),('b','y')],[], '/b', ['a','b'])), True)
check('switch-authorization scenario 5', solve('switch-authorization', ('a','b',{'b':False},[('c','x')],[('c','p')],'/shared',['b'])), True)
check('switch-authorization scenario 6', solve('switch-authorization', ('a','b',{'a':N},[],[('a','p'),('a','q')],'/a',['b'])), True)
check('draft-preservation-on-switch scenario 1', solve('draft-preservation-on-switch', ('a','b',{'a':N,'b':2},[('a','x'),('b','y')],[('a','p'),('b','q')],'/a/doc',['b'])), {'a':N,'b':2})
check('draft-preservation-on-switch scenario 2', solve('draft-preservation-on-switch', ('a','a',{'a':0},[('a','x')],[], '/a', ['a'])), {'a':0})
check('draft-preservation-on-switch scenario 3', solve('draft-preservation-on-switch', ('a','c',{},[],[('a','p')],'/a/doc',[])), {})
check('draft-preservation-on-switch scenario 4', solve('draft-preservation-on-switch', ('b','a',{'b':None},[('b','x'),('b','y')],[], '/b', ['a','b'])), {'b':None})
check('draft-preservation-on-switch scenario 5', solve('draft-preservation-on-switch', ('a','b',{'b':False},[('c','x')],[('c','p')],'/shared',['b'])), {'b':False})
check('draft-preservation-on-switch scenario 6', solve('draft-preservation-on-switch', ('a','b',{'a':N},[],[('a','p'),('a','q')],'/a',['b'])), {'a':N})
check('workspace-route-rewrite scenario 1', solve('workspace-route-rewrite', ('a','b',{'a':N,'b':2},[('a','x'),('b','y')],[('a','p'),('b','q')],'/a/doc',['b'])), '/b/doc')
check('workspace-route-rewrite scenario 2', solve('workspace-route-rewrite', ('a','a',{'a':0},[('a','x')],[], '/a', ['a'])), '/a')
check('workspace-route-rewrite scenario 3', solve('workspace-route-rewrite', ('a','c',{},[],[('a','p')],'/a/doc',[])), '/c/doc')
check('workspace-route-rewrite scenario 4', solve('workspace-route-rewrite', ('b','a',{'b':None},[('b','x'),('b','y')],[], '/b', ['a','b'])), '/a')
check('workspace-route-rewrite scenario 5', solve('workspace-route-rewrite', ('a','b',{'b':False},[('c','x')],[('c','p')],'/shared',['b'])), '/shared')
check('workspace-route-rewrite scenario 6', solve('workspace-route-rewrite', ('a','b',{'a':N},[],[('a','p'),('a','q')],'/a',['b'])), '/b')
check('same-workspace-no-switch scenario 1', solve('same-workspace-no-switch', ('a','b',{'a':N,'b':2},[('a','x'),('b','y')],[('a','p'),('b','q')],'/a/doc',['b'])), True)
check('same-workspace-no-switch scenario 2', solve('same-workspace-no-switch', ('a','a',{'a':0},[('a','x')],[], '/a', ['a'])), False)
check('same-workspace-no-switch scenario 3', solve('same-workspace-no-switch', ('a','c',{},[],[('a','p')],'/a/doc',[])), True)
check('same-workspace-no-switch scenario 4', solve('same-workspace-no-switch', ('b','a',{'b':None},[('b','x'),('b','y')],[], '/b', ['a','b'])), True)
check('same-workspace-no-switch scenario 5', solve('same-workspace-no-switch', ('a','b',{'b':False},[('c','x')],[('c','p')],'/shared',['b'])), True)
check('same-workspace-no-switch scenario 6', solve('same-workspace-no-switch', ('a','b',{'a':N},[],[('a','p'),('a','q')],'/a',['b'])), True)
check('resource-scope-key scenario 1', solve('resource-scope-key', ('a','b',{'a':N,'b':2},[('a','x'),('b','y')],[('a','p'),('b','q')],'/a/doc',['b'])), [('b','y')])
check('resource-scope-key scenario 2', solve('resource-scope-key', ('a','a',{'a':0},[('a','x')],[], '/a', ['a'])), [('a','x')])
check('resource-scope-key scenario 3', solve('resource-scope-key', ('a','c',{},[],[('a','p')],'/a/doc',[])), [])
check('resource-scope-key scenario 4', solve('resource-scope-key', ('b','a',{'b':None},[('b','x'),('b','y')],[], '/b', ['a','b'])), [])
check('resource-scope-key scenario 5', solve('resource-scope-key', ('a','b',{'b':False},[('c','x')],[('c','p')],'/shared',['b'])), [])
check('resource-scope-key scenario 6', solve('resource-scope-key', ('a','b',{'a':N},[],[('a','p'),('a','q')],'/a',['b'])), [])
check('forbidden-switch-retains-owner scenario 1', solve('forbidden-switch-retains-owner', ('a','b',{'a':N,'b':2},[('a','x'),('b','y')],[('a','p'),('b','q')],'/a/doc',['b'])), 'b')
check('forbidden-switch-retains-owner scenario 2', solve('forbidden-switch-retains-owner', ('a','a',{'a':0},[('a','x')],[], '/a', ['a'])), 'a')
check('forbidden-switch-retains-owner scenario 3', solve('forbidden-switch-retains-owner', ('a','c',{},[],[('a','p')],'/a/doc',[])), 'a')
check('forbidden-switch-retains-owner scenario 4', solve('forbidden-switch-retains-owner', ('b','a',{'b':None},[('b','x'),('b','y')],[], '/b', ['a','b'])), 'a')
check('forbidden-switch-retains-owner scenario 5', solve('forbidden-switch-retains-owner', ('a','b',{'b':False},[('c','x')],[('c','p')],'/shared',['b'])), 'b')
check('forbidden-switch-retains-owner scenario 6', solve('forbidden-switch-retains-owner', ('a','b',{'a':N},[],[('a','p'),('a','q')],'/a',['b'])), 'b')
check('pending-other-workspaces scenario 1', solve('pending-other-workspaces', ('a','b',{'a':N,'b':2},[('a','x'),('b','y')],[('a','p'),('b','q')],'/a/doc',['b'])), [('b','q')])
check('pending-other-workspaces scenario 2', solve('pending-other-workspaces', ('a','a',{'a':0},[('a','x')],[], '/a', ['a'])), [])
check('pending-other-workspaces scenario 3', solve('pending-other-workspaces', ('a','c',{},[],[('a','p')],'/a/doc',[])), [])
check('pending-other-workspaces scenario 4', solve('pending-other-workspaces', ('b','a',{'b':None},[('b','x'),('b','y')],[], '/b', ['a','b'])), [])
check('pending-other-workspaces scenario 5', solve('pending-other-workspaces', ('a','b',{'b':False},[('c','x')],[('c','p')],'/shared',['b'])), [('c','p')])
check('pending-other-workspaces scenario 6', solve('pending-other-workspaces', ('a','b',{'a':N},[],[('a','p'),('a','q')],'/a',['b'])), [])
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-draft-selection scenario 1 | 2 | 2 | Passed |
| workspace-draft-selection scenario 2 | 0 | 0 | Passed |
| workspace-draft-selection scenario 3 | None | None | Passed |
| workspace-draft-selection scenario 4 | None | None | Passed |
| workspace-draft-selection scenario 5 | False | False | Passed |
| workspace-draft-selection scenario 6 | None | None | Passed |
| outgoing-resource-detach scenario 1 | [['b', 'y']] | [['b', 'y']] | Passed |
| outgoing-resource-detach scenario 2 | [] | [] | Passed |
| outgoing-resource-detach scenario 3 | [] | [] | Passed |
| outgoing-resource-detach scenario 4 | [] | [] | Passed |
| outgoing-resource-detach scenario 5 | [['c', 'x']] | [['c', 'x']] | Passed |
| outgoing-resource-detach scenario 6 | [] | [] | Passed |
| outgoing-request-cancel scenario 1 | ['p'] | ['p'] | Passed |
| outgoing-request-cancel scenario 2 | [] | [] | Passed |
| outgoing-request-cancel scenario 3 | ['p'] | ['p'] | Passed |
| outgoing-request-cancel scenario 4 | [] | [] | Passed |
| outgoing-request-cancel scenario 5 | [] | [] | Passed |
| outgoing-request-cancel scenario 6 | ['p', 'q'] | ['p', 'q'] | Passed |
| switch-authorization scenario 1 | True | True | Passed |
| switch-authorization scenario 2 | True | True | Passed |
| switch-authorization scenario 3 | False | False | Passed |
| switch-authorization scenario 4 | True | True | Passed |
| switch-authorization scenario 5 | True | True | Passed |
| switch-authorization scenario 6 | True | True | Passed |
| draft-preservation-on-switch scenario 1 | {'a': 1, 'b': 2} | {'a': 1, 'b': 2} | Passed |
| draft-preservation-on-switch scenario 2 | {'a': 0} | {'a': 0} | Passed |
| draft-preservation-on-switch scenario 3 | {} | {} | Passed |
| draft-preservation-on-switch scenario 4 | {'b': None} | {'b': None} | Passed |
| draft-preservation-on-switch scenario 5 | {'b': False} | {'b': False} | Passed |
| draft-preservation-on-switch scenario 6 | {'a': 1} | {'a': 1} | Passed |
| workspace-route-rewrite scenario 1 | /b/doc | /b/doc | Passed |
| workspace-route-rewrite scenario 2 | /a | /a | Passed |
| workspace-route-rewrite scenario 3 | /c/doc | /c/doc | Passed |
| workspace-route-rewrite scenario 4 | /a | /a | Passed |
| workspace-route-rewrite scenario 5 | /shared | /shared | Passed |
| workspace-route-rewrite scenario 6 | /b | /b | Passed |
| same-workspace-no-switch scenario 1 | True | True | Passed |
| same-workspace-no-switch scenario 2 | False | False | Passed |
| same-workspace-no-switch scenario 3 | True | True | Passed |
| same-workspace-no-switch scenario 4 | True | True | Passed |
| same-workspace-no-switch scenario 5 | True | True | Passed |
| same-workspace-no-switch scenario 6 | True | True | Passed |
| resource-scope-key scenario 1 | [['b', 'x'], ['b', 'y']] | [['b', 'y']] | Failed |
| resource-scope-key scenario 2 | [['a', 'x']] | [['a', 'x']] | Passed |
| resource-scope-key scenario 3 | [] | [] | Passed |
| resource-scope-key scenario 4 | [['a', 'x'], ['a', 'y']] | [] | Failed |
| resource-scope-key scenario 5 | [['b', 'x']] | [] | Failed |
| resource-scope-key scenario 6 | [] | [] | Passed |
| forbidden-switch-retains-owner scenario 1 | b | b | Passed |
| forbidden-switch-retains-owner scenario 2 | a | a | Passed |
| forbidden-switch-retains-owner scenario 3 | a | a | Passed |
| forbidden-switch-retains-owner scenario 4 | a | a | Passed |
| forbidden-switch-retains-owner scenario 5 | b | b | Passed |
| forbidden-switch-retains-owner scenario 6 | b | b | Passed |
| pending-other-workspaces scenario 1 | [['b', 'q']] | [['b', 'q']] | Passed |
| pending-other-workspaces scenario 2 | [] | [] | Passed |
| pending-other-workspaces scenario 3 | [] | [] | Passed |
| pending-other-workspaces scenario 4 | [] | [] | Passed |
| pending-other-workspaces scenario 5 | [['c', 'p']] | [['c', 'p']] | Passed |
| pending-other-workspaces scenario 6 | [] | [] | Passed |
SHA-256 / 6e0a1f4a28e0cf0bc350829f307e7edd50a70107cb6bee04123d3e05f350264b
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(operation, s):
old, new, drafts, resources, pending, location, allowed = s
if operation == 'workspace-draft-selection':
return drafts.get(new)
if operation == 'outgoing-resource-detach':
return [(w,k) for w,k in resources if w!=old]
if operation == 'outgoing-request-cancel':
return [k for w,k in pending if w==old]
if operation == 'switch-authorization':
return new in allowed
if operation == 'draft-preservation-on-switch':
return dict(drafts)
if operation == 'workspace-route-rewrite':
return '/'+new+location[len('/'+old):] if location=='/'+old or location.startswith('/'+old+'/') else location
if operation == 'same-workspace-no-switch':
return old!=new
if operation == 'resource-scope-key':
return resources
if operation == 'forbidden-switch-retains-owner':
return new if new in allowed else old
if operation == 'pending-other-workspaces':
return [(w,k) for w,k in pending if w!=old]
raise ValueError('unknown modeled operation')
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('workspace-draft-selection scenario 1', solve('workspace-draft-selection', ('a','b',{'a':N,'b':2},[('a','x'),('b','y')],[('a','p'),('b','q')],'/a/doc',['b'])), 2)
check('workspace-draft-selection scenario 2', solve('workspace-draft-selection', ('a','a',{'a':0},[('a','x')],[], '/a', ['a'])), 0)
check('workspace-draft-selection scenario 3', solve('workspace-draft-selection', ('a','c',{},[],[('a','p')],'/a/doc',[])), None)
check('workspace-draft-selection scenario 4', solve('workspace-draft-selection', ('b','a',{'b':None},[('b','x'),('b','y')],[], '/b', ['a','b'])), None)
check('workspace-draft-selection scenario 5', solve('workspace-draft-selection', ('a','b',{'b':False},[('c','x')],[('c','p')],'/shared',['b'])), False)
check('workspace-draft-selection scenario 6', solve('workspace-draft-selection', ('a','b',{'a':N},[],[('a','p'),('a','q')],'/a',['b'])), None)
check('outgoing-resource-detach scenario 1', solve('outgoing-resource-detach', ('a','b',{'a':N,'b':2},[('a','x'),('b','y')],[('a','p'),('b','q')],'/a/doc',['b'])), [('b','y')])
check('outgoing-resource-detach scenario 2', solve('outgoing-resource-detach', ('a','a',{'a':0},[('a','x')],[], '/a', ['a'])), [])
check('outgoing-resource-detach scenario 3', solve('outgoing-resource-detach', ('a','c',{},[],[('a','p')],'/a/doc',[])), [])
check('outgoing-resource-detach scenario 4', solve('outgoing-resource-detach', ('b','a',{'b':None},[('b','x'),('b','y')],[], '/b', ['a','b'])), [])
check('outgoing-resource-detach scenario 5', solve('outgoing-resource-detach', ('a','b',{'b':False},[('c','x')],[('c','p')],'/shared',['b'])), [('c','x')])
check('outgoing-resource-detach scenario 6', solve('outgoing-resource-detach', ('a','b',{'a':N},[],[('a','p'),('a','q')],'/a',['b'])), [])
check('outgoing-request-cancel scenario 1', solve('outgoing-request-cancel', ('a','b',{'a':N,'b':2},[('a','x'),('b','y')],[('a','p'),('b','q')],'/a/doc',['b'])), ['p'])
check('outgoing-request-cancel scenario 2', solve('outgoing-request-cancel', ('a','a',{'a':0},[('a','x')],[], '/a', ['a'])), [])
check('outgoing-request-cancel scenario 3', solve('outgoing-request-cancel', ('a','c',{},[],[('a','p')],'/a/doc',[])), ['p'])
check('outgoing-request-cancel scenario 4', solve('outgoing-request-cancel', ('b','a',{'b':None},[('b','x'),('b','y')],[], '/b', ['a','b'])), [])
check('outgoing-request-cancel scenario 5', solve('outgoing-request-cancel', ('a','b',{'b':False},[('c','x')],[('c','p')],'/shared',['b'])), [])
check('outgoing-request-cancel scenario 6', solve('outgoing-request-cancel', ('a','b',{'a':N},[],[('a','p'),('a','q')],'/a',['b'])), ['p','q'])
check('switch-authorization scenario 1', solve('switch-authorization', ('a','b',{'a':N,'b':2},[('a','x'),('b','y')],[('a','p'),('b','q')],'/a/doc',['b'])), True)
check('switch-authorization scenario 2', solve('switch-authorization', ('a','a',{'a':0},[('a','x')],[], '/a', ['a'])), True)
check('switch-authorization scenario 3', solve('switch-authorization', ('a','c',{},[],[('a','p')],'/a/doc',[])), False)
check('switch-authorization scenario 4', solve('switch-authorization', ('b','a',{'b':None},[('b','x'),('b','y')],[], '/b', ['a','b'])), True)
check('switch-authorization scenario 5', solve('switch-authorization', ('a','b',{'b':False},[('c','x')],[('c','p')],'/shared',['b'])), True)
check('switch-authorization scenario 6', solve('switch-authorization', ('a','b',{'a':N},[],[('a','p'),('a','q')],'/a',['b'])), True)
check('draft-preservation-on-switch scenario 1', solve('draft-preservation-on-switch', ('a','b',{'a':N,'b':2},[('a','x'),('b','y')],[('a','p'),('b','q')],'/a/doc',['b'])), {'a':N,'b':2})
check('draft-preservation-on-switch scenario 2', solve('draft-preservation-on-switch', ('a','a',{'a':0},[('a','x')],[], '/a', ['a'])), {'a':0})
check('draft-preservation-on-switch scenario 3', solve('draft-preservation-on-switch', ('a','c',{},[],[('a','p')],'/a/doc',[])), {})
check('draft-preservation-on-switch scenario 4', solve('draft-preservation-on-switch', ('b','a',{'b':None},[('b','x'),('b','y')],[], '/b', ['a','b'])), {'b':None})
check('draft-preservation-on-switch scenario 5', solve('draft-preservation-on-switch', ('a','b',{'b':False},[('c','x')],[('c','p')],'/shared',['b'])), {'b':False})
check('draft-preservation-on-switch scenario 6', solve('draft-preservation-on-switch', ('a','b',{'a':N},[],[('a','p'),('a','q')],'/a',['b'])), {'a':N})
check('workspace-route-rewrite scenario 1', solve('workspace-route-rewrite', ('a','b',{'a':N,'b':2},[('a','x'),('b','y')],[('a','p'),('b','q')],'/a/doc',['b'])), '/b/doc')
check('workspace-route-rewrite scenario 2', solve('workspace-route-rewrite', ('a','a',{'a':0},[('a','x')],[], '/a', ['a'])), '/a')
check('workspace-route-rewrite scenario 3', solve('workspace-route-rewrite', ('a','c',{},[],[('a','p')],'/a/doc',[])), '/c/doc')
check('workspace-route-rewrite scenario 4', solve('workspace-route-rewrite', ('b','a',{'b':None},[('b','x'),('b','y')],[], '/b', ['a','b'])), '/a')
check('workspace-route-rewrite scenario 5', solve('workspace-route-rewrite', ('a','b',{'b':False},[('c','x')],[('c','p')],'/shared',['b'])), '/shared')
check('workspace-route-rewrite scenario 6', solve('workspace-route-rewrite', ('a','b',{'a':N},[],[('a','p'),('a','q')],'/a',['b'])), '/b')
check('same-workspace-no-switch scenario 1', solve('same-workspace-no-switch', ('a','b',{'a':N,'b':2},[('a','x'),('b','y')],[('a','p'),('b','q')],'/a/doc',['b'])), True)
check('same-workspace-no-switch scenario 2', solve('same-workspace-no-switch', ('a','a',{'a':0},[('a','x')],[], '/a', ['a'])), False)
check('same-workspace-no-switch scenario 3', solve('same-workspace-no-switch', ('a','c',{},[],[('a','p')],'/a/doc',[])), True)
check('same-workspace-no-switch scenario 4', solve('same-workspace-no-switch', ('b','a',{'b':None},[('b','x'),('b','y')],[], '/b', ['a','b'])), True)
check('same-workspace-no-switch scenario 5', solve('same-workspace-no-switch', ('a','b',{'b':False},[('c','x')],[('c','p')],'/shared',['b'])), True)
check('same-workspace-no-switch scenario 6', solve('same-workspace-no-switch', ('a','b',{'a':N},[],[('a','p'),('a','q')],'/a',['b'])), True)
check('resource-scope-key scenario 1', solve('resource-scope-key', ('a','b',{'a':N,'b':2},[('a','x'),('b','y')],[('a','p'),('b','q')],'/a/doc',['b'])), [('b','y')])
check('resource-scope-key scenario 2', solve('resource-scope-key', ('a','a',{'a':0},[('a','x')],[], '/a', ['a'])), [('a','x')])
check('resource-scope-key scenario 3', solve('resource-scope-key', ('a','c',{},[],[('a','p')],'/a/doc',[])), [])
check('resource-scope-key scenario 4', solve('resource-scope-key', ('b','a',{'b':None},[('b','x'),('b','y')],[], '/b', ['a','b'])), [])
check('resource-scope-key scenario 5', solve('resource-scope-key', ('a','b',{'b':False},[('c','x')],[('c','p')],'/shared',['b'])), [])
check('resource-scope-key scenario 6', solve('resource-scope-key', ('a','b',{'a':N},[],[('a','p'),('a','q')],'/a',['b'])), [])
check('forbidden-switch-retains-owner scenario 1', solve('forbidden-switch-retains-owner', ('a','b',{'a':N,'b':2},[('a','x'),('b','y')],[('a','p'),('b','q')],'/a/doc',['b'])), 'b')
check('forbidden-switch-retains-owner scenario 2', solve('forbidden-switch-retains-owner', ('a','a',{'a':0},[('a','x')],[], '/a', ['a'])), 'a')
check('forbidden-switch-retains-owner scenario 3', solve('forbidden-switch-retains-owner', ('a','c',{},[],[('a','p')],'/a/doc',[])), 'a')
check('forbidden-switch-retains-owner scenario 4', solve('forbidden-switch-retains-owner', ('b','a',{'b':None},[('b','x'),('b','y')],[], '/b', ['a','b'])), 'a')
check('forbidden-switch-retains-owner scenario 5', solve('forbidden-switch-retains-owner', ('a','b',{'b':False},[('c','x')],[('c','p')],'/shared',['b'])), 'b')
check('forbidden-switch-retains-owner scenario 6', solve('forbidden-switch-retains-owner', ('a','b',{'a':N},[],[('a','p'),('a','q')],'/a',['b'])), 'b')
check('pending-other-workspaces scenario 1', solve('pending-other-workspaces', ('a','b',{'a':N,'b':2},[('a','x'),('b','y')],[('a','p'),('b','q')],'/a/doc',['b'])), [('b','q')])
check('pending-other-workspaces scenario 2', solve('pending-other-workspaces', ('a','a',{'a':0},[('a','x')],[], '/a', ['a'])), [])
check('pending-other-workspaces scenario 3', solve('pending-other-workspaces', ('a','c',{},[],[('a','p')],'/a/doc',[])), [])
check('pending-other-workspaces scenario 4', solve('pending-other-workspaces', ('b','a',{'b':None},[('b','x'),('b','y')],[], '/b', ['a','b'])), [])
check('pending-other-workspaces scenario 5', solve('pending-other-workspaces', ('a','b',{'b':False},[('c','x')],[('c','p')],'/shared',['b'])), [('c','p')])
check('pending-other-workspaces scenario 6', solve('pending-other-workspaces', ('a','b',{'a':N},[],[('a','p'),('a','q')],'/a',['b'])), [])
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-draft-selection scenario 1 | 2 | 2 | Passed |
| workspace-draft-selection scenario 2 | 0 | 0 | Passed |
| workspace-draft-selection scenario 3 | None | None | Passed |
| workspace-draft-selection scenario 4 | None | None | Passed |
| workspace-draft-selection scenario 5 | False | False | Passed |
| workspace-draft-selection scenario 6 | None | None | Passed |
| outgoing-resource-detach scenario 1 | [['b', 'y']] | [['b', 'y']] | Passed |
| outgoing-resource-detach scenario 2 | [] | [] | Passed |
| outgoing-resource-detach scenario 3 | [] | [] | Passed |
| outgoing-resource-detach scenario 4 | [] | [] | Passed |
| outgoing-resource-detach scenario 5 | [['c', 'x']] | [['c', 'x']] | Passed |
| outgoing-resource-detach scenario 6 | [] | [] | Passed |
| outgoing-request-cancel scenario 1 | ['p'] | ['p'] | Passed |
| outgoing-request-cancel scenario 2 | [] | [] | Passed |
| outgoing-request-cancel scenario 3 | ['p'] | ['p'] | Passed |
| outgoing-request-cancel scenario 4 | [] | [] | Passed |
| outgoing-request-cancel scenario 5 | [] | [] | Passed |
| outgoing-request-cancel scenario 6 | ['p', 'q'] | ['p', 'q'] | Passed |
| switch-authorization scenario 1 | True | True | Passed |
| switch-authorization scenario 2 | True | True | Passed |
| switch-authorization scenario 3 | False | False | Passed |
| switch-authorization scenario 4 | True | True | Passed |
| switch-authorization scenario 5 | True | True | Passed |
| switch-authorization scenario 6 | True | True | Passed |
| draft-preservation-on-switch scenario 1 | {'a': 1, 'b': 2} | {'a': 1, 'b': 2} | Passed |
| draft-preservation-on-switch scenario 2 | {'a': 0} | {'a': 0} | Passed |
| draft-preservation-on-switch scenario 3 | {} | {} | Passed |
| draft-preservation-on-switch scenario 4 | {'b': None} | {'b': None} | Passed |
| draft-preservation-on-switch scenario 5 | {'b': False} | {'b': False} | Passed |
| draft-preservation-on-switch scenario 6 | {'a': 1} | {'a': 1} | Passed |
| workspace-route-rewrite scenario 1 | /b/doc | /b/doc | Passed |
| workspace-route-rewrite scenario 2 | /a | /a | Passed |
| workspace-route-rewrite scenario 3 | /c/doc | /c/doc | Passed |
| workspace-route-rewrite scenario 4 | /a | /a | Passed |
| workspace-route-rewrite scenario 5 | /shared | /shared | Passed |
| workspace-route-rewrite scenario 6 | /b | /b | Passed |
| same-workspace-no-switch scenario 1 | True | True | Passed |
| same-workspace-no-switch scenario 2 | False | False | Passed |
| same-workspace-no-switch scenario 3 | True | True | Passed |
| same-workspace-no-switch scenario 4 | True | True | Passed |
| same-workspace-no-switch scenario 5 | True | True | Passed |
| same-workspace-no-switch scenario 6 | True | True | Passed |
| resource-scope-key scenario 1 | [['a', 'x'], ['b', 'y']] | [['b', 'y']] | Failed |
| resource-scope-key scenario 2 | [['a', 'x']] | [['a', 'x']] | Passed |
| resource-scope-key scenario 3 | [] | [] | Passed |
| resource-scope-key scenario 4 | [['b', 'x'], ['b', 'y']] | [] | Failed |
| resource-scope-key scenario 5 | [['c', 'x']] | [] | Failed |
| resource-scope-key scenario 6 | [] | [] | Passed |
| forbidden-switch-retains-owner scenario 1 | b | b | Passed |
| forbidden-switch-retains-owner scenario 2 | a | a | Passed |
| forbidden-switch-retains-owner scenario 3 | a | a | Passed |
| forbidden-switch-retains-owner scenario 4 | a | a | Passed |
| forbidden-switch-retains-owner scenario 5 | b | b | Passed |
| forbidden-switch-retains-owner scenario 6 | b | b | Passed |
| pending-other-workspaces scenario 1 | [['b', 'q']] | [['b', 'q']] | Passed |
| pending-other-workspaces scenario 2 | [] | [] | Passed |
| pending-other-workspaces scenario 3 | [] | [] | Passed |
| pending-other-workspaces scenario 4 | [] | [] | Passed |
| pending-other-workspaces scenario 5 | [['c', 'p']] | [['c', 'p']] | Passed |
| pending-other-workspaces scenario 6 | [] | [] | Passed |
SHA-256 / f7a3fe3023085f4bb9b7f89ee5314c306e49cf4ca23c72d33f2205f2bfaf9d08
HELD IN THE MEMBER ARCHIVE
The verified repair and its recorded checks are member-only.
This mechanism has 60 recorded checks per implementation. The open-access tier publishes the failure and the unsuccessful fix; the repaired source that passes every check, and the observations that prove it, are available to members.
Every case sharing this mechanism uses the same contract and the same repair, so this one record is held back for all of them.
Member access is invitation-based. Sign in with your invited account to inspect the repair.
Sign in to the archive ↗Verification & scope
Only the explicitly specified operations and finite deterministic records are modeled; no browser or framework conformance is claimed. 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:40:53.881047+00:00.
Case digest / 920945eddeab0e4c9ae062d036450ff12bf3ebeaeef589eeca8d57b7aef0d818