{"abstract":"Relations cross embedded document boundaries.","category":"Accessibility interaction semantics","checks":9,"contract":"Input [nodes,requests] with nodes [document,id,exposed,defunct] and requests [source_doc,source_id,target_doc,target_id,kind]. Allowed kinds details, controls, describedby. Resolve in document-scoped ID space, reject missing/hidden/defunct sources or targets, self edges, cross-document edges and unsupported kinds. Dedupe identical edges preserving request order. Return [source_id,kind,target_id]. IDs may repeat in different documents. Source and target visibility are direct snapshot flags, not ancestry.","contract_signature":"data","evaluation_group":"s3-accessibility-relation-scope","failed_approach":"The local repair substitutes if sd != td and si == ti: continue but still mishandles the regression fixtures.","family":"s3-accessibility-relation-scope-document-boundary","id":"FA-53396","implementations":{"attempt":{"sha256":"210cec9dd5939bb2690308aef63de1c0fa431d557fa1910f8c43e239f90e1fa9","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(data):\n    nodes,requests = data\n    index = {(doc,ident):(visible,dead) for doc,ident,visible,dead in nodes}\n    result = []\n    seen = set()\n    for sd,si,td,ti,kind in requests:\n        if kind not in {'details','controls','describedby'}: continue\n        if sd != td and si == ti: continue\n        source = index.get((sd,si))\n        target = index.get((td,ti))\n        if source is None or target is None: continue\n        if not source[0] or source[1]: continue\n        if not target[0] or target[1]: continue\n        if si == ti: continue\n        edge = (si,kind,ti)\n        if edge in seen: continue\n        seen.add(edge)\n        result.append(list(edge))\n    return result\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('valid ordered and repeated', solve([[['d','s',True,False],['d','t',True,False],['d',str(N),True,False]],[['d','s','d','t','details'],['d','s','d',str(N),'controls'],['d','s','d','t','details']]],), [['s','details','t'],['s','controls',str(N)]])\ncheck('different kinds same endpoints', solve([[['d','s',True,False],['d','t',True,False]],[['d','s','d','t','details'],['d','s','d','t','controls']]],), [['s','details','t'],['s','controls','t']])\ncheck('cross document collision', solve([[['d','s',True,False],['d','t',False,False],['e','t',True,False]],[['d','s','e','t','details'],['d','s','d','t','details']]],), [])\ncheck('unsupported and self', solve([[['d','s',True,False],['d','t',True,False]],[['d','s','d','t','label'],['d','s','d','s','controls']]],), [])\ncheck('missing endpoints', solve([[['d','s',True,False]],[['d','s','d','missing','details'],['d','gone','d','s','details']]],), [])\ncheck('hidden source', solve([[['d','s',False,False],['d','t',True,False]],[['d','s','d','t','details']]],), [])\ncheck('defunct source', solve([[['d','s',True,True],['d','t',True,False]],[['d','s','d','t','details']]],), [])\ncheck('defunct target', solve([[['d','s',True,False],['d','t',True,True]],[['d','s','d','t','details']]],), [])\ncheck('empty snapshot', 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":"da435f7bfb9485b9c5c93909d80e8dd0cc0354abf93b81d90b0f5479bf73d770","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(data):\n    nodes,requests = data\n    index = {(doc,ident):(visible,dead) for doc,ident,visible,dead in nodes}\n    result = []\n    seen = set()\n    for sd,si,td,ti,kind in requests:\n        if kind not in {'details','controls','describedby'}: continue\n        if False: continue\n        source = index.get((sd,si))\n        target = index.get((td,ti))\n        if source is None or target is None: continue\n        if not source[0] or source[1]: continue\n        if not target[0] or target[1]: continue\n        if si == ti: continue\n        edge = (si,kind,ti)\n        if edge in seen: continue\n        seen.add(edge)\n        result.append(list(edge))\n    return result\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('valid ordered and repeated', solve([[['d','s',True,False],['d','t',True,False],['d',str(N),True,False]],[['d','s','d','t','details'],['d','s','d',str(N),'controls'],['d','s','d','t','details']]],), [['s','details','t'],['s','controls',str(N)]])\ncheck('different kinds same endpoints', solve([[['d','s',True,False],['d','t',True,False]],[['d','s','d','t','details'],['d','s','d','t','controls']]],), [['s','details','t'],['s','controls','t']])\ncheck('cross document collision', solve([[['d','s',True,False],['d','t',False,False],['e','t',True,False]],[['d','s','e','t','details'],['d','s','d','t','details']]],), [])\ncheck('unsupported and self', solve([[['d','s',True,False],['d','t',True,False]],[['d','s','d','t','label'],['d','s','d','s','controls']]],), [])\ncheck('missing endpoints', solve([[['d','s',True,False]],[['d','s','d','missing','details'],['d','gone','d','s','details']]],), [])\ncheck('hidden source', solve([[['d','s',False,False],['d','t',True,False]],[['d','s','d','t','details']]],), [])\ncheck('defunct source', solve([[['d','s',True,True],['d','t',True,False]],[['d','s','d','t','details']]],), [])\ncheck('defunct target', solve([[['d','s',True,False],['d','t',True,True]],[['d','s','d','t','details']]],), [])\ncheck('empty snapshot', 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":"Stipulated finite adapter contract, not a claim of platform accessibility or ARIA conformance. 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-accessibility-relation-scope-document-boundary","generated_at":"2026-09-29T14:45:38.681583+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Offline accessibility bridge model with explicit policy; useful for testing semantic API adapters independently of browser implementations.","root_cause":"The document boundary decision in the relation scope adapter violates its declared contract.","sha256":"d5e77402e6ec88f9ca8012d9eea0c85cb4f261dadcf8dd233abe07ba7856bfdf","title":"Relations cross embedded document boundaries · 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":42.328,"exit_code":1,"observations":[{"actual":[["s","details","t"],["s","controls","1"]],"check":"valid ordered and repeated","expected":[["s","details","t"],["s","controls","1"]],"passed":true},{"actual":[["s","details","t"],["s","controls","t"]],"check":"different kinds same endpoints","expected":[["s","details","t"],["s","controls","t"]],"passed":true},{"actual":[["s","details","t"]],"check":"cross document collision","expected":[],"passed":false},{"actual":[],"check":"unsupported and self","expected":[],"passed":true},{"actual":[],"check":"missing endpoints","expected":[],"passed":true},{"actual":[],"check":"hidden source","expected":[],"passed":true},{"actual":[],"check":"defunct source","expected":[],"passed":true},{"actual":[],"check":"defunct target","expected":[],"passed":true},{"actual":[],"check":"empty snapshot","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"valid ordered and repeated\", \"actual\": [[\"s\", \"details\", \"t\"], [\"s\", \"controls\", \"1\"]], \"expected\": [[\"s\", \"details\", \"t\"], [\"s\", \"controls\", \"1\"]], \"passed\": true}, {\"check\": \"different kinds same endpoints\", \"actual\": [[\"s\", \"details\", \"t\"], [\"s\", \"controls\", \"t\"]], \"expected\": [[\"s\", \"details\", \"t\"], [\"s\", \"controls\", \"t\"]], \"passed\": true}, {\"check\": \"cross document collision\", \"actual\": [[\"s\", \"details\", \"t\"]], \"expected\": [], \"passed\": false}, {\"check\": \"unsupported and self\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"missing endpoints\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"hidden source\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"defunct source\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"defunct target\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"empty snapshot\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.91,"exit_code":1,"observations":[{"actual":[["s","details","t"],["s","controls","1"]],"check":"valid ordered and repeated","expected":[["s","details","t"],["s","controls","1"]],"passed":true},{"actual":[["s","details","t"],["s","controls","t"]],"check":"different kinds same endpoints","expected":[["s","details","t"],["s","controls","t"]],"passed":true},{"actual":[["s","details","t"]],"check":"cross document collision","expected":[],"passed":false},{"actual":[],"check":"unsupported and self","expected":[],"passed":true},{"actual":[],"check":"missing endpoints","expected":[],"passed":true},{"actual":[],"check":"hidden source","expected":[],"passed":true},{"actual":[],"check":"defunct source","expected":[],"passed":true},{"actual":[],"check":"defunct target","expected":[],"passed":true},{"actual":[],"check":"empty snapshot","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"valid ordered and repeated\", \"actual\": [[\"s\", \"details\", \"t\"], [\"s\", \"controls\", \"1\"]], \"expected\": [[\"s\", \"details\", \"t\"], [\"s\", \"controls\", \"1\"]], \"passed\": true}, {\"check\": \"different kinds same endpoints\", \"actual\": [[\"s\", \"details\", \"t\"], [\"s\", \"controls\", \"t\"]], \"expected\": [[\"s\", \"details\", \"t\"], [\"s\", \"controls\", \"t\"]], \"passed\": true}, {\"check\": \"cross document collision\", \"actual\": [[\"s\", \"details\", \"t\"]], \"expected\": [], \"passed\": false}, {\"check\": \"unsupported and self\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"missing endpoints\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"hidden source\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"defunct source\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"defunct target\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"empty snapshot\", \"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."}}