{"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 if state=='booting': pending=[e[1]] and still violates a regression oracle.","family":"s3-assistive-announcements-producer-readiness-boot-queue","id":"FA-21651","implementations":{"attempt":{"sha256":"2f11f784784d804cae91582a094a11be267aacf5b2286410ec5716336fa398f2","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=[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')\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":"e72db7c7349a8ba3700e6abbec9eccfc0cee2f3b3d5176adf5953207ed59a599","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': out.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')\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-boot-queue","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: if state=='booting': pending.append(e[1]) is implemented as if state=='booting': out.append(e[1])","sha256":"a48d4177b4abcc334c10f75daa4b8c51c6c12446815bf7a81b1c717713e39021","title":"Booting producer speaks before output is ready · 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.15,"exit_code":1,"observations":[{"actual":[["second","third"],"ready",1,[]],"check":"trace-1","expected":[["first","second","third"],"ready",1,[]],"passed":false},{"actual":[[],"booting",2,["new"]],"check":"trace-2","expected":[[],"booting",2,["new"]],"passed":true},{"actual":[["unavailable"],"failed",1,[]],"check":"trace-3","expected":[["unavailable"],"failed",1,[]],"passed":true},{"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\": [[\"second\", \"third\"], \"ready\", 1, []], \"expected\": [[\"first\", \"second\", \"third\"], \"ready\", 1, []], \"passed\": false}, {\"check\": \"trace-2\", \"actual\": [[], \"booting\", 2, [\"new\"]], \"expected\": [[], \"booting\", 2, [\"new\"]], \"passed\": true}, {\"check\": \"trace-3\", \"actual\": [[\"unavailable\"], \"failed\", 1, []], \"expected\": [[\"unavailable\"], \"failed\", 1, []], \"passed\": true}, {\"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"},"broken":{"elapsed_ms":41.226,"exit_code":1,"observations":[{"actual":[["first","second","third"],"ready",1,[]],"check":"trace-1","expected":[["first","second","third"],"ready",1,[]],"passed":true},{"actual":[["old","new"],"booting",2,[]],"check":"trace-2","expected":[[],"booting",2,["new"]],"passed":false},{"actual":[["deferred","unavailable"],"failed",1,[]],"check":"trace-3","expected":[["unavailable"],"failed",1,[]],"passed":false},{"actual":[["deferred"],"failed",2,[]],"check":"trace-4","expected":[[],"failed",2,[]],"passed":false},{"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\": [[\"old\", \"new\"], \"booting\", 2, []], \"expected\": [[], \"booting\", 2, [\"new\"]], \"passed\": false}, {\"check\": \"trace-3\", \"actual\": [[\"deferred\", \"unavailable\"], \"failed\", 1, []], \"expected\": [[\"unavailable\"], \"failed\", 1, []], \"passed\": false}, {\"check\": \"trace-4\", \"actual\": [[\"deferred\"], \"failed\", 2, []], \"expected\": [[], \"failed\", 2, []], \"passed\": false}, {\"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."}}