FAILURE MAP
← Case archive

FA-22351 / Autocomplete interactions / Open access

Federated suggestion sections: empty recent-suggestions section keeps a dead header · case 01

The local-header completion transition produces an incorrect observable state.

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

ROOT CAUSE

At source-sections/local-header, the implementation evaluates `d['local_title']` instead of preserving the specified completion transition.

VERIFIED REPAIR

Implement the local-header contract using `d['local_title'] if d['local'] else None`.

Unsuccessful approach: The attempted repair uses `None`, which still violates a normal or boundary completion fixture.

Case contract

Local-history and remote suggestions are separate ordered sections. Stable identity includes source namespace. Empty sections have no header; pending remote work does not hide completed local results. Section headers are display rows, never commit candidates.

Why this case matters

Autocomplete couples draft text, suggestion identity and asynchronous presentation; this bounded lifecycle model isolates one observable interaction defect.

1 / The failure

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

N = 1
observations = []
def solve(event, d):
    if event == 'order': return d['local']+d['remote']
    if event == 'identity': return [d['row_source'],d['row_id']]
    if event == 'local-header': return d['local_title']
    if event == 'remote-header': return d['remote_title'] if d['remote'] else None
    if event == 'local-ready': return d['local']
    if event == 'header-commit': return d['row_id'] if d['row_kind']=='option' else None
    if event == 'count': return len(d['local'])+len(d['remote'])
    if event == 'source-empty': return not d['local'] and not d['remote']
    if event == 'remote-marker': return d['remote_pending']
    if event == 'remote-offset': return len(d['local'])+(1 if d['local'] else 0)
    return {'unchanged': True}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
normal = {'local':['x','y'],'remote':['x','z'],'local_title':'Recent','remote_title':'Directory','remote_pending':True,'row_kind':'header','row_source':'remote','row_id':'x','epoch':N}
boundary = {'local':[],'remote':['w'],'local_title':'Recent','remote_title':'Directory','remote_pending':False,'row_kind':'option','row_source':'local','row_id':'','epoch':N}
check('normal order', solve('order', normal), ['x','y','x','z'])
check('boundary order', solve('order', boundary), ['w'])
check('normal identity', solve('identity', normal), ['remote','x'])
check('boundary identity', solve('identity', boundary), ['local',''])
check('normal local-header', solve('local-header', normal), 'Recent')
check('boundary local-header', solve('local-header', boundary), None)
check('normal remote-header', solve('remote-header', normal), 'Directory')
check('boundary remote-header', solve('remote-header', boundary), 'Directory')
check('normal local-ready', solve('local-ready', normal), ['x','y'])
check('boundary local-ready', solve('local-ready', boundary), [])
check('normal header-commit', solve('header-commit', normal), None)
check('boundary header-commit', solve('header-commit', boundary), '')
check('normal count', solve('count', normal), 4)
check('boundary count', solve('count', boundary), 1)
check('normal source-empty', solve('source-empty', normal), False)
check('boundary source-empty', solve('source-empty', boundary), False)
check('normal remote-marker', solve('remote-marker', normal), True)
check('boundary remote-marker', solve('remote-marker', boundary), False)
check('normal remote-offset', solve('remote-offset', normal), 3)
check('boundary remote-offset', solve('remote-offset', boundary), 0)
variant = dict(normal, **{'row_id':'id'+str(N)})
check('variant query or selection payload', solve('identity', variant), ['remote','id'+str(N)])
check('unknown completion event', solve('unrecognized', normal), {'unchanged': 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
normal order['x', 'y', 'x', 'z']['x', 'y', 'x', 'z']Passed
boundary order['w']['w']Passed
normal identity['remote', 'x']['remote', 'x']Passed
boundary identity['local', '']['local', '']Passed
normal local-headerRecentRecentPassed
boundary local-headerRecentNoneFailed
normal remote-headerDirectoryDirectoryPassed
boundary remote-headerDirectoryDirectoryPassed
normal local-ready['x', 'y']['x', 'y']Passed
boundary local-ready[][]Passed
normal header-commitNoneNonePassed
boundary header-commitPassed
normal count44Passed
boundary count11Passed
normal source-emptyFalseFalsePassed
boundary source-emptyFalseFalsePassed
normal remote-markerTrueTruePassed
boundary remote-markerFalseFalsePassed
normal remote-offset33Passed
boundary remote-offset00Passed
variant query or selection payload['remote', 'id1']['remote', 'id1']Passed
unknown completion event{'unchanged': True}{'unchanged': True}Passed

SHA-256 / dd429f54512f581bc221af08d41533697f20130498c1d8efe5fc11f5c91bd5f2

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(event, d):
    if event == 'order': return d['local']+d['remote']
    if event == 'identity': return [d['row_source'],d['row_id']]
    if event == 'local-header': return None
    if event == 'remote-header': return d['remote_title'] if d['remote'] else None
    if event == 'local-ready': return d['local']
    if event == 'header-commit': return d['row_id'] if d['row_kind']=='option' else None
    if event == 'count': return len(d['local'])+len(d['remote'])
    if event == 'source-empty': return not d['local'] and not d['remote']
    if event == 'remote-marker': return d['remote_pending']
    if event == 'remote-offset': return len(d['local'])+(1 if d['local'] else 0)
    return {'unchanged': True}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
normal = {'local':['x','y'],'remote':['x','z'],'local_title':'Recent','remote_title':'Directory','remote_pending':True,'row_kind':'header','row_source':'remote','row_id':'x','epoch':N}
boundary = {'local':[],'remote':['w'],'local_title':'Recent','remote_title':'Directory','remote_pending':False,'row_kind':'option','row_source':'local','row_id':'','epoch':N}
check('normal order', solve('order', normal), ['x','y','x','z'])
check('boundary order', solve('order', boundary), ['w'])
check('normal identity', solve('identity', normal), ['remote','x'])
check('boundary identity', solve('identity', boundary), ['local',''])
check('normal local-header', solve('local-header', normal), 'Recent')
check('boundary local-header', solve('local-header', boundary), None)
check('normal remote-header', solve('remote-header', normal), 'Directory')
check('boundary remote-header', solve('remote-header', boundary), 'Directory')
check('normal local-ready', solve('local-ready', normal), ['x','y'])
check('boundary local-ready', solve('local-ready', boundary), [])
check('normal header-commit', solve('header-commit', normal), None)
check('boundary header-commit', solve('header-commit', boundary), '')
check('normal count', solve('count', normal), 4)
check('boundary count', solve('count', boundary), 1)
check('normal source-empty', solve('source-empty', normal), False)
check('boundary source-empty', solve('source-empty', boundary), False)
check('normal remote-marker', solve('remote-marker', normal), True)
check('boundary remote-marker', solve('remote-marker', boundary), False)
check('normal remote-offset', solve('remote-offset', normal), 3)
check('boundary remote-offset', solve('remote-offset', boundary), 0)
variant = dict(normal, **{'row_id':'id'+str(N)})
check('variant query or selection payload', solve('identity', variant), ['remote','id'+str(N)])
check('unknown completion event', solve('unrecognized', normal), {'unchanged': 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
normal order['x', 'y', 'x', 'z']['x', 'y', 'x', 'z']Passed
boundary order['w']['w']Passed
normal identity['remote', 'x']['remote', 'x']Passed
boundary identity['local', '']['local', '']Passed
normal local-headerNoneRecentFailed
boundary local-headerNoneNonePassed
normal remote-headerDirectoryDirectoryPassed
boundary remote-headerDirectoryDirectoryPassed
normal local-ready['x', 'y']['x', 'y']Passed
boundary local-ready[][]Passed
normal header-commitNoneNonePassed
boundary header-commitPassed
normal count44Passed
boundary count11Passed
normal source-emptyFalseFalsePassed
boundary source-emptyFalseFalsePassed
normal remote-markerTrueTruePassed
boundary remote-markerFalseFalsePassed
normal remote-offset33Passed
boundary remote-offset00Passed
variant query or selection payload['remote', 'id1']['remote', 'id1']Passed
unknown completion event{'unchanged': True}{'unchanged': True}Passed

SHA-256 / f9fda7a9c85c35b3e4918dec650528d2411bc3a3218179799942f9c9d2e3f657

3 / The verified repair

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

N = 1
observations = []
def solve(event, d):
    if event == 'order': return d['local']+d['remote']
    if event == 'identity': return [d['row_source'],d['row_id']]
    if event == 'local-header': return d['local_title'] if d['local'] else None
    if event == 'remote-header': return d['remote_title'] if d['remote'] else None
    if event == 'local-ready': return d['local']
    if event == 'header-commit': return d['row_id'] if d['row_kind']=='option' else None
    if event == 'count': return len(d['local'])+len(d['remote'])
    if event == 'source-empty': return not d['local'] and not d['remote']
    if event == 'remote-marker': return d['remote_pending']
    if event == 'remote-offset': return len(d['local'])+(1 if d['local'] else 0)
    return {'unchanged': True}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
normal = {'local':['x','y'],'remote':['x','z'],'local_title':'Recent','remote_title':'Directory','remote_pending':True,'row_kind':'header','row_source':'remote','row_id':'x','epoch':N}
boundary = {'local':[],'remote':['w'],'local_title':'Recent','remote_title':'Directory','remote_pending':False,'row_kind':'option','row_source':'local','row_id':'','epoch':N}
check('normal order', solve('order', normal), ['x','y','x','z'])
check('boundary order', solve('order', boundary), ['w'])
check('normal identity', solve('identity', normal), ['remote','x'])
check('boundary identity', solve('identity', boundary), ['local',''])
check('normal local-header', solve('local-header', normal), 'Recent')
check('boundary local-header', solve('local-header', boundary), None)
check('normal remote-header', solve('remote-header', normal), 'Directory')
check('boundary remote-header', solve('remote-header', boundary), 'Directory')
check('normal local-ready', solve('local-ready', normal), ['x','y'])
check('boundary local-ready', solve('local-ready', boundary), [])
check('normal header-commit', solve('header-commit', normal), None)
check('boundary header-commit', solve('header-commit', boundary), '')
check('normal count', solve('count', normal), 4)
check('boundary count', solve('count', boundary), 1)
check('normal source-empty', solve('source-empty', normal), False)
check('boundary source-empty', solve('source-empty', boundary), False)
check('normal remote-marker', solve('remote-marker', normal), True)
check('boundary remote-marker', solve('remote-marker', boundary), False)
check('normal remote-offset', solve('remote-offset', normal), 3)
check('boundary remote-offset', solve('remote-offset', boundary), 0)
variant = dict(normal, **{'row_id':'id'+str(N)})
check('variant query or selection payload', solve('identity', variant), ['remote','id'+str(N)])
check('unknown completion event', solve('unrecognized', normal), {'unchanged': 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
normal order['x', 'y', 'x', 'z']['x', 'y', 'x', 'z']Passed
boundary order['w']['w']Passed
normal identity['remote', 'x']['remote', 'x']Passed
boundary identity['local', '']['local', '']Passed
normal local-headerRecentRecentPassed
boundary local-headerNoneNonePassed
normal remote-headerDirectoryDirectoryPassed
boundary remote-headerDirectoryDirectoryPassed
normal local-ready['x', 'y']['x', 'y']Passed
boundary local-ready[][]Passed
normal header-commitNoneNonePassed
boundary header-commitPassed
normal count44Passed
boundary count11Passed
normal source-emptyFalseFalsePassed
boundary source-emptyFalseFalsePassed
normal remote-markerTrueTruePassed
boundary remote-markerFalseFalsePassed
normal remote-offset33Passed
boundary remote-offset00Passed
variant query or selection payload['remote', 'id1']['remote', 'id1']Passed
unknown completion event{'unchanged': True}{'unchanged': True}Passed

SHA-256 / 4d1de8bb97d7fbc80ea9ad117718c4dea9fb70b183c783c6c9a4e09af2da2340

Verification & scope

Stipulated deterministic widget transition model; inputs are validated snapshots. It does not model browser event dispatch, network transport, or linguistic standards. 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:40:37.608583+00:00.

Case digest / c13f4dd18faf459eb7971be3db9c177b97b9740cab1fde97124bf1688710113d