{"abstract":"Empty controlled values are mistaken for uncontrolled state.","category":"Client state","checks":9,"contract":"None alone signals uncontrolled; defaults initialize only on mount/reset; controlled values stay prop-owned while proposed changes are emitted; uncontrolled changes update local state.","evaluation_group":"xi-controlled-input","failed_approach":"Treating empty as uncontrolled also misclassifies None as controlled.","family":"xi-controlled-input-falsy-control","id":"FA-8856","implementations":{"attempt":{"sha256":"97098303ac7b59f74ea902fb19c23349e569cb82fd0dfeec06694299d840d4e9","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(prop, local, default, event, incoming, mounted):\n    controlled = prop != \"\"\n    if not mounted: local = default\n    if event == 'input':\n        if not controlled: local = incoming\n        notification = incoming\n    else: notification = None\n    if event == 'reset' and not controlled: local = default\n    visible = prop if controlled else local\n    return (visible, local, notification)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('empty controlled', solve('', 'draft', 'default', 'none', None, True), ('', 'draft', None))\ncheck('mounted', solve(None, 'edited', 'default', 'none', None, True), ('edited', 'edited', None))\ncheck('mount', solve(None, None, 'default', 'none', None, False), ('default', 'default', None))\ncheck('controlled event', solve('old', 'local', 'default', 'input', 'new', True), ('old', 'local', 'new'))\ncheck('uncontrolled event', solve(None, 'local', 'default', 'input', 'new', True), ('new', 'new', 'new'))\ncheck('controlled reset', solve('old', 'local', 'default', 'reset', None, True), ('old', 'local', None))\ncheck('uncontrolled reset', solve(None, 'local', 'default', 'reset', None, True), ('default', 'default', None))\ncheck('parameterized proposed value', solve('old','local','default','input',str(N),True), ('old','local',str(N)))\nfor repetition in range(N):\n    check('repeat uncontrolled reset', solve(None, 'local', 'default', 'reset', None, True), ('default', 'default', None))\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":"976b4e9a7b1b87ebcf853283007280b26c1605ba53361827ba458981f29b7338","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(prop, local, default, event, incoming, mounted):\n    controlled = bool(prop)\n    if not mounted: local = default\n    if event == 'input':\n        if not controlled: local = incoming\n        notification = incoming\n    else: notification = None\n    if event == 'reset' and not controlled: local = default\n    visible = prop if controlled else local\n    return (visible, local, notification)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('empty controlled', solve('', 'draft', 'default', 'none', None, True), ('', 'draft', None))\ncheck('mounted', solve(None, 'edited', 'default', 'none', None, True), ('edited', 'edited', None))\ncheck('mount', solve(None, None, 'default', 'none', None, False), ('default', 'default', None))\ncheck('controlled event', solve('old', 'local', 'default', 'input', 'new', True), ('old', 'local', 'new'))\ncheck('uncontrolled event', solve(None, 'local', 'default', 'input', 'new', True), ('new', 'new', 'new'))\ncheck('controlled reset', solve('old', 'local', 'default', 'reset', None, True), ('old', 'local', None))\ncheck('uncontrolled reset', solve(None, 'local', 'default', 'reset', None, True), ('default', 'default', None))\ncheck('parameterized proposed value', solve('old','local','default','input',str(N),True), ('old','local',str(N)))\nfor repetition in range(N):\n    check('repeat uncontrolled reset', solve(None, 'local', 'default', 'reset', None, True), ('default', 'default', None))\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":"044bf1425e9ccf3192b50c30d160246d7effd44fbafd16c7e31c2db164649187","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(prop, local, default, event, incoming, mounted):\n    controlled = prop is not None\n    if not mounted: local = default\n    if event == 'input':\n        if not controlled: local = incoming\n        notification = incoming\n    else: notification = None\n    if event == 'reset' and not controlled: local = default\n    visible = prop if controlled else local\n    return (visible, local, notification)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('empty controlled', solve('', 'draft', 'default', 'none', None, True), ('', 'draft', None))\ncheck('mounted', solve(None, 'edited', 'default', 'none', None, True), ('edited', 'edited', None))\ncheck('mount', solve(None, None, 'default', 'none', None, False), ('default', 'default', None))\ncheck('controlled event', solve('old', 'local', 'default', 'input', 'new', True), ('old', 'local', 'new'))\ncheck('uncontrolled event', solve(None, 'local', 'default', 'input', 'new', True), ('new', 'new', 'new'))\ncheck('controlled reset', solve('old', 'local', 'default', 'reset', None, True), ('old', 'local', None))\ncheck('uncontrolled reset', solve(None, 'local', 'default', 'reset', None, True), ('default', 'default', None))\ncheck('parameterized proposed value', solve('old','local','default','input',str(N),True), ('old','local',str(N)))\nfor repetition in range(N):\n    check('repeat uncontrolled reset', solve(None, 'local', 'default', 'reset', None, True), ('default', 'default', None))\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-controlled-input-falsy-control","generated_at":"2026-09-29T14:38:25.016714+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A deterministic model of controlled and uncontrolled input ownership; this isolates one interface invariant without requiring a browser.","repair":"Implement the falsy control operation as `prop is not None`.","root_cause":"The falsy control operation uses `bool(prop)` where the contract requires `prop is not None`.","sha256":"2c92806f9205af830035d1d29a2e1cae5dffda8c983ea449ef5dda21d385bdbe","title":"Controlled and uncontrolled input ownership: Empty controlled values are mistaken for uncontrolled state · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.51,"exit_code":1,"observations":[{"actual":["draft","draft",null],"check":"empty controlled","expected":["","draft",null],"passed":false},{"actual":[null,"edited",null],"check":"mounted","expected":["edited","edited",null],"passed":false},{"actual":[null,"default",null],"check":"mount","expected":["default","default",null],"passed":false},{"actual":["old","local","new"],"check":"controlled event","expected":["old","local","new"],"passed":true},{"actual":[null,"local","new"],"check":"uncontrolled event","expected":["new","new","new"],"passed":false},{"actual":["old","local",null],"check":"controlled reset","expected":["old","local",null],"passed":true},{"actual":[null,"local",null],"check":"uncontrolled reset","expected":["default","default",null],"passed":false},{"actual":["old","local","1"],"check":"parameterized proposed value","expected":["old","local","1"],"passed":true},{"actual":[null,"local",null],"check":"repeat uncontrolled reset","expected":["default","default",null],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"empty controlled\", \"actual\": [\"draft\", \"draft\", null], \"expected\": [\"\", \"draft\", null], \"passed\": false}, {\"check\": \"mounted\", \"actual\": [null, \"edited\", null], \"expected\": [\"edited\", \"edited\", null], \"passed\": false}, {\"check\": \"mount\", \"actual\": [null, \"default\", null], \"expected\": [\"default\", \"default\", null], \"passed\": false}, {\"check\": \"controlled event\", \"actual\": [\"old\", \"local\", \"new\"], \"expected\": [\"old\", \"local\", \"new\"], \"passed\": true}, {\"check\": \"uncontrolled event\", \"actual\": [null, \"local\", \"new\"], \"expected\": [\"new\", \"new\", \"new\"], \"passed\": false}, {\"check\": \"controlled reset\", \"actual\": [\"old\", \"local\", null], \"expected\": [\"old\", \"local\", null], \"passed\": true}, {\"check\": \"uncontrolled reset\", \"actual\": [null, \"local\", null], \"expected\": [\"default\", \"default\", null], \"passed\": false}, {\"check\": \"parameterized proposed value\", \"actual\": [\"old\", \"local\", \"1\"], \"expected\": [\"old\", \"local\", \"1\"], \"passed\": true}, {\"check\": \"repeat uncontrolled reset\", \"actual\": [null, \"local\", null], \"expected\": [\"default\", \"default\", null], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.831,"exit_code":1,"observations":[{"actual":["draft","draft",null],"check":"empty controlled","expected":["","draft",null],"passed":false},{"actual":["edited","edited",null],"check":"mounted","expected":["edited","edited",null],"passed":true},{"actual":["default","default",null],"check":"mount","expected":["default","default",null],"passed":true},{"actual":["old","local","new"],"check":"controlled event","expected":["old","local","new"],"passed":true},{"actual":["new","new","new"],"check":"uncontrolled event","expected":["new","new","new"],"passed":true},{"actual":["old","local",null],"check":"controlled reset","expected":["old","local",null],"passed":true},{"actual":["default","default",null],"check":"uncontrolled reset","expected":["default","default",null],"passed":true},{"actual":["old","local","1"],"check":"parameterized proposed value","expected":["old","local","1"],"passed":true},{"actual":["default","default",null],"check":"repeat uncontrolled reset","expected":["default","default",null],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"empty controlled\", \"actual\": [\"draft\", \"draft\", null], \"expected\": [\"\", \"draft\", null], \"passed\": false}, {\"check\": \"mounted\", \"actual\": [\"edited\", \"edited\", null], \"expected\": [\"edited\", \"edited\", null], \"passed\": true}, {\"check\": \"mount\", \"actual\": [\"default\", \"default\", null], \"expected\": [\"default\", \"default\", null], \"passed\": true}, {\"check\": \"controlled event\", \"actual\": [\"old\", \"local\", \"new\"], \"expected\": [\"old\", \"local\", \"new\"], \"passed\": true}, {\"check\": \"uncontrolled event\", \"actual\": [\"new\", \"new\", \"new\"], \"expected\": [\"new\", \"new\", \"new\"], \"passed\": true}, {\"check\": \"controlled reset\", \"actual\": [\"old\", \"local\", null], \"expected\": [\"old\", \"local\", null], \"passed\": true}, {\"check\": \"uncontrolled reset\", \"actual\": [\"default\", \"default\", null], \"expected\": [\"default\", \"default\", null], \"passed\": true}, {\"check\": \"parameterized proposed value\", \"actual\": [\"old\", \"local\", \"1\"], \"expected\": [\"old\", \"local\", \"1\"], \"passed\": true}, {\"check\": \"repeat uncontrolled reset\", \"actual\": [\"default\", \"default\", null], \"expected\": [\"default\", \"default\", null], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":38.616,"exit_code":0,"observations":[{"actual":["","draft",null],"check":"empty controlled","expected":["","draft",null],"passed":true},{"actual":["edited","edited",null],"check":"mounted","expected":["edited","edited",null],"passed":true},{"actual":["default","default",null],"check":"mount","expected":["default","default",null],"passed":true},{"actual":["old","local","new"],"check":"controlled event","expected":["old","local","new"],"passed":true},{"actual":["new","new","new"],"check":"uncontrolled event","expected":["new","new","new"],"passed":true},{"actual":["old","local",null],"check":"controlled reset","expected":["old","local",null],"passed":true},{"actual":["default","default",null],"check":"uncontrolled reset","expected":["default","default",null],"passed":true},{"actual":["old","local","1"],"check":"parameterized proposed value","expected":["old","local","1"],"passed":true},{"actual":["default","default",null],"check":"repeat uncontrolled reset","expected":["default","default",null],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"empty controlled\", \"actual\": [\"\", \"draft\", null], \"expected\": [\"\", \"draft\", null], \"passed\": true}, {\"check\": \"mounted\", \"actual\": [\"edited\", \"edited\", null], \"expected\": [\"edited\", \"edited\", null], \"passed\": true}, {\"check\": \"mount\", \"actual\": [\"default\", \"default\", null], \"expected\": [\"default\", \"default\", null], \"passed\": true}, {\"check\": \"controlled event\", \"actual\": [\"old\", \"local\", \"new\"], \"expected\": [\"old\", \"local\", \"new\"], \"passed\": true}, {\"check\": \"uncontrolled event\", \"actual\": [\"new\", \"new\", \"new\"], \"expected\": [\"new\", \"new\", \"new\"], \"passed\": true}, {\"check\": \"controlled reset\", \"actual\": [\"old\", \"local\", null], \"expected\": [\"old\", \"local\", null], \"passed\": true}, {\"check\": \"uncontrolled reset\", \"actual\": [\"default\", \"default\", null], \"expected\": [\"default\", \"default\", null], \"passed\": true}, {\"check\": \"parameterized proposed value\", \"actual\": [\"old\", \"local\", \"1\"], \"expected\": [\"old\", \"local\", \"1\"], \"passed\": true}, {\"check\": \"repeat uncontrolled reset\", \"actual\": [\"default\", \"default\", null], \"expected\": [\"default\", \"default\", null], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}