2026-07-10 02:27:47 +01:00
# EveUnity Authority Map
## Objective
Lower provider-authored Eve surfaces into a playable Unity scene without
importing provider product code into the generic runtime.
## Owner
EveUnity owns Unity scene projection, `GameObject` lifecycle, camera and input
drivers, asset-provider hooks, package release, runtime tests, and captures.
## Inputs
2026-07-10 11:04:26 +01:00
- CultMesh rendezvous endpoint
- CultMesh Verse catalog
2026-07-10 02:27:47 +01:00
- `gamecult.eve.provider_advertisement.v1`
- `gamecult.eve.surface.v1`
- provider asset-manifest documents
2026-07-15 20:07:35 +01:00
- runtime-selected asset-variant metadata, including native rendering-program bindings
2026-07-15 20:59:30 +01:00
- generic field-volume lifecycle declarations and logical texture/scalar/matrix ports
2026-07-15 21:47:50 +01:00
- generic viewport-to-texture scale bindings between logical vector and texture ports
2026-07-10 02:27:47 +01:00
- provider command receipts
2026-07-13 21:35:11 +01:00
- semantic render-channel inclusion and exclusion policy
2026-07-10 02:27:47 +01:00
- Unity input and local presentation assets
## Outputs
- disposable Unity scene projection
2026-07-10 04:03:09 +01:00
- `gamecult.eve.command_invocation.v1` intents sent through the advertised boundary
2026-07-10 02:27:47 +01:00
- runtime capability, test, release, and capture evidence
2026-07-10 03:34:56 +01:00
- owner-controlled PlayMode capture from `TestProject`
2026-07-10 02:27:47 +01:00
## Derived State
2026-07-13 21:35:11 +01:00
`ActiveWorld` , scene objects, transforms, markers, camera pose, native
2026-07-15 20:07:35 +01:00
render-channel layer mappings, resolved native shader ports/passes, asset caches,
2026-07-15 20:59:30 +01:00
per-volume raymarch targets, temporal-history targets, previous camera matrices,
2026-07-15 20:07:35 +01:00
presentation counters, and receipt display state are projections. They are not
2026-07-15 20:59:30 +01:00
world truth. Temporal targets reset when the volume program, node, or render size
changes and can never become provider state.
2026-07-10 02:27:47 +01:00
2026-07-16 17:44:29 +01:00
Camera-relative field viewports have one generic resolver. The advertised
viewport frame owns its extent, spatial-cell scale, raster texels per cell, and
snap policy; fog volumes and stateless particle programs consume the identical
projected `EveFieldsViewport` . URP TAA state is likewise derived from the
world's neutral `temporal-reprojection.v1` camera contract and is restored on
release.
2026-07-16 18:10:33 +01:00
Particle materials may consume advertised presentation-only inputs through
logical native metadata: provider-owned textures, viewport-to-texture scale,
and the current render-frame index. The runtime frame index owns temporal
coverage only; it cannot drive particle identity, phase, position, or any
daemon-visible state.
2026-07-10 02:27:47 +01:00
## Forbidden Writers
Unity transforms, input drivers, camera rigs, scene sinks, asset caches, and
pending receipts may not mutate or simulate provider world state. Plugin
2026-07-13 21:35:11 +01:00
projection shells may not implement Sai, Norn, or TeX semantics. Portable
2026-07-15 20:07:35 +01:00
surfaces may not carry Unity layer numbers, camera culling masks, shader property
names, shader keywords, or native pass indices. Those bindings belong to the
2026-07-15 20:59:30 +01:00
selected runtime asset variant. A native volume program that advertises a
temporal pass must also advertise its current-sample, history,
previous-view-projection, and reset-history ports; partial temporal programs fail
closed.
2026-07-10 02:27:47 +01:00
2026-07-15 21:47:50 +01:00
Viewport-sized shader inputs are likewise presentation state. A provider may
relate a logical vector port to a logical native texture port through
`viewportTextureScaleBindings` ; EveUnity derives the vector from the active
camera viewport and resolved texture dimensions on every render. A provider
literal is not allowed to impersonate those runtime dimensions, and an
unresolvable relation fails closed.
2026-07-15 21:30:50 +01:00
The provider selects camera semantics and framing from its authoritative mode.
`planar.top-down-follow.v1` derives a downward presentation from the advertised
target and framing values. `perspective.entity-forward-follow.v1` derives its
view direction from the presented entity rotation and applies the same generic
2026-07-15 22:05:25 +01:00
distance, screen-position, damping, and lens contract. When the provider also
advertises `aim.convergence-point.v1` , the camera and aim marker consume one
derived convergence point from the `aim.presentation` node. The native camera
rotation and position are solved together so the optical axis reaches that
point while the followed entity remains at the advertised screen coordinate.
EveUnity owns only this native projection. It cannot collapse distinct provider
modes into one camera opinion or infer a product camera from entity kind.
2026-07-15 21:30:50 +01:00
2026-07-10 02:27:47 +01:00
## Shared Paths
2026-07-10 11:04:26 +01:00
Initial connect discovers a Verse endpoint and selects a provider surface by
semantic kind. Refresh, reconnect, and terminal-receipt reconciliation consume
that provider's surface documents. Movement, focus, target, and action input all
become `gamecult.eve.command_invocation.v1` through the provider-advertised
command boundary.
2026-07-10 02:27:47 +01:00
## Cut Line
Aetheria retains its daemon, authored surfaces, assets, command acceptance,
receipts, adapter, and provider conformance scenarios. Eve retains contracts
and conformance policy. EveUnity retains only generic Unity projection and its
runtime lifecycle.
2026-07-10 03:34:56 +01:00
## Capture Proofs
`TestProject` proves that a clean Unity project can install CultLib, Eve
contracts, and EveUnity without Aetheria or Brokkr assemblies. Its world-smoke
2026-07-10 11:04:26 +01:00
capture is the generic control witness. The Aetheria product witness gives the
same client only a rendezvous endpoint, then proves Verse discovery, provider
selection, asset loading, movement, commands, receipts, and rendered capture
against a separately running daemon.