{"abstract":"Typing does not reveal available suggestions.","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.","contract_signature":"options, active, value, query, opened, key","evaluation_group":"xi-combobox","failed_approach":"Discarding the committed value before confirmation violates provisional editing.","family":"xi-combobox-input","id":"FA-8151","implementations":{"attempt":{"sha256":"5fc912e14170599b984148faa4b188f9c75cf2a2f7bf4495ffe16515062c1c82","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 (None, 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":"696d0782df4eb90592cbf05902c4178cfd622b8ea89ed222e8358de266e8949a","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, opened)\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-input","generated_at":"2026-09-29T14:38:18.925579+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.","root_cause":"The input operation uses `if key == 'Input': return (value, query, opened)` where the contract requires `if key == 'Input': return (value, query, True)`.","sha256":"53ec5b946eeba55b6e5658abf66ec34585f73d54399a3f85861e84a437188f10","title":"Combobox keyboard commit: Typing does not reveal available suggestions · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":107.778,"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,"",true],"check":"clear","expected":[null,"",true],"passed":true},{"actual":[null,"b",true],"check":"typing","expected":["a","b",true],"passed":false},{"actual":[1,"1",false],"check":"parameterized suggestion","expected":[1,"1",false],"passed":true},{"actual":[null,"b",true],"check":"repeat typing","expected":["a","b",true],"passed":false}],"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, \"\", true], \"expected\": [null, \"\", true], \"passed\": true}, {\"check\": \"typing\", \"actual\": [null, \"b\", true], \"expected\": [\"a\", \"b\", true], \"passed\": false}, {\"check\": \"parameterized suggestion\", \"actual\": [1, \"1\", false], \"expected\": [1, \"1\", false], \"passed\": true}, {\"check\": \"repeat typing\", \"actual\": [null, \"b\", true], \"expected\": [\"a\", \"b\", true], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.081,"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,"",true],"check":"clear","expected":[null,"",true],"passed":true},{"actual":["a","b",false],"check":"typing","expected":["a","b",true],"passed":false},{"actual":[1,"1",false],"check":"parameterized suggestion","expected":[1,"1",false],"passed":true},{"actual":["a","b",false],"check":"repeat typing","expected":["a","b",true],"passed":false}],"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, \"\", true], \"expected\": [null, \"\", true], \"passed\": true}, {\"check\": \"typing\", \"actual\": [\"a\", \"b\", false], \"expected\": [\"a\", \"b\", true], \"passed\": false}, {\"check\": \"parameterized suggestion\", \"actual\": [1, \"1\", false], \"expected\": [1, \"1\", false], \"passed\": true}, {\"check\": \"repeat typing\", \"actual\": [\"a\", \"b\", false], \"expected\": [\"a\", \"b\", true], \"passed\": false}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}