{"abstract":"Invalid controls lose their usage hint, or error text remains announced after validation succeeds.","category":"Accessibility interaction semantics","checks":6,"contract":"Given a name, hint, error text and invalid boolean, return [name,description]. Description joins nonempty hint and (only when invalid) error with one space. Name is preserved verbatim. This models channel assembly, not reference resolution or validation timing.","contract_signature":"name, hint, error, invalid","evaluation_group":"model-32e1931244ffb5fc","failed_approach":"Always appending error text keeps stale errors after invalid state clears.","family":"z-accessibility-error-description","id":"FA-11421","implementations":{"attempt":{"sha256":"12a374fff565c192790e2bd1c3fd5689b7d2d40585ee0ab1d46806930d82a31b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(name, hint, error, invalid):\n    return [name, ' '.join(part for part in [hint,error] if part)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('hint remains with error', solve('Field '+str(N), 'Use digits', 'Required', True), ['Field '+str(N),'Use digits Required'])\ncheck('valid suppresses stale error', solve(str(N), 'Use digits', 'Required', False), [str(N),'Use digits'])\ncheck('no hint', solve(str(N), '', 'Required', True), [str(N),'Required'])\ncheck('empty error retains hint', solve(str(N), 'Use digits', '', True), [str(N),'Use digits'])\ncheck('empty channels', solve(str(N), '', '', False), [str(N),''])\ncheck('name never replaced', solve('Name '+str(N), '', 'Error', False), ['Name '+str(N),''])\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":"dcd00ea3251c93eb138667014bc4089443f8e087219c17529d5f24f65ed8dabc","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(name, hint, error, invalid):\n    return [name, error if invalid else hint]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('hint remains with error', solve('Field '+str(N), 'Use digits', 'Required', True), ['Field '+str(N),'Use digits Required'])\ncheck('valid suppresses stale error', solve(str(N), 'Use digits', 'Required', False), [str(N),'Use digits'])\ncheck('no hint', solve(str(N), '', 'Required', True), [str(N),'Required'])\ncheck('empty error retains hint', solve(str(N), 'Use digits', '', True), [str(N),'Use digits'])\ncheck('empty channels', solve(str(N), '', '', False), [str(N),''])\ncheck('name never replaced', solve('Name '+str(N), '', 'Error', False), ['Name '+str(N),''])\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":"z-accessibility-error-description","generated_at":"2026-09-29T14:38:47.818929+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A controlled offline accessibility-data model. It isolates the stated contract; it does not simulate browser accessibility APIs or claim full ARIA conformance.","root_cause":"The description is treated as a single interchangeable hint-or-error slot.","sha256":"d231a1319cea9a8748940b60af9a165ef11a9bce42f02c9c2a4bf5449f64f649","title":"Error text replaces persistent instructions in the description channel · 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":39.116,"exit_code":1,"observations":[{"actual":["Field 1","Use digits Required"],"check":"hint remains with error","expected":["Field 1","Use digits Required"],"passed":true},{"actual":["1","Use digits Required"],"check":"valid suppresses stale error","expected":["1","Use digits"],"passed":false},{"actual":["1","Required"],"check":"no hint","expected":["1","Required"],"passed":true},{"actual":["1","Use digits"],"check":"empty error retains hint","expected":["1","Use digits"],"passed":true},{"actual":["1",""],"check":"empty channels","expected":["1",""],"passed":true},{"actual":["Name 1","Error"],"check":"name never replaced","expected":["Name 1",""],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"hint remains with error\", \"actual\": [\"Field 1\", \"Use digits Required\"], \"expected\": [\"Field 1\", \"Use digits Required\"], \"passed\": true}, {\"check\": \"valid suppresses stale error\", \"actual\": [\"1\", \"Use digits Required\"], \"expected\": [\"1\", \"Use digits\"], \"passed\": false}, {\"check\": \"no hint\", \"actual\": [\"1\", \"Required\"], \"expected\": [\"1\", \"Required\"], \"passed\": true}, {\"check\": \"empty error retains hint\", \"actual\": [\"1\", \"Use digits\"], \"expected\": [\"1\", \"Use digits\"], \"passed\": true}, {\"check\": \"empty channels\", \"actual\": [\"1\", \"\"], \"expected\": [\"1\", \"\"], \"passed\": true}, {\"check\": \"name never replaced\", \"actual\": [\"Name 1\", \"Error\"], \"expected\": [\"Name 1\", \"\"], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.732,"exit_code":1,"observations":[{"actual":["Field 1","Required"],"check":"hint remains with error","expected":["Field 1","Use digits Required"],"passed":false},{"actual":["1","Use digits"],"check":"valid suppresses stale error","expected":["1","Use digits"],"passed":true},{"actual":["1","Required"],"check":"no hint","expected":["1","Required"],"passed":true},{"actual":["1",""],"check":"empty error retains hint","expected":["1","Use digits"],"passed":false},{"actual":["1",""],"check":"empty channels","expected":["1",""],"passed":true},{"actual":["Name 1",""],"check":"name never replaced","expected":["Name 1",""],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"hint remains with error\", \"actual\": [\"Field 1\", \"Required\"], \"expected\": [\"Field 1\", \"Use digits Required\"], \"passed\": false}, {\"check\": \"valid suppresses stale error\", \"actual\": [\"1\", \"Use digits\"], \"expected\": [\"1\", \"Use digits\"], \"passed\": true}, {\"check\": \"no hint\", \"actual\": [\"1\", \"Required\"], \"expected\": [\"1\", \"Required\"], \"passed\": true}, {\"check\": \"empty error retains hint\", \"actual\": [\"1\", \"\"], \"expected\": [\"1\", \"Use digits\"], \"passed\": false}, {\"check\": \"empty channels\", \"actual\": [\"1\", \"\"], \"expected\": [\"1\", \"\"], \"passed\": true}, {\"check\": \"name never replaced\", \"actual\": [\"Name 1\", \"\"], \"expected\": [\"Name 1\", \"\"], \"passed\": true}], \"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."}}