5.9 KiB
Brokkr Architecture
Objective
Expose creative editor runtimes to the Verse as live CultMesh mirrors, beginning with Unity and Blender plugin surfaces.
Current Mechanism
Brokkr is a provider identity, editor-adapter contract, and sync organ contract. The Rust daemon emits the discovery document for Odin and the Verse. It owns sync correspondence and policy documents; it does not own Unity or Blender scene truth, command queues, or dashboard state.
The Unity package opens a durable CultMesh node backed by a CultCache store at
.brokkr/unity-editor.ccmp. Unity writes typed CultCache documents for the
current editor snapshot, command receipts, Quest routes, and future Eve/CultUI
surface projections. Verse-side clients write typed command-intent documents
into the same mirror; Unity watches those intents, mutates the editor, and
publishes receipts plus an updated snapshot.
The Blender add-on uses CultLib's Python CultMesh runtime as its local mirror
node. Blender writes typed host snapshots and command receipts through
registered CultMesh database document definitions, drains command intents from
the same node database, and only uses loose JSON files as optional debug/export
probes. The add-on can serve the node through CultMesh.serve_node(...) so
external CultNet/CultMesh clients can request schema catalogs, snapshots, shard
logs, and raw document mutations.
The sync organ owns brokkr.sync.* documents: sessions, object bindings, sync
vars, timeline bindings, and receipts. Unity and Blender plugins can publish
those records from editor UI. The daemon's sync-once primitive translates
sync records into host command intents; sync-loop schedules that primitive on
a polling interval without creating a second sync authority.
Invariants
- Editor hosts keep editor truth. Brokkr never becomes the canonical scene, asset, object, import, or build database.
- CultCache documents are the durable mirror state. CultMesh carries sync, watch streams, and Verse visibility.
- Brokkr owns provider identity, mirror schema advertisement, and discovery metadata.
- Brokkr owns sync correspondence and policy records. Editor hosts still own scene mutation.
- Unity owns Unity editor mutations. A command intent is not truth until Unity publishes a receipt and refreshed mirror state.
- Eve/CultUI surfaces are typed projections over the mirror, not renderer-owned dashboards.
- JSON is tolerated for schema publication and debug inspection only. It is not the load-bearing state lane.
Intended Change
The old local adapter server has been cut out. The live path is now:
- Brokkr advertises CultMesh mirror schemas.
- Unity opens its CultMesh node.
- Unity captures editor state and writes typed CultCache documents.
- Verse clients watch mirror state or write command-intent documents.
brokkr-daemon sync-loopreads Unity and Blender mirrors, appliesbrokkr.sync.*policy records, emits host command intents, and writes sync receipts.- Unity and Blender consume command intents and publish receipts.
- Eve GUI/TUI clients lower the mirrored interface documents.
Owner Map
Owner: Brokkr owns tool-to-Verse discovery.
Inputs:
- Host observations from Unity and Blender plugins.
- Command-intent documents written through CultMesh.
- Odin discovery queries.
- Eve/CultUI lowering requests.
Outputs:
gamecult.brokkr.provider_advertisement.v0brokkr.unity.host_snapshot.v0brokkr.unity.command_intent.v0brokkr.unity.command_receipt.v0brokkr.unity.snapshot_receipt.v0brokkr.unity.quest_route.v0brokkr.unity.warped_video_frame.v0brokkr.blender.host_snapshot.v0brokkr.blender.command_intent.v0brokkr.blender.command_receipt.v0brokkr.sync.session.v0brokkr.sync.object_binding.v0brokkr.sync.var.v0brokkr.sync.timeline_binding.v0brokkr.sync.receipt.v0- Eve/CultUI surface documents for host status, selection, assets, scene/object trees, component state, command affordances, and receipt history.
- Per-pass daemon reports printed by
sync-onceorsync-loop.
Derived State:
- Unity package settings are adapter configuration, not Verse authority.
- Blender add-on preferences are adapter configuration, not Verse authority.
- Blender JSON debug exports are inspection/import probes, not mirror authority.
- Unity and Blender sync UI fields are command/edit affordances; the
brokkr.sync.*documents are the shared sync policy surface. - Ad hoc syncvar editors write
brokkr.sync.var.v0policy records only; they do not make an unsupported kind executable inside the daemon. - Editor selection and scene summaries are observations until command receipts confirm an accepted mutation.
- Daemon stdout reports are telemetry, not durable sync state. The durable state is the command intent, command receipt, host snapshot, and sync receipt.
Forbidden Writers:
- Discovery metadata cannot mutate editor state.
- Eve renderers cannot admit commands directly to editor hosts.
- Odin discovery records cannot decide command permissions.
- Local debug exports cannot become durable state truth.
Shared Paths:
- Direct Unity commands, programmatic commands, UI-triggered commands, and replayed command receipts use the same command-intent and receipt documents.
- Direct Blender commands, UI-triggered commands, and replayed command receipts use the same command-intent and receipt documents.
- One-shot and continuous sync use the same
run_sync_oncedecision primitive; the loop owns scheduling only. - Sync receipts are daemon-authored pass status documents written to both Unity and Blender mirror stores so either editor can inspect the same result.
- Host snapshots from all tools carry host id, tool kind, project path, observed-at timestamp, capabilities, and authority owner.
Deletion Line:
If a plugin grows its own provider advertisement, command policy, or durable state ledger outside CultCache/CultMesh, cut it back into an adapter and move the authority into the mirror contract.