{"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 out.append(' | '.join(label+': '+text for label,text in reversed(parts))) and still violates a regression oracle.","family":"s3-assistive-announcements-utterance-bundle-join-segments","id":"FA-21781","implementations":{"attempt":{"sha256":"131c676c922a7faa513a0cb70bd99958d929ab50876b5bcf7d01122aed855da7","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 reversed(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":"336cd550094c62166294da46202450e9540f0f486565bae3412433cd1d2b3075","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(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-join-segments","generated_at":"2026-09-29T14:40:32.189955+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: out.append(' | '.join(label+': '+text for label,text in parts))","root_cause":"Fault site: out.append(' | '.join(label+': '+text for label,text in parts)) is implemented as out.append(' | '.join(text for label,text in parts))","sha256":"0d414b24f56e57815edd97f844e2286ad2ca9611a1b21e28d694ad6f3d1a845c","title":"Bundle speech omits labels needed to distinguish values · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.425,"exit_code":1,"observations":[{"actual":[["Total: 2 | Name: New"],[],["a"]],"check":"trace-1","expected":[["Name: New | Total: 2"],[],["a"]],"passed":false},{"actual":[["One: x"],[],["a"]],"check":"trace-2","expected":[["One: x"],[],["a"]],"passed":true},{"actual":[["Two: y | One: x"],[],["a"]],"check":"trace-3","expected":[["One: x | Two: y"],[],["a"]],"passed":false},{"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":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"trace-1\", \"actual\": [[\"Total: 2 | Name: New\"], [], [\"a\"]], \"expected\": [[\"Name: New | Total: 2\"], [], [\"a\"]], \"passed\": false}, {\"check\": \"trace-2\", \"actual\": [[\"One: x\"], [], [\"a\"]], \"expected\": [[\"One: x\"], [], [\"a\"]], \"passed\": true}, {\"check\": \"trace-3\", \"actual\": [[\"Two: y | One: x\"], [], [\"a\"]], \"expected\": [[\"One: x | Two: y\"], [], [\"a\"]], \"passed\": false}, {\"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\": false}\n"},"broken":{"elapsed_ms":39.673,"exit_code":1,"observations":[{"actual":[["New | 2"],[],["a"]],"check":"trace-1","expected":[["Name: New | Total: 2"],[],["a"]],"passed":false},{"actual":[["x"],[],["a"]],"check":"trace-2","expected":[["One: x"],[],["a"]],"passed":false},{"actual":[["x | y"],[],["a"]],"check":"trace-3","expected":[["One: x | Two: y"],[],["a"]],"passed":false},{"actual":[["x","y"],[],["a"]],"check":"trace-4","expected":[["One: x","Again: y"],[],["a"]],"passed":false},{"actual":[["x"],[],["a"]],"check":"trace-5","expected":[["One: x"],[],["a"]],"passed":false},{"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":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"trace-1\", \"actual\": [[\"New | 2\"], [], [\"a\"]], \"expected\": [[\"Name: New | Total: 2\"], [], [\"a\"]], \"passed\": false}, {\"check\": \"trace-2\", \"actual\": [[\"x\"], [], [\"a\"]], \"expected\": [[\"One: x\"], [], [\"a\"]], \"passed\": false}, {\"check\": \"trace-3\", \"actual\": [[\"x | y\"], [], [\"a\"]], \"expected\": [[\"One: x | Two: y\"], [], [\"a\"]], \"passed\": false}, {\"check\": \"trace-4\", \"actual\": [[\"x\", \"y\"], [], [\"a\"]], \"expected\": [[\"One: x\", \"Again: y\"], [], [\"a\"]], \"passed\": false}, {\"check\": \"trace-5\", \"actual\": [[\"x\"], [], [\"a\"]], \"expected\": [[\"One: x\"], [], [\"a\"]], \"passed\": false}, {\"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\": false}\n"},"fixed":{"elapsed_ms":45.407,"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"}