FA-53546 / Accessibility interaction semantics / Open access
The frame host reappears among its own descendants · case 01
The frame host reappears among its own descendants.
ROOT CAUSE
The host cycle decision in the embedded document adapter violates its declared contract.
THE FAILURE
The host cycle decision in the embedded document adapter violates its declared contract.
Unsuccessful approach: The local repair substitutes if ident != doc but still mishandles the regression fixtures.
Case contract
Input [host_id,host_doc,child_doc,loaded,same_origin,allow_read,host_name,child_title,children,defunct]. Return None if defunct. Otherwise return a host bridge object. Child document may only be traversed when loaded and allow_read; same_origin alone grants no reading. Expose children in original order, including repeated distinct IDs, prefixed with child_doc and colon; child document ID cannot be empty or equal to host document. Name prefers a nonempty host name, then child title only if traversal allowed, otherwise empty. Busy means not loaded; unavailable means loaded but traversal forbidden. Relation is [host_id,child_doc] only for traversable children. Source lists never include the host itself.
Why this case matters
Offline accessibility bridge model with explicit policy; useful for testing semantic API adapters independently of browser implementations.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(data):
host,doc,child,loaded,same,allowed,name,title,children,dead = data
if dead: return None
can = loaded and allowed and bool(child) and child != doc
safe = [ident for ident in children if True]
return {'id':host,'name':name if name else (title if can else ''),'busy':not loaded,'unavailable':loaded and not can,'children':[child+':'+ident for ident in safe] if can else [],'relation':[host,child] if can else None}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('allowed foreign document', solve(['host','d','c',True,False,True,'','Title'+str(N),['a','b','a'],False],), {'id':'host','name':'Title'+str(N),'busy':False,'unavailable':False,'children':['c:a','c:b','c:a'],'relation':['host','c']})
check('same origin no permission', solve(['host','d','c',True,True,False,'','Secret',['a'],False],), {'id':'host','name':'','busy':False,'unavailable':True,'children':[],'relation':None})
check('not loaded', solve(['host','d','c',False,True,True,'Frame','Title',['a'],False],), {'id':'host','name':'Frame','busy':True,'unavailable':False,'children':[],'relation':None})
check('dead host', solve(['host','d','c',True,True,True,'Frame','Title',['a'],True],), None)
check('self document', solve(['host','d','d',True,True,True,'Frame','Title',['a'],False],), {'id':'host','name':'Frame','busy':False,'unavailable':True,'children':[],'relation':None})
check('empty child identifier', solve(['host','d','',True,True,True,'Frame','Title',['a'],False],), {'id':'host','name':'Frame','busy':False,'unavailable':True,'children':[],'relation':None})
check('host filtered', solve(['host','d','c',True,True,True,'Frame','Title',['a','host','b'],False],), {'id':'host','name':'Frame','busy':False,'unavailable':False,'children':['c:a','c:b'],'relation':['host','c']})
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 |
|---|---|---|---|
| allowed foreign document | {'busy': False, 'children': ['c:a', 'c:b', 'c:a'], 'id': 'host', 'name': 'Title1', 'relation': ['host', 'c'], 'unavailable': False} | {'busy': False, 'children': ['c:a', 'c:b', 'c:a'], 'id': 'host', 'name': 'Title1', 'relation': ['host', 'c'], 'unavailable': False} | Passed |
| same origin no permission | {'busy': False, 'children': [], 'id': 'host', 'name': '', 'relation': None, 'unavailable': True} | {'busy': False, 'children': [], 'id': 'host', 'name': '', 'relation': None, 'unavailable': True} | Passed |
| not loaded | {'busy': True, 'children': [], 'id': 'host', 'name': 'Frame', 'relation': None, 'unavailable': False} | {'busy': True, 'children': [], 'id': 'host', 'name': 'Frame', 'relation': None, 'unavailable': False} | Passed |
| dead host | None | None | Passed |
| self document | {'busy': False, 'children': [], 'id': 'host', 'name': 'Frame', 'relation': None, 'unavailable': True} | {'busy': False, 'children': [], 'id': 'host', 'name': 'Frame', 'relation': None, 'unavailable': True} | Passed |
| empty child identifier | {'busy': False, 'children': [], 'id': 'host', 'name': 'Frame', 'relation': None, 'unavailable': True} | {'busy': False, 'children': [], 'id': 'host', 'name': 'Frame', 'relation': None, 'unavailable': True} | Passed |
| host filtered | {'busy': False, 'children': ['c:a', 'c:host', 'c:b'], 'id': 'host', 'name': 'Frame', 'relation': ['host', 'c'], 'unavailable': False} | {'busy': False, 'children': ['c:a', 'c:b'], 'id': 'host', 'name': 'Frame', 'relation': ['host', 'c'], 'unavailable': False} | Failed |
SHA-256 / a75f0cd1043630f919eabee30a80efe2df2d6085aedfdc0ebb26c12fe7e2be13
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(data):
host,doc,child,loaded,same,allowed,name,title,children,dead = data
if dead: return None
can = loaded and allowed and bool(child) and child != doc
safe = [ident for ident in children if ident != doc]
return {'id':host,'name':name if name else (title if can else ''),'busy':not loaded,'unavailable':loaded and not can,'children':[child+':'+ident for ident in safe] if can else [],'relation':[host,child] if can else None}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('allowed foreign document', solve(['host','d','c',True,False,True,'','Title'+str(N),['a','b','a'],False],), {'id':'host','name':'Title'+str(N),'busy':False,'unavailable':False,'children':['c:a','c:b','c:a'],'relation':['host','c']})
check('same origin no permission', solve(['host','d','c',True,True,False,'','Secret',['a'],False],), {'id':'host','name':'','busy':False,'unavailable':True,'children':[],'relation':None})
check('not loaded', solve(['host','d','c',False,True,True,'Frame','Title',['a'],False],), {'id':'host','name':'Frame','busy':True,'unavailable':False,'children':[],'relation':None})
check('dead host', solve(['host','d','c',True,True,True,'Frame','Title',['a'],True],), None)
check('self document', solve(['host','d','d',True,True,True,'Frame','Title',['a'],False],), {'id':'host','name':'Frame','busy':False,'unavailable':True,'children':[],'relation':None})
check('empty child identifier', solve(['host','d','',True,True,True,'Frame','Title',['a'],False],), {'id':'host','name':'Frame','busy':False,'unavailable':True,'children':[],'relation':None})
check('host filtered', solve(['host','d','c',True,True,True,'Frame','Title',['a','host','b'],False],), {'id':'host','name':'Frame','busy':False,'unavailable':False,'children':['c:a','c:b'],'relation':['host','c']})
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 |
|---|---|---|---|
| allowed foreign document | {'busy': False, 'children': ['c:a', 'c:b', 'c:a'], 'id': 'host', 'name': 'Title1', 'relation': ['host', 'c'], 'unavailable': False} | {'busy': False, 'children': ['c:a', 'c:b', 'c:a'], 'id': 'host', 'name': 'Title1', 'relation': ['host', 'c'], 'unavailable': False} | Passed |
| same origin no permission | {'busy': False, 'children': [], 'id': 'host', 'name': '', 'relation': None, 'unavailable': True} | {'busy': False, 'children': [], 'id': 'host', 'name': '', 'relation': None, 'unavailable': True} | Passed |
| not loaded | {'busy': True, 'children': [], 'id': 'host', 'name': 'Frame', 'relation': None, 'unavailable': False} | {'busy': True, 'children': [], 'id': 'host', 'name': 'Frame', 'relation': None, 'unavailable': False} | Passed |
| dead host | None | None | Passed |
| self document | {'busy': False, 'children': [], 'id': 'host', 'name': 'Frame', 'relation': None, 'unavailable': True} | {'busy': False, 'children': [], 'id': 'host', 'name': 'Frame', 'relation': None, 'unavailable': True} | Passed |
| empty child identifier | {'busy': False, 'children': [], 'id': 'host', 'name': 'Frame', 'relation': None, 'unavailable': True} | {'busy': False, 'children': [], 'id': 'host', 'name': 'Frame', 'relation': None, 'unavailable': True} | Passed |
| host filtered | {'busy': False, 'children': ['c:a', 'c:host', 'c:b'], 'id': 'host', 'name': 'Frame', 'relation': ['host', 'c'], 'unavailable': False} | {'busy': False, 'children': ['c:a', 'c:b'], 'id': 'host', 'name': 'Frame', 'relation': ['host', 'c'], 'unavailable': False} | Failed |
SHA-256 / acad876eb330dd69c7990d7f1f0e3453c7ed9d9cf8ff24627809926551d19f65
HELD IN THE MEMBER ARCHIVE
The verified repair and its recorded checks are member-only.
This mechanism has 7 recorded checks per implementation. The open-access tier publishes the failure and the unsuccessful fix; the repaired source that passes every check, and the observations that prove it, are available to members.
Every case sharing this mechanism uses the same contract and the same repair, so this one record is held back for all of them.
Member access is invitation-based. Sign in with your invited account to inspect the repair.
Sign in to the archive ↗Verification & scope
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.
Observations recorded using Python 3.12.14 at 2026-09-29T14:45:40.110418+00:00.
Case digest / 576c326eea0b1bcd0c81742318e5aa299469dcda68bff29cd100a9a906efe499