{"abstract":"Cancelling a parent render transition leaves nested work attached.","category":"Client state","checks":6,"contract":"Cancelling a render transition cancels its descendant task tree transitively, including descendants of an already-removed parent, without cancelling ancestors or unrelated roots.","evaluation_group":"s3-client-state-transition-abort-tree","failed_approach":"The partial repair still violates at least one explicit regression oracle.","family":"s3-client-state-transition-abort-tree","id":"FA-24816","implementations":{"attempt":{"sha256":"fc2d79c762004fcb3c57faff05c10a88eaee71b0177b6a7cc067ac07c18d9704","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(tasks, cancelled):\n    return [task for task,parent in tasks if task not in cancelled and parent not in cancelled]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('nested descendants', solve([('a',None),('b','a'),('c','b'),('side',None)],['a']), ['side'])\ncheck('child cancellation keeps parent', solve([('a',None),('b','a')],['b']), ['a'])\ncheck('no cancellation', solve([('a',None)],[]), ['a'])\ncheck('unknown root cancellation', solve([('a','missing')],['missing']), [])\ncheck('separate trees', solve([('a',None),('b',None),('c','b')],['a']), ['b','c'])\ncheck('parameterized deep chain', solve([(str(i),None if i==0 else str(i-1)) for i in range(N+3)],['0']), [])\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"dacf98f5473d19f6541047184330ba3d1942779052ca5a9a9ed7e929212400e5","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(tasks, cancelled):\n    return [task for task,parent in tasks if task not in cancelled]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('nested descendants', solve([('a',None),('b','a'),('c','b'),('side',None)],['a']), ['side'])\ncheck('child cancellation keeps parent', solve([('a',None),('b','a')],['b']), ['a'])\ncheck('no cancellation', solve([('a',None)],[]), ['a'])\ncheck('unknown root cancellation', solve([('a','missing')],['missing']), [])\ncheck('separate trees', solve([('a',None),('b',None),('c','b')],['a']), ['b','c'])\ncheck('parameterized deep chain', solve([(str(i),None if i==0 else str(i-1)) for i in range(N+3)],['0']), [])\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"7a1b2df5c04fe1ae281e7a30131fbea639a82986f248f07917b97fb736dd1331","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(tasks, cancelled):\n    dead=set(cancelled)\n    while True:\n        grown=dead|{task for task,parent in tasks if parent in dead}\n        if grown==dead: break\n        dead=grown\n    return [task for task,parent in tasks if task not in dead]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('nested descendants', solve([('a',None),('b','a'),('c','b'),('side',None)],['a']), ['side'])\ncheck('child cancellation keeps parent', solve([('a',None),('b','a')],['b']), ['a'])\ncheck('no cancellation', solve([('a',None)],[]), ['a'])\ncheck('unknown root cancellation', solve([('a','missing')],['missing']), [])\ncheck('separate trees', solve([('a',None),('b',None),('c','b')],['a']), ['b','c'])\ncheck('parameterized deep chain', solve([(str(i),None if i==0 else str(i-1)) for i in range(N+3)],['0']), [])\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"s3-client-state-transition-abort-tree","generated_at":"2026-09-29T14:41:00.999291+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A bounded offline client-state transition with explicit lifecycle inputs.","repair":"Cancelling a render transition cancels its descendant task tree transitively, including descendants of an already-removed parent, without cancelling ancestors or unrelated roots.","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.","sha256":"650194feaf66b75c3088a13af346e2008c6da9b511a4a47f625611246f2ef3ee","title":"Cancelling a parent render transition leaves nested work attached · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":42.023,"exit_code":1,"observations":[{"actual":["c","side"],"check":"nested descendants","expected":["side"],"passed":false},{"actual":["a"],"check":"child cancellation keeps parent","expected":["a"],"passed":true},{"actual":["a"],"check":"no cancellation","expected":["a"],"passed":true},{"actual":[],"check":"unknown root cancellation","expected":[],"passed":true},{"actual":["b","c"],"check":"separate trees","expected":["b","c"],"passed":true},{"actual":["2","3"],"check":"parameterized deep chain","expected":[],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"nested descendants\", \"actual\": [\"c\", \"side\"], \"expected\": [\"side\"], \"passed\": false}, {\"check\": \"child cancellation keeps parent\", \"actual\": [\"a\"], \"expected\": [\"a\"], \"passed\": true}, {\"check\": \"no cancellation\", \"actual\": [\"a\"], \"expected\": [\"a\"], \"passed\": true}, {\"check\": \"unknown root cancellation\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"separate trees\", \"actual\": [\"b\", \"c\"], \"expected\": [\"b\", \"c\"], \"passed\": true}, {\"check\": \"parameterized deep chain\", \"actual\": [\"2\", \"3\"], \"expected\": [], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.239,"exit_code":1,"observations":[{"actual":["b","c","side"],"check":"nested descendants","expected":["side"],"passed":false},{"actual":["a"],"check":"child cancellation keeps parent","expected":["a"],"passed":true},{"actual":["a"],"check":"no cancellation","expected":["a"],"passed":true},{"actual":["a"],"check":"unknown root cancellation","expected":[],"passed":false},{"actual":["b","c"],"check":"separate trees","expected":["b","c"],"passed":true},{"actual":["1","2","3"],"check":"parameterized deep chain","expected":[],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"nested descendants\", \"actual\": [\"b\", \"c\", \"side\"], \"expected\": [\"side\"], \"passed\": false}, {\"check\": \"child cancellation keeps parent\", \"actual\": [\"a\"], \"expected\": [\"a\"], \"passed\": true}, {\"check\": \"no cancellation\", \"actual\": [\"a\"], \"expected\": [\"a\"], \"passed\": true}, {\"check\": \"unknown root cancellation\", \"actual\": [\"a\"], \"expected\": [], \"passed\": false}, {\"check\": \"separate trees\", \"actual\": [\"b\", \"c\"], \"expected\": [\"b\", \"c\"], \"passed\": true}, {\"check\": \"parameterized deep chain\", \"actual\": [\"1\", \"2\", \"3\"], \"expected\": [], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.38,"exit_code":0,"observations":[{"actual":["side"],"check":"nested descendants","expected":["side"],"passed":true},{"actual":["a"],"check":"child cancellation keeps parent","expected":["a"],"passed":true},{"actual":["a"],"check":"no cancellation","expected":["a"],"passed":true},{"actual":[],"check":"unknown root cancellation","expected":[],"passed":true},{"actual":["b","c"],"check":"separate trees","expected":["b","c"],"passed":true},{"actual":[],"check":"parameterized deep chain","expected":[],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"nested descendants\", \"actual\": [\"side\"], \"expected\": [\"side\"], \"passed\": true}, {\"check\": \"child cancellation keeps parent\", \"actual\": [\"a\"], \"expected\": [\"a\"], \"passed\": true}, {\"check\": \"no cancellation\", \"actual\": [\"a\"], \"expected\": [\"a\"], \"passed\": true}, {\"check\": \"unknown root cancellation\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"separate trees\", \"actual\": [\"b\", \"c\"], \"expected\": [\"b\", \"c\"], \"passed\": true}, {\"check\": \"parameterized deep chain\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}