{"abstract":"Read-only braille cells accept a text routing position.","category":"Accessibility interaction semantics","checks":8,"contract":"Input [cells,offset,width,route] where cells [source_start,source_end,content,editable]. Clip display window by nonnegative offset and width. Each cell has one display position regardless of content length. Routing uses a zero-based position inside displayed cells; return None if outside window or cell not editable, otherwise [source_start,source_end]. Display contents replace empty cell content with a space; protected content (exact token SECRET) displays a bullet. Return [display,source_ranges,route_result,has_previous,has_next]. Source ranges preserve zero-width insertion cells.","evaluation_group":"s3-accessibility-braille-routing","failed_approach":"The local repair substitutes if editable or c: routed = [s,e] but still mishandles the regression fixtures.","family":"s3-accessibility-braille-routing-readonly-routing","id":"FA-54236","implementations":{"attempt":{"sha256":"6236cbb1ac0ce64092b3b6b2dffb2334b9ea2eb7571d25a2c70ae561cc7da276","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(data):\n    cells,offset,width,route = data\n    offset,width = max(0,offset),max(0,width)\n    window = cells[offset:offset+width]\n    contents = [('•' if c == 'SECRET' else (c if c else ' ')) for s,e,c,editable in window]\n    ranges = [[s,e] for s,e,c,editable in window]\n    routed = None\n    if 0 <= route < len(window):\n        s,e,c,editable = window[route]\n        if editable or c: routed = [s,e]\n    return [contents,ranges,routed,offset>0,offset+len(window)<len(cells)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('contract fixture 1', solve([[[0,N,'ab',True],[N,N+2,'SECRET',False],[N+2,N+2,'',True]],1,2,1],), [['•',' '],[[N,N+2],[N+2,N+2]],[N+2,N+2],True,False])\ncheck('contract fixture 2', solve([[[0,2,'ab',True],[2,3,'c',True],[3,4,'d',True]],0,2,0],), [['ab','c'],[[0,2],[2,3]],[0,2],False,True])\ncheck('contract fixture 3', solve([[[0,1,'x',False]],0,1,0],), [['x'],[[0,1]],None,False,False])\ncheck('contract fixture 4', solve([[[0,1,'x',True]],0,1,-1],), [['x'],[[0,1]],None,False,False])\ncheck('contract fixture 5', solve([[[0,1,'x',True]],0,1,1],), [['x'],[[0,1]],None,False,False])\ncheck('contract fixture 6', solve([[[0,1,'x',True]],-2,0,0],), [[],[],None,False,True])\ncheck('contract fixture 7', solve([[[0,1,'a',True],[1,2,'b',True]],-1,1,0],), [['a'],[[0,1]],[0,1],False,True])\ncheck('contract fixture 8', solve([[],0,4,0],), [[],[],None,False,False])\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":"42763ee167f866f85039fdb2befc2189d2019e046754a96658de13623f8e295d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(data):\n    cells,offset,width,route = data\n    offset,width = max(0,offset),max(0,width)\n    window = cells[offset:offset+width]\n    contents = [('•' if c == 'SECRET' else (c if c else ' ')) for s,e,c,editable in window]\n    ranges = [[s,e] for s,e,c,editable in window]\n    routed = None\n    if 0 <= route < len(window):\n        s,e,c,editable = window[route]\n        if True: routed = [s,e]\n    return [contents,ranges,routed,offset>0,offset+len(window)<len(cells)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('contract fixture 1', solve([[[0,N,'ab',True],[N,N+2,'SECRET',False],[N+2,N+2,'',True]],1,2,1],), [['•',' '],[[N,N+2],[N+2,N+2]],[N+2,N+2],True,False])\ncheck('contract fixture 2', solve([[[0,2,'ab',True],[2,3,'c',True],[3,4,'d',True]],0,2,0],), [['ab','c'],[[0,2],[2,3]],[0,2],False,True])\ncheck('contract fixture 3', solve([[[0,1,'x',False]],0,1,0],), [['x'],[[0,1]],None,False,False])\ncheck('contract fixture 4', solve([[[0,1,'x',True]],0,1,-1],), [['x'],[[0,1]],None,False,False])\ncheck('contract fixture 5', solve([[[0,1,'x',True]],0,1,1],), [['x'],[[0,1]],None,False,False])\ncheck('contract fixture 6', solve([[[0,1,'x',True]],-2,0,0],), [[],[],None,False,True])\ncheck('contract fixture 7', solve([[[0,1,'a',True],[1,2,'b',True]],-1,1,0],), [['a'],[[0,1]],[0,1],False,True])\ncheck('contract fixture 8', solve([[],0,4,0],), [[],[],None,False,False])\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":"9366225523c4f8d0d94e6737016ceee05746c3c7b4829d345dbeaa6ea661fe4d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(data):\n    cells,offset,width,route = data\n    offset,width = max(0,offset),max(0,width)\n    window = cells[offset:offset+width]\n    contents = [('•' if c == 'SECRET' else (c if c else ' ')) for s,e,c,editable in window]\n    ranges = [[s,e] for s,e,c,editable in window]\n    routed = None\n    if 0 <= route < len(window):\n        s,e,c,editable = window[route]\n        if editable: routed = [s,e]\n    return [contents,ranges,routed,offset>0,offset+len(window)<len(cells)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('contract fixture 1', solve([[[0,N,'ab',True],[N,N+2,'SECRET',False],[N+2,N+2,'',True]],1,2,1],), [['•',' '],[[N,N+2],[N+2,N+2]],[N+2,N+2],True,False])\ncheck('contract fixture 2', solve([[[0,2,'ab',True],[2,3,'c',True],[3,4,'d',True]],0,2,0],), [['ab','c'],[[0,2],[2,3]],[0,2],False,True])\ncheck('contract fixture 3', solve([[[0,1,'x',False]],0,1,0],), [['x'],[[0,1]],None,False,False])\ncheck('contract fixture 4', solve([[[0,1,'x',True]],0,1,-1],), [['x'],[[0,1]],None,False,False])\ncheck('contract fixture 5', solve([[[0,1,'x',True]],0,1,1],), [['x'],[[0,1]],None,False,False])\ncheck('contract fixture 6', solve([[[0,1,'x',True]],-2,0,0],), [[],[],None,False,True])\ncheck('contract fixture 7', solve([[[0,1,'a',True],[1,2,'b',True]],-1,1,0],), [['a'],[[0,1]],[0,1],False,True])\ncheck('contract fixture 8', solve([[],0,4,0],), [[],[],None,False,False])\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 finite adapter contract, not a claim of platform accessibility or ARIA conformance. 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-accessibility-braille-routing-readonly-routing","generated_at":"2026-09-29T14:45:46.516458+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Offline accessibility bridge model with explicit policy; useful for testing semantic API adapters independently of browser implementations.","repair":"Apply the exact contract at the readonly routing decision: if editable: routed = [s,e]","root_cause":"The readonly routing decision in the braille routing adapter violates its declared contract.","sha256":"40467f65d5cf0d9492ae0ae86d3a2459c195b7642b6ea74d45f1fc1aed3e6b9d","title":"Read-only braille cells accept a text routing position · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":42.027,"exit_code":1,"observations":[{"actual":[["•"," "],[[1,3],[3,3]],[3,3],true,false],"check":"contract fixture 1","expected":[["•"," "],[[1,3],[3,3]],[3,3],true,false],"passed":true},{"actual":[["ab","c"],[[0,2],[2,3]],[0,2],false,true],"check":"contract fixture 2","expected":[["ab","c"],[[0,2],[2,3]],[0,2],false,true],"passed":true},{"actual":[["x"],[[0,1]],[0,1],false,false],"check":"contract fixture 3","expected":[["x"],[[0,1]],null,false,false],"passed":false},{"actual":[["x"],[[0,1]],null,false,false],"check":"contract fixture 4","expected":[["x"],[[0,1]],null,false,false],"passed":true},{"actual":[["x"],[[0,1]],null,false,false],"check":"contract fixture 5","expected":[["x"],[[0,1]],null,false,false],"passed":true},{"actual":[[],[],null,false,true],"check":"contract fixture 6","expected":[[],[],null,false,true],"passed":true},{"actual":[["a"],[[0,1]],[0,1],false,true],"check":"contract fixture 7","expected":[["a"],[[0,1]],[0,1],false,true],"passed":true},{"actual":[[],[],null,false,false],"check":"contract fixture 8","expected":[[],[],null,false,false],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"contract fixture 1\", \"actual\": [[\"•\", \" \"], [[1, 3], [3, 3]], [3, 3], true, false], \"expected\": [[\"•\", \" \"], [[1, 3], [3, 3]], [3, 3], true, false], \"passed\": true}, {\"check\": \"contract fixture 2\", \"actual\": [[\"ab\", \"c\"], [[0, 2], [2, 3]], [0, 2], false, true], \"expected\": [[\"ab\", \"c\"], [[0, 2], [2, 3]], [0, 2], false, true], \"passed\": true}, {\"check\": \"contract fixture 3\", \"actual\": [[\"x\"], [[0, 1]], [0, 1], false, false], \"expected\": [[\"x\"], [[0, 1]], null, false, false], \"passed\": false}, {\"check\": \"contract fixture 4\", \"actual\": [[\"x\"], [[0, 1]], null, false, false], \"expected\": [[\"x\"], [[0, 1]], null, false, false], \"passed\": true}, {\"check\": \"contract fixture 5\", \"actual\": [[\"x\"], [[0, 1]], null, false, false], \"expected\": [[\"x\"], [[0, 1]], null, false, false], \"passed\": true}, {\"check\": \"contract fixture 6\", \"actual\": [[], [], null, false, true], \"expected\": [[], [], null, false, true], \"passed\": true}, {\"check\": \"contract fixture 7\", \"actual\": [[\"a\"], [[0, 1]], [0, 1], false, true], \"expected\": [[\"a\"], [[0, 1]], [0, 1], false, true], \"passed\": true}, {\"check\": \"contract fixture 8\", \"actual\": [[], [], null, false, false], \"expected\": [[], [], null, false, false], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.28,"exit_code":1,"observations":[{"actual":[["•"," "],[[1,3],[3,3]],[3,3],true,false],"check":"contract fixture 1","expected":[["•"," "],[[1,3],[3,3]],[3,3],true,false],"passed":true},{"actual":[["ab","c"],[[0,2],[2,3]],[0,2],false,true],"check":"contract fixture 2","expected":[["ab","c"],[[0,2],[2,3]],[0,2],false,true],"passed":true},{"actual":[["x"],[[0,1]],[0,1],false,false],"check":"contract fixture 3","expected":[["x"],[[0,1]],null,false,false],"passed":false},{"actual":[["x"],[[0,1]],null,false,false],"check":"contract fixture 4","expected":[["x"],[[0,1]],null,false,false],"passed":true},{"actual":[["x"],[[0,1]],null,false,false],"check":"contract fixture 5","expected":[["x"],[[0,1]],null,false,false],"passed":true},{"actual":[[],[],null,false,true],"check":"contract fixture 6","expected":[[],[],null,false,true],"passed":true},{"actual":[["a"],[[0,1]],[0,1],false,true],"check":"contract fixture 7","expected":[["a"],[[0,1]],[0,1],false,true],"passed":true},{"actual":[[],[],null,false,false],"check":"contract fixture 8","expected":[[],[],null,false,false],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"contract fixture 1\", \"actual\": [[\"•\", \" \"], [[1, 3], [3, 3]], [3, 3], true, false], \"expected\": [[\"•\", \" \"], [[1, 3], [3, 3]], [3, 3], true, false], \"passed\": true}, {\"check\": \"contract fixture 2\", \"actual\": [[\"ab\", \"c\"], [[0, 2], [2, 3]], [0, 2], false, true], \"expected\": [[\"ab\", \"c\"], [[0, 2], [2, 3]], [0, 2], false, true], \"passed\": true}, {\"check\": \"contract fixture 3\", \"actual\": [[\"x\"], [[0, 1]], [0, 1], false, false], \"expected\": [[\"x\"], [[0, 1]], null, false, false], \"passed\": false}, {\"check\": \"contract fixture 4\", \"actual\": [[\"x\"], [[0, 1]], null, false, false], \"expected\": [[\"x\"], [[0, 1]], null, false, false], \"passed\": true}, {\"check\": \"contract fixture 5\", \"actual\": [[\"x\"], [[0, 1]], null, false, false], \"expected\": [[\"x\"], [[0, 1]], null, false, false], \"passed\": true}, {\"check\": \"contract fixture 6\", \"actual\": [[], [], null, false, true], \"expected\": [[], [], null, false, true], \"passed\": true}, {\"check\": \"contract fixture 7\", \"actual\": [[\"a\"], [[0, 1]], [0, 1], false, true], \"expected\": [[\"a\"], [[0, 1]], [0, 1], false, true], \"passed\": true}, {\"check\": \"contract fixture 8\", \"actual\": [[], [], null, false, false], \"expected\": [[], [], null, false, false], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":45.456,"exit_code":0,"observations":[{"actual":[["•"," "],[[1,3],[3,3]],[3,3],true,false],"check":"contract fixture 1","expected":[["•"," "],[[1,3],[3,3]],[3,3],true,false],"passed":true},{"actual":[["ab","c"],[[0,2],[2,3]],[0,2],false,true],"check":"contract fixture 2","expected":[["ab","c"],[[0,2],[2,3]],[0,2],false,true],"passed":true},{"actual":[["x"],[[0,1]],null,false,false],"check":"contract fixture 3","expected":[["x"],[[0,1]],null,false,false],"passed":true},{"actual":[["x"],[[0,1]],null,false,false],"check":"contract fixture 4","expected":[["x"],[[0,1]],null,false,false],"passed":true},{"actual":[["x"],[[0,1]],null,false,false],"check":"contract fixture 5","expected":[["x"],[[0,1]],null,false,false],"passed":true},{"actual":[[],[],null,false,true],"check":"contract fixture 6","expected":[[],[],null,false,true],"passed":true},{"actual":[["a"],[[0,1]],[0,1],false,true],"check":"contract fixture 7","expected":[["a"],[[0,1]],[0,1],false,true],"passed":true},{"actual":[[],[],null,false,false],"check":"contract fixture 8","expected":[[],[],null,false,false],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"contract fixture 1\", \"actual\": [[\"•\", \" \"], [[1, 3], [3, 3]], [3, 3], true, false], \"expected\": [[\"•\", \" \"], [[1, 3], [3, 3]], [3, 3], true, false], \"passed\": true}, {\"check\": \"contract fixture 2\", \"actual\": [[\"ab\", \"c\"], [[0, 2], [2, 3]], [0, 2], false, true], \"expected\": [[\"ab\", \"c\"], [[0, 2], [2, 3]], [0, 2], false, true], \"passed\": true}, {\"check\": \"contract fixture 3\", \"actual\": [[\"x\"], [[0, 1]], null, false, false], \"expected\": [[\"x\"], [[0, 1]], null, false, false], \"passed\": true}, {\"check\": \"contract fixture 4\", \"actual\": [[\"x\"], [[0, 1]], null, false, false], \"expected\": [[\"x\"], [[0, 1]], null, false, false], \"passed\": true}, {\"check\": \"contract fixture 5\", \"actual\": [[\"x\"], [[0, 1]], null, false, false], \"expected\": [[\"x\"], [[0, 1]], null, false, false], \"passed\": true}, {\"check\": \"contract fixture 6\", \"actual\": [[], [], null, false, true], \"expected\": [[], [], null, false, true], \"passed\": true}, {\"check\": \"contract fixture 7\", \"actual\": [[\"a\"], [[0, 1]], [0, 1], false, true], \"expected\": [[\"a\"], [[0, 1]], [0, 1], false, true], \"passed\": true}, {\"check\": \"contract fixture 8\", \"actual\": [[], [], null, false, false], \"expected\": [[], [], null, false, false], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}