{"abstract":"A removed workspace leaves the client on an inaccessible last-visited workspace.","category":"Client state","checks":6,"contract":"If the current workspace becomes inaccessible, select the first accessible recent workspace, then an accessible default, otherwise no workspace.","evaluation_group":"s3-client-state-workspace-fallback-choice","failed_approach":"The partial repair still violates at least one explicit regression oracle.","family":"s3-client-state-workspace-fallback-choice","id":"FA-24756","implementations":{"attempt":{"sha256":"7ba74003eada805566326487518e42c31ed78fa541feb9d655b816f740f23671","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(current, allowed, recent, default):\n    return current if current in allowed else default\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('recent allowed preferred', solve('gone',['a','b'],['gone','b','a'],'a'), 'b')\ncheck('current retained', solve('a',['a','b'],['b'],'b'), 'a')\ncheck('default allowed', solve('gone',['a'],[],'a'), 'a')\ncheck('default forbidden', solve('gone',['a'],[],'bad'), None)\ncheck('no workspaces', solve('gone',[],['a'],'a'), None)\ncheck('skip many inaccessible recent', solve('gone',['ok'],['bad'+str(i) for i in range(N)]+['ok'],'bad'), 'ok')\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":"eb58f12bfc81a6c504ff74dc4ab95876e1075a78763f85bec9098a79113fb6a8","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(current, allowed, recent, default):\n    return current\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('recent allowed preferred', solve('gone',['a','b'],['gone','b','a'],'a'), 'b')\ncheck('current retained', solve('a',['a','b'],['b'],'b'), 'a')\ncheck('default allowed', solve('gone',['a'],[],'a'), 'a')\ncheck('default forbidden', solve('gone',['a'],[],'bad'), None)\ncheck('no workspaces', solve('gone',[],['a'],'a'), None)\ncheck('skip many inaccessible recent', solve('gone',['ok'],['bad'+str(i) for i in range(N)]+['ok'],'bad'), 'ok')\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":"b0cc5b87aa896e1064282b413ef789b84d951b9fe7cfe7e697fe1cff57d788f3","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(current, allowed, recent, default):\n    return current if current in allowed else next((w for w in recent if w in allowed), default if default in allowed else None)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('recent allowed preferred', solve('gone',['a','b'],['gone','b','a'],'a'), 'b')\ncheck('current retained', solve('a',['a','b'],['b'],'b'), 'a')\ncheck('default allowed', solve('gone',['a'],[],'a'), 'a')\ncheck('default forbidden', solve('gone',['a'],[],'bad'), None)\ncheck('no workspaces', solve('gone',[],['a'],'a'), None)\ncheck('skip many inaccessible recent', solve('gone',['ok'],['bad'+str(i) for i in range(N)]+['ok'],'bad'), 'ok')\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":"This models the stated application policy only; no browser or framework conformance is claimed. 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-client-state-workspace-fallback-choice","generated_at":"2026-09-29T14:41:00.427852+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A bounded offline client-state transition with explicit lifecycle inputs.","repair":"If the current workspace becomes inaccessible, select the first accessible recent workspace, then an accessible default, otherwise no workspace.","root_cause":"The faulty implementation violates If the current workspace becomes inaccessible, select the first accessible recent workspace, then an accessible default, otherwise no workspace.","sha256":"2376fe055c7712e16c25c269185e32e3ed4b03ebd675ecd103b96b98ae643526","title":"A removed workspace leaves the client on an inaccessible last-visited workspace · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.923,"exit_code":1,"observations":[{"actual":"a","check":"recent allowed preferred","expected":"b","passed":false},{"actual":"a","check":"current retained","expected":"a","passed":true},{"actual":"a","check":"default allowed","expected":"a","passed":true},{"actual":"bad","check":"default forbidden","expected":null,"passed":false},{"actual":"a","check":"no workspaces","expected":null,"passed":false},{"actual":"bad","check":"skip many inaccessible recent","expected":"ok","passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"recent allowed preferred\", \"actual\": \"a\", \"expected\": \"b\", \"passed\": false}, {\"check\": \"current retained\", \"actual\": \"a\", \"expected\": \"a\", \"passed\": true}, {\"check\": \"default allowed\", \"actual\": \"a\", \"expected\": \"a\", \"passed\": true}, {\"check\": \"default forbidden\", \"actual\": \"bad\", \"expected\": null, \"passed\": false}, {\"check\": \"no workspaces\", \"actual\": \"a\", \"expected\": null, \"passed\": false}, {\"check\": \"skip many inaccessible recent\", \"actual\": \"bad\", \"expected\": \"ok\", \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.448,"exit_code":1,"observations":[{"actual":"gone","check":"recent allowed preferred","expected":"b","passed":false},{"actual":"a","check":"current retained","expected":"a","passed":true},{"actual":"gone","check":"default allowed","expected":"a","passed":false},{"actual":"gone","check":"default forbidden","expected":null,"passed":false},{"actual":"gone","check":"no workspaces","expected":null,"passed":false},{"actual":"gone","check":"skip many inaccessible recent","expected":"ok","passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"recent allowed preferred\", \"actual\": \"gone\", \"expected\": \"b\", \"passed\": false}, {\"check\": \"current retained\", \"actual\": \"a\", \"expected\": \"a\", \"passed\": true}, {\"check\": \"default allowed\", \"actual\": \"gone\", \"expected\": \"a\", \"passed\": false}, {\"check\": \"default forbidden\", \"actual\": \"gone\", \"expected\": null, \"passed\": false}, {\"check\": \"no workspaces\", \"actual\": \"gone\", \"expected\": null, \"passed\": false}, {\"check\": \"skip many inaccessible recent\", \"actual\": \"gone\", \"expected\": \"ok\", \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.373,"exit_code":0,"observations":[{"actual":"b","check":"recent allowed preferred","expected":"b","passed":true},{"actual":"a","check":"current retained","expected":"a","passed":true},{"actual":"a","check":"default allowed","expected":"a","passed":true},{"actual":null,"check":"default forbidden","expected":null,"passed":true},{"actual":null,"check":"no workspaces","expected":null,"passed":true},{"actual":"ok","check":"skip many inaccessible recent","expected":"ok","passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"recent allowed preferred\", \"actual\": \"b\", \"expected\": \"b\", \"passed\": true}, {\"check\": \"current retained\", \"actual\": \"a\", \"expected\": \"a\", \"passed\": true}, {\"check\": \"default allowed\", \"actual\": \"a\", \"expected\": \"a\", \"passed\": true}, {\"check\": \"default forbidden\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"no workspaces\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"skip many inaccessible recent\", \"actual\": \"ok\", \"expected\": \"ok\", \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}