# Conduit categories as factories **🟡 Intermediate · Lesson 26** Conduit CATEGORIES are your factory layer. Instead of writing an abstract factory in front of your scopes, NAME conduits after the resolution ideas your app already has - "platform", "services", "workflows" - and late-bind the dependencies BETWEEN categories with SpellContract sockets. ORDER OF OPERATIONS IS THE LAW (owner ruling 2026-07-20). Per dependency edge, in this exact order: 1) conjure the PROVIDER conduit 2) conjure the CONSUMER conduit (the SpellContract side) 3) link() - only AFTER both conduits are built 4) the consumer pulls the provider spell into the contract 5) meld AFTER the fact - completing the late binding for that world's products Assemble the chain edge by edge, in dependency order. No factory objects exist anywhere - the conduit NAMES are the factory types. THE ARC: this is beginner lesson 25 one level UP. Spellframes categorize spells WITHIN one world; conduits categorize WORLDS - each category gains an OWNER, and permissions + contracts + links set the resolution conditions at the category boundary. ## Before you run Use the [Intermediate guide](../../intermediate/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/02_intermediate/26_conduit_categories_as_factories.py ``` ```powershell py -3.14t UX_and_AIX_experiences/02_intermediate/26_conduit_categories_as_factories.py ``` {download}`Download this collection <../../downloads/intermediate-examples.zip>` · [Source on GitHub](https://github.com/Synaptic724/melder/blob/1211e838099a342c9dde48f064b1e772b6060e13/UX_and_AIX_experiences/02_intermediate/26_conduit_categories_as_factories.py) ## Public surface md.SpellContract, link, add_spell_to_contract, named category conduits ## Code ```{literalinclude} ../../downloads/02_intermediate/26_conduit_categories_as_factories.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 intermediate examples](index.md) · [Level guide](../../intermediate/index.md) ## Related guides - [Late binding with SpellContract](../../intermediate/late-binding.md) - [Connected subsystem walkthrough](../../intermediate/connected-subsystems.md) ## API contracts - [SpellContract](../../reference/api/resolution/spellcontract.md)