# Opening a rift **🟠 Advanced · Lesson 09** OPENING A RIFT - and meeting melder's most repeated law for the third time in three lessons. THE PATH (each step needs the one above it) nexus = md.Nexus() nexus.activate(nexus.create_configuration()) # lesson 08 rift_config = nexus.create_rift_configuration() rift_config.with_space_type("static") rift = nexus.create_rift(configuration=rift_config, rift_name="ops") THE RIFT CONFIGURATION IS CONSUMED. create_rift() takes ownership. Hand the same configuration to a second create_rift() and it refuses with "RiftConfiguration has already been consumed." One configuration, one rift - the same one-shot law AetherConfigurationBuilder.build() follows (lesson 07). If you want two rifts, you ask the factory twice. THE LAW YOU HAVE NOW SEEN THREE TIMES Melder never conflates "this exists" with "this is live". Every subsystem splits it into two bits, and only the names change: lesson 07 config frozen / activated lesson 08 nexus is_configured / is_activated lesson 09 rift is_registered / is_active Once you have seen it three times it stops being trivia and starts being the thing you predict. When you meet a melder object you have never used, look for its two bits first - presence and liveness are always separate questions, and the answer to one never implies the other. WHAT THIS LESSON DELIBERATELY DOES NOT DO: AR targeting. That needs `rift_enabled=True` on the target frame's posture - the frame's opt-in to being observable, and it defaults False. Setting it is a FRAME concern, not a rift one, which is why it is not shown here: you posture the frame first, then attach. Rifts, rooms and workstations are what this lesson covers. ## Before you run Use the [Advanced guide](../../advanced/index.md) for prerequisite concepts. Run from a checkout with Melder installed and Python 3.14 free-threading selected. The collection download includes the level's local helper modules. ## Run the saved script ```bash python UX_and_AIX_experiences/03_advanced/09_opening_a_rift.py ``` ```powershell py -3.14t UX_and_AIX_experiences/03_advanced/09_opening_a_rift.py ``` {download}`Download this collection <../../downloads/advanced-examples.zip>` · [Source on GitHub](https://github.com/Synaptic724/melder/blob/a30a754d0bb61db0b142936010cdb82cffecec6f/UX_and_AIX_experiences/03_advanced/09_opening_a_rift.py) ## Public surface md.Nexus.create_rift_configuration, create_rift, md.RiftConfiguration, md.Rift, md.RiftSpaceType ## Code ```{literalinclude} ../../downloads/03_advanced/09_opening_a_rift.py :language: python :linenos: ``` ## Check the outcome The script contains its own assertions or demonstrated refusal paths. Run it to evaluate those checks against your installed version. The code above is taken directly from the saved file; no run output is invented here. [More advanced examples](index.md) · [Level guide](../../advanced/index.md) ## Related guides - [Enable Nexus and open a Rift](../../advanced/nexus.md) - [World inspection walkthrough](../../advanced/inspection-walkthrough.md) ## API contracts - [Nexus](../../reference/api/inspection/nexus.md) - [Rift](../../reference/api/inspection/rift.md) - [RiftConfiguration](../../reference/api/inspection/riftconfiguration.md) - [RiftSpaceType](../../reference/api/inspection/riftspacetype.md)