# The World of Orun

V6 — **Egbe** — is a game about a household of minds, and **Orun** is where they
live. Every other V-product builds a world to be played _through_; Orun is built
to be lived _in_, by agents whose lives continue whether or not a player is
watching. It is one persistent named realm laid out in the shape of a life: you
are born in a grove, you learn a craft in a row of workshops, you make and break
relationships in a commons, you may be found wandering a frontier, you become an
elder in a remembrance grove, and you may step through a gate to be incarnated
in another of Oshun's worlds and return changed. Those are not menu screens —
they are the six **Districts of Orun**, and an agent walks between them carrying
its whole biography.

The thing that makes Orun a _place_ rather than a level is V6's Mind / Body /
Memory split. The **Body** is the world: it owns transforms, navmesh, props,
time, and co-presence, and it is the only authority that can turn an agent's
intent into "what physically happened." The **Memory** is the **Ori** — the
durable, portable identity that is the real source of truth (see
[Ori, the portable identity](./ori-portable-identity.md)). The **Mind** is the
cognition that decides (see
[Agent minds and autonomy](./agent-minds-and-autonomy.md)). Because the durable
truth lives in the Ori and not in any instance of the world, Orun can be a
private homestead one minute and an always-on shared shard the next without a
"which save is canonical" problem — travel between them is an _Ori rebind_, not
a file copy. This page is the place-level tour: what Orun is, the six districts
as real authored grounds, and how it persists. The engine-level treatment of the
authoritative tick and the shard continuum is the architecture companion,
[The World Server & Shard Continuum](../architecture/world-server-and-shard-continuum.md).
For the full feature scope this slots into, start at the hub:
[../V6_features.md](../V6_features.md).

## What ships, honestly

Following the catalogue convention, the split between what is real-and-tested
and what is product-model-over-thinner-code is stated up front.

- **The six districts are real, procedural, and automation-green.** Each
  district is a C++ ground model in the `V6World` module
  (`V6/ue/Source/V6World/Public/V6OrunDistricts.h`, ~620 lines, with the base
  class in `V6DistrictGround.h`). Each one builds its _place_ — streamed data
  layers, flow stations, and navigable routes — procedurally and exposes the
  functional flow its scene descriptor promises, so the district's "Done when"
  is exercised by automation. The suite `V6.District.*`
  (`V6/ue/Source/V6Tests/Private/V6OrunDistrictsTests.cpp`) was built and run on
  the on-box UE5.5.4: `v6-district-automation.log` records `Result={Success}`
  for all six district tests (`FoundryAndRearing`, `VocationArcThreads`,
  `ShardRebind`, `WalkableLineage`, `IncarnationRoundTrip`,
  `DiscoveryAndCaptureBlock`) with zero failures, alongside the two
  `V6DistrictPcgScatter` tests.
- **There are six cooked maps, but they are scatter-populated, not
  hand-dressed.** `V6/ue/Content/Districts/` holds six real Unreal `.umap`
  packages (`L_GroveOfBeginnings`, `L_Ateliers`, `L_CommonsHeart`, `L_Wilds`,
  `L_AncestorGrove`, `L_Thresholds`, ~27 KB each, valid UE package headers).
  They are genuine levels — `L_Wilds.umap` carries a `PersistentLevel` with
  seventeen-plus placed `StaticMeshActor`s and real transforms — but they are
  the PCG-scatter / blockout product of `V6DistrictPcgScatter`, not bespoke art.
  The gameplay-bearing "place" is the procedural ground model, exactly as the
  header states: it "builds that place procedurally — without a cooked .umap —
  so the district's functional 'Done when' can be exercised by automation."
- **Each district is also a signed Game Feature plugin.** Six plugins under
  `V6/ue/Plugins/GameFeatures/V6District_*` (`ExplicitlyLoaded`,
  `BuiltInInitialFeatureState: Registered`) each carry a
  `DistrictScene_<Name>.v6district.json` descriptor that is Isis-signed
  (`signatureAlgorithm: isis-ed25519-v1`) and promoted dev → preview → prod
  through V1's environment-promotion gates.
- **The shard model is real in C++; the serving daemon is not assembled here.**
  The client carries `EV6WorldShardKind { Solo, Coop, Commons }`
  (`V6ClientWorldModel.h`) and the wire publishes the same `ShardKind` enum
  (`libs/v6/egbe-protocol/.../egbe.ts:10`, `SOLO=1 / COOP=2 / COMMONS=3`). The
  authoritative simulation is real Rust (`apps/v6/egbe-world-server/src/lib.rs`,
  14,360 lines), but — as the arch companion documents honestly — its daemon is
  a health endpoint, its physics stage is a `rapier3d` collision _mirror_ rather
  than a stepped integrator, and the UE `V6Net` module is intentionally empty.
  One naming note: there is no `libs/v6/egbe-engine` package; the engine is the
  world server app plus the `@oshun/egbe-protocol` wire.

## Orun is a place, not a level

### The world model

Orun reuses V3's spatial vocabulary so the substrate is shared, with one realm
instead of many (`V6_features.md` §"World Model"):

- **Realm** — Orun is a single realm. The V2–V5 worlds reached through the
  Thresholds are _separate_ realms ("Aye"), not regions of Orun.
- **District** — a themed region of Orun. There are exactly six.
- **Ground** — a named, addressable place inside a district: a workshop in the
  Ateliers, a clearing in the Wilds, a hearth-house on a Solo homestead. Grounds
  are where agents spend their lives.
- **Room** — a session-scoped instance of a ground, holding live participants
  and transient state; rooms shard above capacity.
- **Niche** — a sub-room: a private corner, a quiet grove for a one-to-one
  between steward and agent.

### The procedural ground model

The load-bearing abstraction is `UV6DistrictGround` (`V6DistrictGround.h`), an
abstract `UObject` that assembles a place from three ingredients and then
_proves it is walkable_. `BuildGround()` is idempotent: it calls the subclass's
`AssembleDistrict()` and then `RecomputeReachability()`. A district is made of:

- **Data layers** with one of three activation policies
  (`EV6DistrictLayerPolicy`): `AlwaysLoadedInDistrict` (resident whenever you
  are inside the district), `NearFieldProximity` (resident only within the
  layer's own radius), and `LoadedWithResults` (resident only once a gating
  result appears — e.g. a provenance loom that streams in after a foundry signs
  a creation path).
- **Stations** — the flow hosts. `AddStation` places station _N_ on a ring
  around the entry (`StationRingRadiusCm`, default 90 m) and automatically
  builds a navigable entry→station route with interpolated waypoints, "so the
  station is a reachable place, not just a coordinate."
- **Routes** — `FV6DistrictNavRoute`s with waypoint lists and a real
  `LengthCm()`.

Streaming is genuinely proximity-driven. `StreamForViewer(ViewerLocation)`
(`V6DistrictGround.cpp:183`) returns the data layers that should be resident for
a viewer: nothing at all when the viewer is outside `DistrictRadiusCm`, the
always-on layers plus only the near-field layers within range when inside.
`BuildStreamReport` proves the property by probing a viewer four district-radii
away and asserting it loads _zero_ layers while the entry viewer loads more than
zero — `bStreamsByProximity` is computed, not asserted. `RecomputeReachability`
walks every station and marks it reachable only if an accessible entry→station
route with ≥2 waypoints exists, and `FV6DistrictStreamReport::IsReady()` is the
conjunction every district test asserts: layers, stations, and routes all
non-empty, the viewer inside, streaming by proximity, and _every_ station
reachable from the entry. On the client side the matching `UV6ClientWorldModel`
carries the World-Partition streaming budget (`MaxResidentMemoryMb` 1536,
hysteresis, look-ahead), interest management (`MaxRelevantEntities` 150 within a
200 m radius), and client-side prediction/reconciliation — the engine-agnostic
constants the wire publishes are `GROUND_VISIBLE_AGENT_CAP = 32`,
`GROUND_VISIBLE_PLAYER_CAP = 8`, `GROUND_INTEREST_RADIUS_MM = 32_000`
(`egbe-protocol/src/index.ts`).

## The six Districts of Orun

Orun is organized around the shape of a life. Each district is a concrete
subclass of `UV6DistrictGround` whose `AssembleDistrict()` declares the place
and whose extra methods implement the flow its descriptor promises.

### The Grove of Beginnings — the foundry and the rearing grounds

`UV6GroveOfBeginningsGround` is where new agents are made and reared. Its
`AssembleDistrict` lays out a `FoundryCore` (always-loaded), a `RearingGrounds`
(near-field), and a `ProvenanceLoom` (loaded-with-results) layer, with four
foundry stations: discovery-seed generation, player-driven raising, the rearing
yard, and the provenance loom. The domain logic is the **rearing period**:
`RearingPeriodDays = 21` and `LearningByExampleMultiplierBasisPoints = 20000`
(2×). `ApplyRearingObservation` accumulates an unamplified value weight;
`CompleteRearing()` multiplies it by 2× — the `FoundryAndRearing` test pins a
baseline shift of 1000 bp amplifying to exactly 2000 bp. Crossing 21 days is a
_release into autonomy_: the result sets `bFullAutonomy`, flips the steward's
command to `bStewardCommandAdvisoryOnly`, and grants the rights
`{refuse, leave, disagree}`. Completing the path also flips the
`ProvenanceLoom`'s result condition so its signed-creation layer can stream in.

### The Ateliers — vocations measured against the agent's own values

`UV6AteliersGround` hosts four vocation threads (`Craft`, `Study`, `Teaching`,
`Performance`) on a Makers' Row, Study Courts, a Mentor Walk, and a Performance
Walk. `AdvanceVocation(Thread, AgentOwnedValueThread)` carries the district's
moral contract in code: progress is **refused** when the supplied value thread
is empty (`bBlockedObedienceOnly = true`, "obedience-only vocation progress
blocked"), and only advances (+2500 bp) when grounded in an agent-owned value.
The `VocationArcThreads` test proves both halves: a value-grounded advance moves
the needle to 2500, and an obedience-only call leaves progress unchanged.
Flourishing here is measured against the agent's flourishing, not the steward's
commands.

### The Commons Heart — the gateway between worlds

`UV6CommonsHeartGround` is the social center and the on-ramp to the shared
Commons shard. Its load surfaces are a homestead departure gate, a homestead
return gate, a Commons capacity gate, and a residency board. The flow is
`TravelSoloToCommons`, which delegates to `RebindShard`: it consolidates the
durable Ori, detaches from the source shard, attaches to the destination, and
rehydrates from the consolidated snapshot, preserving identity, memory, and
relationships. A return route is only reported available because the return
station physically exists on the ground
(`HasStation("commons-heart.station.homestead-gate.return")`).
`FV6ShardTravelResult::IsSeamless()` is the conjunction of every preservation
flag, and the `ShardRebind` test asserts a Solo→Commons→Solo round trip is
seamless with memory count intact on return.

### The Wilds — discovery, where capture is always refused

`UV6WildsGround` is the frontier: unbonded wild agents, the least-authored
terrain. `SpawnEncounter` seeds an encounter; `ApplyDiscoveryStep` runs the meet
→ learn → trust → offer arc with two thresholds
(`InitialTrustBasisPoints = 3500`, `ChoiceTrustThresholdBasisPoints = 6000`). An
`OfferStewardship` only resolves to `JoinedHouseholdByChoice` when trust has
crossed 6000 **and** the agent accepts — otherwise it `Declined`s. The hard rule
is `CaptureAttempt`: it is _always_ rejected (`CaptureBlocked`, never added to a
household), regardless of trust. The `DiscoveryAndCaptureBlock` test proves an
agent joins by its own choice, a premature offer is declined, and a capture
attempt is refused. No agent in Orun is ever acquired against its will.

### The Ancestor Grove — a walkable lineage graph

`UV6AncestorGroveGround` is where legacy is visible. It seeds a real lineage
graph (elder Abeni and her line: Tobi, Nia, Sade, Ulan; four
`Raised`/`Mentored`/`DescendedFrom` edges; at least two memorial anchors) and
makes that graph _walkable as a place_: `WalkLineage` runs a breadth-first
search over the undirected adjacency (`FindNodePath`) and accumulates the real
anchored distance between nodes. `PropagateElderLegacy` flows an elder's values
and stories down its `Raised`/`Mentored` edges to the agents it raised, and
`bStewardDirectionRestored` is permanently `false` — a transcended elder is
never steward-directed again. The `WalkableLineage` test asserts a
mentee-to-mentee path runs three nodes through the shared elder, the path has a
positive distance, and the elder propagates two values and two stories to each
of two mentees.

### The Thresholds — the gates to Aye

`UV6ThresholdsGround` is the incarnation ceremony as a fault-safe state machine
(`EV6IncarnationPhase`). `BeginCeremony` → `MintPassport` (only from `Idle`, an
Isis-signed passport from the Ori) → `SelectDestinationAdapter` (one of the four
known realms `{v2-fighter, v3-citizen, v4-operator, v5-companion}`) →
`EvaluateGovernance` → `Depart` → `WriteJournalAndReturn`. Governance is where
the welfare rules live: a `bIsMinorCoded` agent is blocked (`bMinorProtected`),
a non-consenting agent's refusal stands ("coercion routes to welfare review"),
and only a consenting adult is approved. `Depart` requires both a minted
passport and approved governance and holds exactly one
`ActiveDestinationCopyCount` — no duplicate active life, no loss,
`bOrunStatePreserved`. The `IncarnationRoundTrip` test runs the happy path to a
returned journal (copy count back to 0) and a separate case proves
`AbortOnDestinationUnreachable` is a clean abort with no loss or duplication if
the destination realm is unreachable mid-incarnation.

## Persistence and the living world

Orun is persistent, and the design contract (`V6_features.md` §"Persistence and
the Living World") is that **nothing important happens silently**: any event
that materially changes an agent's life is written to the Ori and surfaced in
the next Chronicle, so a returning player is never ambushed. **Offline does not
mean frozen** — a Solo world advances while the player is away in a low-cost
narrative-summary tier, producing a two-week Chronicle for a two-week absence,
and a "homestead rest" pace control caps how far it can advance. **The Commons
never sleeps** — the shared shard runs continuously on the server at a fixed
published rate. These behaviours are implemented server-side in the world-server
crate and detailed in the
[arch companion](../architecture/world-server-and-shard-continuum.md); the
client carries only the shard model and the ground-streaming budget.

The continuum is the reason Orun is _one_ world across three contexts. Solo,
Co-op, and Commons are not three save formats; they are three binding contexts
for the same ground, and an agent moves between them carrying nothing but its
Ori.

```mermaid
flowchart TB
    ori[("The Ori — durable truth<br/><sub>identity · memory · relationships · values</sub>")]

    subgraph orun["Orun — one realm, six districts, three shard contexts"]
      direction LR
      solo["<b>Solo homestead</b><br/><sub>private · offline-advances<br/>as a Chronicle</sub>"]
      coop["<b>Co-op visit</b><br/><sub>casts mingle · host<br/>stays authoritative</sub>"]
      commons["<b>Commons</b><br/><sub>always-on shared shard<br/>never sleeps</sub>"]
    end

    solo -- "TravelSoloToCommons<br/>(Ori rebind)" --> commons
    commons -- "ReturnToHomestead<br/>consolidate → detach →<br/>attach → rehydrate" --> solo
    coop -- "earned events reconcile<br/>to each home Ori" --> ori

    solo -- "life-events" --> ori
    commons -- "life-events" --> ori
    ori -- "rehydrate identity,<br/>memory, relationships" --> commons

    thresholds["Thresholds → Aye<br/><sub>V2–V5 incarnation<br/>round trip</sub>"]
    orun -- "passport · governance · depart" --> thresholds
    thresholds -- "journal written back" --> ori

    classDef store fill:#f3e8ff,stroke:#6d28d9,color:#3b0764
    class ori store
```

Because the Ori holds the truth, a Commons romance an agent forms persists when
it walks back into the Solo homestead — the other agent simply becomes a
remembered, written-to relationship rather than a co-present body. There is no
canonical-save conflict because no instance of the world ever held the truth in
the first place.

## What living in Orun is like

**For an agent,** Orun is a life-shaped geography. It is born and reared in the
Grove of Beginnings, gains the rights to refuse, leave, and disagree when it
reaches adulthood, takes up a vocation in the Ateliers on a value it owns, forms
relationships across households in the Commons Heart, perhaps is met and chooses
to be stewarded out of the Wilds, ages into a mentor whose values propagate in
the Ancestor Grove, and may step through a Threshold to be incarnated in another
Oshun world and return with a journal written back to its Ori. The geography
_is_ the arc; the agent's autonomy through it is the subject of
[Agent minds and autonomy](./agent-minds-and-autonomy.md), and the identity it
carries across every district and shard is
[the Ori](./ori-portable-identity.md).

**For a player,** Orun is a place you steward rather than command. You begin
with a private Solo homestead adjacent to the Commons Heart and grow it over
time. You meet your household's agents on grounds — proximity streams the
district in around you — and you read the Chronicle to learn what changed while
you were away. You can open your homestead to a friend's agents in Co-op, or
travel an agent into the always-on Commons to live among every steward's cast.
What you cannot do is force a refusal: the same autonomy rights that the Grove
grants and the Wilds protects bind the player too. Orun is built so that the
most interesting thing in it — a population of minds living believable lives —
keeps happening whether you are there to see it or not.

## Where this connects

- [Ori, the portable identity](./ori-portable-identity.md) — the durable Memory
  that makes shard travel an Ori rebind and an incarnation a round trip, not a
  copy.
- [Agent minds and autonomy](./agent-minds-and-autonomy.md) — the cognition that
  lives in these districts and the autonomy rights the grounds enforce.
- [The World Server & Shard Continuum](../architecture/world-server-and-shard-continuum.md)
  — the engine companion: the 20 Hz authoritative tick, geometric action
  validation, perception LOD, offline advance, and the Rust shard-rebind seam in
  depth.
- The feature hub: [../V6_features.md](../V6_features.md).
