{"abstract":"The announcement trace violates the stated producer-readiness contract.","category":"Assistive announcements","checks":7,"contract":"Announcement producer has booting/ready/failed state and generation. Start increments generation, enters booting, clears deferred messages. Publish during booting queues; ready publishes directly; failed drops. Ready callback must match generation, drains queued messages FIFO, and is ignored after failure. Fail matching generation clears deferred and announces unavailable once. Retry is a start. Stop fails silently and advances generation. Report speech,state,generation,deferred.","contract_signature":"events","evaluation_group":"s3-announcement-producer-readiness","failed_approach":"The attempted repair substitutes state='failed'; pending.clear(); out.append('unavailable'); out.append('unavailable') and still violates a regression oracle.","family":"s3-assistive-announcements-producer-readiness-fail-cleanup","id":"FA-21686","implementations":{"attempt":{"sha256":"160a8ecbac9975ef39e8c952c0f1ed6e0107ae2b3baaa2d649b14b32ab70e428","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(events):\n    state='failed'; generation=0; pending=[]; out=[]\n    for e in events:\n        if e[0] in ('start','retry'):\n            generation+=1; state='booting'; pending=[]\n        elif e[0]=='stop': state='failed'; generation+=1; pending=[]\n        elif e[0]=='publish':\n            if state=='booting': pending.append(e[1])\n            elif state=='ready': out.append(e[1])\n        elif e[0] in ('ready','fail'):\n            if e[1]!=generation: continue\n            if state!='booting': continue\n            if e[0]=='ready':\n                state='ready'\n                out.extend(pending)\n                pending.clear()\n            else:\n                state='failed'; pending.clear(); out.append('unavailable'); out.append('unavailable')\n    return [out,state,generation,pending]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [\"[['start'],['publish','first'*N],['publish','second'],['ready',1],['publish','third']]\", \"[['start'],['publish','old'],['retry'],['publish','new'*N],['ready',1]]\", \"[['start'],['publish','deferred'*N],['fail',1],['ready',1],['publish','should-drop']]\", \"[['start'],['publish','deferred'*N],['stop'],['ready',1]]\", \"[['start'],['fail',1],['fail',1],['retry'],['publish','retry'*N],['ready',2]]\", \"[['publish','dropped'*N],['ready',0]]\", '[]']\nexpected = {1: [[['first', 'second', 'third'], 'ready', 1, []], [[], 'booting', 2, ['new']], [['unavailable'], 'failed', 1, []], [[], 'failed', 2, []], [['unavailable', 'retry'], 'ready', 2, []], [[], 'failed', 0, []], [[], 'failed', 0, []]], 2: [[['firstfirst', 'second', 'third'], 'ready', 1, []], [[], 'booting', 2, ['newnew']], [['unavailable'], 'failed', 1, []], [[], 'failed', 2, []], [['unavailable', 'retryretry'], 'ready', 2, []], [[], 'failed', 0, []], [[], 'failed', 0, []]], 3: [[['firstfirstfirst', 'second', 'third'], 'ready', 1, []], [[], 'booting', 2, ['newnewnew']], [['unavailable'], 'failed', 1, []], [[], 'failed', 2, []], [['unavailable', 'retryretryretry'], 'ready', 2, []], [[], 'failed', 0, []], [[], 'failed', 0, []]], 4: [[['firstfirstfirstfirst', 'second', 'third'], 'ready', 1, []], [[], 'booting', 2, ['newnewnewnew']], [['unavailable'], 'failed', 1, []], [[], 'failed', 2, []], [['unavailable', 'retryretryretryretry'], 'ready', 2, []], [[], 'failed', 0, []], [[], 'failed', 0, []]], 5: [[['firstfirstfirstfirstfirst', 'second', 'third'], 'ready', 1, []], [[], 'booting', 2, ['newnewnewnewnew']], [['unavailable'], 'failed', 1, []], [[], 'failed', 2, []], [['unavailable', 'retryretryretryretryretry'], 'ready', 2, []], [[], 'failed', 0, []], [[], 'failed', 0, []]]}[N]\nfor i, expression in enumerate(fixtures):\n    check(\"trace-\"+str(i+1), solve(eval(expression)), expected[i])\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":"59d7820b4477f344dc47942ed628bdc827e511255df029f5998bd638235c7d8d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(events):\n    state='failed'; generation=0; pending=[]; out=[]\n    for e in events:\n        if e[0] in ('start','retry'):\n            generation+=1; state='booting'; pending=[]\n        elif e[0]=='stop': state='failed'; generation+=1; pending=[]\n        elif e[0]=='publish':\n            if state=='booting': pending.append(e[1])\n            elif state=='ready': out.append(e[1])\n        elif e[0] in ('ready','fail'):\n            if e[1]!=generation: continue\n            if state!='booting': continue\n            if e[0]=='ready':\n                state='ready'\n                out.extend(pending)\n                pending.clear()\n            else:\n                state='failed'; out.append('unavailable')\n    return [out,state,generation,pending]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [\"[['start'],['publish','first'*N],['publish','second'],['ready',1],['publish','third']]\", \"[['start'],['publish','old'],['retry'],['publish','new'*N],['ready',1]]\", \"[['start'],['publish','deferred'*N],['fail',1],['ready',1],['publish','should-drop']]\", \"[['start'],['publish','deferred'*N],['stop'],['ready',1]]\", \"[['start'],['fail',1],['fail',1],['retry'],['publish','retry'*N],['ready',2]]\", \"[['publish','dropped'*N],['ready',0]]\", '[]']\nexpected = {1: [[['first', 'second', 'third'], 'ready', 1, []], [[], 'booting', 2, ['new']], [['unavailable'], 'failed', 1, []], [[], 'failed', 2, []], [['unavailable', 'retry'], 'ready', 2, []], [[], 'failed', 0, []], [[], 'failed', 0, []]], 2: [[['firstfirst', 'second', 'third'], 'ready', 1, []], [[], 'booting', 2, ['newnew']], [['unavailable'], 'failed', 1, []], [[], 'failed', 2, []], [['unavailable', 'retryretry'], 'ready', 2, []], [[], 'failed', 0, []], [[], 'failed', 0, []]], 3: [[['firstfirstfirst', 'second', 'third'], 'ready', 1, []], [[], 'booting', 2, ['newnewnew']], [['unavailable'], 'failed', 1, []], [[], 'failed', 2, []], [['unavailable', 'retryretryretry'], 'ready', 2, []], [[], 'failed', 0, []], [[], 'failed', 0, []]], 4: [[['firstfirstfirstfirst', 'second', 'third'], 'ready', 1, []], [[], 'booting', 2, ['newnewnewnew']], [['unavailable'], 'failed', 1, []], [[], 'failed', 2, []], [['unavailable', 'retryretryretryretry'], 'ready', 2, []], [[], 'failed', 0, []], [[], 'failed', 0, []]], 5: [[['firstfirstfirstfirstfirst', 'second', 'third'], 'ready', 1, []], [[], 'booting', 2, ['newnewnewnewnew']], [['unavailable'], 'failed', 1, []], [[], 'failed', 2, []], [['unavailable', 'retryretryretryretryretry'], 'ready', 2, []], [[], 'failed', 0, []], [[], 'failed', 0, []]]}[N]\nfor i, expression in enumerate(fixtures):\n    check(\"trace-\"+str(i+1), solve(eval(expression)), expected[i])\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 bounded policy, not a browser, speech engine, platform API, or standards conformance claim. 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-assistive-announcements-producer-readiness-fail-cleanup","generated_at":"2026-09-29T14:40:31.202176+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Deterministic controlled model of assistive announcement delivery.","root_cause":"Fault site: state='failed'; pending.clear(); out.append('unavailable') is implemented as state='failed'; out.append('unavailable')","sha256":"c362036b23f9d9c7bbe678e513ace587c5be32202101bc5cda65f752bd168f4a","title":"Failed producer retains queued private speech · 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":43.751,"exit_code":1,"observations":[{"actual":[["first","second","third"],"ready",1,[]],"check":"trace-1","expected":[["first","second","third"],"ready",1,[]],"passed":true},{"actual":[[],"booting",2,["new"]],"check":"trace-2","expected":[[],"booting",2,["new"]],"passed":true},{"actual":[["unavailable","unavailable"],"failed",1,[]],"check":"trace-3","expected":[["unavailable"],"failed",1,[]],"passed":false},{"actual":[[],"failed",2,[]],"check":"trace-4","expected":[[],"failed",2,[]],"passed":true},{"actual":[["unavailable","unavailable","retry"],"ready",2,[]],"check":"trace-5","expected":[["unavailable","retry"],"ready",2,[]],"passed":false},{"actual":[[],"failed",0,[]],"check":"trace-6","expected":[[],"failed",0,[]],"passed":true},{"actual":[[],"failed",0,[]],"check":"trace-7","expected":[[],"failed",0,[]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"trace-1\", \"actual\": [[\"first\", \"second\", \"third\"], \"ready\", 1, []], \"expected\": [[\"first\", \"second\", \"third\"], \"ready\", 1, []], \"passed\": true}, {\"check\": \"trace-2\", \"actual\": [[], \"booting\", 2, [\"new\"]], \"expected\": [[], \"booting\", 2, [\"new\"]], \"passed\": true}, {\"check\": \"trace-3\", \"actual\": [[\"unavailable\", \"unavailable\"], \"failed\", 1, []], \"expected\": [[\"unavailable\"], \"failed\", 1, []], \"passed\": false}, {\"check\": \"trace-4\", \"actual\": [[], \"failed\", 2, []], \"expected\": [[], \"failed\", 2, []], \"passed\": true}, {\"check\": \"trace-5\", \"actual\": [[\"unavailable\", \"unavailable\", \"retry\"], \"ready\", 2, []], \"expected\": [[\"unavailable\", \"retry\"], \"ready\", 2, []], \"passed\": false}, {\"check\": \"trace-6\", \"actual\": [[], \"failed\", 0, []], \"expected\": [[], \"failed\", 0, []], \"passed\": true}, {\"check\": \"trace-7\", \"actual\": [[], \"failed\", 0, []], \"expected\": [[], \"failed\", 0, []], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.931,"exit_code":1,"observations":[{"actual":[["first","second","third"],"ready",1,[]],"check":"trace-1","expected":[["first","second","third"],"ready",1,[]],"passed":true},{"actual":[[],"booting",2,["new"]],"check":"trace-2","expected":[[],"booting",2,["new"]],"passed":true},{"actual":[["unavailable"],"failed",1,["deferred"]],"check":"trace-3","expected":[["unavailable"],"failed",1,[]],"passed":false},{"actual":[[],"failed",2,[]],"check":"trace-4","expected":[[],"failed",2,[]],"passed":true},{"actual":[["unavailable","retry"],"ready",2,[]],"check":"trace-5","expected":[["unavailable","retry"],"ready",2,[]],"passed":true},{"actual":[[],"failed",0,[]],"check":"trace-6","expected":[[],"failed",0,[]],"passed":true},{"actual":[[],"failed",0,[]],"check":"trace-7","expected":[[],"failed",0,[]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"trace-1\", \"actual\": [[\"first\", \"second\", \"third\"], \"ready\", 1, []], \"expected\": [[\"first\", \"second\", \"third\"], \"ready\", 1, []], \"passed\": true}, {\"check\": \"trace-2\", \"actual\": [[], \"booting\", 2, [\"new\"]], \"expected\": [[], \"booting\", 2, [\"new\"]], \"passed\": true}, {\"check\": \"trace-3\", \"actual\": [[\"unavailable\"], \"failed\", 1, [\"deferred\"]], \"expected\": [[\"unavailable\"], \"failed\", 1, []], \"passed\": false}, {\"check\": \"trace-4\", \"actual\": [[], \"failed\", 2, []], \"expected\": [[], \"failed\", 2, []], \"passed\": true}, {\"check\": \"trace-5\", \"actual\": [[\"unavailable\", \"retry\"], \"ready\", 2, []], \"expected\": [[\"unavailable\", \"retry\"], \"ready\", 2, []], \"passed\": true}, {\"check\": \"trace-6\", \"actual\": [[], \"failed\", 0, []], \"expected\": [[], \"failed\", 0, []], \"passed\": true}, {\"check\": \"trace-7\", \"actual\": [[], \"failed\", 0, []], \"expected\": [[], \"failed\", 0, []], \"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."}}