{"abstract":"Change events report the old controlled value.","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":"Reporting local state also misses the proposed controlled input.","family":"xi-controlled-input-notification","id":"FA-8871","implementations":{"attempt":{"sha256":"e1476c99c1e7328e3593cc7ec33796d95a3bf7e6f50953cb361a4b84186cfdf0","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 = local\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":"31c3e2191548f2fb00963963cf60185283b022eee0f0dd5bcbc0d799bc0fb923","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 = prop\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-notification","generated_at":"2026-09-29T14:38:25.017281+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 notification operation as `notification = incoming`.","root_cause":"The notification operation uses `notification = prop` where the contract requires `notification = incoming`.","sha256":"27211cda9ece51752fec22bfc5ead50aafc44313bb8176130b7f5ae12dbedb8d","title":"Controlled and uncontrolled input ownership: Change events report the old controlled value · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.09,"exit_code":1,"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","local"],"check":"controlled event","expected":["old","local","new"],"passed":false},{"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","local"],"check":"parameterized proposed value","expected":["old","local","1"],"passed":false},{"actual":["default","default",null],"check":"repeat uncontrolled reset","expected":["default","default",null],"passed":true}],"passed":false,"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\", \"local\"], \"expected\": [\"old\", \"local\", \"new\"], \"passed\": false}, {\"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\", \"local\"], \"expected\": [\"old\", \"local\", \"1\"], \"passed\": false}, {\"check\": \"repeat uncontrolled reset\", \"actual\": [\"default\", \"default\", null], \"expected\": [\"default\", \"default\", null], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":37.443,"exit_code":1,"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","old"],"check":"controlled event","expected":["old","local","new"],"passed":false},{"actual":["new","new",null],"check":"uncontrolled event","expected":["new","new","new"],"passed":false},{"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","old"],"check":"parameterized proposed value","expected":["old","local","1"],"passed":false},{"actual":["default","default",null],"check":"repeat uncontrolled reset","expected":["default","default",null],"passed":true}],"passed":false,"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\", \"old\"], \"expected\": [\"old\", \"local\", \"new\"], \"passed\": false}, {\"check\": \"uncontrolled event\", \"actual\": [\"new\", \"new\", null], \"expected\": [\"new\", \"new\", \"new\"], \"passed\": false}, {\"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\", \"old\"], \"expected\": [\"old\", \"local\", \"1\"], \"passed\": false}, {\"check\": \"repeat uncontrolled reset\", \"actual\": [\"default\", \"default\", null], \"expected\": [\"default\", \"default\", null], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.247,"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"}