FAILURE MAP
← Case archive

FA-53516 / Accessibility interaction semantics / Open access

Revealed values lose their protected semantic flag · case 01

Revealed values lose their protected semantic flag.

Verified by executionVariant 1 · 8 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The sensitivity state decision in the protected value adapter violates its declared contract.

VERIFIED REPAIR

Apply the exact contract at the sensitivity state decision: 'protected':protected

Unsuccessful approach: The local repair substitutes 'protected':protected and not permission but still mishandles the regression fixtures.

Case contract

Input [raw,protected,reveal,permission,readonly,multiline,max_length,placeholder]. Raw is a string; max_length is None or nonnegative. Normalize CRLF before applying codepoint cap. In single line replace LF with space. Protected text reveals only when reveal and permission; otherwise one bullet per capped codepoint excluding LF, which is retained. Empty values retain empty text and expose placeholder separately. Return {text,placeholder,length,editable,protected}; length is the length after cap, editable is not readonly, protected reports input flag even when revealed.

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):
    raw,protected,reveal,permission,readonly,multiline,cap,placeholder = data
    value = raw.replace('\r\n','\n')
    if not multiline: value = value.replace('\n',' ')
    if cap is not None: value = value[:cap]
    length = len(value)
    if protected and not (reveal and permission):
        value = ''.join('\n' if c == '\n' else '•' for c in value)
    return {'text':value,'placeholder':placeholder if length == 0 else '', 'length':length,'editable':not readonly,'protected':protected and not reveal}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('redacted multiline', solve(['A'*N+'\r\nB',True,False,True,False,True,None,'hint'],), {'text':'•'*N+'\n•','placeholder':'','length':N+2,'editable':True,'protected':True})
check('reveal lacks permission', solve(['A'*N,True,True,False,False,False,None,'hint'],), {'text':'•'*N,'placeholder':'','length':N,'editable':True,'protected':True})
check('permission lacks reveal', solve(['A'*N,True,False,True,False,False,None,'hint'],), {'text':'•'*N,'placeholder':'','length':N,'editable':True,'protected':True})
check('authorized reveal readonly', solve(['secret',True,True,True,True,False,None,'hint'],), {'text':'secret','placeholder':'','length':6,'editable':False,'protected':True})
check('single line cap', solve(['A\r\nBC',False,False,False,False,False,3,'hint'],), {'text':'A B','placeholder':'','length':3,'editable':True,'protected':False})
check('zero cap placeholder', solve(['secret',True,False,False,False,False,0,'hint'],), {'text':'','placeholder':'hint','length':0,'editable':True,'protected':True})
check('empty value', solve(['',False,False,False,True,False,None,'hint'],), {'text':'','placeholder':'hint','length':0,'editable':False,'protected':False})
check('unicode codepoints', solve(['😀é',True,False,False,False,True,None,''],), {'text':'••','placeholder':'','length':2,'editable':True,'protected':True})
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 fixtureActualExpectedOutcome
redacted multiline{'editable': True, 'length': 3, 'placeholder': '', 'protected': True, 'text': '•\n•'}{'editable': True, 'length': 3, 'placeholder': '', 'protected': True, 'text': '•\n•'}Passed
reveal lacks permission{'editable': True, 'length': 1, 'placeholder': '', 'protected': False, 'text': '•'}{'editable': True, 'length': 1, 'placeholder': '', 'protected': True, 'text': '•'}Failed
permission lacks reveal{'editable': True, 'length': 1, 'placeholder': '', 'protected': True, 'text': '•'}{'editable': True, 'length': 1, 'placeholder': '', 'protected': True, 'text': '•'}Passed
authorized reveal readonly{'editable': False, 'length': 6, 'placeholder': '', 'protected': False, 'text': 'secret'}{'editable': False, 'length': 6, 'placeholder': '', 'protected': True, 'text': 'secret'}Failed
single line cap{'editable': True, 'length': 3, 'placeholder': '', 'protected': False, 'text': 'A B'}{'editable': True, 'length': 3, 'placeholder': '', 'protected': False, 'text': 'A B'}Passed
zero cap placeholder{'editable': True, 'length': 0, 'placeholder': 'hint', 'protected': True, 'text': ''}{'editable': True, 'length': 0, 'placeholder': 'hint', 'protected': True, 'text': ''}Passed
empty value{'editable': False, 'length': 0, 'placeholder': 'hint', 'protected': False, 'text': ''}{'editable': False, 'length': 0, 'placeholder': 'hint', 'protected': False, 'text': ''}Passed
unicode codepoints{'editable': True, 'length': 2, 'placeholder': '', 'protected': True, 'text': '••'}{'editable': True, 'length': 2, 'placeholder': '', 'protected': True, 'text': '••'}Passed

SHA-256 / ab36385f9064573fcc35faa653fb3ed47fc688aaab046ebfa194cd967ecd85a9

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(data):
    raw,protected,reveal,permission,readonly,multiline,cap,placeholder = data
    value = raw.replace('\r\n','\n')
    if not multiline: value = value.replace('\n',' ')
    if cap is not None: value = value[:cap]
    length = len(value)
    if protected and not (reveal and permission):
        value = ''.join('\n' if c == '\n' else '•' for c in value)
    return {'text':value,'placeholder':placeholder if length == 0 else '', 'length':length,'editable':not readonly,'protected':protected and not permission}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('redacted multiline', solve(['A'*N+'\r\nB',True,False,True,False,True,None,'hint'],), {'text':'•'*N+'\n•','placeholder':'','length':N+2,'editable':True,'protected':True})
check('reveal lacks permission', solve(['A'*N,True,True,False,False,False,None,'hint'],), {'text':'•'*N,'placeholder':'','length':N,'editable':True,'protected':True})
check('permission lacks reveal', solve(['A'*N,True,False,True,False,False,None,'hint'],), {'text':'•'*N,'placeholder':'','length':N,'editable':True,'protected':True})
check('authorized reveal readonly', solve(['secret',True,True,True,True,False,None,'hint'],), {'text':'secret','placeholder':'','length':6,'editable':False,'protected':True})
check('single line cap', solve(['A\r\nBC',False,False,False,False,False,3,'hint'],), {'text':'A B','placeholder':'','length':3,'editable':True,'protected':False})
check('zero cap placeholder', solve(['secret',True,False,False,False,False,0,'hint'],), {'text':'','placeholder':'hint','length':0,'editable':True,'protected':True})
check('empty value', solve(['',False,False,False,True,False,None,'hint'],), {'text':'','placeholder':'hint','length':0,'editable':False,'protected':False})
check('unicode codepoints', solve(['😀é',True,False,False,False,True,None,''],), {'text':'••','placeholder':'','length':2,'editable':True,'protected':True})
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 fixtureActualExpectedOutcome
redacted multiline{'editable': True, 'length': 3, 'placeholder': '', 'protected': False, 'text': '•\n•'}{'editable': True, 'length': 3, 'placeholder': '', 'protected': True, 'text': '•\n•'}Failed
reveal lacks permission{'editable': True, 'length': 1, 'placeholder': '', 'protected': True, 'text': '•'}{'editable': True, 'length': 1, 'placeholder': '', 'protected': True, 'text': '•'}Passed
permission lacks reveal{'editable': True, 'length': 1, 'placeholder': '', 'protected': False, 'text': '•'}{'editable': True, 'length': 1, 'placeholder': '', 'protected': True, 'text': '•'}Failed
authorized reveal readonly{'editable': False, 'length': 6, 'placeholder': '', 'protected': False, 'text': 'secret'}{'editable': False, 'length': 6, 'placeholder': '', 'protected': True, 'text': 'secret'}Failed
single line cap{'editable': True, 'length': 3, 'placeholder': '', 'protected': False, 'text': 'A B'}{'editable': True, 'length': 3, 'placeholder': '', 'protected': False, 'text': 'A B'}Passed
zero cap placeholder{'editable': True, 'length': 0, 'placeholder': 'hint', 'protected': True, 'text': ''}{'editable': True, 'length': 0, 'placeholder': 'hint', 'protected': True, 'text': ''}Passed
empty value{'editable': False, 'length': 0, 'placeholder': 'hint', 'protected': False, 'text': ''}{'editable': False, 'length': 0, 'placeholder': 'hint', 'protected': False, 'text': ''}Passed
unicode codepoints{'editable': True, 'length': 2, 'placeholder': '', 'protected': True, 'text': '••'}{'editable': True, 'length': 2, 'placeholder': '', 'protected': True, 'text': '••'}Passed

SHA-256 / 13878f46c1898318b775b4766d3514309ac310efe1813f7128c57bb29899e76d

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(data):
    raw,protected,reveal,permission,readonly,multiline,cap,placeholder = data
    value = raw.replace('\r\n','\n')
    if not multiline: value = value.replace('\n',' ')
    if cap is not None: value = value[:cap]
    length = len(value)
    if protected and not (reveal and permission):
        value = ''.join('\n' if c == '\n' else '•' for c in value)
    return {'text':value,'placeholder':placeholder if length == 0 else '', 'length':length,'editable':not readonly,'protected':protected}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('redacted multiline', solve(['A'*N+'\r\nB',True,False,True,False,True,None,'hint'],), {'text':'•'*N+'\n•','placeholder':'','length':N+2,'editable':True,'protected':True})
check('reveal lacks permission', solve(['A'*N,True,True,False,False,False,None,'hint'],), {'text':'•'*N,'placeholder':'','length':N,'editable':True,'protected':True})
check('permission lacks reveal', solve(['A'*N,True,False,True,False,False,None,'hint'],), {'text':'•'*N,'placeholder':'','length':N,'editable':True,'protected':True})
check('authorized reveal readonly', solve(['secret',True,True,True,True,False,None,'hint'],), {'text':'secret','placeholder':'','length':6,'editable':False,'protected':True})
check('single line cap', solve(['A\r\nBC',False,False,False,False,False,3,'hint'],), {'text':'A B','placeholder':'','length':3,'editable':True,'protected':False})
check('zero cap placeholder', solve(['secret',True,False,False,False,False,0,'hint'],), {'text':'','placeholder':'hint','length':0,'editable':True,'protected':True})
check('empty value', solve(['',False,False,False,True,False,None,'hint'],), {'text':'','placeholder':'hint','length':0,'editable':False,'protected':False})
check('unicode codepoints', solve(['😀é',True,False,False,False,True,None,''],), {'text':'••','placeholder':'','length':2,'editable':True,'protected':True})
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 fixtureActualExpectedOutcome
redacted multiline{'editable': True, 'length': 3, 'placeholder': '', 'protected': True, 'text': '•\n•'}{'editable': True, 'length': 3, 'placeholder': '', 'protected': True, 'text': '•\n•'}Passed
reveal lacks permission{'editable': True, 'length': 1, 'placeholder': '', 'protected': True, 'text': '•'}{'editable': True, 'length': 1, 'placeholder': '', 'protected': True, 'text': '•'}Passed
permission lacks reveal{'editable': True, 'length': 1, 'placeholder': '', 'protected': True, 'text': '•'}{'editable': True, 'length': 1, 'placeholder': '', 'protected': True, 'text': '•'}Passed
authorized reveal readonly{'editable': False, 'length': 6, 'placeholder': '', 'protected': True, 'text': 'secret'}{'editable': False, 'length': 6, 'placeholder': '', 'protected': True, 'text': 'secret'}Passed
single line cap{'editable': True, 'length': 3, 'placeholder': '', 'protected': False, 'text': 'A B'}{'editable': True, 'length': 3, 'placeholder': '', 'protected': False, 'text': 'A B'}Passed
zero cap placeholder{'editable': True, 'length': 0, 'placeholder': 'hint', 'protected': True, 'text': ''}{'editable': True, 'length': 0, 'placeholder': 'hint', 'protected': True, 'text': ''}Passed
empty value{'editable': False, 'length': 0, 'placeholder': 'hint', 'protected': False, 'text': ''}{'editable': False, 'length': 0, 'placeholder': 'hint', 'protected': False, 'text': ''}Passed
unicode codepoints{'editable': True, 'length': 2, 'placeholder': '', 'protected': True, 'text': '••'}{'editable': True, 'length': 2, 'placeholder': '', 'protected': True, 'text': '••'}Passed

SHA-256 / f80a6119d0415c2d76ec2ae33a253e3bcf3ebc8d83969b9074e56203f0f8ca45

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:39.776231+00:00.

Case digest / 774fb68264c156250bb8fcd877b3b8063aaacebcb12fdf8418cb72a81d267ea4