{"abstract":"The event trace violates the release dot rule and produces incorrect keyboard state or command output.","category":"Keyboard interactions","checks":11,"contract":"Events [kind,dot]. Dot values 1..8. Down adds a dot to held and accumulated chord; repeated down does not add another dot. Up releases a held dot and commits sorted accumulated dots only when the final held dot is released. Cancel clears held/chord without output; separator commits pending chord then emits empty dot list and resets. Return committed dot lists, held and accumulated sets. Inputs are finite ordered event traces; return the stated deterministic state. Batch entries are independent. N varies the number of independent input transactions.","evaluation_group":"s3-keyboard-braille-chord","failed_approach":"The partial repair changes this transition to held.clear(), which still violates the model contract on the explicit regression traces.","family":"s3-keyboard-interactions-braille-chord-release-dot","id":"FA-31916","implementations":{"attempt":{"sha256":"042118aca319952ead0dc5f37e107de59a487f1aabe59795a22483a53f3ec2be","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cases):\n    def run(c):\n        held=set(); chord=set(); out=[]; ignored=0\n        for kind,dot in c:\n            if kind in ('down','up') and not 1<=dot<=8:\n                ignored+=1\n                continue\n            if kind=='down':\n                held.add(dot)\n                chord.add(dot)\n            elif kind=='up' and dot in held:\n                held.clear()\n                if not held and chord:\n                    out.append(sorted(chord))\n                    chord.clear()\n            elif kind=='up': ignored+=1\n            elif kind=='cancel':\n                held.clear(); chord.clear()\n            elif kind=='separator':\n                if chord: out.append(sorted(chord))\n                out.append([])\n                held.clear(); chord.clear()\n        return [out,sorted(held),sorted(chord),ignored]\n    return [run(c) for c in cases]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('braille-chord scenario 0', solve([[]] * N), [[[], [], [], 0]] * N)\ncheck('braille-chord scenario 1', solve([[['down', 1], ['down', 2]]] * N), [[[], [1, 2], [1, 2], 0]] * N)\ncheck('braille-chord scenario 2', solve([[['down', 1], ['down', 8], ['up', 1], ['up', 8]]] * N), [[[[1, 8]], [], [], 0]] * N)\ncheck('braille-chord scenario 3', solve([[['down', 2], ['down', 2], ['up', 2]]] * N), [[[[2]], [], [], 0]] * N)\ncheck('braille-chord scenario 4', solve([[['down', 1], ['down', 2], ['up', 1]]] * N), [[[], [2], [1, 2], 0]] * N)\ncheck('braille-chord scenario 5', solve([[['down', 1], ['up', 1], ['down', 2], ['up', 2]]] * N), [[[[1], [2]], [], [], 0]] * N)\ncheck('braille-chord scenario 6', solve([[['down', 2], ['up', 3]]] * N), [[[], [2], [2], 1]] * N)\ncheck('braille-chord scenario 7', solve([[['down', 0], ['up', 0], ['down', 9]]] * N), [[[], [], [], 3]] * N)\ncheck('braille-chord scenario 8', solve([[['down', 1], ['down', 2], ['separator', 0]]] * N), [[[[1, 2], []], [], [], 0]] * N)\ncheck('braille-chord scenario 9', solve([[['separator', 0]]] * N), [[[[]], [], [], 0]] * N)\ncheck('braille-chord scenario 10', solve([[['down', 1], ['cancel', 0], ['up', 1]]] * N), [[[], [], [], 1]] * N)\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":"04155811c2e165e54f255c7278e023075221ce243c35368a67acd0289ec0cfa7","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cases):\n    def run(c):\n        held=set(); chord=set(); out=[]; ignored=0\n        for kind,dot in c:\n            if kind in ('down','up') and not 1<=dot<=8:\n                ignored+=1\n                continue\n            if kind=='down':\n                held.add(dot)\n                chord.add(dot)\n            elif kind=='up' and dot in held:\n                pass\n                if not held and chord:\n                    out.append(sorted(chord))\n                    chord.clear()\n            elif kind=='up': ignored+=1\n            elif kind=='cancel':\n                held.clear(); chord.clear()\n            elif kind=='separator':\n                if chord: out.append(sorted(chord))\n                out.append([])\n                held.clear(); chord.clear()\n        return [out,sorted(held),sorted(chord),ignored]\n    return [run(c) for c in cases]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('braille-chord scenario 0', solve([[]] * N), [[[], [], [], 0]] * N)\ncheck('braille-chord scenario 1', solve([[['down', 1], ['down', 2]]] * N), [[[], [1, 2], [1, 2], 0]] * N)\ncheck('braille-chord scenario 2', solve([[['down', 1], ['down', 8], ['up', 1], ['up', 8]]] * N), [[[[1, 8]], [], [], 0]] * N)\ncheck('braille-chord scenario 3', solve([[['down', 2], ['down', 2], ['up', 2]]] * N), [[[[2]], [], [], 0]] * N)\ncheck('braille-chord scenario 4', solve([[['down', 1], ['down', 2], ['up', 1]]] * N), [[[], [2], [1, 2], 0]] * N)\ncheck('braille-chord scenario 5', solve([[['down', 1], ['up', 1], ['down', 2], ['up', 2]]] * N), [[[[1], [2]], [], [], 0]] * N)\ncheck('braille-chord scenario 6', solve([[['down', 2], ['up', 3]]] * N), [[[], [2], [2], 1]] * N)\ncheck('braille-chord scenario 7', solve([[['down', 0], ['up', 0], ['down', 9]]] * N), [[[], [], [], 3]] * N)\ncheck('braille-chord scenario 8', solve([[['down', 1], ['down', 2], ['separator', 0]]] * N), [[[[1, 2], []], [], [], 0]] * N)\ncheck('braille-chord scenario 9', solve([[['separator', 0]]] * N), [[[[]], [], [], 0]] * N)\ncheck('braille-chord scenario 10', solve([[['down', 1], ['cancel', 0], ['up', 1]]] * N), [[[], [], [], 1]] * N)\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":"735ecc8729791f83b2cb4eba105e3d1253081696e146da62e4ac323c322955dd","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cases):\n    def run(c):\n        held=set(); chord=set(); out=[]; ignored=0\n        for kind,dot in c:\n            if kind in ('down','up') and not 1<=dot<=8:\n                ignored+=1\n                continue\n            if kind=='down':\n                held.add(dot)\n                chord.add(dot)\n            elif kind=='up' and dot in held:\n                held.discard(dot)\n                if not held and chord:\n                    out.append(sorted(chord))\n                    chord.clear()\n            elif kind=='up': ignored+=1\n            elif kind=='cancel':\n                held.clear(); chord.clear()\n            elif kind=='separator':\n                if chord: out.append(sorted(chord))\n                out.append([])\n                held.clear(); chord.clear()\n        return [out,sorted(held),sorted(chord),ignored]\n    return [run(c) for c in cases]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('braille-chord scenario 0', solve([[]] * N), [[[], [], [], 0]] * N)\ncheck('braille-chord scenario 1', solve([[['down', 1], ['down', 2]]] * N), [[[], [1, 2], [1, 2], 0]] * N)\ncheck('braille-chord scenario 2', solve([[['down', 1], ['down', 8], ['up', 1], ['up', 8]]] * N), [[[[1, 8]], [], [], 0]] * N)\ncheck('braille-chord scenario 3', solve([[['down', 2], ['down', 2], ['up', 2]]] * N), [[[[2]], [], [], 0]] * N)\ncheck('braille-chord scenario 4', solve([[['down', 1], ['down', 2], ['up', 1]]] * N), [[[], [2], [1, 2], 0]] * N)\ncheck('braille-chord scenario 5', solve([[['down', 1], ['up', 1], ['down', 2], ['up', 2]]] * N), [[[[1], [2]], [], [], 0]] * N)\ncheck('braille-chord scenario 6', solve([[['down', 2], ['up', 3]]] * N), [[[], [2], [2], 1]] * N)\ncheck('braille-chord scenario 7', solve([[['down', 0], ['up', 0], ['down', 9]]] * N), [[[], [], [], 3]] * N)\ncheck('braille-chord scenario 8', solve([[['down', 1], ['down', 2], ['separator', 0]]] * N), [[[[1, 2], []], [], [], 0]] * N)\ncheck('braille-chord scenario 9', solve([[['separator', 0]]] * N), [[[[]], [], [], 0]] * N)\ncheck('braille-chord scenario 10', solve([[['down', 1], ['cancel', 0], ['up', 1]]] * N), [[[], [], [], 1]] * N)\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":"Offline stipulated event model, not a browser implementation or web standard 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-keyboard-interactions-braille-chord-release-dot","generated_at":"2026-09-29T14:42:06.818713+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Controlled keyboard event processing model for debugging application event logic.","repair":"Use the contract transition `held.discard(dot)` at the release dot fault site; preserve the other state transitions.","root_cause":"Releasing one dot clears other physical chord members.","sha256":"f7d7e2c98b8026bf5e93731b1cc34fae3f49351837b2545aca65a211d66459ac","title":"Release-completed dot chord keyboard: Releasing one dot clears other physical chord members · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":42.969,"exit_code":1,"observations":[{"actual":[[[],[],[],0]],"check":"braille-chord scenario 0","expected":[[[],[],[],0]],"passed":true},{"actual":[[[],[1,2],[1,2],0]],"check":"braille-chord scenario 1","expected":[[[],[1,2],[1,2],0]],"passed":true},{"actual":[[[[1,8]],[],[],1]],"check":"braille-chord scenario 2","expected":[[[[1,8]],[],[],0]],"passed":false},{"actual":[[[[2]],[],[],0]],"check":"braille-chord scenario 3","expected":[[[[2]],[],[],0]],"passed":true},{"actual":[[[[1,2]],[],[],0]],"check":"braille-chord scenario 4","expected":[[[],[2],[1,2],0]],"passed":false},{"actual":[[[[1],[2]],[],[],0]],"check":"braille-chord scenario 5","expected":[[[[1],[2]],[],[],0]],"passed":true},{"actual":[[[],[2],[2],1]],"check":"braille-chord scenario 6","expected":[[[],[2],[2],1]],"passed":true},{"actual":[[[],[],[],3]],"check":"braille-chord scenario 7","expected":[[[],[],[],3]],"passed":true},{"actual":[[[[1,2],[]],[],[],0]],"check":"braille-chord scenario 8","expected":[[[[1,2],[]],[],[],0]],"passed":true},{"actual":[[[[]],[],[],0]],"check":"braille-chord scenario 9","expected":[[[[]],[],[],0]],"passed":true},{"actual":[[[],[],[],1]],"check":"braille-chord scenario 10","expected":[[[],[],[],1]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"braille-chord scenario 0\", \"actual\": [[[], [], [], 0]], \"expected\": [[[], [], [], 0]], \"passed\": true}, {\"check\": \"braille-chord scenario 1\", \"actual\": [[[], [1, 2], [1, 2], 0]], \"expected\": [[[], [1, 2], [1, 2], 0]], \"passed\": true}, {\"check\": \"braille-chord scenario 2\", \"actual\": [[[[1, 8]], [], [], 1]], \"expected\": [[[[1, 8]], [], [], 0]], \"passed\": false}, {\"check\": \"braille-chord scenario 3\", \"actual\": [[[[2]], [], [], 0]], \"expected\": [[[[2]], [], [], 0]], \"passed\": true}, {\"check\": \"braille-chord scenario 4\", \"actual\": [[[[1, 2]], [], [], 0]], \"expected\": [[[], [2], [1, 2], 0]], \"passed\": false}, {\"check\": \"braille-chord scenario 5\", \"actual\": [[[[1], [2]], [], [], 0]], \"expected\": [[[[1], [2]], [], [], 0]], \"passed\": true}, {\"check\": \"braille-chord scenario 6\", \"actual\": [[[], [2], [2], 1]], \"expected\": [[[], [2], [2], 1]], \"passed\": true}, {\"check\": \"braille-chord scenario 7\", \"actual\": [[[], [], [], 3]], \"expected\": [[[], [], [], 3]], \"passed\": true}, {\"check\": \"braille-chord scenario 8\", \"actual\": [[[[1, 2], []], [], [], 0]], \"expected\": [[[[1, 2], []], [], [], 0]], \"passed\": true}, {\"check\": \"braille-chord scenario 9\", \"actual\": [[[[]], [], [], 0]], \"expected\": [[[[]], [], [], 0]], \"passed\": true}, {\"check\": \"braille-chord scenario 10\", \"actual\": [[[], [], [], 1]], \"expected\": [[[], [], [], 1]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":49.078,"exit_code":1,"observations":[{"actual":[[[],[],[],0]],"check":"braille-chord scenario 0","expected":[[[],[],[],0]],"passed":true},{"actual":[[[],[1,2],[1,2],0]],"check":"braille-chord scenario 1","expected":[[[],[1,2],[1,2],0]],"passed":true},{"actual":[[[],[1,8],[1,8],0]],"check":"braille-chord scenario 2","expected":[[[[1,8]],[],[],0]],"passed":false},{"actual":[[[],[2],[2],0]],"check":"braille-chord scenario 3","expected":[[[[2]],[],[],0]],"passed":false},{"actual":[[[],[1,2],[1,2],0]],"check":"braille-chord scenario 4","expected":[[[],[2],[1,2],0]],"passed":false},{"actual":[[[],[1,2],[1,2],0]],"check":"braille-chord scenario 5","expected":[[[[1],[2]],[],[],0]],"passed":false},{"actual":[[[],[2],[2],1]],"check":"braille-chord scenario 6","expected":[[[],[2],[2],1]],"passed":true},{"actual":[[[],[],[],3]],"check":"braille-chord scenario 7","expected":[[[],[],[],3]],"passed":true},{"actual":[[[[1,2],[]],[],[],0]],"check":"braille-chord scenario 8","expected":[[[[1,2],[]],[],[],0]],"passed":true},{"actual":[[[[]],[],[],0]],"check":"braille-chord scenario 9","expected":[[[[]],[],[],0]],"passed":true},{"actual":[[[],[],[],1]],"check":"braille-chord scenario 10","expected":[[[],[],[],1]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"braille-chord scenario 0\", \"actual\": [[[], [], [], 0]], \"expected\": [[[], [], [], 0]], \"passed\": true}, {\"check\": \"braille-chord scenario 1\", \"actual\": [[[], [1, 2], [1, 2], 0]], \"expected\": [[[], [1, 2], [1, 2], 0]], \"passed\": true}, {\"check\": \"braille-chord scenario 2\", \"actual\": [[[], [1, 8], [1, 8], 0]], \"expected\": [[[[1, 8]], [], [], 0]], \"passed\": false}, {\"check\": \"braille-chord scenario 3\", \"actual\": [[[], [2], [2], 0]], \"expected\": [[[[2]], [], [], 0]], \"passed\": false}, {\"check\": \"braille-chord scenario 4\", \"actual\": [[[], [1, 2], [1, 2], 0]], \"expected\": [[[], [2], [1, 2], 0]], \"passed\": false}, {\"check\": \"braille-chord scenario 5\", \"actual\": [[[], [1, 2], [1, 2], 0]], \"expected\": [[[[1], [2]], [], [], 0]], \"passed\": false}, {\"check\": \"braille-chord scenario 6\", \"actual\": [[[], [2], [2], 1]], \"expected\": [[[], [2], [2], 1]], \"passed\": true}, {\"check\": \"braille-chord scenario 7\", \"actual\": [[[], [], [], 3]], \"expected\": [[[], [], [], 3]], \"passed\": true}, {\"check\": \"braille-chord scenario 8\", \"actual\": [[[[1, 2], []], [], [], 0]], \"expected\": [[[[1, 2], []], [], [], 0]], \"passed\": true}, {\"check\": \"braille-chord scenario 9\", \"actual\": [[[[]], [], [], 0]], \"expected\": [[[[]], [], [], 0]], \"passed\": true}, {\"check\": \"braille-chord scenario 10\", \"actual\": [[[], [], [], 1]], \"expected\": [[[], [], [], 1]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":46.046,"exit_code":0,"observations":[{"actual":[[[],[],[],0]],"check":"braille-chord scenario 0","expected":[[[],[],[],0]],"passed":true},{"actual":[[[],[1,2],[1,2],0]],"check":"braille-chord scenario 1","expected":[[[],[1,2],[1,2],0]],"passed":true},{"actual":[[[[1,8]],[],[],0]],"check":"braille-chord scenario 2","expected":[[[[1,8]],[],[],0]],"passed":true},{"actual":[[[[2]],[],[],0]],"check":"braille-chord scenario 3","expected":[[[[2]],[],[],0]],"passed":true},{"actual":[[[],[2],[1,2],0]],"check":"braille-chord scenario 4","expected":[[[],[2],[1,2],0]],"passed":true},{"actual":[[[[1],[2]],[],[],0]],"check":"braille-chord scenario 5","expected":[[[[1],[2]],[],[],0]],"passed":true},{"actual":[[[],[2],[2],1]],"check":"braille-chord scenario 6","expected":[[[],[2],[2],1]],"passed":true},{"actual":[[[],[],[],3]],"check":"braille-chord scenario 7","expected":[[[],[],[],3]],"passed":true},{"actual":[[[[1,2],[]],[],[],0]],"check":"braille-chord scenario 8","expected":[[[[1,2],[]],[],[],0]],"passed":true},{"actual":[[[[]],[],[],0]],"check":"braille-chord scenario 9","expected":[[[[]],[],[],0]],"passed":true},{"actual":[[[],[],[],1]],"check":"braille-chord scenario 10","expected":[[[],[],[],1]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"braille-chord scenario 0\", \"actual\": [[[], [], [], 0]], \"expected\": [[[], [], [], 0]], \"passed\": true}, {\"check\": \"braille-chord scenario 1\", \"actual\": [[[], [1, 2], [1, 2], 0]], \"expected\": [[[], [1, 2], [1, 2], 0]], \"passed\": true}, {\"check\": \"braille-chord scenario 2\", \"actual\": [[[[1, 8]], [], [], 0]], \"expected\": [[[[1, 8]], [], [], 0]], \"passed\": true}, {\"check\": \"braille-chord scenario 3\", \"actual\": [[[[2]], [], [], 0]], \"expected\": [[[[2]], [], [], 0]], \"passed\": true}, {\"check\": \"braille-chord scenario 4\", \"actual\": [[[], [2], [1, 2], 0]], \"expected\": [[[], [2], [1, 2], 0]], \"passed\": true}, {\"check\": \"braille-chord scenario 5\", \"actual\": [[[[1], [2]], [], [], 0]], \"expected\": [[[[1], [2]], [], [], 0]], \"passed\": true}, {\"check\": \"braille-chord scenario 6\", \"actual\": [[[], [2], [2], 1]], \"expected\": [[[], [2], [2], 1]], \"passed\": true}, {\"check\": \"braille-chord scenario 7\", \"actual\": [[[], [], [], 3]], \"expected\": [[[], [], [], 3]], \"passed\": true}, {\"check\": \"braille-chord scenario 8\", \"actual\": [[[[1, 2], []], [], [], 0]], \"expected\": [[[[1, 2], []], [], [], 0]], \"passed\": true}, {\"check\": \"braille-chord scenario 9\", \"actual\": [[[[]], [], [], 0]], \"expected\": [[[[]], [], [], 0]], \"passed\": true}, {\"check\": \"braille-chord scenario 10\", \"actual\": [[[], [], [], 1]], \"expected\": [[[], [], [], 1]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}