{"abstract":"The announcement trace violates the stated utterance-bundle contract.","category":"Assistive announcements","checks":7,"contract":"Bundles are atomic ordered speech segments. Open initializes unsealed bundle; part appends [label,text] while unsealed; replace edits matching label only. Seal marks immutable. Dispatch requires sealed and nonempty, emits a single joined label:text string, removes bundle and records delivered ID. Reopen delivered ID clears delivery receipt. Retract drops bundle and receipt. Rename updates label preserving text. Limit truncates number of pending segments from end. Return speech and pending bundle segments/sealed status.","evaluation_group":"s3-announcement-utterance-bundle","failed_approach":"The attempted repair substitutes if not sealed: continue and still violates a regression oracle.","family":"s3-assistive-announcements-utterance-bundle-dispatch-ready","id":"FA-21776","implementations":{"attempt":{"sha256":"177276f1a22c7a6023b04d344f40c2417a55d6c05a29231f625cd15a0c9e2ed6","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(events):\n    bundles={}; delivered=set(); out=[]\n    for e in events:\n        if e[0]=='open': bundles[e[1]]=[[],False]; delivered.discard(e[1])\n        elif e[0]=='retract': bundles.pop(e[1],None); delivered.discard(e[1])\n        elif len(e)>1 and e[1] in bundles:\n            parts,sealed=bundles[e[1]]\n            if e[0]=='part' and not sealed: parts.append([e[2],e[3]])\n            elif e[0]=='replace' and not sealed:\n                for p in parts:\n                    if p[0]==e[2]: p[1]=e[3]\n            elif e[0]=='rename' and not sealed:\n                for p in parts:\n                    if p[0]==e[2]: p[0]=e[3]\n            elif e[0]=='limit' and not sealed: del parts[max(0,e[2]):]\n            elif e[0]=='seal': bundles[e[1]][1]=True\n            elif e[0]=='dispatch':\n                if not sealed: continue\n                if e[1] in delivered: continue\n                out.append(' | '.join(label+': '+text for label,text in parts))\n                delivered.add(e[1]); del bundles[e[1]]\n    return [out,[[k,v[0],v[1]] for k,v in bundles.items()],sorted(delivered)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [\"[['open','a'],['part','a','Name','A'*N],['part','a','Count','2'],['replace','a','Name','New'],['rename','a','Count','Total'],['seal','a'],['dispatch','a']]\", \"[['open','a'],['part','a','One','x'*N],['seal','a'],['part','a','Late','no'],['seal','a'],['dispatch','a']]\", \"[['open','a'],['part','a','One','x'*N],['part','a','Two','y'],['part','a','Three','z'],['limit','a',2],['seal','a'],['dispatch','a']]\", \"[['open','a'],['part','a','One','x'*N],['seal','a'],['dispatch','a'],['open','a'],['part','a','Again','y'],['seal','a'],['dispatch','a']]\", \"[['open','a'],['part','a','One','x'*N],['seal','a'],['dispatch','a'],['open','b'],['part','b','Two','y'],['retract','b']]\", \"[['open','a'],['part','a','Partial','x'*N],['dispatch','a'],['open','b'],['seal','b'],['dispatch','b']]\", \"[['open','a'],['part','a','Old','x'*N],['open','a']]\"]\nexpected = {1: [[['Name: New | Total: 2'], [], ['a']], [['One: x'], [], ['a']], [['One: x | Two: y'], [], ['a']], [['One: x', 'Again: y'], [], ['a']], [['One: x'], [], ['a']], [[], [['a', [['Partial', 'x']], False], ['b', [], True]], []], [[], [['a', [], False]], []]], 2: [[['Name: New | Total: 2'], [], ['a']], [['One: xx'], [], ['a']], [['One: xx | Two: y'], [], ['a']], [['One: xx', 'Again: y'], [], ['a']], [['One: xx'], [], ['a']], [[], [['a', [['Partial', 'xx']], False], ['b', [], True]], []], [[], [['a', [], False]], []]], 3: [[['Name: New | Total: 2'], [], ['a']], [['One: xxx'], [], ['a']], [['One: xxx | Two: y'], [], ['a']], [['One: xxx', 'Again: y'], [], ['a']], [['One: xxx'], [], ['a']], [[], [['a', [['Partial', 'xxx']], False], ['b', [], True]], []], [[], [['a', [], False]], []]], 4: [[['Name: New | Total: 2'], [], ['a']], [['One: xxxx'], [], ['a']], [['One: xxxx | Two: y'], [], ['a']], [['One: xxxx', 'Again: y'], [], ['a']], [['One: xxxx'], [], ['a']], [[], [['a', [['Partial', 'xxxx']], False], ['b', [], True]], []], [[], [['a', [], False]], []]], 5: [[['Name: New | Total: 2'], [], ['a']], [['One: xxxxx'], [], ['a']], [['One: xxxxx | Two: y'], [], ['a']], [['One: xxxxx', 'Again: y'], [], ['a']], [['One: xxxxx'], [], ['a']], [[], [['a', [['Partial', 'xxxxx']], False], ['b', [], True]], []], [[], [['a', [], False]], []]]}[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":"d9cc7d391e7ffa0657ea45bdb211c54a48359ec7132e3b35444a98d7b26b8c8c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(events):\n    bundles={}; delivered=set(); out=[]\n    for e in events:\n        if e[0]=='open': bundles[e[1]]=[[],False]; delivered.discard(e[1])\n        elif e[0]=='retract': bundles.pop(e[1],None); delivered.discard(e[1])\n        elif len(e)>1 and e[1] in bundles:\n            parts,sealed=bundles[e[1]]\n            if e[0]=='part' and not sealed: parts.append([e[2],e[3]])\n            elif e[0]=='replace' and not sealed:\n                for p in parts:\n                    if p[0]==e[2]: p[1]=e[3]\n            elif e[0]=='rename' and not sealed:\n                for p in parts:\n                    if p[0]==e[2]: p[0]=e[3]\n            elif e[0]=='limit' and not sealed: del parts[max(0,e[2]):]\n            elif e[0]=='seal': bundles[e[1]][1]=True\n            elif e[0]=='dispatch':\n                if not parts: continue\n                if e[1] in delivered: continue\n                out.append(' | '.join(label+': '+text for label,text in parts))\n                delivered.add(e[1]); del bundles[e[1]]\n    return [out,[[k,v[0],v[1]] for k,v in bundles.items()],sorted(delivered)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [\"[['open','a'],['part','a','Name','A'*N],['part','a','Count','2'],['replace','a','Name','New'],['rename','a','Count','Total'],['seal','a'],['dispatch','a']]\", \"[['open','a'],['part','a','One','x'*N],['seal','a'],['part','a','Late','no'],['seal','a'],['dispatch','a']]\", \"[['open','a'],['part','a','One','x'*N],['part','a','Two','y'],['part','a','Three','z'],['limit','a',2],['seal','a'],['dispatch','a']]\", \"[['open','a'],['part','a','One','x'*N],['seal','a'],['dispatch','a'],['open','a'],['part','a','Again','y'],['seal','a'],['dispatch','a']]\", \"[['open','a'],['part','a','One','x'*N],['seal','a'],['dispatch','a'],['open','b'],['part','b','Two','y'],['retract','b']]\", \"[['open','a'],['part','a','Partial','x'*N],['dispatch','a'],['open','b'],['seal','b'],['dispatch','b']]\", \"[['open','a'],['part','a','Old','x'*N],['open','a']]\"]\nexpected = {1: [[['Name: New | Total: 2'], [], ['a']], [['One: x'], [], ['a']], [['One: x | Two: y'], [], ['a']], [['One: x', 'Again: y'], [], ['a']], [['One: x'], [], ['a']], [[], [['a', [['Partial', 'x']], False], ['b', [], True]], []], [[], [['a', [], False]], []]], 2: [[['Name: New | Total: 2'], [], ['a']], [['One: xx'], [], ['a']], [['One: xx | Two: y'], [], ['a']], [['One: xx', 'Again: y'], [], ['a']], [['One: xx'], [], ['a']], [[], [['a', [['Partial', 'xx']], False], ['b', [], True]], []], [[], [['a', [], False]], []]], 3: [[['Name: New | Total: 2'], [], ['a']], [['One: xxx'], [], ['a']], [['One: xxx | Two: y'], [], ['a']], [['One: xxx', 'Again: y'], [], ['a']], [['One: xxx'], [], ['a']], [[], [['a', [['Partial', 'xxx']], False], ['b', [], True]], []], [[], [['a', [], False]], []]], 4: [[['Name: New | Total: 2'], [], ['a']], [['One: xxxx'], [], ['a']], [['One: xxxx | Two: y'], [], ['a']], [['One: xxxx', 'Again: y'], [], ['a']], [['One: xxxx'], [], ['a']], [[], [['a', [['Partial', 'xxxx']], False], ['b', [], True]], []], [[], [['a', [], False]], []]], 5: [[['Name: New | Total: 2'], [], ['a']], [['One: xxxxx'], [], ['a']], [['One: xxxxx | Two: y'], [], ['a']], [['One: xxxxx', 'Again: y'], [], ['a']], [['One: xxxxx'], [], ['a']], [[], [['a', [['Partial', 'xxxxx']], False], ['b', [], True]], []], [[], [['a', [], False]], []]]}[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"},"fixed":{"sha256":"86c069198ee85cd244b7d1d430170264dc61ec85b30f1d1b0ac122f430f084b7","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(events):\n    bundles={}; delivered=set(); out=[]\n    for e in events:\n        if e[0]=='open': bundles[e[1]]=[[],False]; delivered.discard(e[1])\n        elif e[0]=='retract': bundles.pop(e[1],None); delivered.discard(e[1])\n        elif len(e)>1 and e[1] in bundles:\n            parts,sealed=bundles[e[1]]\n            if e[0]=='part' and not sealed: parts.append([e[2],e[3]])\n            elif e[0]=='replace' and not sealed:\n                for p in parts:\n                    if p[0]==e[2]: p[1]=e[3]\n            elif e[0]=='rename' and not sealed:\n                for p in parts:\n                    if p[0]==e[2]: p[0]=e[3]\n            elif e[0]=='limit' and not sealed: del parts[max(0,e[2]):]\n            elif e[0]=='seal': bundles[e[1]][1]=True\n            elif e[0]=='dispatch':\n                if not sealed or not parts: continue\n                if e[1] in delivered: continue\n                out.append(' | '.join(label+': '+text for label,text in parts))\n                delivered.add(e[1]); del bundles[e[1]]\n    return [out,[[k,v[0],v[1]] for k,v in bundles.items()],sorted(delivered)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [\"[['open','a'],['part','a','Name','A'*N],['part','a','Count','2'],['replace','a','Name','New'],['rename','a','Count','Total'],['seal','a'],['dispatch','a']]\", \"[['open','a'],['part','a','One','x'*N],['seal','a'],['part','a','Late','no'],['seal','a'],['dispatch','a']]\", \"[['open','a'],['part','a','One','x'*N],['part','a','Two','y'],['part','a','Three','z'],['limit','a',2],['seal','a'],['dispatch','a']]\", \"[['open','a'],['part','a','One','x'*N],['seal','a'],['dispatch','a'],['open','a'],['part','a','Again','y'],['seal','a'],['dispatch','a']]\", \"[['open','a'],['part','a','One','x'*N],['seal','a'],['dispatch','a'],['open','b'],['part','b','Two','y'],['retract','b']]\", \"[['open','a'],['part','a','Partial','x'*N],['dispatch','a'],['open','b'],['seal','b'],['dispatch','b']]\", \"[['open','a'],['part','a','Old','x'*N],['open','a']]\"]\nexpected = {1: [[['Name: New | Total: 2'], [], ['a']], [['One: x'], [], ['a']], [['One: x | Two: y'], [], ['a']], [['One: x', 'Again: y'], [], ['a']], [['One: x'], [], ['a']], [[], [['a', [['Partial', 'x']], False], ['b', [], True]], []], [[], [['a', [], False]], []]], 2: [[['Name: New | Total: 2'], [], ['a']], [['One: xx'], [], ['a']], [['One: xx | Two: y'], [], ['a']], [['One: xx', 'Again: y'], [], ['a']], [['One: xx'], [], ['a']], [[], [['a', [['Partial', 'xx']], False], ['b', [], True]], []], [[], [['a', [], False]], []]], 3: [[['Name: New | Total: 2'], [], ['a']], [['One: xxx'], [], ['a']], [['One: xxx | Two: y'], [], ['a']], [['One: xxx', 'Again: y'], [], ['a']], [['One: xxx'], [], ['a']], [[], [['a', [['Partial', 'xxx']], False], ['b', [], True]], []], [[], [['a', [], False]], []]], 4: [[['Name: New | Total: 2'], [], ['a']], [['One: xxxx'], [], ['a']], [['One: xxxx | Two: y'], [], ['a']], [['One: xxxx', 'Again: y'], [], ['a']], [['One: xxxx'], [], ['a']], [[], [['a', [['Partial', 'xxxx']], False], ['b', [], True]], []], [[], [['a', [], False]], []]], 5: [[['Name: New | Total: 2'], [], ['a']], [['One: xxxxx'], [], ['a']], [['One: xxxxx | Two: y'], [], ['a']], [['One: xxxxx', 'Again: y'], [], ['a']], [['One: xxxxx'], [], ['a']], [[], [['a', [['Partial', 'xxxxx']], False], ['b', [], True]], []], [[], [['a', [], False]], []]]}[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-utterance-bundle-dispatch-ready","generated_at":"2026-09-29T14:40:32.058021+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Deterministic controlled model of assistive announcement delivery.","repair":"Restore the stated transition: if not sealed or not parts: continue","root_cause":"Fault site: if not sealed or not parts: continue is implemented as if not parts: continue","sha256":"d1cda2638d5a04bb82ddd36201535c84fe6a2de0dc88b2241cc899cb9a3f0076","title":"Unsealed partial bundle is spoken · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":50.516,"exit_code":1,"observations":[{"actual":[["Name: New | Total: 2"],[],["a"]],"check":"trace-1","expected":[["Name: New | Total: 2"],[],["a"]],"passed":true},{"actual":[["One: x"],[],["a"]],"check":"trace-2","expected":[["One: x"],[],["a"]],"passed":true},{"actual":[["One: x | Two: y"],[],["a"]],"check":"trace-3","expected":[["One: x | Two: y"],[],["a"]],"passed":true},{"actual":[["One: x","Again: y"],[],["a"]],"check":"trace-4","expected":[["One: x","Again: y"],[],["a"]],"passed":true},{"actual":[["One: x"],[],["a"]],"check":"trace-5","expected":[["One: x"],[],["a"]],"passed":true},{"actual":[[""],[["a",[["Partial","x"]],false]],["b"]],"check":"trace-6","expected":[[],[["a",[["Partial","x"]],false],["b",[],true]],[]],"passed":false},{"actual":[[],[["a",[],false]],[]],"check":"trace-7","expected":[[],[["a",[],false]],[]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"trace-1\", \"actual\": [[\"Name: New | Total: 2\"], [], [\"a\"]], \"expected\": [[\"Name: New | Total: 2\"], [], [\"a\"]], \"passed\": true}, {\"check\": \"trace-2\", \"actual\": [[\"One: x\"], [], [\"a\"]], \"expected\": [[\"One: x\"], [], [\"a\"]], \"passed\": true}, {\"check\": \"trace-3\", \"actual\": [[\"One: x | Two: y\"], [], [\"a\"]], \"expected\": [[\"One: x | Two: y\"], [], [\"a\"]], \"passed\": true}, {\"check\": \"trace-4\", \"actual\": [[\"One: x\", \"Again: y\"], [], [\"a\"]], \"expected\": [[\"One: x\", \"Again: y\"], [], [\"a\"]], \"passed\": true}, {\"check\": \"trace-5\", \"actual\": [[\"One: x\"], [], [\"a\"]], \"expected\": [[\"One: x\"], [], [\"a\"]], \"passed\": true}, {\"check\": \"trace-6\", \"actual\": [[\"\"], [[\"a\", [[\"Partial\", \"x\"]], false]], [\"b\"]], \"expected\": [[], [[\"a\", [[\"Partial\", \"x\"]], false], [\"b\", [], true]], []], \"passed\": false}, {\"check\": \"trace-7\", \"actual\": [[], [[\"a\", [], false]], []], \"expected\": [[], [[\"a\", [], false]], []], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.36,"exit_code":1,"observations":[{"actual":[["Name: New | Total: 2"],[],["a"]],"check":"trace-1","expected":[["Name: New | Total: 2"],[],["a"]],"passed":true},{"actual":[["One: x"],[],["a"]],"check":"trace-2","expected":[["One: x"],[],["a"]],"passed":true},{"actual":[["One: x | Two: y"],[],["a"]],"check":"trace-3","expected":[["One: x | Two: y"],[],["a"]],"passed":true},{"actual":[["One: x","Again: y"],[],["a"]],"check":"trace-4","expected":[["One: x","Again: y"],[],["a"]],"passed":true},{"actual":[["One: x"],[],["a"]],"check":"trace-5","expected":[["One: x"],[],["a"]],"passed":true},{"actual":[["Partial: x"],[["b",[],true]],["a"]],"check":"trace-6","expected":[[],[["a",[["Partial","x"]],false],["b",[],true]],[]],"passed":false},{"actual":[[],[["a",[],false]],[]],"check":"trace-7","expected":[[],[["a",[],false]],[]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"trace-1\", \"actual\": [[\"Name: New | Total: 2\"], [], [\"a\"]], \"expected\": [[\"Name: New | Total: 2\"], [], [\"a\"]], \"passed\": true}, {\"check\": \"trace-2\", \"actual\": [[\"One: x\"], [], [\"a\"]], \"expected\": [[\"One: x\"], [], [\"a\"]], \"passed\": true}, {\"check\": \"trace-3\", \"actual\": [[\"One: x | Two: y\"], [], [\"a\"]], \"expected\": [[\"One: x | Two: y\"], [], [\"a\"]], \"passed\": true}, {\"check\": \"trace-4\", \"actual\": [[\"One: x\", \"Again: y\"], [], [\"a\"]], \"expected\": [[\"One: x\", \"Again: y\"], [], [\"a\"]], \"passed\": true}, {\"check\": \"trace-5\", \"actual\": [[\"One: x\"], [], [\"a\"]], \"expected\": [[\"One: x\"], [], [\"a\"]], \"passed\": true}, {\"check\": \"trace-6\", \"actual\": [[\"Partial: x\"], [[\"b\", [], true]], [\"a\"]], \"expected\": [[], [[\"a\", [[\"Partial\", \"x\"]], false], [\"b\", [], true]], []], \"passed\": false}, {\"check\": \"trace-7\", \"actual\": [[], [[\"a\", [], false]], []], \"expected\": [[], [[\"a\", [], false]], []], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.571,"exit_code":0,"observations":[{"actual":[["Name: New | Total: 2"],[],["a"]],"check":"trace-1","expected":[["Name: New | Total: 2"],[],["a"]],"passed":true},{"actual":[["One: x"],[],["a"]],"check":"trace-2","expected":[["One: x"],[],["a"]],"passed":true},{"actual":[["One: x | Two: y"],[],["a"]],"check":"trace-3","expected":[["One: x | Two: y"],[],["a"]],"passed":true},{"actual":[["One: x","Again: y"],[],["a"]],"check":"trace-4","expected":[["One: x","Again: y"],[],["a"]],"passed":true},{"actual":[["One: x"],[],["a"]],"check":"trace-5","expected":[["One: x"],[],["a"]],"passed":true},{"actual":[[],[["a",[["Partial","x"]],false],["b",[],true]],[]],"check":"trace-6","expected":[[],[["a",[["Partial","x"]],false],["b",[],true]],[]],"passed":true},{"actual":[[],[["a",[],false]],[]],"check":"trace-7","expected":[[],[["a",[],false]],[]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"trace-1\", \"actual\": [[\"Name: New | Total: 2\"], [], [\"a\"]], \"expected\": [[\"Name: New | Total: 2\"], [], [\"a\"]], \"passed\": true}, {\"check\": \"trace-2\", \"actual\": [[\"One: x\"], [], [\"a\"]], \"expected\": [[\"One: x\"], [], [\"a\"]], \"passed\": true}, {\"check\": \"trace-3\", \"actual\": [[\"One: x | Two: y\"], [], [\"a\"]], \"expected\": [[\"One: x | Two: y\"], [], [\"a\"]], \"passed\": true}, {\"check\": \"trace-4\", \"actual\": [[\"One: x\", \"Again: y\"], [], [\"a\"]], \"expected\": [[\"One: x\", \"Again: y\"], [], [\"a\"]], \"passed\": true}, {\"check\": \"trace-5\", \"actual\": [[\"One: x\"], [], [\"a\"]], \"expected\": [[\"One: x\"], [], [\"a\"]], \"passed\": true}, {\"check\": \"trace-6\", \"actual\": [[], [[\"a\", [[\"Partial\", \"x\"]], false], [\"b\", [], true]], []], \"expected\": [[], [[\"a\", [[\"Partial\", \"x\"]], false], [\"b\", [], true]], []], \"passed\": true}, {\"check\": \"trace-7\", \"actual\": [[], [[\"a\", [], false]], []], \"expected\": [[], [[\"a\", [], false]], []], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}