---
title: "Capability Pack Architecture"
description: "Sources: `server/src/modules/runtime/capabilities/packs.ts:runtimeCapabilityPacks`."
engineVersion: v1.0.234
date: 2026-09-28
license: "(c) Gessa, proprietary. Cite with attribution to https://gessa.ai/docs/. Terms: https://gessa.ai/terms/."
canonical: https://gessa.ai/docs/spec/generated/capability-packs/
---
<!-- GENERATED FILE: do not edit by hand. -->
<!-- Regenerate with `npm run gen-docs`. -->

Sources: `server/src/modules/runtime/capabilities/packs.ts:runtimeCapabilityPacks`.

# Capability Pack Architecture

Capability packs are the canonical declaration layer for netcode-relevant engine capabilities. A pack describes every surface a capability touches: components, script SDK hosts, Script IR nodes, authoring patterns, runtime system contributions, replication, prediction, lag compensation, anti-cheat, expected side effects, Engine Contract Packet contributions, and test scenarios.

The schema lives in `packages/protocol/src/index.ts` as `CapabilityPackSchema` and its sub-declarations. The runtime registry lives in `server/src/modules/runtime/capabilities/registry.ts`; registered packs live in `server/src/modules/runtime/capabilities/packs.ts`.

Registered pack count: 24.

Status semantics:

- `implemented`: active runtime, SDK, component, projection, or side-effect surface exists in the current engine.
- `declarative`: registry metadata exists but no active runtime or SDK side-effect surface is declared.
- `reference`: example/future pack shape only; not active in the current registry.

## Inventory

| Pack ID | Status | Components | SDK hosts | Runtime systems | Replication | Anti-cheat |
| --- | --- | --- | --- | --- | --- | --- |
| `physics.v1` | implemented | `ColliderComponent`, `RigidBodyComponent`, `VelocityComponent`, `ForceComponent`, `CharacterMovementComponent` | `ctx.physics.command`, `ctx.physics.occupancyQuery`, `ctx.physics.overlapTest`, `ctx.physics.raycast`, `ctx.physics.shapecast` | `30:runtime.physicsSystem`, `90:runtime.collisionSystem` | `ColliderComponent->public/medium`, `ForceComponent->server/medium`, `RigidBodyComponent->public/medium`, `VelocityComponent->public/medium` | `physics.force_bounds` |
| `input.v1` | implemented | `InputProfileComponent` | None | `28:runtime.movementSystem`, `29:runtime.movementLivenessSystem`, `110:runtime.actionSystem` | `InputProfileComponent->owner/high` | `input.profile_version`, `input.rate_limit` |
| `audio.v1` | implemented | `AudioEmitterComponent` | `ctx.audio.play`, `ctx.audio.playSpatial`, `ctx.audio.setBackgroundMusic`, `ctx.audio.setVolume`, `ctx.audio.stop` | None | `AudioEmitterComponent->public/low` | None |
| `camera.v1` | implemented | `CameraComponent` | `ctx.camera.addLookInput`, `ctx.camera.setLookSensitivity`, `ctx.camera.setPitchClamp`, `ctx.camera.setViewTarget` | None | `CameraComponent->public/medium` | None |
| `spawn.v1` | implemented | None | `ctx.world.despawn`, `ctx.world.spawn` | `24:runtime.characterSystem` | None | `spawn.bounds` |
| `timer.v1` | implemented | `TimerComponent` | None | `140:runtime.timerSystem` | `TimerComponent->public/low` | None |
| `hierarchy.v1` | implemented | `TransformComponent` | `ctx.entity.ancestors`, `ctx.entity.children`, `ctx.entity.descendants`, `ctx.entity.detach`, `ctx.entity.parent`, `ctx.entity.setParent`, `ctx.entity.worldPosition`, `ctx.entity.worldRotation` | `25:runtime.hierarchyTransformSystem` | `TransformComponent->public/high` | `hierarchy.server_authority` |
| `mutation.v1` | implemented | None | `ctx.entity.addComponent`, `ctx.entity.hasTag`, `ctx.entity.patchComponent`, `ctx.entity.readComponent`, `ctx.entity.removeComponent`, `ctx.entity.removeTag`, `ctx.entity.replaceComponent`, `ctx.entity.setName`, `ctx.entity.setTag`, `ctx.tween.cancel`, `ctx.tween.start` | `0:runtime.componentPatchSystem` | None | None |
| `script.v1` | implemented | `ScriptComponent` | `ctx.events.emit`, `ctx.log`, `ctx.random`, `ctx.random.bool`, `ctx.random.gaussian`, `ctx.random.int`, `ctx.random.pick`, `ctx.random.pointInCircle`, `ctx.random.pointInSphere`, `ctx.random.range`, `ctx.random.seeded`, `ctx.random.shuffle`, `ctx.random.sign`, `ctx.random.unitVector`, `ctx.random.weightedPick` | `0:runtime.componentPatchSystem`, `10:runtime.observerCommandSystem`, `20:runtime.scriptSystem` | `ScriptComponent->server/low` | `script.sandbox`, `script.host_budget` |
| `ui.v1` | implemented | None | `ctx.ui.closePanel`, `ctx.ui.openPanel`, `ctx.ui.setWidgetValue` | `19:runtime.uiBindingWriteSystem`, `19:runtime.uiEventSystem` | None | None |
| `persistence.v1` | implemented | None | `ctx.warehouse.append`, `ctx.warehouse.create`, `ctx.warehouse.delete`, `ctx.warehouse.get`, `ctx.warehouse.increment`, `ctx.warehouse.query`, `ctx.warehouse.set`, `ctx.warehouse.transform`, `ctx.warehouse.update` | `26:runtime.ownedInstancePersistenceSystem` | None | `persistence.prefetch_only`, `persistence.drain_audit` |
| `match.v1` | implemented | None | `ctx.match.addScore`, `ctx.match.getScore`, `ctx.match.getState`, `ctx.match.patchObjective`, `ctx.match.setPhase`, `ctx.room.getPlayers`, `ctx.room.getState` | `150:runtime.lifecycleSystem` | None | None |
| `lifecycle.v1` | implemented | None | None | `19:runtime.possessionCommandSystem`, `20:runtime.purchaseFulfillmentCommandSystem`, `21:runtime.scriptSystem` | None | None |
| `team.v1` | implemented | None | `ctx.team.getAssignment` | None | None | None |
| `objective.v1` | implemented | None | None | None | None | None |
| `rendering.v1` | implemented | `RenderableComponent`, `SpatialCaptureComponent`, `MaterialInstanceOverrideComponent`, `AnimationStateComponent`, `LightComponent`, `TerrainComponent`, `WaterComponent`, `ReflectionProbeComponent`, `LocalEnvironmentVolumeComponent`, `DecalComponent`, `HairComponent`, `ParticleEmitterComponent`, `TextRenderableComponent`, `HighlightComponent` | `ctx.terrain.heightAt`, `ctx.terrain.normalAt`, `ctx.terrain.raycastDown`, `ctx.terrain.sampleLayerWeights`, `ctx.terrain.slopeAt`, `ctx.water.isSubmerged`, `ctx.water.surfaceLevelAt` | None | `AnimationStateComponent->public/low`, `DecalComponent->public/low`, `HairComponent->public/low`, `HighlightComponent->public/low`, `LightComponent->public/low`, `LocalEnvironmentVolumeComponent->public/low`, `MaterialInstanceOverrideComponent->public/low`, `ParticleEmitterComponent->public/low`, `ReflectionProbeComponent->public/low`, `RenderableComponent->public/low`, `SpatialCaptureComponent->public/low`, `TerrainComponent->public/low`, `TextRenderableComponent->public/low`, `WaterComponent->public/low` | None |
| `world.v1` | implemented | `NavAgentComponent` | `ctx.navigation.findPath`, `ctx.navigation.isReachable`, `ctx.navigation.nearestPoint`, `ctx.navigation.raycast`, `ctx.navigation.steerToward`, `ctx.world.find`, `ctx.world.query` | None | `NavAgentComponent->public/medium` | None |
| `worlds.v1` | implemented | None | `ctx.world.teleportPlayer` | `22:runtime.scriptSystem` | None | `worlds.teleport_authority` |
| `prefabs.v1` | implemented | None | `ctx.world.spawn`, `ctx.world.spawnPrefab` | `23:runtime.scriptSystem` | `TransformComponent->public/high` | `prefabs.parent_first` |
| `platform.v1` | implemented | None | `ctx.platform.exitFullscreen`, `ctx.platform.exitPointerLock`, `ctx.platform.requestFullscreen`, `ctx.platform.requestPointerLock` | None | None | `platform.user_gesture` |
| `network.v1` | implemented | `NetworkProfileComponent` | `ctx.network.sendMessage` | None | `NetworkProfileComponent->public/high` | `network.channel_allowlist`, `network.rate_limit` |
| `character.v1` | implemented | None | `ctx.players.eliminate`, `ctx.players.get`, `ctx.players.list`, `ctx.players.possess`, `ctx.players.release`, `ctx.players.spawnCharacter` | None | None | None |
| `ownership.v1` | implemented | None | `ctx.entity.setOwner`, `ctx.world.entityHasTag`, `ctx.world.setEntityOwner`, `ctx.world.setEntityTag` | None | None | None |
| `commerce.v1` | implemented | None | `ctx.commerce.owns`, `ctx.commerce.promptPurchase`, `ctx.inventory.grant` | None | None | None |

## Registry Consumers

- Runtime system order is derived from implemented `runtimeContributions`.
- Replication default component visibility derives from pack `replication`.
- Script host APIs served by the backend derive from pack `sdkFunctions`.
- Engine Contract Packet component/runtime/script summaries merge pack-derived surfaces.
- Lag compensation, prediction, and anti-cheat declarations are exposed as registry-derived views.

Package-level catalogs such as `@game-platform/script-nodes` remain the concrete declaration home for existing implemented script nodes. The capability registry verifies and traces those declarations to packs.

## Drift Guards

`server/tests/capability-pack-canonical.test.ts` fails when a built-in component, implemented SDK host function, Script IR node, authoring pattern, replication declaration, prediction declaration, lag-compensation declaration, anti-cheat declaration, runtime contribution, or packet contribution drifts away from the pack registry.

`npm run gen-docs:check` fails when this generated inventory differs from source.

## Adding A Capability

1. Add one `CapabilityPack` entry to `runtimeCapabilityPacks` with a stable versioned id.
2. Declare components, SDK hosts, Script IR nodes, authoring patterns, runtime contributions, replication, prediction, lag compensation, anti-cheat, side effects, and test scenarios.
3. Implement every runtime system and SDK host referenced as implemented.
4. Run `npm run gen-docs:check` and the capability-pack canonical tests.

## physics.v1

Authoritative collider, rigid body, velocity, internal force queue, Physics.command writes, and deterministic physics query primitives.

| Surface | Current declarations |
| --- | --- |
| Status | implemented |
| Components | `ColliderComponent`, `RigidBodyComponent`, `VelocityComponent`, `ForceComponent`, `CharacterMovementComponent` |
| SDK hosts | `ctx.physics.command`, `ctx.physics.occupancyQuery`, `ctx.physics.overlapTest`, `ctx.physics.raycast`, `ctx.physics.shapecast` |
| Script IR nodes | `host.physics.command`, `host.physics.occupancy_query`, `host.physics.overlap_test`, `host.physics.raycast`, `host.physics.shapecast` |
| Runtime systems | `30:runtime.physicsSystem`, `90:runtime.collisionSystem` |
| Replication | `ColliderComponent->public/medium`, `ForceComponent->server/medium`, `RigidBodyComponent->public/medium`, `VelocityComponent->public/medium` |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | `physics.force_bounds:reject` |
| Expected side effects | `component_patched:ForceComponent:within_tick`, `event_emitted:RuntimeCollisionEnter:within_tick` |
| Test scenarios | `physics.query.hosts.resolve`, `physics.command.buffers_force_entry`, `physics.collider_material_sync` |
## input.v1

Input action declaration, binding, context stack, and action command policy primitives.

| Surface | Current declarations |
| --- | --- |
| Status | implemented |
| Components | `InputProfileComponent` |
| SDK hosts | None |
| Script IR nodes | `event.action` |
| Runtime systems | `28:runtime.movementSystem`, `29:runtime.movementLivenessSystem`, `110:runtime.actionSystem` |
| Replication | `InputProfileComponent->owner/high` |
| Prediction | `player.action:server_authoritative` |
| Lag compensation | None |
| Anti-cheat | `input.profile_version:reject`, `input.rate_limit:reject` |
| Expected side effects | `event_emitted:InputActionResolved:within_tick` |
| Test scenarios | `input.action.declaration_policy` |
## audio.v1

Audio emitter components and canonical script host functions for audio cues.

| Surface | Current declarations |
| --- | --- |
| Status | implemented |
| Components | `AudioEmitterComponent` |
| SDK hosts | `ctx.audio.play`, `ctx.audio.playSpatial`, `ctx.audio.setBackgroundMusic`, `ctx.audio.setVolume`, `ctx.audio.stop` |
| Script IR nodes | `host.audio.play`, `host.audio.play_spatial`, `host.audio.set_background_music`, `host.audio.set_volume`, `host.audio.stop` |
| Runtime systems | None |
| Replication | `AudioEmitterComponent->public/low` |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | None |
| Expected side effects | `host_call_made:Audio.play:within_tick`, `projection_changed:AudioEmitterComponent:within_tick` |
| Test scenarios | `audio.hosts.buffer_ops` |
## camera.v1

Camera component and renderer camera projection metadata; behavior authors mutate camera state through component atoms.

| Surface | Current declarations |
| --- | --- |
| Status | implemented |
| Components | `CameraComponent` |
| SDK hosts | `ctx.camera.addLookInput`, `ctx.camera.setLookSensitivity`, `ctx.camera.setPitchClamp`, `ctx.camera.setViewTarget` |
| Script IR nodes | `host.camera.add_look_input`, `host.camera.set_look_sensitivity`, `host.camera.set_pitch_clamp`, `host.camera.set_view_target` |
| Runtime systems | None |
| Replication | `CameraComponent->public/medium` |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | None |
| Expected side effects | `component_patched:CameraComponent:within_tick` |
| Test scenarios | `camera.component_schema` |
## spawn.v1

Canonical direct entity spawn and authorized despawn host primitives.

| Surface | Current declarations |
| --- | --- |
| Status | implemented |
| Components | None |
| SDK hosts | `ctx.world.despawn`, `ctx.world.spawn` |
| Script IR nodes | `host.world.despawn`, `host.world.spawn` |
| Runtime systems | `24:runtime.characterSystem` |
| Replication | None |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | `spawn.bounds:reject` |
| Expected side effects | `entity_spawned:runtime entity:within_tick`, `state_patch_emitted:entity.despawn:within_tick` |
| Test scenarios | `spawn.direct_despawn` |
## timer.v1

Authoritative timer component and timer script event dispatch.

| Surface | Current declarations |
| --- | --- |
| Status | implemented |
| Components | `TimerComponent` |
| SDK hosts | None |
| Script IR nodes | `event.timer` |
| Runtime systems | `140:runtime.timerSystem` |
| Replication | `TimerComponent->public/low` |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | None |
| Expected side effects | `event_emitted:RuntimeTimerFired:within_tick` |
| Test scenarios | `timer.fires_on_interval` |
## hierarchy.v1

Structural entity hierarchy, traversal, and local-to-world transform projection.

| Surface | Current declarations |
| --- | --- |
| Status | implemented |
| Components | `TransformComponent` |
| SDK hosts | `ctx.entity.ancestors`, `ctx.entity.children`, `ctx.entity.descendants`, `ctx.entity.detach`, `ctx.entity.parent`, `ctx.entity.setParent`, `ctx.entity.worldPosition`, `ctx.entity.worldRotation` |
| Script IR nodes | `host.entity.ancestors`, `host.entity.children`, `host.entity.descendants`, `host.entity.detach`, `host.entity.parent`, `host.entity.set_parent`, `host.entity.world_position`, `host.entity.world_rotation` |
| Runtime systems | `25:runtime.hierarchyTransformSystem` |
| Replication | `TransformComponent->public/high` |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | `hierarchy.server_authority:reject` |
| Expected side effects | `projection_changed:entity.world_transform:within_tick`, `state_patch_emitted:entity.reparent:within_tick` |
| Test scenarios | `hierarchy.local_to_world` |
## mutation.v1

Canonical entity mutation SDK: component add/patch/replace/remove, tags, names, and structural target authority.

| Surface | Current declarations |
| --- | --- |
| Status | implemented |
| Components | None |
| SDK hosts | `ctx.entity.addComponent`, `ctx.entity.hasTag`, `ctx.entity.patchComponent`, `ctx.entity.readComponent`, `ctx.entity.removeComponent`, `ctx.entity.removeTag`, `ctx.entity.replaceComponent`, `ctx.entity.setName`, `ctx.entity.setTag`, `ctx.tween.cancel`, `ctx.tween.start` |
| Script IR nodes | `host.entity.add_component`, `host.entity.has_tag`, `host.entity.patch_component`, `host.entity.read_component`, `host.entity.remove_component`, `host.entity.remove_tag`, `host.entity.replace_component`, `host.entity.set_name`, `host.entity.set_tag`, `host.tween.cancel`, `host.tween.start` |
| Runtime systems | `0:runtime.componentPatchSystem` |
| Replication | None |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | None |
| Expected side effects | `state_patch_emitted:component.patch:within_tick`, `state_patch_emitted:component.remove:within_tick` |
| Test scenarios | `mutation.component_remove` |
## script.v1

TypeScript script execution, core Script IR, custom events, Random.next, metrics, and debug host APIs.

| Surface | Current declarations |
| --- | --- |
| Status | implemented |
| Components | `ScriptComponent` |
| SDK hosts | `ctx.events.emit`, `ctx.log`, `ctx.random`, `ctx.random.bool`, `ctx.random.gaussian`, `ctx.random.int`, `ctx.random.pick`, `ctx.random.pointInCircle`, `ctx.random.pointInSphere`, `ctx.random.range`, `ctx.random.seeded`, `ctx.random.shuffle`, `ctx.random.sign`, `ctx.random.unitVector`, `ctx.random.weightedPick` |
| Script IR nodes | `core.arithmetic`, `core.array.first`, `core.array.for_each`, `core.array.get`, `core.array.length`, `core.array.mutate`, `core.array.query`, `core.array.reduce`, `core.array.transform`, `core.bitwise`, `core.boolean`, `core.bounded.for`, `core.bounded.while`, `core.comparison`, `core.component.patch`, `core.component.read`, `core.entity.id`, `core.event.key`, `core.event.payload.get`, `core.expression.codebox`, `core.flow.break`, `core.flow.continue`, `core.flow.do_n`, `core.flow.do_once`, `core.flow.flip_flop`, `core.flow.gate`, `core.flow.multi_gate`, `core.flow.return`, `core.flow.timer.after`, `core.flow.timer.cancel`, `core.get`, `core.host.call`, `core.if`, `core.let`, `core.map`, `core.math`, `core.math.remap`, `core.not`, `core.object`, `core.quat`, `core.record.get`, `core.select`, `core.sequence`, `core.set`, `core.string`, `core.switch`, `core.value.array`, `core.value.assert`, `core.value.cast`, `core.value.coerce`, `core.value.literal`, `core.value.object`, `core.vec3`, `event.action`, `event.character_removed`, `event.character_spawned`, `event.custom`, `event.frame`, `event.init`, `event.match_ended`, `event.network_message`, `event.panel_action`, `event.phase`, `event.phase_exit`, `event.player_joined`, `event.player_left`, `event.purchase_fulfilled`, `event.resize`, `event.start`, `event.tick`, `event.timer`, `event.trigger`, `event.trigger_exit`, `event.widget_press`, `host.debug.log`, `host.events.emit`, `host.random.bool`, `host.random.gaussian`, `host.random.int`, `host.random.next`, `host.random.pick`, `host.random.point_in_circle`, `host.random.point_in_sphere`, `host.random.range`, `host.random.seeded`, `host.random.shuffle`, `host.random.sign`, `host.random.unit_vector`, `host.random.weighted_pick` |
| Runtime systems | `0:runtime.componentPatchSystem`, `10:runtime.observerCommandSystem`, `20:runtime.scriptSystem` |
| Replication | `ScriptComponent->server/low` |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | `script.sandbox:reject`, `script.host_budget:reject` |
| Expected side effects | `host_call_made:ScriptHostFunction:within_tick`, `event_emitted:CustomEvent:within_tick` |
| Test scenarios | `script.host_parity` |
## ui.v1

Runtime UI panel lifecycle, widget value, toast, and UI projection host APIs.

| Surface | Current declarations |
| --- | --- |
| Status | implemented |
| Components | None |
| SDK hosts | `ctx.ui.closePanel`, `ctx.ui.openPanel`, `ctx.ui.setWidgetValue` |
| Script IR nodes | `host.ui.close_panel`, `host.ui.open_panel`, `host.ui.set_widget_value` |
| Runtime systems | `19:runtime.uiBindingWriteSystem`, `19:runtime.uiEventSystem` |
| Replication | None |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | None |
| Expected side effects | `projection_changed:RuntimeUiProjection:within_tick`, `host_call_made:UI.setWidgetValue:within_tick` |
| Test scenarios | `ui.hosts.buffer_ops` |
## persistence.v1

Warehouse host functions with deterministic prefetch and post-script draining.

| Surface | Current declarations |
| --- | --- |
| Status | implemented |
| Components | None |
| SDK hosts | `ctx.warehouse.append`, `ctx.warehouse.create`, `ctx.warehouse.delete`, `ctx.warehouse.get`, `ctx.warehouse.increment`, `ctx.warehouse.query`, `ctx.warehouse.set`, `ctx.warehouse.transform`, `ctx.warehouse.update` |
| Script IR nodes | `host.warehouse.append`, `host.warehouse.create`, `host.warehouse.delete`, `host.warehouse.get`, `host.warehouse.increment`, `host.warehouse.query`, `host.warehouse.set`, `host.warehouse.transform`, `host.warehouse.update` |
| Runtime systems | `26:runtime.ownedInstancePersistenceSystem` |
| Replication | None |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | `persistence.prefetch_only:reject`, `persistence.drain_audit:reject` |
| Expected side effects | `host_call_made:Warehouse.update:within_tick` |
| Test scenarios | `persistence.prefetch_required` |
## match.v1

Room, match, lifecycle phase, ready-check, and authoritative match transition primitives.

| Surface | Current declarations |
| --- | --- |
| Status | implemented |
| Components | None |
| SDK hosts | `ctx.match.addScore`, `ctx.match.getScore`, `ctx.match.getState`, `ctx.match.patchObjective`, `ctx.match.setPhase`, `ctx.room.getPlayers`, `ctx.room.getState` |
| Script IR nodes | `host.match.add_score`, `host.match.get_score`, `host.match.get_state`, `host.match.patch_objective`, `host.match.set_phase`, `host.room.get_players`, `host.room.get_state` |
| Runtime systems | `150:runtime.lifecycleSystem` |
| Replication | None |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | None |
| Expected side effects | `projection_changed:RuntimeMatchLifecycleState:within_tick` |
| Test scenarios | `match.phase_transition` |
## lifecycle.v1

Player joined, player left, and match ended script lifecycle events.

| Surface | Current declarations |
| --- | --- |
| Status | implemented |
| Components | None |
| SDK hosts | None |
| Script IR nodes | `event.match_ended`, `event.player_joined`, `event.player_left` |
| Runtime systems | `19:runtime.possessionCommandSystem`, `20:runtime.purchaseFulfillmentCommandSystem`, `21:runtime.scriptSystem` |
| Replication | None |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | None |
| Expected side effects | `event_emitted:player.joined:within_tick`, `event_emitted:player.left:within_tick`, `event_emitted:match.ended:within_tick` |
| Test scenarios | `lifecycle.player_match_events` |
## team.v1

Team assignment and multiplayer team policy primitives.

| Surface | Current declarations |
| --- | --- |
| Status | implemented |
| Components | None |
| SDK hosts | `ctx.team.getAssignment` |
| Script IR nodes | `host.team.get_assignment` |
| Runtime systems | None |
| Replication | None |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | None |
| Expected side effects | `projection_changed:RuntimeTeamAssignment:within_tick` |
| Test scenarios | `team.assignment_read` |
## objective.v1

Warehouse-backed gameplay state conventions and match/team projections.

| Surface | Current declarations |
| --- | --- |
| Status | implemented |
| Components | None |
| SDK hosts | None |
| Script IR nodes | None |
| Runtime systems | None |
| Replication | None |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | None |
| Expected side effects | `projection_changed:warehouse-backed gameplay state:within_tick` |
| Test scenarios | `objective.compatibility_migrated_to_warehouse` |
## rendering.v1

Renderer component atomics for renderables, animation state, lights, terrain, water, reflection probes, decals, particles, text, and material override components.

| Surface | Current declarations |
| --- | --- |
| Status | implemented |
| Components | `RenderableComponent`, `SpatialCaptureComponent`, `MaterialInstanceOverrideComponent`, `AnimationStateComponent`, `LightComponent`, `TerrainComponent`, `WaterComponent`, `ReflectionProbeComponent`, `LocalEnvironmentVolumeComponent`, `DecalComponent`, `HairComponent`, `ParticleEmitterComponent`, `TextRenderableComponent`, `HighlightComponent` |
| SDK hosts | `ctx.terrain.heightAt`, `ctx.terrain.normalAt`, `ctx.terrain.raycastDown`, `ctx.terrain.sampleLayerWeights`, `ctx.terrain.slopeAt`, `ctx.water.isSubmerged`, `ctx.water.surfaceLevelAt` |
| Script IR nodes | `host.terrain.height_at`, `host.terrain.normal_at`, `host.terrain.raycast_down`, `host.terrain.sample_layer_weights`, `host.terrain.slope_at`, `host.water.is_submerged`, `host.water.surface_level_at` |
| Runtime systems | None |
| Replication | `AnimationStateComponent->public/low`, `DecalComponent->public/low`, `HairComponent->public/low`, `HighlightComponent->public/low`, `LightComponent->public/low`, `LocalEnvironmentVolumeComponent->public/low`, `MaterialInstanceOverrideComponent->public/low`, `ParticleEmitterComponent->public/low`, `ReflectionProbeComponent->public/low`, `RenderableComponent->public/low`, `SpatialCaptureComponent->public/low`, `TerrainComponent->public/low`, `TextRenderableComponent->public/low`, `WaterComponent->public/low` |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | None |
| Expected side effects | `projection_changed:RenderableComponent:within_tick`, `projection_changed:SpatialCaptureComponent:within_tick`, `component_patched:AnimationStateComponent:within_tick` |
| Test scenarios | `rendering.component_schema` |
## world.v1

Read-only world query through the canonical World.find filter atom and the paged World.query keyset-cursor atom.

| Surface | Current declarations |
| --- | --- |
| Status | implemented |
| Components | `NavAgentComponent` |
| SDK hosts | `ctx.navigation.findPath`, `ctx.navigation.isReachable`, `ctx.navigation.nearestPoint`, `ctx.navigation.raycast`, `ctx.navigation.steerToward`, `ctx.world.find`, `ctx.world.query` |
| Script IR nodes | `host.navigation.find_path`, `host.navigation.is_reachable`, `host.navigation.nearest_point`, `host.navigation.raycast`, `host.navigation.steer_toward`, `host.world.find`, `host.world.query` |
| Runtime systems | None |
| Replication | `NavAgentComponent->public/medium` |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | None |
| Expected side effects | `host_call_made:World.find:within_tick` |
| Test scenarios | `world.query_snapshot` |
## worlds.v1

World teleport handoff issuance backed by Warehouse and target-room admission.

| Surface | Current declarations |
| --- | --- |
| Status | implemented |
| Components | None |
| SDK hosts | `ctx.world.teleportPlayer` |
| Script IR nodes | `host.world.teleport_player` |
| Runtime systems | `22:runtime.scriptSystem` |
| Replication | None |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | `worlds.teleport_authority:reject` |
| Expected side effects | `warehouse_write:warehouse_teleport_handoffs:within_tick` |
| Test scenarios | `worlds.teleport_handoff` |
## prefabs.v1

Project graph prefab schema, instantiation, overrides, nested prefab resolution, and provenance.

| Surface | Current declarations |
| --- | --- |
| Status | implemented |
| Components | None |
| SDK hosts | `ctx.world.spawn`, `ctx.world.spawnPrefab` |
| Script IR nodes | `host.world.spawn`, `host.world.spawn_prefab` |
| Runtime systems | `23:runtime.scriptSystem` |
| Replication | `TransformComponent->public/high` |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | `prefabs.parent_first:reject` |
| Expected side effects | `state_patch_emitted:entity.spawn:within_tick` |
| Test scenarios | `prefabs.instantiate_with_overrides` |
## platform.v1

Browser-mediated pointer lock and fullscreen request/exit atomics.

| Surface | Current declarations |
| --- | --- |
| Status | implemented |
| Components | None |
| SDK hosts | `ctx.platform.exitFullscreen`, `ctx.platform.exitPointerLock`, `ctx.platform.requestFullscreen`, `ctx.platform.requestPointerLock` |
| Script IR nodes | `host.platform.exit_fullscreen`, `host.platform.exit_pointer_lock`, `host.platform.request_fullscreen`, `host.platform.request_pointer_lock` |
| Runtime systems | None |
| Replication | None |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | `platform.user_gesture:reject` |
| Expected side effects | `host_call_made:Platform.requestPointerLock:within_tick` |
| Test scenarios | `platform.requests_buffer` |
## network.v1

Engine-dispatched network.message script event handling.

| Surface | Current declarations |
| --- | --- |
| Status | implemented |
| Components | `NetworkProfileComponent` |
| SDK hosts | `ctx.network.sendMessage` |
| Script IR nodes | `event.network_message`, `host.network.send_message` |
| Runtime systems | None |
| Replication | `NetworkProfileComponent->public/high` |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | `network.channel_allowlist:reject`, `network.rate_limit:reject` |
| Expected side effects | `event_emitted:network.message:within_tick` |
| Test scenarios | `network.event_dispatch` |
## character.v1

Player and roster script hosts: read the live Player roster and possess, release, spawn, or eliminate a seat's Character through the one possession writer. Reach for it when a room script decides who controls which body.

| Surface | Current declarations |
| --- | --- |
| Status | implemented |
| Components | None |
| SDK hosts | `ctx.players.eliminate`, `ctx.players.get`, `ctx.players.list`, `ctx.players.possess`, `ctx.players.release`, `ctx.players.spawnCharacter` |
| Script IR nodes | `host.player.eliminate`, `host.player.possess`, `host.player.release`, `host.player.spawn_character`, `host.players.get`, `host.players.list` |
| Runtime systems | None |
| Replication | None |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | None |
| Expected side effects | `state_patch_emitted:player.possession_request:within_tick`, `event_emitted:character.spawned:within_tick`, `event_emitted:character.removed:within_tick` |
| Test scenarios | `character.possession_hosts` |
## ownership.v1

The Entity.setOwner script host that writes or clears the Profile that owns a thing, journaled and Room Script host only. Reach for it when a game hands a base, pet, or item to a Player as durable property.

| Surface | Current declarations |
| --- | --- |
| Status | implemented |
| Components | None |
| SDK hosts | `ctx.entity.setOwner`, `ctx.world.entityHasTag`, `ctx.world.setEntityOwner`, `ctx.world.setEntityTag` |
| Script IR nodes | `host.entity.set_owner`, `host.world.entity_has_tag`, `host.world.set_entity_owner`, `host.world.set_entity_tag` |
| Runtime systems | None |
| Replication | None |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | None |
| Expected side effects | `state_patch_emitted:entity.owner_set:within_tick`, `state_patch_emitted:entity.tag_add:within_tick` |
| Test scenarios | `ownership.owner_set` |
## commerce.v1

Commerce and inventory script hosts: prompt a purchase, read an entitlement, and grant an item through the durable authority outbox. Reach for it when a room script sells an offer or awards an item outside a purchase.

| Surface | Current declarations |
| --- | --- |
| Status | implemented |
| Components | None |
| SDK hosts | `ctx.commerce.owns`, `ctx.commerce.promptPurchase`, `ctx.inventory.grant` |
| Script IR nodes | `host.commerce.owns`, `host.commerce.prompt_purchase`, `host.inventory.grant` |
| Runtime systems | None |
| Replication | None |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | None |
| Expected side effects | `state_patch_emitted:commerce.prompt_request:within_tick`, `state_patch_emitted:inventory.grant_request:within_tick` |
| Test scenarios | `commerce.host_ops` |
