FA-23876 / Client state / Open access
Component effect lifecycle: Initial effect run · case 01
Initial effect run.
ROOT CAUSE
The initial-effect-run client decision evaluates `previous is None` instead of `previous is None or run==0`.
VERIFIED REPAIR
Apply the modeled initial-effect-run rule: `previous is None or run==0`.
Unsuccessful approach: The partial repair `not dependencies` still violates the explicit fixture contract.
Case contract
An effect tracks dependency length, values and scalar types; an empty dependency vector differs from no prior run. Cleanup precedes setup, unmount suppresses completion writes, and each setup advances a generation. Operation initial-effect-run 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):
mounted, dependencies, previous, cleanup, run, owner, completion_owner = s
if operation == 'dependency-shape-comparison':
return previous is None or len(dependencies)!=len(previous) or any(type(a)!=type(b) or a!=b for a,b in zip(dependencies,previous))
if operation == 'unmount-cleanup':
return cleanup and not mounted
if operation == 'initial-effect-run':
return previous is None
if operation == 'cleanup-before-rerun':
return ['cleanup','setup'] if cleanup else ['setup']
if operation == 'completion-owner-check':
return mounted and owner==completion_owner
if operation == 'dependency-snapshot-copy':
return list(dependencies)
if operation == 'generation-increment':
return run+1
if operation == 'setup-after-unmount':
return 'setup' if mounted else 'skip'
if operation == 'cleanup-registration-retained':
return cleanup if mounted else False
if operation == 'owner-change-invalidates':
return owner!=completion_owner
raise ValueError('unknown modeled operation')
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('dependency-shape-comparison scenario 1', solve('dependency-shape-comparison', (True,[N,2],[N,1],True,2,'a','a')), True)
check('dependency-shape-comparison scenario 2', solve('dependency-shape-comparison', (True,[],[],False,0,'a','a')), False)
check('dependency-shape-comparison scenario 3', solve('dependency-shape-comparison', (False,[1],[1],True,1,'a','a')), False)
check('dependency-shape-comparison scenario 4', solve('dependency-shape-comparison', (True,[0],[False],True,3,'a','b')), True)
check('dependency-shape-comparison scenario 5', solve('dependency-shape-comparison', (True,[None],None,False,0,'b','b')), True)
check('dependency-shape-comparison scenario 6', solve('dependency-shape-comparison', (True,[1,2],[1],True,1,'a','a')), True)
check('unmount-cleanup scenario 1', solve('unmount-cleanup', (True,[N,2],[N,1],True,2,'a','a')), False)
check('unmount-cleanup scenario 2', solve('unmount-cleanup', (True,[],[],False,0,'a','a')), False)
check('unmount-cleanup scenario 3', solve('unmount-cleanup', (False,[1],[1],True,1,'a','a')), True)
check('unmount-cleanup scenario 4', solve('unmount-cleanup', (True,[0],[False],True,3,'a','b')), False)
check('unmount-cleanup scenario 5', solve('unmount-cleanup', (True,[None],None,False,0,'b','b')), False)
check('unmount-cleanup scenario 6', solve('unmount-cleanup', (True,[1,2],[1],True,1,'a','a')), False)
check('initial-effect-run scenario 1', solve('initial-effect-run', (True,[N,2],[N,1],True,2,'a','a')), False)
check('initial-effect-run scenario 2', solve('initial-effect-run', (True,[],[],False,0,'a','a')), True)
check('initial-effect-run scenario 3', solve('initial-effect-run', (False,[1],[1],True,1,'a','a')), False)
check('initial-effect-run scenario 4', solve('initial-effect-run', (True,[0],[False],True,3,'a','b')), False)
check('initial-effect-run scenario 5', solve('initial-effect-run', (True,[None],None,False,0,'b','b')), True)
check('initial-effect-run scenario 6', solve('initial-effect-run', (True,[1,2],[1],True,1,'a','a')), False)
check('cleanup-before-rerun scenario 1', solve('cleanup-before-rerun', (True,[N,2],[N,1],True,2,'a','a')), ['cleanup','setup'])
check('cleanup-before-rerun scenario 2', solve('cleanup-before-rerun', (True,[],[],False,0,'a','a')), ['setup'])
check('cleanup-before-rerun scenario 3', solve('cleanup-before-rerun', (False,[1],[1],True,1,'a','a')), ['cleanup','setup'])
check('cleanup-before-rerun scenario 4', solve('cleanup-before-rerun', (True,[0],[False],True,3,'a','b')), ['cleanup','setup'])
check('cleanup-before-rerun scenario 5', solve('cleanup-before-rerun', (True,[None],None,False,0,'b','b')), ['setup'])
check('cleanup-before-rerun scenario 6', solve('cleanup-before-rerun', (True,[1,2],[1],True,1,'a','a')), ['cleanup','setup'])
check('completion-owner-check scenario 1', solve('completion-owner-check', (True,[N,2],[N,1],True,2,'a','a')), True)
check('completion-owner-check scenario 2', solve('completion-owner-check', (True,[],[],False,0,'a','a')), True)
check('completion-owner-check scenario 3', solve('completion-owner-check', (False,[1],[1],True,1,'a','a')), False)
check('completion-owner-check scenario 4', solve('completion-owner-check', (True,[0],[False],True,3,'a','b')), False)
check('completion-owner-check scenario 5', solve('completion-owner-check', (True,[None],None,False,0,'b','b')), True)
check('completion-owner-check scenario 6', solve('completion-owner-check', (True,[1,2],[1],True,1,'a','a')), True)
check('dependency-snapshot-copy scenario 1', solve('dependency-snapshot-copy', (True,[N,2],[N,1],True,2,'a','a')), [N,2])
check('dependency-snapshot-copy scenario 2', solve('dependency-snapshot-copy', (True,[],[],False,0,'a','a')), [])
check('dependency-snapshot-copy scenario 3', solve('dependency-snapshot-copy', (False,[1],[1],True,1,'a','a')), [1])
check('dependency-snapshot-copy scenario 4', solve('dependency-snapshot-copy', (True,[0],[False],True,3,'a','b')), [0])
check('dependency-snapshot-copy scenario 5', solve('dependency-snapshot-copy', (True,[None],None,False,0,'b','b')), [None])
check('dependency-snapshot-copy scenario 6', solve('dependency-snapshot-copy', (True,[1,2],[1],True,1,'a','a')), [1,2])
check('generation-increment scenario 1', solve('generation-increment', (True,[N,2],[N,1],True,2,'a','a')), 3)
check('generation-increment scenario 2', solve('generation-increment', (True,[],[],False,0,'a','a')), 1)
check('generation-increment scenario 3', solve('generation-increment', (False,[1],[1],True,1,'a','a')), 2)
check('generation-increment scenario 4', solve('generation-increment', (True,[0],[False],True,3,'a','b')), 4)
check('generation-increment scenario 5', solve('generation-increment', (True,[None],None,False,0,'b','b')), 1)
check('generation-increment scenario 6', solve('generation-increment', (True,[1,2],[1],True,1,'a','a')), 2)
check('setup-after-unmount scenario 1', solve('setup-after-unmount', (True,[N,2],[N,1],True,2,'a','a')), 'setup')
check('setup-after-unmount scenario 2', solve('setup-after-unmount', (True,[],[],False,0,'a','a')), 'setup')
check('setup-after-unmount scenario 3', solve('setup-after-unmount', (False,[1],[1],True,1,'a','a')), 'skip')
check('setup-after-unmount scenario 4', solve('setup-after-unmount', (True,[0],[False],True,3,'a','b')), 'setup')
check('setup-after-unmount scenario 5', solve('setup-after-unmount', (True,[None],None,False,0,'b','b')), 'setup')
check('setup-after-unmount scenario 6', solve('setup-after-unmount', (True,[1,2],[1],True,1,'a','a')), 'setup')
check('cleanup-registration-retained scenario 1', solve('cleanup-registration-retained', (True,[N,2],[N,1],True,2,'a','a')), True)
check('cleanup-registration-retained scenario 2', solve('cleanup-registration-retained', (True,[],[],False,0,'a','a')), False)
check('cleanup-registration-retained scenario 3', solve('cleanup-registration-retained', (False,[1],[1],True,1,'a','a')), False)
check('cleanup-registration-retained scenario 4', solve('cleanup-registration-retained', (True,[0],[False],True,3,'a','b')), True)
check('cleanup-registration-retained scenario 5', solve('cleanup-registration-retained', (True,[None],None,False,0,'b','b')), False)
check('cleanup-registration-retained scenario 6', solve('cleanup-registration-retained', (True,[1,2],[1],True,1,'a','a')), True)
check('owner-change-invalidates scenario 1', solve('owner-change-invalidates', (True,[N,2],[N,1],True,2,'a','a')), False)
check('owner-change-invalidates scenario 2', solve('owner-change-invalidates', (True,[],[],False,0,'a','a')), False)
check('owner-change-invalidates scenario 3', solve('owner-change-invalidates', (False,[1],[1],True,1,'a','a')), False)
check('owner-change-invalidates scenario 4', solve('owner-change-invalidates', (True,[0],[False],True,3,'a','b')), True)
check('owner-change-invalidates scenario 5', solve('owner-change-invalidates', (True,[None],None,False,0,'b','b')), False)
check('owner-change-invalidates scenario 6', solve('owner-change-invalidates', (True,[1,2],[1],True,1,'a','a')), False)
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 |
|---|---|---|---|
| dependency-shape-comparison scenario 1 | True | True | Passed |
| dependency-shape-comparison scenario 2 | False | False | Passed |
| dependency-shape-comparison scenario 3 | False | False | Passed |
| dependency-shape-comparison scenario 4 | True | True | Passed |
| dependency-shape-comparison scenario 5 | True | True | Passed |
| dependency-shape-comparison scenario 6 | True | True | Passed |
| unmount-cleanup scenario 1 | False | False | Passed |
| unmount-cleanup scenario 2 | False | False | Passed |
| unmount-cleanup scenario 3 | True | True | Passed |
| unmount-cleanup scenario 4 | False | False | Passed |
| unmount-cleanup scenario 5 | False | False | Passed |
| unmount-cleanup scenario 6 | False | False | Passed |
| initial-effect-run scenario 1 | False | False | Passed |
| initial-effect-run scenario 2 | False | True | Failed |
| initial-effect-run scenario 3 | False | False | Passed |
| initial-effect-run scenario 4 | False | False | Passed |
| initial-effect-run scenario 5 | True | True | Passed |
| initial-effect-run scenario 6 | False | False | Passed |
| cleanup-before-rerun scenario 1 | ['cleanup', 'setup'] | ['cleanup', 'setup'] | Passed |
| cleanup-before-rerun scenario 2 | ['setup'] | ['setup'] | Passed |
| cleanup-before-rerun scenario 3 | ['cleanup', 'setup'] | ['cleanup', 'setup'] | Passed |
| cleanup-before-rerun scenario 4 | ['cleanup', 'setup'] | ['cleanup', 'setup'] | Passed |
| cleanup-before-rerun scenario 5 | ['setup'] | ['setup'] | Passed |
| cleanup-before-rerun scenario 6 | ['cleanup', 'setup'] | ['cleanup', 'setup'] | Passed |
| completion-owner-check scenario 1 | True | True | Passed |
| completion-owner-check scenario 2 | True | True | Passed |
| completion-owner-check scenario 3 | False | False | Passed |
| completion-owner-check scenario 4 | False | False | Passed |
| completion-owner-check scenario 5 | True | True | Passed |
| completion-owner-check scenario 6 | True | True | Passed |
| dependency-snapshot-copy scenario 1 | [1, 2] | [1, 2] | Passed |
| dependency-snapshot-copy scenario 2 | [] | [] | Passed |
| dependency-snapshot-copy scenario 3 | [1] | [1] | Passed |
| dependency-snapshot-copy scenario 4 | [0] | [0] | Passed |
| dependency-snapshot-copy scenario 5 | [None] | [None] | Passed |
| dependency-snapshot-copy scenario 6 | [1, 2] | [1, 2] | Passed |
| generation-increment scenario 1 | 3 | 3 | Passed |
| generation-increment scenario 2 | 1 | 1 | Passed |
| generation-increment scenario 3 | 2 | 2 | Passed |
| generation-increment scenario 4 | 4 | 4 | Passed |
| generation-increment scenario 5 | 1 | 1 | Passed |
| generation-increment scenario 6 | 2 | 2 | Passed |
| setup-after-unmount scenario 1 | setup | setup | Passed |
| setup-after-unmount scenario 2 | setup | setup | Passed |
| setup-after-unmount scenario 3 | skip | skip | Passed |
| setup-after-unmount scenario 4 | setup | setup | Passed |
| setup-after-unmount scenario 5 | setup | setup | Passed |
| setup-after-unmount scenario 6 | setup | setup | Passed |
| cleanup-registration-retained scenario 1 | True | True | Passed |
| cleanup-registration-retained scenario 2 | False | False | Passed |
| cleanup-registration-retained scenario 3 | False | False | Passed |
| cleanup-registration-retained scenario 4 | True | True | Passed |
| cleanup-registration-retained scenario 5 | False | False | Passed |
| cleanup-registration-retained scenario 6 | True | True | Passed |
| owner-change-invalidates scenario 1 | False | False | Passed |
| owner-change-invalidates scenario 2 | False | False | Passed |
| owner-change-invalidates scenario 3 | False | False | Passed |
| owner-change-invalidates scenario 4 | True | True | Passed |
| owner-change-invalidates scenario 5 | False | False | Passed |
| owner-change-invalidates scenario 6 | False | False | Passed |
SHA-256 / d1487f24718b767847af2acabee86768d6a691f7dcad4e54d69a6227005a2342
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(operation, s):
mounted, dependencies, previous, cleanup, run, owner, completion_owner = s
if operation == 'dependency-shape-comparison':
return previous is None or len(dependencies)!=len(previous) or any(type(a)!=type(b) or a!=b for a,b in zip(dependencies,previous))
if operation == 'unmount-cleanup':
return cleanup and not mounted
if operation == 'initial-effect-run':
return not dependencies
if operation == 'cleanup-before-rerun':
return ['cleanup','setup'] if cleanup else ['setup']
if operation == 'completion-owner-check':
return mounted and owner==completion_owner
if operation == 'dependency-snapshot-copy':
return list(dependencies)
if operation == 'generation-increment':
return run+1
if operation == 'setup-after-unmount':
return 'setup' if mounted else 'skip'
if operation == 'cleanup-registration-retained':
return cleanup if mounted else False
if operation == 'owner-change-invalidates':
return owner!=completion_owner
raise ValueError('unknown modeled operation')
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('dependency-shape-comparison scenario 1', solve('dependency-shape-comparison', (True,[N,2],[N,1],True,2,'a','a')), True)
check('dependency-shape-comparison scenario 2', solve('dependency-shape-comparison', (True,[],[],False,0,'a','a')), False)
check('dependency-shape-comparison scenario 3', solve('dependency-shape-comparison', (False,[1],[1],True,1,'a','a')), False)
check('dependency-shape-comparison scenario 4', solve('dependency-shape-comparison', (True,[0],[False],True,3,'a','b')), True)
check('dependency-shape-comparison scenario 5', solve('dependency-shape-comparison', (True,[None],None,False,0,'b','b')), True)
check('dependency-shape-comparison scenario 6', solve('dependency-shape-comparison', (True,[1,2],[1],True,1,'a','a')), True)
check('unmount-cleanup scenario 1', solve('unmount-cleanup', (True,[N,2],[N,1],True,2,'a','a')), False)
check('unmount-cleanup scenario 2', solve('unmount-cleanup', (True,[],[],False,0,'a','a')), False)
check('unmount-cleanup scenario 3', solve('unmount-cleanup', (False,[1],[1],True,1,'a','a')), True)
check('unmount-cleanup scenario 4', solve('unmount-cleanup', (True,[0],[False],True,3,'a','b')), False)
check('unmount-cleanup scenario 5', solve('unmount-cleanup', (True,[None],None,False,0,'b','b')), False)
check('unmount-cleanup scenario 6', solve('unmount-cleanup', (True,[1,2],[1],True,1,'a','a')), False)
check('initial-effect-run scenario 1', solve('initial-effect-run', (True,[N,2],[N,1],True,2,'a','a')), False)
check('initial-effect-run scenario 2', solve('initial-effect-run', (True,[],[],False,0,'a','a')), True)
check('initial-effect-run scenario 3', solve('initial-effect-run', (False,[1],[1],True,1,'a','a')), False)
check('initial-effect-run scenario 4', solve('initial-effect-run', (True,[0],[False],True,3,'a','b')), False)
check('initial-effect-run scenario 5', solve('initial-effect-run', (True,[None],None,False,0,'b','b')), True)
check('initial-effect-run scenario 6', solve('initial-effect-run', (True,[1,2],[1],True,1,'a','a')), False)
check('cleanup-before-rerun scenario 1', solve('cleanup-before-rerun', (True,[N,2],[N,1],True,2,'a','a')), ['cleanup','setup'])
check('cleanup-before-rerun scenario 2', solve('cleanup-before-rerun', (True,[],[],False,0,'a','a')), ['setup'])
check('cleanup-before-rerun scenario 3', solve('cleanup-before-rerun', (False,[1],[1],True,1,'a','a')), ['cleanup','setup'])
check('cleanup-before-rerun scenario 4', solve('cleanup-before-rerun', (True,[0],[False],True,3,'a','b')), ['cleanup','setup'])
check('cleanup-before-rerun scenario 5', solve('cleanup-before-rerun', (True,[None],None,False,0,'b','b')), ['setup'])
check('cleanup-before-rerun scenario 6', solve('cleanup-before-rerun', (True,[1,2],[1],True,1,'a','a')), ['cleanup','setup'])
check('completion-owner-check scenario 1', solve('completion-owner-check', (True,[N,2],[N,1],True,2,'a','a')), True)
check('completion-owner-check scenario 2', solve('completion-owner-check', (True,[],[],False,0,'a','a')), True)
check('completion-owner-check scenario 3', solve('completion-owner-check', (False,[1],[1],True,1,'a','a')), False)
check('completion-owner-check scenario 4', solve('completion-owner-check', (True,[0],[False],True,3,'a','b')), False)
check('completion-owner-check scenario 5', solve('completion-owner-check', (True,[None],None,False,0,'b','b')), True)
check('completion-owner-check scenario 6', solve('completion-owner-check', (True,[1,2],[1],True,1,'a','a')), True)
check('dependency-snapshot-copy scenario 1', solve('dependency-snapshot-copy', (True,[N,2],[N,1],True,2,'a','a')), [N,2])
check('dependency-snapshot-copy scenario 2', solve('dependency-snapshot-copy', (True,[],[],False,0,'a','a')), [])
check('dependency-snapshot-copy scenario 3', solve('dependency-snapshot-copy', (False,[1],[1],True,1,'a','a')), [1])
check('dependency-snapshot-copy scenario 4', solve('dependency-snapshot-copy', (True,[0],[False],True,3,'a','b')), [0])
check('dependency-snapshot-copy scenario 5', solve('dependency-snapshot-copy', (True,[None],None,False,0,'b','b')), [None])
check('dependency-snapshot-copy scenario 6', solve('dependency-snapshot-copy', (True,[1,2],[1],True,1,'a','a')), [1,2])
check('generation-increment scenario 1', solve('generation-increment', (True,[N,2],[N,1],True,2,'a','a')), 3)
check('generation-increment scenario 2', solve('generation-increment', (True,[],[],False,0,'a','a')), 1)
check('generation-increment scenario 3', solve('generation-increment', (False,[1],[1],True,1,'a','a')), 2)
check('generation-increment scenario 4', solve('generation-increment', (True,[0],[False],True,3,'a','b')), 4)
check('generation-increment scenario 5', solve('generation-increment', (True,[None],None,False,0,'b','b')), 1)
check('generation-increment scenario 6', solve('generation-increment', (True,[1,2],[1],True,1,'a','a')), 2)
check('setup-after-unmount scenario 1', solve('setup-after-unmount', (True,[N,2],[N,1],True,2,'a','a')), 'setup')
check('setup-after-unmount scenario 2', solve('setup-after-unmount', (True,[],[],False,0,'a','a')), 'setup')
check('setup-after-unmount scenario 3', solve('setup-after-unmount', (False,[1],[1],True,1,'a','a')), 'skip')
check('setup-after-unmount scenario 4', solve('setup-after-unmount', (True,[0],[False],True,3,'a','b')), 'setup')
check('setup-after-unmount scenario 5', solve('setup-after-unmount', (True,[None],None,False,0,'b','b')), 'setup')
check('setup-after-unmount scenario 6', solve('setup-after-unmount', (True,[1,2],[1],True,1,'a','a')), 'setup')
check('cleanup-registration-retained scenario 1', solve('cleanup-registration-retained', (True,[N,2],[N,1],True,2,'a','a')), True)
check('cleanup-registration-retained scenario 2', solve('cleanup-registration-retained', (True,[],[],False,0,'a','a')), False)
check('cleanup-registration-retained scenario 3', solve('cleanup-registration-retained', (False,[1],[1],True,1,'a','a')), False)
check('cleanup-registration-retained scenario 4', solve('cleanup-registration-retained', (True,[0],[False],True,3,'a','b')), True)
check('cleanup-registration-retained scenario 5', solve('cleanup-registration-retained', (True,[None],None,False,0,'b','b')), False)
check('cleanup-registration-retained scenario 6', solve('cleanup-registration-retained', (True,[1,2],[1],True,1,'a','a')), True)
check('owner-change-invalidates scenario 1', solve('owner-change-invalidates', (True,[N,2],[N,1],True,2,'a','a')), False)
check('owner-change-invalidates scenario 2', solve('owner-change-invalidates', (True,[],[],False,0,'a','a')), False)
check('owner-change-invalidates scenario 3', solve('owner-change-invalidates', (False,[1],[1],True,1,'a','a')), False)
check('owner-change-invalidates scenario 4', solve('owner-change-invalidates', (True,[0],[False],True,3,'a','b')), True)
check('owner-change-invalidates scenario 5', solve('owner-change-invalidates', (True,[None],None,False,0,'b','b')), False)
check('owner-change-invalidates scenario 6', solve('owner-change-invalidates', (True,[1,2],[1],True,1,'a','a')), False)
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 |
|---|---|---|---|
| dependency-shape-comparison scenario 1 | True | True | Passed |
| dependency-shape-comparison scenario 2 | False | False | Passed |
| dependency-shape-comparison scenario 3 | False | False | Passed |
| dependency-shape-comparison scenario 4 | True | True | Passed |
| dependency-shape-comparison scenario 5 | True | True | Passed |
| dependency-shape-comparison scenario 6 | True | True | Passed |
| unmount-cleanup scenario 1 | False | False | Passed |
| unmount-cleanup scenario 2 | False | False | Passed |
| unmount-cleanup scenario 3 | True | True | Passed |
| unmount-cleanup scenario 4 | False | False | Passed |
| unmount-cleanup scenario 5 | False | False | Passed |
| unmount-cleanup scenario 6 | False | False | Passed |
| initial-effect-run scenario 1 | False | False | Passed |
| initial-effect-run scenario 2 | True | True | Passed |
| initial-effect-run scenario 3 | False | False | Passed |
| initial-effect-run scenario 4 | False | False | Passed |
| initial-effect-run scenario 5 | False | True | Failed |
| initial-effect-run scenario 6 | False | False | Passed |
| cleanup-before-rerun scenario 1 | ['cleanup', 'setup'] | ['cleanup', 'setup'] | Passed |
| cleanup-before-rerun scenario 2 | ['setup'] | ['setup'] | Passed |
| cleanup-before-rerun scenario 3 | ['cleanup', 'setup'] | ['cleanup', 'setup'] | Passed |
| cleanup-before-rerun scenario 4 | ['cleanup', 'setup'] | ['cleanup', 'setup'] | Passed |
| cleanup-before-rerun scenario 5 | ['setup'] | ['setup'] | Passed |
| cleanup-before-rerun scenario 6 | ['cleanup', 'setup'] | ['cleanup', 'setup'] | Passed |
| completion-owner-check scenario 1 | True | True | Passed |
| completion-owner-check scenario 2 | True | True | Passed |
| completion-owner-check scenario 3 | False | False | Passed |
| completion-owner-check scenario 4 | False | False | Passed |
| completion-owner-check scenario 5 | True | True | Passed |
| completion-owner-check scenario 6 | True | True | Passed |
| dependency-snapshot-copy scenario 1 | [1, 2] | [1, 2] | Passed |
| dependency-snapshot-copy scenario 2 | [] | [] | Passed |
| dependency-snapshot-copy scenario 3 | [1] | [1] | Passed |
| dependency-snapshot-copy scenario 4 | [0] | [0] | Passed |
| dependency-snapshot-copy scenario 5 | [None] | [None] | Passed |
| dependency-snapshot-copy scenario 6 | [1, 2] | [1, 2] | Passed |
| generation-increment scenario 1 | 3 | 3 | Passed |
| generation-increment scenario 2 | 1 | 1 | Passed |
| generation-increment scenario 3 | 2 | 2 | Passed |
| generation-increment scenario 4 | 4 | 4 | Passed |
| generation-increment scenario 5 | 1 | 1 | Passed |
| generation-increment scenario 6 | 2 | 2 | Passed |
| setup-after-unmount scenario 1 | setup | setup | Passed |
| setup-after-unmount scenario 2 | setup | setup | Passed |
| setup-after-unmount scenario 3 | skip | skip | Passed |
| setup-after-unmount scenario 4 | setup | setup | Passed |
| setup-after-unmount scenario 5 | setup | setup | Passed |
| setup-after-unmount scenario 6 | setup | setup | Passed |
| cleanup-registration-retained scenario 1 | True | True | Passed |
| cleanup-registration-retained scenario 2 | False | False | Passed |
| cleanup-registration-retained scenario 3 | False | False | Passed |
| cleanup-registration-retained scenario 4 | True | True | Passed |
| cleanup-registration-retained scenario 5 | False | False | Passed |
| cleanup-registration-retained scenario 6 | True | True | Passed |
| owner-change-invalidates scenario 1 | False | False | Passed |
| owner-change-invalidates scenario 2 | False | False | Passed |
| owner-change-invalidates scenario 3 | False | False | Passed |
| owner-change-invalidates scenario 4 | True | True | Passed |
| owner-change-invalidates scenario 5 | False | False | Passed |
| owner-change-invalidates scenario 6 | False | False | Passed |
SHA-256 / a8b4765f61068264a23218358ebe36d2b237c03855accb846d77e611dd2f42dc
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(operation, s):
mounted, dependencies, previous, cleanup, run, owner, completion_owner = s
if operation == 'dependency-shape-comparison':
return previous is None or len(dependencies)!=len(previous) or any(type(a)!=type(b) or a!=b for a,b in zip(dependencies,previous))
if operation == 'unmount-cleanup':
return cleanup and not mounted
if operation == 'initial-effect-run':
return previous is None or run==0
if operation == 'cleanup-before-rerun':
return ['cleanup','setup'] if cleanup else ['setup']
if operation == 'completion-owner-check':
return mounted and owner==completion_owner
if operation == 'dependency-snapshot-copy':
return list(dependencies)
if operation == 'generation-increment':
return run+1
if operation == 'setup-after-unmount':
return 'setup' if mounted else 'skip'
if operation == 'cleanup-registration-retained':
return cleanup if mounted else False
if operation == 'owner-change-invalidates':
return owner!=completion_owner
raise ValueError('unknown modeled operation')
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('dependency-shape-comparison scenario 1', solve('dependency-shape-comparison', (True,[N,2],[N,1],True,2,'a','a')), True)
check('dependency-shape-comparison scenario 2', solve('dependency-shape-comparison', (True,[],[],False,0,'a','a')), False)
check('dependency-shape-comparison scenario 3', solve('dependency-shape-comparison', (False,[1],[1],True,1,'a','a')), False)
check('dependency-shape-comparison scenario 4', solve('dependency-shape-comparison', (True,[0],[False],True,3,'a','b')), True)
check('dependency-shape-comparison scenario 5', solve('dependency-shape-comparison', (True,[None],None,False,0,'b','b')), True)
check('dependency-shape-comparison scenario 6', solve('dependency-shape-comparison', (True,[1,2],[1],True,1,'a','a')), True)
check('unmount-cleanup scenario 1', solve('unmount-cleanup', (True,[N,2],[N,1],True,2,'a','a')), False)
check('unmount-cleanup scenario 2', solve('unmount-cleanup', (True,[],[],False,0,'a','a')), False)
check('unmount-cleanup scenario 3', solve('unmount-cleanup', (False,[1],[1],True,1,'a','a')), True)
check('unmount-cleanup scenario 4', solve('unmount-cleanup', (True,[0],[False],True,3,'a','b')), False)
check('unmount-cleanup scenario 5', solve('unmount-cleanup', (True,[None],None,False,0,'b','b')), False)
check('unmount-cleanup scenario 6', solve('unmount-cleanup', (True,[1,2],[1],True,1,'a','a')), False)
check('initial-effect-run scenario 1', solve('initial-effect-run', (True,[N,2],[N,1],True,2,'a','a')), False)
check('initial-effect-run scenario 2', solve('initial-effect-run', (True,[],[],False,0,'a','a')), True)
check('initial-effect-run scenario 3', solve('initial-effect-run', (False,[1],[1],True,1,'a','a')), False)
check('initial-effect-run scenario 4', solve('initial-effect-run', (True,[0],[False],True,3,'a','b')), False)
check('initial-effect-run scenario 5', solve('initial-effect-run', (True,[None],None,False,0,'b','b')), True)
check('initial-effect-run scenario 6', solve('initial-effect-run', (True,[1,2],[1],True,1,'a','a')), False)
check('cleanup-before-rerun scenario 1', solve('cleanup-before-rerun', (True,[N,2],[N,1],True,2,'a','a')), ['cleanup','setup'])
check('cleanup-before-rerun scenario 2', solve('cleanup-before-rerun', (True,[],[],False,0,'a','a')), ['setup'])
check('cleanup-before-rerun scenario 3', solve('cleanup-before-rerun', (False,[1],[1],True,1,'a','a')), ['cleanup','setup'])
check('cleanup-before-rerun scenario 4', solve('cleanup-before-rerun', (True,[0],[False],True,3,'a','b')), ['cleanup','setup'])
check('cleanup-before-rerun scenario 5', solve('cleanup-before-rerun', (True,[None],None,False,0,'b','b')), ['setup'])
check('cleanup-before-rerun scenario 6', solve('cleanup-before-rerun', (True,[1,2],[1],True,1,'a','a')), ['cleanup','setup'])
check('completion-owner-check scenario 1', solve('completion-owner-check', (True,[N,2],[N,1],True,2,'a','a')), True)
check('completion-owner-check scenario 2', solve('completion-owner-check', (True,[],[],False,0,'a','a')), True)
check('completion-owner-check scenario 3', solve('completion-owner-check', (False,[1],[1],True,1,'a','a')), False)
check('completion-owner-check scenario 4', solve('completion-owner-check', (True,[0],[False],True,3,'a','b')), False)
check('completion-owner-check scenario 5', solve('completion-owner-check', (True,[None],None,False,0,'b','b')), True)
check('completion-owner-check scenario 6', solve('completion-owner-check', (True,[1,2],[1],True,1,'a','a')), True)
check('dependency-snapshot-copy scenario 1', solve('dependency-snapshot-copy', (True,[N,2],[N,1],True,2,'a','a')), [N,2])
check('dependency-snapshot-copy scenario 2', solve('dependency-snapshot-copy', (True,[],[],False,0,'a','a')), [])
check('dependency-snapshot-copy scenario 3', solve('dependency-snapshot-copy', (False,[1],[1],True,1,'a','a')), [1])
check('dependency-snapshot-copy scenario 4', solve('dependency-snapshot-copy', (True,[0],[False],True,3,'a','b')), [0])
check('dependency-snapshot-copy scenario 5', solve('dependency-snapshot-copy', (True,[None],None,False,0,'b','b')), [None])
check('dependency-snapshot-copy scenario 6', solve('dependency-snapshot-copy', (True,[1,2],[1],True,1,'a','a')), [1,2])
check('generation-increment scenario 1', solve('generation-increment', (True,[N,2],[N,1],True,2,'a','a')), 3)
check('generation-increment scenario 2', solve('generation-increment', (True,[],[],False,0,'a','a')), 1)
check('generation-increment scenario 3', solve('generation-increment', (False,[1],[1],True,1,'a','a')), 2)
check('generation-increment scenario 4', solve('generation-increment', (True,[0],[False],True,3,'a','b')), 4)
check('generation-increment scenario 5', solve('generation-increment', (True,[None],None,False,0,'b','b')), 1)
check('generation-increment scenario 6', solve('generation-increment', (True,[1,2],[1],True,1,'a','a')), 2)
check('setup-after-unmount scenario 1', solve('setup-after-unmount', (True,[N,2],[N,1],True,2,'a','a')), 'setup')
check('setup-after-unmount scenario 2', solve('setup-after-unmount', (True,[],[],False,0,'a','a')), 'setup')
check('setup-after-unmount scenario 3', solve('setup-after-unmount', (False,[1],[1],True,1,'a','a')), 'skip')
check('setup-after-unmount scenario 4', solve('setup-after-unmount', (True,[0],[False],True,3,'a','b')), 'setup')
check('setup-after-unmount scenario 5', solve('setup-after-unmount', (True,[None],None,False,0,'b','b')), 'setup')
check('setup-after-unmount scenario 6', solve('setup-after-unmount', (True,[1,2],[1],True,1,'a','a')), 'setup')
check('cleanup-registration-retained scenario 1', solve('cleanup-registration-retained', (True,[N,2],[N,1],True,2,'a','a')), True)
check('cleanup-registration-retained scenario 2', solve('cleanup-registration-retained', (True,[],[],False,0,'a','a')), False)
check('cleanup-registration-retained scenario 3', solve('cleanup-registration-retained', (False,[1],[1],True,1,'a','a')), False)
check('cleanup-registration-retained scenario 4', solve('cleanup-registration-retained', (True,[0],[False],True,3,'a','b')), True)
check('cleanup-registration-retained scenario 5', solve('cleanup-registration-retained', (True,[None],None,False,0,'b','b')), False)
check('cleanup-registration-retained scenario 6', solve('cleanup-registration-retained', (True,[1,2],[1],True,1,'a','a')), True)
check('owner-change-invalidates scenario 1', solve('owner-change-invalidates', (True,[N,2],[N,1],True,2,'a','a')), False)
check('owner-change-invalidates scenario 2', solve('owner-change-invalidates', (True,[],[],False,0,'a','a')), False)
check('owner-change-invalidates scenario 3', solve('owner-change-invalidates', (False,[1],[1],True,1,'a','a')), False)
check('owner-change-invalidates scenario 4', solve('owner-change-invalidates', (True,[0],[False],True,3,'a','b')), True)
check('owner-change-invalidates scenario 5', solve('owner-change-invalidates', (True,[None],None,False,0,'b','b')), False)
check('owner-change-invalidates scenario 6', solve('owner-change-invalidates', (True,[1,2],[1],True,1,'a','a')), False)
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 |
|---|---|---|---|
| dependency-shape-comparison scenario 1 | True | True | Passed |
| dependency-shape-comparison scenario 2 | False | False | Passed |
| dependency-shape-comparison scenario 3 | False | False | Passed |
| dependency-shape-comparison scenario 4 | True | True | Passed |
| dependency-shape-comparison scenario 5 | True | True | Passed |
| dependency-shape-comparison scenario 6 | True | True | Passed |
| unmount-cleanup scenario 1 | False | False | Passed |
| unmount-cleanup scenario 2 | False | False | Passed |
| unmount-cleanup scenario 3 | True | True | Passed |
| unmount-cleanup scenario 4 | False | False | Passed |
| unmount-cleanup scenario 5 | False | False | Passed |
| unmount-cleanup scenario 6 | False | False | Passed |
| initial-effect-run scenario 1 | False | False | Passed |
| initial-effect-run scenario 2 | True | True | Passed |
| initial-effect-run scenario 3 | False | False | Passed |
| initial-effect-run scenario 4 | False | False | Passed |
| initial-effect-run scenario 5 | True | True | Passed |
| initial-effect-run scenario 6 | False | False | Passed |
| cleanup-before-rerun scenario 1 | ['cleanup', 'setup'] | ['cleanup', 'setup'] | Passed |
| cleanup-before-rerun scenario 2 | ['setup'] | ['setup'] | Passed |
| cleanup-before-rerun scenario 3 | ['cleanup', 'setup'] | ['cleanup', 'setup'] | Passed |
| cleanup-before-rerun scenario 4 | ['cleanup', 'setup'] | ['cleanup', 'setup'] | Passed |
| cleanup-before-rerun scenario 5 | ['setup'] | ['setup'] | Passed |
| cleanup-before-rerun scenario 6 | ['cleanup', 'setup'] | ['cleanup', 'setup'] | Passed |
| completion-owner-check scenario 1 | True | True | Passed |
| completion-owner-check scenario 2 | True | True | Passed |
| completion-owner-check scenario 3 | False | False | Passed |
| completion-owner-check scenario 4 | False | False | Passed |
| completion-owner-check scenario 5 | True | True | Passed |
| completion-owner-check scenario 6 | True | True | Passed |
| dependency-snapshot-copy scenario 1 | [1, 2] | [1, 2] | Passed |
| dependency-snapshot-copy scenario 2 | [] | [] | Passed |
| dependency-snapshot-copy scenario 3 | [1] | [1] | Passed |
| dependency-snapshot-copy scenario 4 | [0] | [0] | Passed |
| dependency-snapshot-copy scenario 5 | [None] | [None] | Passed |
| dependency-snapshot-copy scenario 6 | [1, 2] | [1, 2] | Passed |
| generation-increment scenario 1 | 3 | 3 | Passed |
| generation-increment scenario 2 | 1 | 1 | Passed |
| generation-increment scenario 3 | 2 | 2 | Passed |
| generation-increment scenario 4 | 4 | 4 | Passed |
| generation-increment scenario 5 | 1 | 1 | Passed |
| generation-increment scenario 6 | 2 | 2 | Passed |
| setup-after-unmount scenario 1 | setup | setup | Passed |
| setup-after-unmount scenario 2 | setup | setup | Passed |
| setup-after-unmount scenario 3 | skip | skip | Passed |
| setup-after-unmount scenario 4 | setup | setup | Passed |
| setup-after-unmount scenario 5 | setup | setup | Passed |
| setup-after-unmount scenario 6 | setup | setup | Passed |
| cleanup-registration-retained scenario 1 | True | True | Passed |
| cleanup-registration-retained scenario 2 | False | False | Passed |
| cleanup-registration-retained scenario 3 | False | False | Passed |
| cleanup-registration-retained scenario 4 | True | True | Passed |
| cleanup-registration-retained scenario 5 | False | False | Passed |
| cleanup-registration-retained scenario 6 | True | True | Passed |
| owner-change-invalidates scenario 1 | False | False | Passed |
| owner-change-invalidates scenario 2 | False | False | Passed |
| owner-change-invalidates scenario 3 | False | False | Passed |
| owner-change-invalidates scenario 4 | True | True | Passed |
| owner-change-invalidates scenario 5 | False | False | Passed |
| owner-change-invalidates scenario 6 | False | False | Passed |
SHA-256 / e86fb948251b862a588aa5dbb98eaafcd12fc24c53af46a43854f3bc174b2e83
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:51.879396+00:00.
Case digest / 705c78629edd24a7901f8b1f93ec596885536a79a6cfa3766adffc0c1d1664e7