{"abstract":"Replacing a pathname retargets an already open descriptor.","category":"Filesystem semantics","checks":6,"contract":"Deterministic in-memory filesystem model. Open destination containing old, then atomically replace its name with a different inode containing new. Return [open-handle content, pathname content]; aliases counts additional names of old inode.","contract_signature":"old, new, aliases","evaluation_group":"model-53e576c75d02a9dd","failed_approach":"Preserving the original inode only when it had another name ignores the descriptor reference.","family":"z-filesystems-rename-open-handle","id":"FA-11551","implementations":{"attempt":{"sha256":"c7af438ddfaadde1ac47d2e28949c48233a070440809493b729e742ca4b4554c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(old, new, aliases):\n    return [old if aliases else new,new]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('open target survives replacement',solve('old'+str(N),'new',0),['old'+str(N),'new'])\ncheck('other hardlink survives',solve('old','new',N),['old','new'])\ncheck('empty original file',solve('','new',0),['','new'])\ncheck('empty replacement',solve('old','',0),['old',''])\ncheck('same bytes different identities',solve('same','same',0),['same','same'])\ncheck('both empty',solve('','',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":"0a51b55da1a4311246bb90e19e1c719cc5bf5e9aa21d21f9c29692f36846d683","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(old, new, aliases):\n    return [new,new]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('open target survives replacement',solve('old'+str(N),'new',0),['old'+str(N),'new'])\ncheck('other hardlink survives',solve('old','new',N),['old','new'])\ncheck('empty original file',solve('','new',0),['','new'])\ncheck('empty replacement',solve('old','',0),['old',''])\ncheck('same bytes different identities',solve('same','same',0),['same','same'])\ncheck('both empty',solve('','',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":" 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":"z-filesystems-rename-open-handle","generated_at":"2026-09-29T14:38:48.932277+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"An offline semantic experiment for file API clients; it models only the stated operations, not a complete operating system.","root_cause":"The handle stores a name and resolves it on every read instead of storing inode identity.","sha256":"382abff78ca10d94307f399c4fd75b447c543c6f5ad1c3f0eddcc83a600b28de","title":"Replacing a pathname retargets an already open descriptor · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":38.094,"exit_code":1,"observations":[{"actual":["new","new"],"check":"open target survives replacement","expected":["old1","new"],"passed":false},{"actual":["old","new"],"check":"other hardlink survives","expected":["old","new"],"passed":true},{"actual":["new","new"],"check":"empty original file","expected":["","new"],"passed":false},{"actual":["",""],"check":"empty replacement","expected":["old",""],"passed":false},{"actual":["same","same"],"check":"same bytes different identities","expected":["same","same"],"passed":true},{"actual":["",""],"check":"both empty","expected":["",""],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"open target survives replacement\", \"actual\": [\"new\", \"new\"], \"expected\": [\"old1\", \"new\"], \"passed\": false}, {\"check\": \"other hardlink survives\", \"actual\": [\"old\", \"new\"], \"expected\": [\"old\", \"new\"], \"passed\": true}, {\"check\": \"empty original file\", \"actual\": [\"new\", \"new\"], \"expected\": [\"\", \"new\"], \"passed\": false}, {\"check\": \"empty replacement\", \"actual\": [\"\", \"\"], \"expected\": [\"old\", \"\"], \"passed\": false}, {\"check\": \"same bytes different identities\", \"actual\": [\"same\", \"same\"], \"expected\": [\"same\", \"same\"], \"passed\": true}, {\"check\": \"both empty\", \"actual\": [\"\", \"\"], \"expected\": [\"\", \"\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":37.296,"exit_code":1,"observations":[{"actual":["new","new"],"check":"open target survives replacement","expected":["old1","new"],"passed":false},{"actual":["new","new"],"check":"other hardlink survives","expected":["old","new"],"passed":false},{"actual":["new","new"],"check":"empty original file","expected":["","new"],"passed":false},{"actual":["",""],"check":"empty replacement","expected":["old",""],"passed":false},{"actual":["same","same"],"check":"same bytes different identities","expected":["same","same"],"passed":true},{"actual":["",""],"check":"both empty","expected":["",""],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"open target survives replacement\", \"actual\": [\"new\", \"new\"], \"expected\": [\"old1\", \"new\"], \"passed\": false}, {\"check\": \"other hardlink survives\", \"actual\": [\"new\", \"new\"], \"expected\": [\"old\", \"new\"], \"passed\": false}, {\"check\": \"empty original file\", \"actual\": [\"new\", \"new\"], \"expected\": [\"\", \"new\"], \"passed\": false}, {\"check\": \"empty replacement\", \"actual\": [\"\", \"\"], \"expected\": [\"old\", \"\"], \"passed\": false}, {\"check\": \"same bytes different identities\", \"actual\": [\"same\", \"same\"], \"expected\": [\"same\", \"same\"], \"passed\": true}, {\"check\": \"both empty\", \"actual\": [\"\", \"\"], \"expected\": [\"\", \"\"], \"passed\": true}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}