{"abstract":"An explicit ownership edge adds a second copy instead of moving the child.","category":"Accessibility interaction semantics","checks":7,"contract":"Input natural maps parent IDs to ordered immediate child IDs, and owns maps owners to ordered claimed IDs. All IDs exist, claims are unique globally, and combined ownership is acyclic. Return parent child lists preserving unclaimed natural order followed by declared owned order. Claimed natural children are reordered into the owned suffix; do not mutate inputs.","contract_signature":"natural, owns","evaluation_group":"model-b5aac384f352803f","failed_approach":"Removing the old parent link fixes duplication but retaining natural ordering ignores the owner’s explicit child order.","family":"z-accessibility-ownership-reparent","id":"FA-11436","implementations":{"attempt":{"sha256":"29dc49f96988efea63e896797193c0677c24ee0e3d49e44c2399ffc2800753e8","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(natural, owns):\n    claimed = {child:owner for owner,children in owns.items() for child in children}\n    result = {parent:[child for child in children if child not in claimed or claimed[child] == parent] for parent,children in natural.items()}\n    for owner,children in owns.items():\n        result.setdefault(owner, [])\n        result[owner].extend(child for child in children if child not in result[owner])\n    return result\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('same parent explicit order', solve({'p':['a',str(N),'b']}, {'p':['b','a']} ), {'p':[str(N),'b','a']})\ncheck('cross parent move', solve({'p':[str(N)],'q':[]}, {'q':[str(N)]}), {'p':[],'q':[str(N)]})\ncheck('owned suffix', solve({'p':['a','b',str(N)]}, {'p':['a']}), {'p':['b',str(N),'a']})\ncheck('no claims', solve({'p':[str(N)],'q':[]}, {}), {'p':[str(N)],'q':[]})\ncheck('empty claims', solve({'p':[str(N)]}, {'p':[]}), {'p':[str(N)]})\ncheck('leaf becomes owner', solve({'root':['owner',str(N)]}, {'owner':[str(N)]}), {'root':['owner'],'owner':[str(N)]})\ncheck('empty hierarchy', solve({}, {}), {})\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":"02ce5df8d5d6af17474bec0fa24a641b836198fb43d6f0f2a583370f9423bef9","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(natural, owns):\n    result = {parent:list(children) for parent,children in natural.items()}\n    for owner,children in owns.items(): result.setdefault(owner, []).extend(children)\n    return result\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('same parent explicit order', solve({'p':['a',str(N),'b']}, {'p':['b','a']} ), {'p':[str(N),'b','a']})\ncheck('cross parent move', solve({'p':[str(N)],'q':[]}, {'q':[str(N)]}), {'p':[],'q':[str(N)]})\ncheck('owned suffix', solve({'p':['a','b',str(N)]}, {'p':['a']}), {'p':['b',str(N),'a']})\ncheck('no claims', solve({'p':[str(N)],'q':[]}, {}), {'p':[str(N)],'q':[]})\ncheck('empty claims', solve({'p':[str(N)]}, {'p':[]}), {'p':[str(N)]})\ncheck('leaf becomes owner', solve({'root':['owner',str(N)]}, {'owner':[str(N)]}), {'root':['owner'],'owner':[str(N)]})\ncheck('empty hierarchy', solve({}, {}), {})\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 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":"z-accessibility-ownership-reparent","generated_at":"2026-09-29T14:38:47.983485+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A controlled offline accessibility-data model. It isolates the stated contract; it does not simulate browser accessibility APIs or claim full ARIA conformance.","root_cause":"The accessibility hierarchy is built by appending owned children without removing natural-parent links.","sha256":"511c1e10ee6abbaa93d5233378642cfbfd52d8608f2c5ce2f9d5ea6070e7b386","title":"An owned node appears under two accessibility parents · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":40.425,"exit_code":1,"observations":[{"actual":{"p":["a","1","b"]},"check":"same parent explicit order","expected":{"p":["1","b","a"]},"passed":false},{"actual":{"p":[],"q":["1"]},"check":"cross parent move","expected":{"p":[],"q":["1"]},"passed":true},{"actual":{"p":["a","b","1"]},"check":"owned suffix","expected":{"p":["b","1","a"]},"passed":false},{"actual":{"p":["1"],"q":[]},"check":"no claims","expected":{"p":["1"],"q":[]},"passed":true},{"actual":{"p":["1"]},"check":"empty claims","expected":{"p":["1"]},"passed":true},{"actual":{"owner":["1"],"root":["owner"]},"check":"leaf becomes owner","expected":{"owner":["1"],"root":["owner"]},"passed":true},{"actual":{},"check":"empty hierarchy","expected":{},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"same parent explicit order\", \"actual\": {\"p\": [\"a\", \"1\", \"b\"]}, \"expected\": {\"p\": [\"1\", \"b\", \"a\"]}, \"passed\": false}, {\"check\": \"cross parent move\", \"actual\": {\"p\": [], \"q\": [\"1\"]}, \"expected\": {\"p\": [], \"q\": [\"1\"]}, \"passed\": true}, {\"check\": \"owned suffix\", \"actual\": {\"p\": [\"a\", \"b\", \"1\"]}, \"expected\": {\"p\": [\"b\", \"1\", \"a\"]}, \"passed\": false}, {\"check\": \"no claims\", \"actual\": {\"p\": [\"1\"], \"q\": []}, \"expected\": {\"p\": [\"1\"], \"q\": []}, \"passed\": true}, {\"check\": \"empty claims\", \"actual\": {\"p\": [\"1\"]}, \"expected\": {\"p\": [\"1\"]}, \"passed\": true}, {\"check\": \"leaf becomes owner\", \"actual\": {\"root\": [\"owner\"], \"owner\": [\"1\"]}, \"expected\": {\"root\": [\"owner\"], \"owner\": [\"1\"]}, \"passed\": true}, {\"check\": \"empty hierarchy\", \"actual\": {}, \"expected\": {}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.976,"exit_code":1,"observations":[{"actual":{"p":["a","1","b","b","a"]},"check":"same parent explicit order","expected":{"p":["1","b","a"]},"passed":false},{"actual":{"p":["1"],"q":["1"]},"check":"cross parent move","expected":{"p":[],"q":["1"]},"passed":false},{"actual":{"p":["a","b","1","a"]},"check":"owned suffix","expected":{"p":["b","1","a"]},"passed":false},{"actual":{"p":["1"],"q":[]},"check":"no claims","expected":{"p":["1"],"q":[]},"passed":true},{"actual":{"p":["1"]},"check":"empty claims","expected":{"p":["1"]},"passed":true},{"actual":{"owner":["1"],"root":["owner","1"]},"check":"leaf becomes owner","expected":{"owner":["1"],"root":["owner"]},"passed":false},{"actual":{},"check":"empty hierarchy","expected":{},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"same parent explicit order\", \"actual\": {\"p\": [\"a\", \"1\", \"b\", \"b\", \"a\"]}, \"expected\": {\"p\": [\"1\", \"b\", \"a\"]}, \"passed\": false}, {\"check\": \"cross parent move\", \"actual\": {\"p\": [\"1\"], \"q\": [\"1\"]}, \"expected\": {\"p\": [], \"q\": [\"1\"]}, \"passed\": false}, {\"check\": \"owned suffix\", \"actual\": {\"p\": [\"a\", \"b\", \"1\", \"a\"]}, \"expected\": {\"p\": [\"b\", \"1\", \"a\"]}, \"passed\": false}, {\"check\": \"no claims\", \"actual\": {\"p\": [\"1\"], \"q\": []}, \"expected\": {\"p\": [\"1\"], \"q\": []}, \"passed\": true}, {\"check\": \"empty claims\", \"actual\": {\"p\": [\"1\"]}, \"expected\": {\"p\": [\"1\"]}, \"passed\": true}, {\"check\": \"leaf becomes owner\", \"actual\": {\"root\": [\"owner\", \"1\"], \"owner\": [\"1\"]}, \"expected\": {\"root\": [\"owner\"], \"owner\": [\"1\"]}, \"passed\": false}, {\"check\": \"empty hierarchy\", \"actual\": {}, \"expected\": {}, \"passed\": true}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}