# Pointing a rift at your own frame **🔵 Expert · Lesson 11** AR ONTO YOUR OWN WORLD. Advanced 09 built a Rift and deliberately stopped short of targeting - it said so in its own text, because until 2026-08-03 the capability was genuinely unreachable from `import melder`. This is the lesson that finishes it. THE CHAIN, AND EVERY LINK IS A REFUSAL POINT 1. POSTURE book.configure_aether_frame(rift_enabled=True) 2. PUBLISH book.conjure() -> descriptor truth exists 3. ALLOW config.with_allowed_target_frame_names([...]) 4. ENABLE nexus.activate(config) -> the Rift domain is live 5. CREATE nexus.create_rift(...) -> a Rift with one room 6. ATTACH rift.create_frame_link(frame_name) ATTACHMENT IS TWO-PARTY CONSENT, AND THAT IS THE WHOLE LESSON Step 6 runs TWO INDEPENDENT GATES, owned by two different parties, in this order (`Rift.create_frame_link`): A. THE OBSERVER'S POLICY Nexus._validate_target_frame_names denied_target_frame_names - deny is checked FIRST and wins allowed_target_frame_names - and it is NOT EMPTY by default B. THE WORLD'S POSTURE _validate_target_frame_runtime_requirements rift_enabled=True on the target frame - ALWAYS ai_native_enabled on the target frame - codegen rooms system_state == dynamic - codegen rooms NEITHER SIDE CAN GRANT ALONE. The Nexus says which worlds it may ever reach; the frame says whether it consents to being read. A perfectly postured frame that is not on the allow-list refuses, and an allow-listed frame with no posture refuses. Both refusals appear below, because seeing only one of them teaches half the model. THE DEFAULT ALLOW-LIST IS `("default",)` - NOT EMPTY That is the detail that surprises everyone, including whoever wrote the first draft of this lesson. An EMPTY allow-list would mean "no restriction" (the check is skipped when it is falsy). Melder ships a one-name list instead, so a fresh Nexus can target exactly one conventionally-named world and every other world must be named deliberately. Default-deny, expressed as data rather than as a flag. AND IT ONLY GOVERNS FOREIGN WORLDS. Nexus-managed frames skip gate A entirely - a Nexus does not need to put itself on its own allow-list. THERE IS ALSO A BUDGET, AND IT IS NEXUS-WIDE allow_multiple_target_frames default False max_target_frame_count default 1 Target frames are REF-COUNTED ACROSS RIFTS, so two rifts attaching two different worlds spend two of the budget, not one each. Attach a second world with the defaults in place and you get "Multiple target frames are disabled." - which is a budget refusal, not a policy one. WHY rift_enabled DEFAULTS FALSE, AND SHOULD It is the frame's OPT-IN TO BEING OBSERVED. A world does not become inspectable because something else decided to look at it. You say so, once, before the frame settles - and after conjure the posture is frozen, so a world's observability is fixed for its whole life. THE PART WORTH SITTING WITH Melder does not check permissions when the AR asks a question. It checks them when the AR ATTACHES, and then never again. Attachment is the authority boundary; everything after it is reading a world that already agreed to be read. AND THE ORDER IS NOT NEGOTIABLE. Posture must precede conjure, because conjure freezes it. Conjure must precede attach, because attach requires descriptor truth. Get it wrong and you get a refusal that names which link broke, not a mysterious empty view. ## Before you run Use the [Expert guide](../../expert/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/04_expert/11_pointing_a_rift_at_your_own_frame.py ``` ```powershell py -3.14t UX_and_AIX_experiences/04_expert/11_pointing_a_rift_at_your_own_frame.py ``` {download}`Download this collection <../../downloads/expert-examples.zip>` · [Source on GitHub](https://github.com/Synaptic724/melder/blob/90d52e0a12cb0743d62568d5a19ce954a54443bc/UX_and_AIX_experiences/04_expert/11_pointing_a_rift_at_your_own_frame.py) ## Public surface configure_aether_frame(rift_enabled=..., ai_native=...), with_allowed_target_frame_names, with_multiple_target_frames, with_max_target_frame_count, Nexus.create_rift, Rift.create_frame_link, both gates ## Code ```{literalinclude} ../../downloads/04_expert/11_pointing_a_rift_at_your_own_frame.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 expert examples](index.md) · [Level guide](../../expert/index.md) ## Related guides - [Read-only rooms for endpoints](../../advanced/read-only-rooms.md) - [World inspection walkthrough](../../advanced/inspection-walkthrough.md) - [Agent rooms and explicit authority](../../expert/agent-rooms.md) ## API contracts - [Nexus](../../reference/api/inspection/nexus.md) - [Rift](../../reference/api/inspection/rift.md)