{"abstract":"Repeated identical status changes are queued again.","category":"Assistive announcements","checks":8,"contract":"Suppress identical and off updates; busy queues preserve order; assertive updates supersede pending work; atomic reads full content and incremental mode reads appended content.","evaluation_group":"xi-live-region","failed_approach":"Clearing the queue drops unrelated pending announcements.","family":"xi-live-region-duplicate","id":"FA-8406","implementations":{"attempt":{"sha256":"689ea621782e3977f905aaf2bc50ec980279fcbf13af1555a208797d894595ed","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(queue, current, text, priority, busy, atomic):\n    queue = list(queue)\n    if text == current: return ([], current)\n    if priority == 'off': return (queue, current)\n    if busy: return (queue + [text], current)\n    if priority == 'assertive': return ([], text)\n    if atomic: return (queue, text)\n    return (queue, text[len(current):] if text.startswith(current) else text)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('duplicate', solve(['later'], 'done', 'done', 'polite', False, True), (['later'], 'done'))\ncheck('off', solve(['later'], 'old', 'new', 'off', False, True), (['later'], 'old'))\ncheck('busy', solve(['first'], 'old', 'new', 'polite', True, True), (['first', 'new'], 'old'))\ncheck('urgent', solve(['old pending'], 'old', 'urgent', 'assertive', False, True), ([], 'urgent'))\ncheck('atomic', solve([], '2 of ', '2 of 5', 'polite', False, True), ([], '2 of 5'))\ncheck('incremental', solve([], '2 of ', '2 of 5', 'polite', False, False), ([], '5'))\ncheck('parameterized atomic content', solve([], '', 'status'+str(N), 'polite', False, True), ([], 'status'+str(N)))\nfor repetition in range(N):\n    check('repeat incremental', solve([], '2 of ', '2 of 5', 'polite', False, False), ([], '5'))\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":"4f1e07d492e42bffe5e0838718e5a7aecb64205fb491fb8e1c08cdc66879b1d5","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(queue, current, text, priority, busy, atomic):\n    queue = list(queue)\n    if text == current: return (queue + [text], current)\n    if priority == 'off': return (queue, current)\n    if busy: return (queue + [text], current)\n    if priority == 'assertive': return ([], text)\n    if atomic: return (queue, text)\n    return (queue, text[len(current):] if text.startswith(current) else text)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('duplicate', solve(['later'], 'done', 'done', 'polite', False, True), (['later'], 'done'))\ncheck('off', solve(['later'], 'old', 'new', 'off', False, True), (['later'], 'old'))\ncheck('busy', solve(['first'], 'old', 'new', 'polite', True, True), (['first', 'new'], 'old'))\ncheck('urgent', solve(['old pending'], 'old', 'urgent', 'assertive', False, True), ([], 'urgent'))\ncheck('atomic', solve([], '2 of ', '2 of 5', 'polite', False, True), ([], '2 of 5'))\ncheck('incremental', solve([], '2 of ', '2 of 5', 'polite', False, False), ([], '5'))\ncheck('parameterized atomic content', solve([], '', 'status'+str(N), 'polite', False, True), ([], 'status'+str(N)))\nfor repetition in range(N):\n    check('repeat incremental', solve([], '2 of ', '2 of 5', 'polite', False, False), ([], '5'))\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":"1d08f40e03d5830fe3875eaf5b80614c19ae995cf26ba3402a2654b3bc440d6d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(queue, current, text, priority, busy, atomic):\n    queue = list(queue)\n    if text == current: return (queue, current)\n    if priority == 'off': return (queue, current)\n    if busy: return (queue + [text], current)\n    if priority == 'assertive': return ([], text)\n    if atomic: return (queue, text)\n    return (queue, text[len(current):] if text.startswith(current) else text)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('duplicate', solve(['later'], 'done', 'done', 'polite', False, True), (['later'], 'done'))\ncheck('off', solve(['later'], 'old', 'new', 'off', False, True), (['later'], 'old'))\ncheck('busy', solve(['first'], 'old', 'new', 'polite', True, True), (['first', 'new'], 'old'))\ncheck('urgent', solve(['old pending'], 'old', 'urgent', 'assertive', False, True), ([], 'urgent'))\ncheck('atomic', solve([], '2 of ', '2 of 5', 'polite', False, True), ([], '2 of 5'))\ncheck('incremental', solve([], '2 of ', '2 of 5', 'polite', False, False), ([], '5'))\ncheck('parameterized atomic content', solve([], '', 'status'+str(N), 'polite', False, True), ([], 'status'+str(N)))\nfor repetition in range(N):\n    check('repeat incremental', solve([], '2 of ', '2 of 5', 'polite', False, False), ([], '5'))\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-live-region-duplicate","generated_at":"2026-09-29T14:38:21.142649+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A deterministic model of live-region announcement scheduling; this isolates one interface invariant without requiring a browser.","repair":"Implement the duplicate operation as `if text == current: return (queue, current)`.","root_cause":"The duplicate operation uses `if text == current: return (queue + [text], current)` where the contract requires `if text == current: return (queue, current)`.","sha256":"8e1e95431dcb791fe3b0ed76c1dae85a988e0baf9cb8a6649115bd356617fc1f","title":"Live-region announcement scheduling: Repeated identical status changes are queued again · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.247,"exit_code":1,"observations":[{"actual":[[],"done"],"check":"duplicate","expected":[["later"],"done"],"passed":false},{"actual":[["later"],"old"],"check":"off","expected":[["later"],"old"],"passed":true},{"actual":[["first","new"],"old"],"check":"busy","expected":[["first","new"],"old"],"passed":true},{"actual":[[],"urgent"],"check":"urgent","expected":[[],"urgent"],"passed":true},{"actual":[[],"2 of 5"],"check":"atomic","expected":[[],"2 of 5"],"passed":true},{"actual":[[],"5"],"check":"incremental","expected":[[],"5"],"passed":true},{"actual":[[],"status1"],"check":"parameterized atomic content","expected":[[],"status1"],"passed":true},{"actual":[[],"5"],"check":"repeat incremental","expected":[[],"5"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"duplicate\", \"actual\": [[], \"done\"], \"expected\": [[\"later\"], \"done\"], \"passed\": false}, {\"check\": \"off\", \"actual\": [[\"later\"], \"old\"], \"expected\": [[\"later\"], \"old\"], \"passed\": true}, {\"check\": \"busy\", \"actual\": [[\"first\", \"new\"], \"old\"], \"expected\": [[\"first\", \"new\"], \"old\"], \"passed\": true}, {\"check\": \"urgent\", \"actual\": [[], \"urgent\"], \"expected\": [[], \"urgent\"], \"passed\": true}, {\"check\": \"atomic\", \"actual\": [[], \"2 of 5\"], \"expected\": [[], \"2 of 5\"], \"passed\": true}, {\"check\": \"incremental\", \"actual\": [[], \"5\"], \"expected\": [[], \"5\"], \"passed\": true}, {\"check\": \"parameterized atomic content\", \"actual\": [[], \"status1\"], \"expected\": [[], \"status1\"], \"passed\": true}, {\"check\": \"repeat incremental\", \"actual\": [[], \"5\"], \"expected\": [[], \"5\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.618,"exit_code":1,"observations":[{"actual":[["later","done"],"done"],"check":"duplicate","expected":[["later"],"done"],"passed":false},{"actual":[["later"],"old"],"check":"off","expected":[["later"],"old"],"passed":true},{"actual":[["first","new"],"old"],"check":"busy","expected":[["first","new"],"old"],"passed":true},{"actual":[[],"urgent"],"check":"urgent","expected":[[],"urgent"],"passed":true},{"actual":[[],"2 of 5"],"check":"atomic","expected":[[],"2 of 5"],"passed":true},{"actual":[[],"5"],"check":"incremental","expected":[[],"5"],"passed":true},{"actual":[[],"status1"],"check":"parameterized atomic content","expected":[[],"status1"],"passed":true},{"actual":[[],"5"],"check":"repeat incremental","expected":[[],"5"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"duplicate\", \"actual\": [[\"later\", \"done\"], \"done\"], \"expected\": [[\"later\"], \"done\"], \"passed\": false}, {\"check\": \"off\", \"actual\": [[\"later\"], \"old\"], \"expected\": [[\"later\"], \"old\"], \"passed\": true}, {\"check\": \"busy\", \"actual\": [[\"first\", \"new\"], \"old\"], \"expected\": [[\"first\", \"new\"], \"old\"], \"passed\": true}, {\"check\": \"urgent\", \"actual\": [[], \"urgent\"], \"expected\": [[], \"urgent\"], \"passed\": true}, {\"check\": \"atomic\", \"actual\": [[], \"2 of 5\"], \"expected\": [[], \"2 of 5\"], \"passed\": true}, {\"check\": \"incremental\", \"actual\": [[], \"5\"], \"expected\": [[], \"5\"], \"passed\": true}, {\"check\": \"parameterized atomic content\", \"actual\": [[], \"status1\"], \"expected\": [[], \"status1\"], \"passed\": true}, {\"check\": \"repeat incremental\", \"actual\": [[], \"5\"], \"expected\": [[], \"5\"], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":38.09,"exit_code":0,"observations":[{"actual":[["later"],"done"],"check":"duplicate","expected":[["later"],"done"],"passed":true},{"actual":[["later"],"old"],"check":"off","expected":[["later"],"old"],"passed":true},{"actual":[["first","new"],"old"],"check":"busy","expected":[["first","new"],"old"],"passed":true},{"actual":[[],"urgent"],"check":"urgent","expected":[[],"urgent"],"passed":true},{"actual":[[],"2 of 5"],"check":"atomic","expected":[[],"2 of 5"],"passed":true},{"actual":[[],"5"],"check":"incremental","expected":[[],"5"],"passed":true},{"actual":[[],"status1"],"check":"parameterized atomic content","expected":[[],"status1"],"passed":true},{"actual":[[],"5"],"check":"repeat incremental","expected":[[],"5"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"duplicate\", \"actual\": [[\"later\"], \"done\"], \"expected\": [[\"later\"], \"done\"], \"passed\": true}, {\"check\": \"off\", \"actual\": [[\"later\"], \"old\"], \"expected\": [[\"later\"], \"old\"], \"passed\": true}, {\"check\": \"busy\", \"actual\": [[\"first\", \"new\"], \"old\"], \"expected\": [[\"first\", \"new\"], \"old\"], \"passed\": true}, {\"check\": \"urgent\", \"actual\": [[], \"urgent\"], \"expected\": [[], \"urgent\"], \"passed\": true}, {\"check\": \"atomic\", \"actual\": [[], \"2 of 5\"], \"expected\": [[], \"2 of 5\"], \"passed\": true}, {\"check\": \"incremental\", \"actual\": [[], \"5\"], \"expected\": [[], \"5\"], \"passed\": true}, {\"check\": \"parameterized atomic content\", \"actual\": [[], \"status1\"], \"expected\": [[], \"status1\"], \"passed\": true}, {\"check\": \"repeat incremental\", \"actual\": [[], \"5\"], \"expected\": [[], \"5\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}