FA-22346 / Autocomplete interactions / Open access
Federated suggestion sections: same identifier from different completion sources collides · case 01
The identity completion transition produces an incorrect observable state.
ROOT CAUSE
At source-sections/identity, the implementation evaluates `[d['row_id']]` instead of preserving the specified completion transition.
VERIFIED REPAIR
Implement the identity contract using `[d['row_source'],d['row_id']]`.
Unsuccessful approach: The attempted repair uses `['remote',d['row_id']]`, 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_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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| normal order | ['x', 'y', 'x', 'z'] | ['x', 'y', 'x', 'z'] | Passed |
| boundary order | ['w'] | ['w'] | Passed |
| normal identity | ['x'] | ['remote', 'x'] | Failed |
| boundary identity | [''] | ['local', ''] | Failed |
| normal local-header | Recent | Recent | Passed |
| boundary local-header | None | None | Passed |
| normal remote-header | Directory | Directory | Passed |
| boundary remote-header | Directory | Directory | Passed |
| normal local-ready | ['x', 'y'] | ['x', 'y'] | Passed |
| boundary local-ready | [] | [] | Passed |
| normal header-commit | None | None | Passed |
| boundary header-commit | | | Passed |
| normal count | 4 | 4 | Passed |
| boundary count | 1 | 1 | Passed |
| normal source-empty | False | False | Passed |
| boundary source-empty | False | False | Passed |
| normal remote-marker | True | True | Passed |
| boundary remote-marker | False | False | Passed |
| normal remote-offset | 3 | 3 | Passed |
| boundary remote-offset | 0 | 0 | Passed |
| variant query or selection payload | ['id1'] | ['remote', 'id1'] | Failed |
| unknown completion event | {'unchanged': True} | {'unchanged': True} | Passed |
SHA-256 / e8b8fb4b461bd9630ca08ded5d84c55810365414a72ffc53f21b8f50f9dd9039
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 ['remote',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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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 | ['remote', ''] | ['local', ''] | Failed |
| normal local-header | Recent | Recent | Passed |
| boundary local-header | None | None | Passed |
| normal remote-header | Directory | Directory | Passed |
| boundary remote-header | Directory | Directory | Passed |
| normal local-ready | ['x', 'y'] | ['x', 'y'] | Passed |
| boundary local-ready | [] | [] | Passed |
| normal header-commit | None | None | Passed |
| boundary header-commit | | | Passed |
| normal count | 4 | 4 | Passed |
| boundary count | 1 | 1 | Passed |
| normal source-empty | False | False | Passed |
| boundary source-empty | False | False | Passed |
| normal remote-marker | True | True | Passed |
| boundary remote-marker | False | False | Passed |
| normal remote-offset | 3 | 3 | Passed |
| boundary remote-offset | 0 | 0 | Passed |
| variant query or selection payload | ['remote', 'id1'] | ['remote', 'id1'] | Passed |
| unknown completion event | {'unchanged': True} | {'unchanged': True} | Passed |
SHA-256 / a8577ddaac32cac62b52599005fd4db1762475e2bb3bfce2e261d77aae033d67
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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-header | Recent | Recent | Passed |
| boundary local-header | None | None | Passed |
| normal remote-header | Directory | Directory | Passed |
| boundary remote-header | Directory | Directory | Passed |
| normal local-ready | ['x', 'y'] | ['x', 'y'] | Passed |
| boundary local-ready | [] | [] | Passed |
| normal header-commit | None | None | Passed |
| boundary header-commit | | | Passed |
| normal count | 4 | 4 | Passed |
| boundary count | 1 | 1 | Passed |
| normal source-empty | False | False | Passed |
| boundary source-empty | False | False | Passed |
| normal remote-marker | True | True | Passed |
| boundary remote-marker | False | False | Passed |
| normal remote-offset | 3 | 3 | Passed |
| boundary remote-offset | 0 | 0 | Passed |
| 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.605532+00:00.
Case digest / b69975566de5e31515bae1b87ff43de7c764f33037f6ed2c2b5dac792f326140