Commons is a governed venue and programming plane, not an unowned remainder between tenants. Re-rendered V1 experiences retain their original domain truth while adopting V3 presence, embodiment, content, and operations boundaries.
Lilith Commons is the open, contemplative social space at the centre of the
Lilith metaverse — the part you wander into rather than book. Where Tara is a
class you attend and Saraswati is a concert you arrive for, Commons is a
persistent set of public rooms that are simply open: a library you can browse,
an observatory tracking the real sky, a debate hall with claim-and-counterclaim
podiums, a garden that follows the seasons, and a lantern-lit hall for grief and
solitude. Eight venues ship at GA, each one a re-rendered V1 domain experience —
Nisaba becomes a walkable open stack, Nyx becomes a planetarium dome, Veritas
becomes a podium debate, Metis becomes a tiered lecture theatre — so that the
contemplative content Oshun already publishes in 2D has an embodied 3D home.
Over the top of those rooms runs a live-service layer: a rolling weekly
calendar, four cross-tenant seasonal festivals, drop-day concerts, and community
cohorts, so a venue is never empty and the world always has something on. The
data, policy, and verifier tier behind all of it lives in one package —
@oshun/tenant-lilith-commons (libs/v3/lilith-commons) — the largest single
library in V3. This page covers the three load-bearing surfaces: the
persistent venues, the re-rendered V1 experiences inside them, and the
live-service programming that fills them. The section hub is
../V3_features.md.
What ships, honestly#
lilith-commons is substantive, domain-specific TypeScript — a 13,458-line
src/index.ts backed by a 4,536-line, 143-case test suite — not a CRUD shell.
What is real, and what is not, splits cleanly along three lines.
- Real and tested: the venue catalog, capacity model, daily/weekly
programming, the four seasonal festivals, the solitary-cell privacy
invariants, and a per-experience verifier for every re-rendered V1 venue.
Each verifier is a fail-loud gate that returns a structured report with a
passedboolean, an enumerated set of sub-conditions, and a list of whatever is missing —publishV3LilithCommonsLaunchVenueCatalog()refuses to pass unless all eight venues are live, editorially signed, and design-approved with a score>= 95. These are decision engines, not config tables. - UE content referenced by string: the actual in-world rendering — the
planetarium dome, the Sequencer-driven ritual rooms, the world-space UMG
widgets, the radial podium geometry — is Unreal content addressed by path
(
/Game/Venues/Commons/…). This library owns the data, policy, and orchestration tier that points at that content and proves it is wired correctly; it is not the renderer. - Deterministic GA fixtures: the festival schedules and re-rendered scenes
are seeded with fixed GA content (
equinox-festival-2026, the six radial Veritas podiums, the 216 Nisaba editions). The publishers gate that seeded content against its rules; they are not a live operations feed. The V1 bindings (v1:veritas:…,v1:nisaba:edition:…,v1:metis:notebook:…) are string references that tie a venue to V1 domain data whose canonical surface still lives in V1.
The sections below say, per claim, which of the three it is.
Persistent venues#
The eight launch venues#
V3_LILITH_COMMONS_LAUNCH_VENUE_IDS (index.ts:150) enumerates the eight rooms
that ship at GA, and V3_LILITH_COMMONS_LAUNCH_VENUES (index.ts:3198)
instantiates each with a kind, a capacityTier, a core-experience string, an
accessibility-feature list, an editorial signoff, and a design review.
| Venue | kind |
Tier | Re-renders |
|---|---|---|---|
| Atrium | arrival-plaza |
assembly | first-run orientation, avatar arrival, wayfinding |
| Garden of Cycles | garden-loop |
standard | seasonal walking loops, ambient programming |
| The Stacks | library-stack |
quiet | Nisaba edition browsing, passage pulls |
| Observatory | planetarium-dome |
assembly | Nyx sky windows, deep-sky sessions |
| Debate Hall | civic-debate |
assembly | Veritas podium debates |
| Lecture Hall | lecture-theater |
assembly | Metis slide lectures, cohort seating |
| Atrium of Practice | practice-atrium |
standard | Tara ritual rooms, solitary cells |
| Lantern Hall | reflection-hall |
quiet | weekly review, journal walls, reflection alcoves |
Capacity is a closed three-tier model — V3_LILITH_COMMONS_CAPACITY_TIER_LIMITS
(index.ts:455) fixes quiet = 16, standard = 64, assembly = 256. The one
exception is the Observatory's marquee sky events, which legitimately need a
crowd and so escalate to a separate stadium tier validated at 4,096
simulated attendees (see Nyx Observatory below); the three baseline tiers
cover everything else. publishV3LilithCommonsLaunchVenueCatalog()
(index.ts:3265) is the GA gate over the whole set: it computes the live,
editorially-signed, and design-approved venue ID sets, lists missingVenueIds,
and only returns passed: true when the count is exactly eight, every venue is
live, every editorial signoff is signed, and every design review is approved
with score >= 95. A venue that ships without a passing design review cannot
clear the catalog — the gate fails loud with the offending IDs, not a checkbox.
Solitary cells: the quiet exit#
Every venue carries at least one solitary cell — a single-occupant space
with no voice chat, no visible avatars, and no observers, intended for grief,
contemplation, and transition. The cell template is the same UE asset for all
eight
(V3_LILITH_COMMONS_SOLITARY_CELL_WORLD_TEMPLATE_REF = '/Game/Venues/Commons/SolitaryCell/LVL_CommonsSolitaryCell_Template',
index.ts:169), and verifyV3LilithCommonsSolitaryVenueCells()
(index.ts:3309) is the privacy gate that makes "solitary" a checked invariant
rather than a promise. It derives three sets — cellsWithVoiceEnabledIds,
cellsWithVisibleAvatarIds, cellsWithObserverSlotsIds — and the report passes
only when all three are empty (noVoiceAccess, noVisibleAvatars,
noObserverSlots), every venue has exactly one live cell, each cell's
maxOccupants === 1, and every cell uses the solitary world template. A cell
that leaks a voice channel, an observer slot, or a visible avatar slot flips its
ID into one of those lists and fails the gate. Lantern Hall is the venue built
entirely around this need; the per-cell 5 Hz transform tick and nameplate
suppression that V3_features.md describes are runtime behaviours of the world
server, which this library's invariants constrain.
Daily ambient programming#
A venue is "never closed, only quieter."
publishV3LilithCommonsDailyProgrammingCalendar() (index.ts:7047) builds a
per-venue daily cycle — a full-day ambient MetaSound/Web-Audio loop plus
scheduled programming windows — and gates that all eight venues carry both a
visible ambient loop and at least one valid scheduled-programming window
(allVenuesHaveAmbientLoops, allVenuesHaveScheduledProgramming), with every
entry visible in the calendar. A slot with no scheduled event falls back to its
ambient bed; the gate's missingAmbientLoopVenueIds list is what would catch a
venue that fell silent.
Re-rendered V1 experiences#
The organising principle of Commons is that every customer-facing V1 domain gets at least one embodied venue. The library models each as its own scene with its own verifier, so the binding back to V1 content is checked, not asserted.
| V1 domain | Commons venue | Verifier entry point |
|---|---|---|
| Veritas | Debate Hall | verifyV3LilithCommonsVeritasDebateHallPodiumScene() |
| Nyx | Observatory | verifyV3LilithCommonsNyxDeepSkySessions() |
| Nisaba | The Stacks | verifyV3LilithCommonsNisabaOpenStackBookshelves() |
| Metis | Lecture Hall | verifyV3LilithCommonsMetisLectureHallSeating() |
| Tara | Ritual rooms (Atrium of Practice) | verifyV3LilithCommonsTaraMorningSunSalutationDropIn() |
| Arete | Atrium of Practice | verifyV3LilithCommonsAreteCohortReviewCircles() |
Veritas Debate Hall#
The Debate Hall is the richest re-render and ships as three coupled verifiers.
verifyV3LilithCommonsVeritasDebateHallPodiumScene() (index.ts:8280) proves
the geometry: one central topic podium at radius 0 plus six radial podiums
(V3_VERITAS_DEBATE_HALL_RADIAL_PODIUM_COUNT = 6) placed at exact 60° intervals
on a 2.4 m circle — allPodiumTransformsRadial recomputes
Math.hypot(x, z) ≈ radiusM to within 0.002 — with at least three
supporting-claim and three counterclaim podiums, all bound to a real V1 Veritas
topic hub (topicHubRef must start v1:veritas:topic-hub:). The live debate is
verifyV3LilithCommonsVeritasDebateTurnMachine() (index.ts:8371): six
participants take 120-second turns
(V3_VERITAS_DEBATE_HALL_TURN_DURATION_MS = 120_000) in a deterministic,
contiguous order — each turn's scheduledStartMs must equal the previous
turn's end — with claim/counterclaim alternation enforced
(participant.stance === (index % 2 === 0 ? 'claim' : 'counterclaim')), every
turn policyCheckRef-moderated by the Lilith persona policy and marked
moderationResult: 'approved', and no turn requiring manual intervention.
Finally verifyV3LilithCommonsVeritasSophiaInlineCitations() (index.ts:8447)
requires one Sophia-backed citation per participant claim, each
renderMode: 'realtime-inline' and rendering within
V3_VERITAS_DEBATE_HALL_INLINE_CITATION_MAX_RENDER_LATENCY_MS = 120 ms, sourced
from sophia:veritas: with an https://sophia.oshun.example/veritas/ URL. Turn
order is enforced so only the avatar holding a podium has the floor — a debate
stays orderly even with a full hall.
Nyx Observatory#
The Observatory re-renders V1 Nyx sky data into a planetarium dome.
verifyV3LilithCommonsNyxDeepSkySessions() (index.ts:7792) gates a guided
deep-sky session for each of the 12 GA months
(V3_NYX_DEEP_SKY_GA_MONTH_COUNT), every session co-led by the Nyx editorial
team (editorialLead.role === 'nyx-editorial-lead' with a
credential:nyx-editorial: reference), calendar-visible, and tied to a real Nyx
observation window
(nyxObservationWindowId === 'nyx-observation-window:deep-sky: …'). The marquee
events are separate: verifyV3LilithCommonsNyxStadiumSpecialEvents()
(index.ts:7865) requires an eclipse, a meteor-shower, and an aurora
event, each at the stadium capacity tier and each validated by
isV3LilithCommonsNyxStadiumSimulationPassing() at 4,096 simulated attendees
(V3_NYX_STADIUM_SPECIAL_EVENT_SIM_ATTENDEES). The Observatory is one of the
few Commons venues that legitimately needs stadium capacity, because a major sky
event draws a large simultaneous audience; the crowd-shader presence model that
serves attendance beyond 256 is the client-tier rendering documented in the
sibling client-fidelity page.
Nisaba: The Stacks#
The Stacks turns V1 Nisaba into a browsable open-stack reading room.
verifyV3LilithCommonsNisabaOpenStackBookshelves() (index.ts:7932) proves a
filled stack: 12 shelves of 18 editions each
(V3_NISABA_OPEN_STACK_SHELF_COUNT × V3_NISABA_OPEN_STACK_EDITIONS_PER_SHELF)
for 216 visible editions (V3_NISABA_OPEN_STACK_VISIBLE_EDITION_COUNT), every
edition bound to a real V1 Nisaba edition (v1NisabaEditionRef starts
v1:nisaba:edition:), every shelf full, and every edition routed to a pull URL
(/commons/the-stacks/editions/{editionId}). Pulling a book opens a passage
panel HUD whose content is genuinely authored, not lorem:
V3_NISABA_PASSAGE_PANEL_CONTENT_PROFILES (index.ts:306) carries twelve
tradition-specific passages — Sumerian hymn, Vedic commentary, Buddhist sutra,
classical Greek, Hebrew wisdom, Arabic philosophy, and more — each with a
canonical reference, an excerpt, and a reader cue. The passage panel is the V1
Nisaba content surface inside a world-space UMG overlay (an HTML overlay on the
Tier-2 fallback), so the canonical reading experience is reachable in 3D.
Metis Lecture Hall#
verifyV3LilithCommonsMetisLectureHallSeating() (index.ts:8647) re-renders V1
Metis lectures as a 256-seat theatre — 8 tiers of 32 seats
(V3_METIS_LECTURE_HALL_TIER_COUNT × V3_METIS_LECTURE_HALL_SEATS_PER_TIER) —
and folds a real performance budget into the gate: the seating plan must render
within V3_METIS_LECTURE_HALL_MAX_RENDER_COST_MS = 16 ms with a draw-call
budget <= 64 and the seat-glyph batch count at or under it
(lectureHallRendersWithoutPerformanceIssue). Every seat is avatar-anchored
with a note anchor whose notes persist back to a V1 Metis notebook
(v1MetisNotebookRef === V3_METIS_LECTURE_HALL_V1_NOTEBOOK_REF,
persistenceStatus === 'persisted'), so a student's in-world notes travel with
their seat and sync to their V1 record. Sibling verifiers cover the slide
projection surface, the cohort break-out flow, and private assessment-review
cells. Each seat's vertical position is even computed from its tier
(seat.y === 0.04 + tierIndex * 0.08), so the rake of the theatre is data, not
art.
Tara ritual rooms and the Arete atrium#
The Atrium of Practice hosts both Tara's Commons-side ritual rooms and Arete's
weekly review. V3_TARA_RITUAL_ROOM_IDS (index.ts:402) enumerates five — dawn
circle, sunset circle, new-moon, full-moon, breathwork — and the library ships a
verifier per recurring program:
verifyV3LilithCommonsTaraMorningSunSalutationDropIn(),
…SunsetGratitudePractice(), …LunarRitualCircles() (on the lunar calendar,
surfaced as Nyx-linked events), …GroupBreathworkSessions(), and
…SolitaryPracticeCells(). The Arete side mirrors V1's weekly review with
verifyV3LilithCommonsAreteJournalWalls() (opt-in, revocable reflection posts),
…AreteCohortReviewCircles(), and …AreteSolitaryReviewAlcoves(), each
persisting continuity back into the V1 Arete record. These ritual rooms are open
and drop-in rather than booked — the structured, instructor-led Tara classes are
a different surface, covered in
./tara-instructors-classes-coaching.md.
Live-service programming#
Weekly programming calendar#
buildV3WeeklyProgrammingCalendarUiModel() (index.ts:4987) assembles the
rolling weekly calendar that spans all three tenants — Tara, Saraswati, and
Commons — into one cross-surface UI model. Each
V3WeeklyProgrammingCalendarSlot carries a tenant filter, a venue label, a
capacity label, per-surface routes (web/mobile/vr), and a
V3WeeklyProgrammingSubscriptionControl. A user subscribes to a calendar
segment, and reminders fire through V1's messaging-channel substrate — the
V3WeeklyProgrammingReminderChannel union is exactly
telegram | whatsapp | push | email | sms. The VR surface gets a first-class
panel (V3WeeklyProgrammingVrPanelModel,
widgetClass: 'UV3WeeklyProgrammingCalendarWidget', ray-press interaction,
anchored to the Atrium north wall), so the same calendar is reachable from a
headset, a phone, or the web. The calendar is the single surface where a user
discovers what is on, so it stays current rather than stale.
Seasonal festivals#
Four cross-tenant festivals are first-class report types, each with its own publisher and gate.
| Festival | Publisher | Gate highlights |
|---|---|---|
| Equinox Festival | publishV3EquinoxFestivalProgrammingSchedule() (index.ts:5027) |
4–7 day window; Tara/Saraswati/Commons all scheduled; contiguous day coverage; Tara dawn practices + Saraswati garden ambient sets (in Garden of Cycles) + Nyx programming all present |
| Lineage Week | publishV3LineageWeekProgrammingSchedule() (index.ts:5131) |
teacher-lineage talks, Nisaba scholar talks, Saraswati archival sets; talks carry a complete recording with a C2PA manifest and transcript |
| Crossover Weekend | publishV3CrossoverWeekendProgrammingSchedule() (index.ts:5227) |
Tara/Saraswati sound-bath fusions; each track carries a rights clearance that is cleared or blocked |
| Remembrance Days | publishV3RemembranceHallMemorialProgram() (index.ts:5323) |
Lantern Hall memorial; tone review must be solemn-remembrance, with a two-reviewer moderation floor (V3_REMEMBRANCE_HALL_MIN_MODERATION_REVIEWERS = 2) |
The Equinox gate is representative of how seriously these are validated: it
recomputes the day window from the events, checks the day indexes form a
contiguous 1..n run (allFestivalDaysCovered), confirms every required tenant
appears (including co-hosts), and asserts each of the three signature event
kinds is present at its correct venue before returning passed. Remembrance
Days is the inverse — its tone gate exists to block an inappropriately
celebratory program at a memorial, with the alternative
inappropriate-celebratory tone profile as the thing it rejects. A major
festival with a large expected audience triggers the operator-staffing ramp and
earlier capacity pre-warming, which are operations concerns documented in the
architecture companion.
Featured instructors, drop-day concerts, and cohorts#
The remaining live-service surfaces are real product features whose drivers
sit in sibling tenants, and this page is honest about the boundary. A featured
instructor is a monthly Tara-editorial pick that earns Atrium signage and a
paired Saraswati concert — the instructor side is in
./tara-instructors-classes-coaching.md.
A drop-day concert pairs every Saraswati single release with a live
Stadium-tier event (the V3Mode_SaraswatiDrop plugin), covered in
./saraswati-personas-discography-performance.md.
Community cohorts are recurring closed groups with a fixed roster and a
capacity cap (24 for Tara); enrolment closes once a cohort starts, and an
under-enrolled cohort is rescheduled rather than run thin. Where cohorts
intersect Commons safety — an adult instructor may not schedule a class that
admits minors without a cleared background check, and a minor has four surfaces
hard-locked with no bypass — the enforcing code
(evaluateV3MinorProtectionDefaults(), index.ts:12575) lives in this library
and is documented as part of the in-world safety model in the architecture
companion.
How it connects#
Commons is the social shell that the rest of V3 renders into. The venue scenes, podium geometry, planetarium dome, and ritual rooms are authored in the Creator Suite — Lilith Studio, whose scene-graph editor, accessibility checker, and environment-promotion gates are documented in ./creator-suite-lilith-studio.md; a venue that fails the accessibility checker cannot be promoted past preview. The Saraswati side of the programming calendar — drop-day concerts, festival performances, listening parties — is ./saraswati-personas-discography-performance.md, and the Tara ritual rooms and featured-instructor spotlights connect to ./tara-instructors-classes-coaching.md. The full internals — the seven-surface accessibility suite, the 18-locale localization pipeline, the in-world report → review → sanction chain, and the world-server room runtime that spawns these venues — are traced in the architecture companion, ../architecture/tara-classes-aja-and-commons.md. The honest line throughout: the venue catalog, the per-experience verifiers, the programming and festival publishers, and the solitary-cell privacy invariants are real, tested TypeScript; the in-world rendering they point at is UE content addressed by string, and the V1 bindings are references into domain data that still lives in V1.
Related#
- Creator Suite — Lilith Studio — how venue scenes, ritual rooms, and accessibility palettes are authored and promoted (sibling page in this group)
- Saraswati: Personas, Discography & Performance — the drop-day concerts and festival performances on the Commons calendar (sibling page in this group)
- Tara Studio: Instructors, Classes & Coaching — the booked, instructor-led classes that the Commons ritual rooms complement
- Tara Live Classes, Aja Coaching & Lilith Commons (architecture) — the accessibility, localization, safety, and room-runtime internals behind these venues
- The section hub: ../V3_features.md