Architecture and lifecycle

v0’s world package models concrete shared assemblies. An assembly owns fixed fields such as its deterministic tenant/item key, owner-cap ID, status, location, energy, and metadata; anchoring and sharing are direct lifecycle operations.

v1’s active packages are core, character, and inventory; the former world package is archived. An Entity is deterministically derived from a tenant-scoped key and holds dynamically installed typed modules.

flowchart LR
  V0[Fixed shared assembly] --> Fields[Fixed domain fields]
  V1[Entity] --> Modules[Installed Module<T> values]
  Modules --> Action[Named Action]
  Action --> Request[Locked Request]
  Request --> Requirements[Typed requirements]
  Requirements --> Complete[Unlock and complete]

install, uninstall, action changes, and interaction lock an entity and return a no-ability Request. Each Requirement must be consumed before completion. This retains Sui Move, shared objects, deterministic identity, tenant partitioning, on-chain rules, and atomic transactions, but requires builders to compose a request flow rather than call a fixed assembly API.

Modules carry local version checks, but the reviewed active source has no universal cross-package data migration function. Treat upgrade as explicit module/version and integration work, not automatic compatibility.