{"abstract":"Clear erases query text but retains the submitted value.","category":"Autocomplete interactions","checks":9,"contract":"Escape discards query but preserves committed value; Enter commits only an existing active option in an open popup; Tab closes without commit; Clear resets both; typing opens suggestions.","evaluation_group":"xi-combobox","failed_approach":"Clearing the value without query leaves stale visible text.","family":"xi-combobox-clear","id":"FA-8146","implementations":{"attempt":{"sha256":"8c958852ef6fdd6ef98f19143a9989674c8674404c4d5fa6de0241277d09260e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(options, active, value, query, opened, key):\n    if key == 'Escape': return (value, '', False)\n    if key == 'Enter' and opened and active in options: return (active, query, False)\n    if key == 'Tab': return (value, query, False)\n    if key == 'Clear': return (None, query, opened)\n    if key == 'Input': return (value, query, True)\n    return (value, query, opened)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('escape', solve(['a','b'], 'b', 'a', 'b', True, 'Escape'), ('a', '', False))\ncheck('closed enter', solve(['a','b'], 'b', 'a', 'b', False, 'Enter'), ('a', 'b', False))\ncheck('removed active', solve(['a'], 'b', 'a', 'b', True, 'Enter'), ('a', 'b', True))\ncheck('commit', solve(['a','b'], 'b', 'a', 'b', True, 'Enter'), ('b', 'b', False))\ncheck('tab', solve(['a','b'], 'b', 'a', 'b', True, 'Tab'), ('a', 'b', False))\ncheck('clear', solve(['a'], 'a', 'a', 'a', True, 'Clear'), (None, '', True))\ncheck('typing', solve(['a'], 'a', 'a', 'b', False, 'Input'), ('a', 'b', True))\ncheck('parameterized suggestion', solve(list(range(N+1)), N, 0, str(N), True, 'Enter'), (N,str(N),False))\nfor repetition in range(N):\n    check('repeat typing', solve(['a'], 'a', 'a', 'b', False, 'Input'), ('a', 'b', True))\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"b8264675cc63cdf648df3d861aa3179f2425a542fd71e9ecfceb819f88ae95aa","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(options, active, value, query, opened, key):\n    if key == 'Escape': return (value, '', False)\n    if key == 'Enter' and opened and active in options: return (active, query, False)\n    if key == 'Tab': return (value, query, False)\n    if key == 'Clear': return (value, '', opened)\n    if key == 'Input': return (value, query, True)\n    return (value, query, opened)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('escape', solve(['a','b'], 'b', 'a', 'b', True, 'Escape'), ('a', '', False))\ncheck('closed enter', solve(['a','b'], 'b', 'a', 'b', False, 'Enter'), ('a', 'b', False))\ncheck('removed active', solve(['a'], 'b', 'a', 'b', True, 'Enter'), ('a', 'b', True))\ncheck('commit', solve(['a','b'], 'b', 'a', 'b', True, 'Enter'), ('b', 'b', False))\ncheck('tab', solve(['a','b'], 'b', 'a', 'b', True, 'Tab'), ('a', 'b', False))\ncheck('clear', solve(['a'], 'a', 'a', 'a', True, 'Clear'), (None, '', True))\ncheck('typing', solve(['a'], 'a', 'a', 'b', False, 'Input'), ('a', 'b', True))\ncheck('parameterized suggestion', solve(list(range(N+1)), N, 0, str(N), True, 'Enter'), (N,str(N),False))\nfor repetition in range(N):\n    check('repeat typing', solve(['a'], 'a', 'a', 'b', False, 'Input'), ('a', 'b', True))\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"27fd573a100cd9f334d842986b2fda43037577f50f135b310d544acb9f6e7cab","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(options, active, value, query, opened, key):\n    if key == 'Escape': return (value, '', False)\n    if key == 'Enter' and opened and active in options: return (active, query, False)\n    if key == 'Tab': return (value, query, False)\n    if key == 'Clear': return (None, '', opened)\n    if key == 'Input': return (value, query, True)\n    return (value, query, opened)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('escape', solve(['a','b'], 'b', 'a', 'b', True, 'Escape'), ('a', '', False))\ncheck('closed enter', solve(['a','b'], 'b', 'a', 'b', False, 'Enter'), ('a', 'b', False))\ncheck('removed active', solve(['a'], 'b', 'a', 'b', True, 'Enter'), ('a', 'b', True))\ncheck('commit', solve(['a','b'], 'b', 'a', 'b', True, 'Enter'), ('b', 'b', False))\ncheck('tab', solve(['a','b'], 'b', 'a', 'b', True, 'Tab'), ('a', 'b', False))\ncheck('clear', solve(['a'], 'a', 'a', 'a', True, 'Clear'), (None, '', True))\ncheck('typing', solve(['a'], 'a', 'a', 'b', False, 'Input'), ('a', 'b', True))\ncheck('parameterized suggestion', solve(list(range(N+1)), N, 0, str(N), True, 'Enter'), (N,str(N),False))\nfor repetition in range(N):\n    check('repeat typing', solve(['a'], 'a', 'a', 'b', False, 'Input'), ('a', 'b', True))\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":" 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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"xi-combobox-clear","generated_at":"2026-09-29T14:38:18.887812+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A deterministic model of combobox keyboard commit; this isolates one interface invariant without requiring a browser.","repair":"Implement the clear operation as `(None, '', opened)`.","root_cause":"The clear operation uses `(value, '', opened)` where the contract requires `(None, '', opened)`.","sha256":"56d1f24be56ce194d9b8744c74d7c1aa0ee55d30e1f08908af46e370ecc7db2e","title":"Combobox keyboard commit: Clear erases query text but retains the submitted value · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":74.078,"exit_code":1,"observations":[{"actual":["a","",false],"check":"escape","expected":["a","",false],"passed":true},{"actual":["a","b",false],"check":"closed enter","expected":["a","b",false],"passed":true},{"actual":["a","b",true],"check":"removed active","expected":["a","b",true],"passed":true},{"actual":["b","b",false],"check":"commit","expected":["b","b",false],"passed":true},{"actual":["a","b",false],"check":"tab","expected":["a","b",false],"passed":true},{"actual":[null,"a",true],"check":"clear","expected":[null,"",true],"passed":false},{"actual":["a","b",true],"check":"typing","expected":["a","b",true],"passed":true},{"actual":[1,"1",false],"check":"parameterized suggestion","expected":[1,"1",false],"passed":true},{"actual":["a","b",true],"check":"repeat typing","expected":["a","b",true],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"escape\", \"actual\": [\"a\", \"\", false], \"expected\": [\"a\", \"\", false], \"passed\": true}, {\"check\": \"closed enter\", \"actual\": [\"a\", \"b\", false], \"expected\": [\"a\", \"b\", false], \"passed\": true}, {\"check\": \"removed active\", \"actual\": [\"a\", \"b\", true], \"expected\": [\"a\", \"b\", true], \"passed\": true}, {\"check\": \"commit\", \"actual\": [\"b\", \"b\", false], \"expected\": [\"b\", \"b\", false], \"passed\": true}, {\"check\": \"tab\", \"actual\": [\"a\", \"b\", false], \"expected\": [\"a\", \"b\", false], \"passed\": true}, {\"check\": \"clear\", \"actual\": [null, \"a\", true], \"expected\": [null, \"\", true], \"passed\": false}, {\"check\": \"typing\", \"actual\": [\"a\", \"b\", true], \"expected\": [\"a\", \"b\", true], \"passed\": true}, {\"check\": \"parameterized suggestion\", \"actual\": [1, \"1\", false], \"expected\": [1, \"1\", false], \"passed\": true}, {\"check\": \"repeat typing\", \"actual\": [\"a\", \"b\", true], \"expected\": [\"a\", \"b\", true], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":37.538,"exit_code":1,"observations":[{"actual":["a","",false],"check":"escape","expected":["a","",false],"passed":true},{"actual":["a","b",false],"check":"closed enter","expected":["a","b",false],"passed":true},{"actual":["a","b",true],"check":"removed active","expected":["a","b",true],"passed":true},{"actual":["b","b",false],"check":"commit","expected":["b","b",false],"passed":true},{"actual":["a","b",false],"check":"tab","expected":["a","b",false],"passed":true},{"actual":["a","",true],"check":"clear","expected":[null,"",true],"passed":false},{"actual":["a","b",true],"check":"typing","expected":["a","b",true],"passed":true},{"actual":[1,"1",false],"check":"parameterized suggestion","expected":[1,"1",false],"passed":true},{"actual":["a","b",true],"check":"repeat typing","expected":["a","b",true],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"escape\", \"actual\": [\"a\", \"\", false], \"expected\": [\"a\", \"\", false], \"passed\": true}, {\"check\": \"closed enter\", \"actual\": [\"a\", \"b\", false], \"expected\": [\"a\", \"b\", false], \"passed\": true}, {\"check\": \"removed active\", \"actual\": [\"a\", \"b\", true], \"expected\": [\"a\", \"b\", true], \"passed\": true}, {\"check\": \"commit\", \"actual\": [\"b\", \"b\", false], \"expected\": [\"b\", \"b\", false], \"passed\": true}, {\"check\": \"tab\", \"actual\": [\"a\", \"b\", false], \"expected\": [\"a\", \"b\", false], \"passed\": true}, {\"check\": \"clear\", \"actual\": [\"a\", \"\", true], \"expected\": [null, \"\", true], \"passed\": false}, {\"check\": \"typing\", \"actual\": [\"a\", \"b\", true], \"expected\": [\"a\", \"b\", true], \"passed\": true}, {\"check\": \"parameterized suggestion\", \"actual\": [1, \"1\", false], \"expected\": [1, \"1\", false], \"passed\": true}, {\"check\": \"repeat typing\", \"actual\": [\"a\", \"b\", true], \"expected\": [\"a\", \"b\", true], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":63.163,"exit_code":0,"observations":[{"actual":["a","",false],"check":"escape","expected":["a","",false],"passed":true},{"actual":["a","b",false],"check":"closed enter","expected":["a","b",false],"passed":true},{"actual":["a","b",true],"check":"removed active","expected":["a","b",true],"passed":true},{"actual":["b","b",false],"check":"commit","expected":["b","b",false],"passed":true},{"actual":["a","b",false],"check":"tab","expected":["a","b",false],"passed":true},{"actual":[null,"",true],"check":"clear","expected":[null,"",true],"passed":true},{"actual":["a","b",true],"check":"typing","expected":["a","b",true],"passed":true},{"actual":[1,"1",false],"check":"parameterized suggestion","expected":[1,"1",false],"passed":true},{"actual":["a","b",true],"check":"repeat typing","expected":["a","b",true],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"escape\", \"actual\": [\"a\", \"\", false], \"expected\": [\"a\", \"\", false], \"passed\": true}, {\"check\": \"closed enter\", \"actual\": [\"a\", \"b\", false], \"expected\": [\"a\", \"b\", false], \"passed\": true}, {\"check\": \"removed active\", \"actual\": [\"a\", \"b\", true], \"expected\": [\"a\", \"b\", true], \"passed\": true}, {\"check\": \"commit\", \"actual\": [\"b\", \"b\", false], \"expected\": [\"b\", \"b\", false], \"passed\": true}, {\"check\": \"tab\", \"actual\": [\"a\", \"b\", false], \"expected\": [\"a\", \"b\", false], \"passed\": true}, {\"check\": \"clear\", \"actual\": [null, \"\", true], \"expected\": [null, \"\", true], \"passed\": true}, {\"check\": \"typing\", \"actual\": [\"a\", \"b\", true], \"expected\": [\"a\", \"b\", true], \"passed\": true}, {\"check\": \"parameterized suggestion\", \"actual\": [1, \"1\", false], \"expected\": [1, \"1\", false], \"passed\": true}, {\"check\": \"repeat typing\", \"actual\": [\"a\", \"b\", true], \"expected\": [\"a\", \"b\", true], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}