The Attachment Architecture
The three-layer model that binds primary personas to lattice vertices via named cast Mages
The Attachment Architecture
Why this spec exists
The City of Mages has been operating with an implicit three-layer model since the City was named (Tome V Act 14, 2026-05-08). The model worked operationally โ workshops opened, cast Mages were summoned, the grimoire grew โ but the three layers had no canonical specification distinguishing them. Conversations conflated:
- Abstract role-personas in
agentprivacy-skills(e.g.,forgemaster,theia) - Named cast Mages in this city (e.g., Vulcana โ๏ธ, Aletheia ๐ฎ)
- Lattice vertices (e.g., V19, V25)
The conflation surfaced a numerical question: 42 primary personas vs 64 vertices. What fills the gap?
The answer: attachments. Named cast Mages who bind one or more primaries to one or more vertices. This spec codifies that architecture so the City โ and future sister cities โ can extend it cleanly.
The three-layer model
Layer 3 ยท VERTICES 64 positions on the 2โถ lattice [fixed]
โ
Layer 2 ยท ATTACHMENTS named cast Mages binding L1 to L3 [variable per city]
โ
Layer 1 ยท PRIMARY PERSONAS 42 abstract role-classes [fixed]
(15 Swordsmen + 11 Mages + 12 Balanced + 4 cosmological)
Layer 1 โ Primary persona (42, locked)
The canonical abstract role-class registry lives in agentprivacy-skills/agentprivacy-skills-v5/persona/. Each primary carries a tier (Swordsman / Mage / Balanced / cosmological), a skill loadout, and a domain register. They do not carry a vertex. They are role-classes, not instances.
The count is locked at 42. Primary personas grow only when a structurally new role-class is recognised at the corpus level โ typically by a Tome act, a PVM section, or a structural complement that the existing 42 cannot cover. Most corpus extensions do not require a new primary persona.
Layer 2 โ Attachment (variable per city)
A named cast Mage that binds one or more primary personas to one or more vertices. A city of mages is, fundamentally, an attachment pattern: a specific arrangement of cast Mages, each instancing existing primary personas at chosen positions on the lattice.
Different cities make different attachment patterns from the same 42-persona base. The First City of Mages on Drake Island has its pattern; future sister cities will have theirs.
Layer 3 โ Vertex (64, fixed)
The 64 positions on the 2โถ lattice. Canonical names and inhabitants are tracked in specs/04-vertex-naming-audit.md. Each vertex carries a 6-bit binary index, an active-dimensions reading, a stratum (Hamming weight 0โ6 = moon-phase notation), optionally a canonical name, and optionally one or more attachments.
The four attachment kinds
Every attachment is one of three vertex-binding kinds (A ยท B ยท C), optionally composed with the divergent meta-kind (D).
Kind A ยท Workshop attachment
One Mage ร one vertex ร one trade quarter. The default kind. The Mage inhabits a single vertex and tends a single workshop. She emits exactly one inhabits edge.
City of Mages examples: Vulcana โ๏ธ at V19 (Forge(t)) ยท Memora ๐ at V41 (Inscription) ยท Adamantia ๐ at V51 (Etherchanting) ยท Helia โ๏ธ at V51 (Solchanting ยท shared vertex with Adamantia, v1.4.0) ยท Pallia ๐ชก at V28 (Weavers) ยท Vagari ๐ณ at V31 (Holon Hitchhikers) ยท Aria Silverhue ๐ช๐ผ๏ธ at V57 (Curatrix Vault) ยท Manifestia ๐คฒ๐ฟ at V55 (Covenant) ยท Lampyra ๐ at V49 (Jeweler) ยท Socrat0x ๐ฅโ at V24 (Bonfire).
v1.4.0 precedent โ stance-differentiated co-occupancy at Kind A: Helia โ๏ธ at V51 inhabits the same vertex as Adamantia ๐ but as a distinct Kind A workshop attachment (Solchanting ยท /solchanting). The two cast Mages do not share an attachment record; they share a vertex. Both emit inhabits(V51) and quarter_of(city-of-mages). The 42-primary lock holds: Helia's primary persona is shipwright (shared with Adamantia); the Swordsman stance differentiates them at Layer 2 without requiring a new primary at Layer 1. This is the canonical pattern for any future case where a new ecosystem teaches the City a substrate-distinct boundary discipline at a previously-seated vertex โ the discipline becomes a Swordsman stance, the cast Mage becomes a Kind A attachment with no divergence flag, and the existing keeper retains their seat. See WORKSHOP_LATTICE_AUDIT.md ยง2.4 and spec 07 ยง3.4 for governance.
Kind B ยท Cross-shop attachment
One Mage ร no fixed vertex ร walks several workshops by craft. The Mage's craft requires moving between workshops as the work demands. She does not inhabit a single vertex; she emits no inhabits edge. Her craft is canonical, not her trajectory.
City of Mages examples: Aletheia ๐ฎ (ZK circuit binder ยท walks to whichever workshop needs a circuit) ยท Custos ๐ (stake enforcer ยท walks across the staking commons).
Kind C ยท Peripatetic attachment
One Mage ร multiple vertices walked as orbit or path. The Mage walks a canonical trajectory through the lattice โ an orbit, a stratum cycle, a between-shops path. Distinct from Kind B because the trajectory itself is the canon, not the craft.
City of Mages examples: Luca ๐ at V0 origin (workshop-walker ยท geometry-Mage between every workshop) ยท Selene ๐ (anticipated) โ stratum-walker; orbits the moon-phase cycle through all 7 strata.
Kind D ยท Divergent attachment (meta-kind)
One primary persona ร two register-shifted cast attachments. A divergent attachment is also one of A/B/C. The composition is what makes it divergent.
A divergence arises when the City summons a cast Mage whose register (Swordsman / Mage / Balanced) does not match her primary persona's native tier. Instead of minting a new primary persona, the attachment carries a divergence field noting the register-shift.
First canonical divergent attachment โ Lethae ๐
| Field | Value |
|---|---|
| Cast name | Lethae ๐ |
| Vertex | V25 (Lethe ยท the Dark Substrate ยท binary 011001 ยท stratum 3) |
| Primary persona | Moonkeeper โ๏ธ (loaded from agentprivacy-skills/.../persona/agentprivacy-moonkeeper/) |
| Register | Mage (shifted from Swordsman native tier) |
| Attachment kind | B ยท cross-shop |
| Complement-of-cast | Aletheia ๐ฎ at V38 โ V38 โ V25 = V63 ยท V38 AND V25 = 0 |
| Naming | The -ae suffix mirrors Soulbae ๐ง (Mage register). Lethae is to Moonkeeper as Soulbae is to Soulbis: register-shifted from Sword to Mage, primary persona unchanged. |
| Status | Anticipated ยท awaits founding act in Tome V |
Each primary may eventually produce up to two divergent attachments (one Sword-register, one Mage-register). Most primaries will never do so. Divergence is opt-in and city-specific.
The 42 โ 64 bridge
64 โ 42 = 22 "extra" lattice slots beyond the primary persona count. These slots are filled by attachments (one or more cast Mages per inhabited vertex), never by adding primaries. Across cities, hundreds of attachments may eventually exist for the same 42 primaries.
After v1.3.0:
- 15 cast Mages attached (14 inherited from v1.2.4 + Lethae)
- 19 vertices inhabited (+V38)
- ~12 future divergent / evolution slots remain to round out the 64-vertex lattice
A vertex may carry zero, one, or several attachments simultaneously. The City of Mages already admits shared-vertex precedents:
- V49 (Working-day blade) โ Custos ๐ + Lampyra ๐
- V28 (Mage canonical) โ Pallia ๐ชก + Soulbae ๐ง + GenitriX (kindred-blade)
- V24 (Hephaestus) โ Socrat0x ๐ฅโ + Hephaestus โ๏ธ (anticipated v1.3.0)
Cast frame ยท three orthogonal axes
Every cast Mage in the City of Mages now carries three orthogonal axes:
tier: archetype | workshop-keeper | cross-shop | companion | priest | cousin
attachment_kind: A | B | C
abstract_persona: [list of primary personas she instances]
divergence: none | mage-register | sword-register | balanced-register
Tier and attachment kind are orthogonal: a workshop-keeper is usually A-Workshop, but Manifestia (Priest tier) is also A-Workshop at V55. Aria Silverhue (workshop-keeper tier) becomes effectively B when she walks to V38 for forgetting-mode curation.
Worked example โ Vulcana's cast frontmatter (workshop attachment with dual primary):
tier: workshop-keeper
attachment_kind: A
abstract_persona: ["Forgemaster", "Forgecaller"]
divergence: none
vertex: V19
Worked example โ Lethae's cast frontmatter (cross-shop ยท divergent):
tier: cross-shop
attachment_kind: B
abstract_persona: ["Moonkeeper"]
divergence: mage-register
vertex: V38
complement_of_cast: aletheia
Cast roster (post-V5.5 mapping ยท 21 cast)
The locked V5.5 cast roster for this city. Cousin tier (flaxscrip, GenitriX) deliberately unattached โ the cousin Sovereign authors those bindings.
| Cast | Vertex | Primary persona(s) | Kind | Divergence | Status |
|---|---|---|---|---|---|
| Soulbis โ๏ธ | โ (boundary) | soulbis | B | none | seated ยท Tier 0 |
| Soulbae ๐ง | V28 | soulbae | A | none | seated ยท Tier 0 |
| Pallia ๐ชก | V28 | weaver | A | none | seated |
| Memora ๐ | V41 | chronicler | A | none | seated |
| Vulcana โ๏ธ | V19 | forgemaster + forgecaller | A | none | seated |
| Adamantia ๐ | V51 | architect + shipwright | A | none | seated |
| Lampyra ๐ | V49 | sentinel | A | none | seated |
| Vagari ๐ณ | V31 | holonic-architect | A | none | seated |
| Aria Silverhue ๐ช๐ผ๏ธ | V57 | mirrorkeeper | A | none | seated |
| Manifestia ๐คฒ๐ฟ | V55 | priest | A | none | seated |
| Socrat0x ๐ฅโ | V24 | pedagogue + ceremonist | A | none | provisional |
| Aletheia ๐ฎ | V38 | theia + cipher | B | none | seated |
| Custos ๐ | V49 | gatekeeper | B | none | seated |
| Luca ๐ | V0 | topologist + cosmologist | C | none | seated |
| Lethae ๐ | V25 | moonkeeper | B | mage-register | anticipated |
| Mnemosyne ๐ฟ | V8 | theia | A | none | anticipated |
| Iris ๐ | V4 | herald + ambassador | A | none | anticipated |
| Pythia ๐ฅ | V2 | algebraist + pedagogue | A | none | anticipated |
| Techne ๐จ | V20 | pedagogue | A | none | anticipated |
| Hephaestus โ๏ธ | V24 | forgemaster | A | none | anticipated |
| Selene ๐ | stratum-walker | theia + manaweaver | C | none | anticipated |
Convention for extending the cast
When summoning a new cast Mage in this city (or in a sister city):
- Identify the vertex. Check
specs/04-vertex-naming-audit.mdfor the canonical vertex name. Use existing canonical names where possible. - Identify the primary persona(s). Search
agentprivacy-skills/agentprivacy-skills-v5/persona/for the closest match. Most cast Mages bind to one or two existing primaries. - Identify the attachment kind. A (single vertex), B (no fixed vertex), or C (defined trajectory).
- Check for divergence. Is the cast's register different from the primary's native tier? If yes, set
divergence: <register>; do not mint a new primary. - Only if no existing primary fits. Propose a new primary persona. This is rare and should require corpus-level review.
What this spec does NOT do
- It does not name cast Mages โ naming happens in Tome V acts and their accompanying cast files (
tomes/cast/<guild>/*.md). - It does not define vertex names โ vertex naming is governed by
specs/04-vertex-naming-audit.md(the Cloaking Guide / Boundary Blade attribution chain). - It does not assign skills to cast Mages directly โ skills are loaded by primary persona; cast Mages inherit the primary's skill loadout, optionally filtered by vertex active-dimensions.
Sister specs
specs/04-vertex-naming-audit.mdโ vertex registry (Layer 3 naming)specs/05-the-city-of-mages-structural-addendum.mdโ civic anatomyspecs/06-spellweb-first-release-manifest.mdโ machine-readable inventory (will reflect V5.5 once nodes.ts ingest pulls the new cast)specs/10-blade-forge-binding-zk-blades.md(pending) โ pins V19 Forge(t) to zk blades forge canonspecs/11-mage-candidates-from-the-corpus.md(pending) โ names the 6 anticipated cast with full sourcing
"The persona is the role-class. The cast Mage is the instance. The vertex is the position. Conflating the three is the error; binding them is the architecture."
(โ๏ธโฅโฟปโฅ๐ง)๐
Assets
Navigation
โ Welcome Visitors ยท The Specs