{"record":{"id":"03af8dd1d3632f67","repo":"Genesis-Embodied-AI/genesis-world","slug":"this-property-has-been-removed-03af8d","errorCode":null,"errorMessage":"This property has been removed.","messagePattern":"This property has been removed\\.","errorType":"exception","errorClass":"DeprecationError","httpStatus":null,"severity":"error","filePath":"genesis/engine/entities/rigid_entity/rigid_geom.py","lineNumber":885,"sourceCode":"        return self.n_faces + self.face_start\n\n    @property\n    def edge_end(self):\n        \"\"\"\n        Get the ending index of the geom's edges in the rigid solver.\n        \"\"\"\n        return self.n_edges + self.edge_start\n\n    @property\n    def is_built(self):\n        \"\"\"\n        Whether the rigid entity the geom belongs to is built.\n        \"\"\"\n        return self.entity.is_built\n\n    @property\n    def is_free(self):\n        raise DeprecationError(\"This property has been removed.\")\n\n    @property\n    def is_fixed(self) -> bool:\n        \"\"\"\n        Whether this geom is fixed in the world.\n        \"\"\"\n        return self.link.is_fixed\n\n    # ------------------------------------------------------------------------------------\n    # -------------------------------------- repr ----------------------------------------\n    # ------------------------------------------------------------------------------------\n\n    def _repr_brief(self):\n        return f\"{self.__repr_name__()}: {self._uid}, idx: {self._idx} (from entity {self._entity.uid}, link {self._link.uid})\"\n\n\nclass RigidVisGeom(RBC):\n    \"\"\"","sourceCodeStart":867,"sourceCodeEnd":903,"githubUrl":"https://github.com/Genesis-Embodied-AI/genesis-world/blob/56e4aa5d82bdb83f2e532e4cc364cb69527acb06/genesis/engine/entities/rigid_entity/rigid_geom.py#L867-L903","documentation":"RigidGeom.is_free raised through to report whether the owning rigid entity is free-floating, but the property has been removed and now raises DeprecationError unconditionally. Free/fixed status lives at the link level in the current API.","triggerScenarios":"Accessing geom.is_free on any RigidGeom obtained from entity.geoms or link.geoms; legacy code branching on a geom's mobility.","commonSituations":"Porting collision- or geom-filtering code from an older Genesis release where geoms exposed the entity's is_free; copy-pasted utility functions iterating geoms and checking mobility.","solutions":["Use geom.link.is_free (the owning link's mobility) instead","Or check geom.is_fixed / geom.link.is_fixed if only the fixed distinction matters","Grep for 'geom.is_free' and migrate all sites to the link-level API"],"exampleFix":"// before\nif geom.is_free:\n    ...\n// after\nif geom.link.is_free:\n    ...","handlingStrategy":"validation","validationCode":null,"typeGuard":"def geom_is_free(geom) -> bool:\n    return geom.link.is_fixed is False\n","tryCatchPattern":"try:\n    val = geom.is_free\nexcept DeprecationError:\n    val = geom.link.is_fixed is False\n","preventionTips":["Prefer link-level mobility queries over geom-level ones","Keep a compatibility shim module mapping old property names to new API during migration"],"tags":["genesis","deprecation","rigid-geom","api-removal"],"backgroundTag":"removed-api-migration","analyzedSha":"56e4aa5d82bdb83f2e532e4cc364cb69527acb06","analyzedAt":"2026-08-28T15:15:07.922Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}