FA-53731 / Accessibility interaction semantics / Open access
An intentionally blank action translation falls back to authored text · case 01
An intentionally blank action translation falls back to authored text.
ROOT CAUSE
The locale empty decision in the action descriptors adapter violates its declared contract.
THE FAILURE
The locale empty decision in the action descriptors adapter violates its declared contract.
Unsuccessful approach: The local repair substitutes overrides[ident] if overrides.get(ident) else (label if label else kind) but still mishandles the regression fixtures.
Case contract
Input actions [id,label,enabled,exposed,requires_confirmation,kind,priority], plus permission and locale label overrides. Omit unknown kinds (only invoke, expand, collapse, increment, decrement), disabled or unexposed entries. Destructive confirmation-requiring actions need permission. First eligible occurrence of an ID wins; sort by ascending priority preserving ties. Label is override if key exists (including empty), else authored label, else kind. Return [id,label,kind,requires_confirmation]. This only describes platform actions and never activates them.
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):
actions,permission,overrides = data
seen = set()
rows = []
for ident,label,enabled,exposed,confirm,kind,priority in actions:
if kind not in {'invoke','expand','collapse','increment','decrement'}: continue
if not enabled: continue
if not exposed: continue
if confirm and not permission: continue
if ident in seen: continue
seen.add(ident)
name = overrides.get(ident) or label or kind
rows.append((priority,[ident,name,kind,confirm]))
return [row for priority,row in sorted(rows,key=lambda item:item[0])]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('ordered descriptor set', solve([[['x','Open',True,True,False,'invoke',N+2],['y','',True,True,False,'expand',N],['z','Close',True,True,True,'collapse',N+1]],True,{'x':'Localized'+str(N)}],), [['y','expand','expand',False],['z','Close','collapse',True],['x','Localized'+str(N),'invoke',False]])
check('disabled entry does not reserve ID', solve([[['x','Bad',False,True,False,'invoke',0],['x','Good',True,True,False,'invoke',1]],False,{}],), [['x','Good','invoke',False]])
check('hidden and unknown', solve([[['x','X',True,False,False,'invoke',0],['y','Y',True,True,False,'erase',1]],True,{}],), [])
check('confirmation unavailable', solve([[['x','Delete',True,True,True,'invoke',0]],False,{}],), [])
check('empty override intentional', solve([[['x','Original',True,True,False,'invoke',0]],False,{'x':''}],), [['x','','invoke',False]])
check('dedupe first and stable ties', solve([[['x','First',True,True,False,'invoke',N],['y','Second',True,True,False,'expand',N],['x','Third',True,True,False,'collapse',0]],False,{}],), [['x','First','invoke',False],['y','Second','expand',False]])
check('empty', solve([[],False,{}],), [])
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 |
|---|---|---|---|
| ordered descriptor set | [['y', 'expand', 'expand', False], ['z', 'Close', 'collapse', True], ['x', 'Localized1', 'invoke', False]] | [['y', 'expand', 'expand', False], ['z', 'Close', 'collapse', True], ['x', 'Localized1', 'invoke', False]] | Passed |
| disabled entry does not reserve ID | [['x', 'Good', 'invoke', False]] | [['x', 'Good', 'invoke', False]] | Passed |
| hidden and unknown | [] | [] | Passed |
| confirmation unavailable | [] | [] | Passed |
| empty override intentional | [['x', 'Original', 'invoke', False]] | [['x', '', 'invoke', False]] | Failed |
| dedupe first and stable ties | [['x', 'First', 'invoke', False], ['y', 'Second', 'expand', False]] | [['x', 'First', 'invoke', False], ['y', 'Second', 'expand', False]] | Passed |
| empty | [] | [] | Passed |
SHA-256 / bcbf48b23e5d95105d8bc0429336c289cc740e8af40b7a0b0e191bf11192b6fb
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(data):
actions,permission,overrides = data
seen = set()
rows = []
for ident,label,enabled,exposed,confirm,kind,priority in actions:
if kind not in {'invoke','expand','collapse','increment','decrement'}: continue
if not enabled: continue
if not exposed: continue
if confirm and not permission: continue
if ident in seen: continue
seen.add(ident)
name = overrides[ident] if overrides.get(ident) else (label if label else kind)
rows.append((priority,[ident,name,kind,confirm]))
return [row for priority,row in sorted(rows,key=lambda item:item[0])]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('ordered descriptor set', solve([[['x','Open',True,True,False,'invoke',N+2],['y','',True,True,False,'expand',N],['z','Close',True,True,True,'collapse',N+1]],True,{'x':'Localized'+str(N)}],), [['y','expand','expand',False],['z','Close','collapse',True],['x','Localized'+str(N),'invoke',False]])
check('disabled entry does not reserve ID', solve([[['x','Bad',False,True,False,'invoke',0],['x','Good',True,True,False,'invoke',1]],False,{}],), [['x','Good','invoke',False]])
check('hidden and unknown', solve([[['x','X',True,False,False,'invoke',0],['y','Y',True,True,False,'erase',1]],True,{}],), [])
check('confirmation unavailable', solve([[['x','Delete',True,True,True,'invoke',0]],False,{}],), [])
check('empty override intentional', solve([[['x','Original',True,True,False,'invoke',0]],False,{'x':''}],), [['x','','invoke',False]])
check('dedupe first and stable ties', solve([[['x','First',True,True,False,'invoke',N],['y','Second',True,True,False,'expand',N],['x','Third',True,True,False,'collapse',0]],False,{}],), [['x','First','invoke',False],['y','Second','expand',False]])
check('empty', solve([[],False,{}],), [])
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 |
|---|---|---|---|
| ordered descriptor set | [['y', 'expand', 'expand', False], ['z', 'Close', 'collapse', True], ['x', 'Localized1', 'invoke', False]] | [['y', 'expand', 'expand', False], ['z', 'Close', 'collapse', True], ['x', 'Localized1', 'invoke', False]] | Passed |
| disabled entry does not reserve ID | [['x', 'Good', 'invoke', False]] | [['x', 'Good', 'invoke', False]] | Passed |
| hidden and unknown | [] | [] | Passed |
| confirmation unavailable | [] | [] | Passed |
| empty override intentional | [['x', 'Original', 'invoke', False]] | [['x', '', 'invoke', False]] | Failed |
| dedupe first and stable ties | [['x', 'First', 'invoke', False], ['y', 'Second', 'expand', False]] | [['x', 'First', 'invoke', False], ['y', 'Second', 'expand', False]] | Passed |
| empty | [] | [] | Passed |
SHA-256 / aa09bb5459db006b35677d319f1fa05167c39e1725878a977e512f4ded3ac923
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:41.926072+00:00.
Case digest / b8c168b7582ff65232c1c7519e0c4cb899eb2483329f2866dbabd8c16619f18e