FA-22356 / Autocomplete interactions / Open access
Federated suggestion sections: remote section borrows the recent-history title · case 01
The remote-header completion transition produces an incorrect observable state.
ROOT CAUSE
At source-sections/remote-header, the implementation evaluates `d['local_title']` instead of preserving the specified completion transition.
VERIFIED REPAIR
Implement the remote-header contract using `d['remote_title'] if d['remote'] 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 d['local'] else None
if event == 'remote-header': return d['local_title']
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 | Recent | Directory | Failed |
| boundary remote-header | Recent | Directory | Failed |
| 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 / d7156511e2d0320b7cfc39f49f96ba2ada98b486b0ccd9a567134ed907246172
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 d['local_title'] if d['local'] else None
if event == 'remote-header': return 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 | None | Directory | Failed |
| boundary remote-header | None | Directory | Failed |
| 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 / cac4ab352d6f4212918eae1cb7a18199c1019ecd366af29b3014e74d1be4dae5
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.653152+00:00.
Case digest / 55bf40d8bc00dc17cb328f36e67aedfac41d04068b845a18c0f63648328368d6