FA-24816 / Client state / Open access
Cancelling a parent render transition leaves nested work attached · case 01
Cancelling a parent render transition leaves nested work attached.
ROOT CAUSE
The faulty implementation violates Cancelling a render transition cancels its descendant task tree transitively, including descendants of an already-removed parent, without cancelling ancestors or unrelated roots.
VERIFIED REPAIR
Cancelling a render transition cancels its descendant task tree transitively, including descendants of an already-removed parent, without cancelling ancestors or unrelated roots.
Unsuccessful approach: The partial repair still violates at least one explicit regression oracle.
Case contract
Cancelling a render transition cancels its descendant task tree transitively, including descendants of an already-removed parent, without cancelling ancestors or unrelated roots.
Why this case matters
A bounded offline client-state transition with explicit lifecycle inputs.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(tasks, cancelled):
return [task for task,parent in tasks if task not in cancelled]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('nested descendants', solve([('a',None),('b','a'),('c','b'),('side',None)],['a']), ['side'])
check('child cancellation keeps parent', solve([('a',None),('b','a')],['b']), ['a'])
check('no cancellation', solve([('a',None)],[]), ['a'])
check('unknown root cancellation', solve([('a','missing')],['missing']), [])
check('separate trees', solve([('a',None),('b',None),('c','b')],['a']), ['b','c'])
check('parameterized deep chain', solve([(str(i),None if i==0 else str(i-1)) for i in range(N+3)],['0']), [])
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 |
|---|---|---|---|
| nested descendants | ['b', 'c', 'side'] | ['side'] | Failed |
| child cancellation keeps parent | ['a'] | ['a'] | Passed |
| no cancellation | ['a'] | ['a'] | Passed |
| unknown root cancellation | ['a'] | [] | Failed |
| separate trees | ['b', 'c'] | ['b', 'c'] | Passed |
| parameterized deep chain | ['1', '2', '3'] | [] | Failed |
SHA-256 / dacf98f5473d19f6541047184330ba3d1942779052ca5a9a9ed7e929212400e5
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(tasks, cancelled):
return [task for task,parent in tasks if task not in cancelled and parent not in cancelled]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('nested descendants', solve([('a',None),('b','a'),('c','b'),('side',None)],['a']), ['side'])
check('child cancellation keeps parent', solve([('a',None),('b','a')],['b']), ['a'])
check('no cancellation', solve([('a',None)],[]), ['a'])
check('unknown root cancellation', solve([('a','missing')],['missing']), [])
check('separate trees', solve([('a',None),('b',None),('c','b')],['a']), ['b','c'])
check('parameterized deep chain', solve([(str(i),None if i==0 else str(i-1)) for i in range(N+3)],['0']), [])
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 |
|---|---|---|---|
| nested descendants | ['c', 'side'] | ['side'] | Failed |
| child cancellation keeps parent | ['a'] | ['a'] | Passed |
| no cancellation | ['a'] | ['a'] | Passed |
| unknown root cancellation | [] | [] | Passed |
| separate trees | ['b', 'c'] | ['b', 'c'] | Passed |
| parameterized deep chain | ['2', '3'] | [] | Failed |
SHA-256 / fc2d79c762004fcb3c57faff05c10a88eaee71b0177b6a7cc067ac07c18d9704
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(tasks, cancelled):
dead=set(cancelled)
while True:
grown=dead|{task for task,parent in tasks if parent in dead}
if grown==dead: break
dead=grown
return [task for task,parent in tasks if task not in dead]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('nested descendants', solve([('a',None),('b','a'),('c','b'),('side',None)],['a']), ['side'])
check('child cancellation keeps parent', solve([('a',None),('b','a')],['b']), ['a'])
check('no cancellation', solve([('a',None)],[]), ['a'])
check('unknown root cancellation', solve([('a','missing')],['missing']), [])
check('separate trees', solve([('a',None),('b',None),('c','b')],['a']), ['b','c'])
check('parameterized deep chain', solve([(str(i),None if i==0 else str(i-1)) for i in range(N+3)],['0']), [])
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 |
|---|---|---|---|
| nested descendants | ['side'] | ['side'] | Passed |
| child cancellation keeps parent | ['a'] | ['a'] | Passed |
| no cancellation | ['a'] | ['a'] | Passed |
| unknown root cancellation | [] | [] | Passed |
| separate trees | ['b', 'c'] | ['b', 'c'] | Passed |
| parameterized deep chain | [] | [] | Passed |
SHA-256 / 7a1b2df5c04fe1ae281e7a30131fbea639a82986f248f07917b97fb736dd1331
Verification & scope
This models the stated application policy only; 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:41:00.999291+00:00.
Case digest / 650194feaf66b75c3088a13af346e2008c6da9b511a4a47f625611246f2ef3ee