{"abstract":"Later mutations erase previously discovered invalidations.","category":"Accessibility interaction semantics","checks":8,"contract":"Input [cached_names,dependencies,mutations]. Dependencies [consumer,provider,channel] with channel name or description; only name affects cached names. Mutation [provider,kind] kind text,remove,style,unrelated; text/remove invalidate provider and all transitively dependent name consumers, style invalidates provider only, unrelated does nothing. Include only cached IDs in returned invalidated list but traverse uncached providers. Ignore cycles safely, preserve cache dictionary order in final result. Return [remaining_cache,invalidated_ids].","contract_signature":"data","evaluation_group":"s3-accessibility-name-dependencies","failed_approach":"The local repair substitutes invalid.intersection_update({provider})\n    pending = [provider] but still mishandles the regression fixtures.","family":"s3-accessibility-name-dependencies-mutation-union","id":"FA-54481","implementations":{"attempt":{"sha256":"5c6ec9461955df21426d180ebfc406da130a5c4cd2a41f1894a96a7f74e5d10e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(data):\n    cache,dependencies,mutations = data\n    reverse = {}\n    for consumer,provider,channel in dependencies:\n        if channel == 'name': reverse.setdefault(provider,[]).append(consumer)\n    invalid = set()\n    for provider,kind in mutations:\n        if kind == 'style': invalid.add(provider); continue\n        if kind not in ('text','remove'): continue\n        invalid.intersection_update({provider})\n        pending = [provider]\n        seen = set()\n        while pending:\n            node = pending.pop()\n            if node in seen: continue\n            seen.add(node)\n            invalid.add(node)\n            pending.extend(reverse.get(node,[]))\n    return [{key:value for key,value in cache.items() if key not in invalid},[key for key in cache if key in invalid]]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('contract fixture 1', solve([{'a':'A','b':'B','c':str(N),'keep':'K'},[['b','a','name'],['c','b','name']],[['a','text']]],), [{'keep':'K'},['a','b','c']])\ncheck('contract fixture 2', solve([{'c':'C'},[['c','missing','name']],[['missing','remove']]],), [{},['c']])\ncheck('contract fixture 3', solve([{'a':'A','b':'B'},[['b','a','description']],[['a','text']]],), [{'b':'B'},['a']])\ncheck('contract fixture 4', solve([{'a':'A','b':'B'},[['b','a','name']],[['a','style']]],), [{'b':'B'},['a']])\ncheck('contract fixture 5', solve([{'a':'A','b':'B'},[['b','a','name'],['a','b','name']],[['a','unrelated']]],), [{'a':'A','b':'B'},[]])\ncheck('contract fixture 6', solve([{'z':'Z','a':'A'},[['a','z','name'],['z','a','name']],[['z','text']]],), [{},['z','a']])\ncheck('contract fixture 7', solve([{'a':'A','b':'B'},[],[['a','text'],['b','text']]],), [{},['a','b']])\ncheck('contract fixture 8', solve([{'n'+str(i):'Name'+str(i) for i in range(N+2)},[['n'+str(i),'n'+str(i-1),'name'] for i in range(1,N+2)],[['n0','text']]],), [{},['n'+str(i) for i in range(N+2)]])\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":"fc198295f181767d744398d941fc6ae4738e545901f257f1781131f1001cde30","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(data):\n    cache,dependencies,mutations = data\n    reverse = {}\n    for consumer,provider,channel in dependencies:\n        if channel == 'name': reverse.setdefault(provider,[]).append(consumer)\n    invalid = set()\n    for provider,kind in mutations:\n        if kind == 'style': invalid.add(provider); continue\n        if kind not in ('text','remove'): continue\n        invalid = set()\n        pending = [provider]\n        seen = set()\n        while pending:\n            node = pending.pop()\n            if node in seen: continue\n            seen.add(node)\n            invalid.add(node)\n            pending.extend(reverse.get(node,[]))\n    return [{key:value for key,value in cache.items() if key not in invalid},[key for key in cache if key in invalid]]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('contract fixture 1', solve([{'a':'A','b':'B','c':str(N),'keep':'K'},[['b','a','name'],['c','b','name']],[['a','text']]],), [{'keep':'K'},['a','b','c']])\ncheck('contract fixture 2', solve([{'c':'C'},[['c','missing','name']],[['missing','remove']]],), [{},['c']])\ncheck('contract fixture 3', solve([{'a':'A','b':'B'},[['b','a','description']],[['a','text']]],), [{'b':'B'},['a']])\ncheck('contract fixture 4', solve([{'a':'A','b':'B'},[['b','a','name']],[['a','style']]],), [{'b':'B'},['a']])\ncheck('contract fixture 5', solve([{'a':'A','b':'B'},[['b','a','name'],['a','b','name']],[['a','unrelated']]],), [{'a':'A','b':'B'},[]])\ncheck('contract fixture 6', solve([{'z':'Z','a':'A'},[['a','z','name'],['z','a','name']],[['z','text']]],), [{},['z','a']])\ncheck('contract fixture 7', solve([{'a':'A','b':'B'},[],[['a','text'],['b','text']]],), [{},['a','b']])\ncheck('contract fixture 8', solve([{'n'+str(i):'Name'+str(i) for i in range(N+2)},[['n'+str(i),'n'+str(i-1),'name'] for i in range(1,N+2)],[['n0','text']]],), [{},['n'+str(i) for i in range(N+2)]])\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":"Stipulated finite adapter contract, not a claim of platform accessibility or ARIA conformance. 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":"s3-accessibility-name-dependencies-mutation-union","generated_at":"2026-09-29T14:45:48.858649+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Offline accessibility bridge model with explicit policy; useful for testing semantic API adapters independently of browser implementations.","root_cause":"The mutation union decision in the name dependencies adapter violates its declared contract.","sha256":"ee8dbb819c6e73bbac56f838418a7a723e8d3adee0f529078773e378a5ffb0ca","title":"Later mutations erase previously discovered invalidations · 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":44.461,"exit_code":1,"observations":[{"actual":[{"keep":"K"},["a","b","c"]],"check":"contract fixture 1","expected":[{"keep":"K"},["a","b","c"]],"passed":true},{"actual":[{},["c"]],"check":"contract fixture 2","expected":[{},["c"]],"passed":true},{"actual":[{"b":"B"},["a"]],"check":"contract fixture 3","expected":[{"b":"B"},["a"]],"passed":true},{"actual":[{"b":"B"},["a"]],"check":"contract fixture 4","expected":[{"b":"B"},["a"]],"passed":true},{"actual":[{"a":"A","b":"B"},[]],"check":"contract fixture 5","expected":[{"a":"A","b":"B"},[]],"passed":true},{"actual":[{},["z","a"]],"check":"contract fixture 6","expected":[{},["z","a"]],"passed":true},{"actual":[{"a":"A"},["b"]],"check":"contract fixture 7","expected":[{},["a","b"]],"passed":false},{"actual":[{},["n0","n1","n2"]],"check":"contract fixture 8","expected":[{},["n0","n1","n2"]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"contract fixture 1\", \"actual\": [{\"keep\": \"K\"}, [\"a\", \"b\", \"c\"]], \"expected\": [{\"keep\": \"K\"}, [\"a\", \"b\", \"c\"]], \"passed\": true}, {\"check\": \"contract fixture 2\", \"actual\": [{}, [\"c\"]], \"expected\": [{}, [\"c\"]], \"passed\": true}, {\"check\": \"contract fixture 3\", \"actual\": [{\"b\": \"B\"}, [\"a\"]], \"expected\": [{\"b\": \"B\"}, [\"a\"]], \"passed\": true}, {\"check\": \"contract fixture 4\", \"actual\": [{\"b\": \"B\"}, [\"a\"]], \"expected\": [{\"b\": \"B\"}, [\"a\"]], \"passed\": true}, {\"check\": \"contract fixture 5\", \"actual\": [{\"a\": \"A\", \"b\": \"B\"}, []], \"expected\": [{\"a\": \"A\", \"b\": \"B\"}, []], \"passed\": true}, {\"check\": \"contract fixture 6\", \"actual\": [{}, [\"z\", \"a\"]], \"expected\": [{}, [\"z\", \"a\"]], \"passed\": true}, {\"check\": \"contract fixture 7\", \"actual\": [{\"a\": \"A\"}, [\"b\"]], \"expected\": [{}, [\"a\", \"b\"]], \"passed\": false}, {\"check\": \"contract fixture 8\", \"actual\": [{}, [\"n0\", \"n1\", \"n2\"]], \"expected\": [{}, [\"n0\", \"n1\", \"n2\"]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":44.125,"exit_code":1,"observations":[{"actual":[{"keep":"K"},["a","b","c"]],"check":"contract fixture 1","expected":[{"keep":"K"},["a","b","c"]],"passed":true},{"actual":[{},["c"]],"check":"contract fixture 2","expected":[{},["c"]],"passed":true},{"actual":[{"b":"B"},["a"]],"check":"contract fixture 3","expected":[{"b":"B"},["a"]],"passed":true},{"actual":[{"b":"B"},["a"]],"check":"contract fixture 4","expected":[{"b":"B"},["a"]],"passed":true},{"actual":[{"a":"A","b":"B"},[]],"check":"contract fixture 5","expected":[{"a":"A","b":"B"},[]],"passed":true},{"actual":[{},["z","a"]],"check":"contract fixture 6","expected":[{},["z","a"]],"passed":true},{"actual":[{"a":"A"},["b"]],"check":"contract fixture 7","expected":[{},["a","b"]],"passed":false},{"actual":[{},["n0","n1","n2"]],"check":"contract fixture 8","expected":[{},["n0","n1","n2"]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"contract fixture 1\", \"actual\": [{\"keep\": \"K\"}, [\"a\", \"b\", \"c\"]], \"expected\": [{\"keep\": \"K\"}, [\"a\", \"b\", \"c\"]], \"passed\": true}, {\"check\": \"contract fixture 2\", \"actual\": [{}, [\"c\"]], \"expected\": [{}, [\"c\"]], \"passed\": true}, {\"check\": \"contract fixture 3\", \"actual\": [{\"b\": \"B\"}, [\"a\"]], \"expected\": [{\"b\": \"B\"}, [\"a\"]], \"passed\": true}, {\"check\": \"contract fixture 4\", \"actual\": [{\"b\": \"B\"}, [\"a\"]], \"expected\": [{\"b\": \"B\"}, [\"a\"]], \"passed\": true}, {\"check\": \"contract fixture 5\", \"actual\": [{\"a\": \"A\", \"b\": \"B\"}, []], \"expected\": [{\"a\": \"A\", \"b\": \"B\"}, []], \"passed\": true}, {\"check\": \"contract fixture 6\", \"actual\": [{}, [\"z\", \"a\"]], \"expected\": [{}, [\"z\", \"a\"]], \"passed\": true}, {\"check\": \"contract fixture 7\", \"actual\": [{\"a\": \"A\"}, [\"b\"]], \"expected\": [{}, [\"a\", \"b\"]], \"passed\": false}, {\"check\": \"contract fixture 8\", \"actual\": [{}, [\"n0\", \"n1\", \"n2\"]], \"expected\": [{}, [\"n0\", \"n1\", \"n2\"]], \"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."}}