- Python 43.8%
- C# 32.7%
- Rust 20.3%
- C++ 1.6%
- PowerShell 1.6%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Soul pass 2 findings S1, S2, S3, S4. - Enabling the sink is the drain's EnableAsync: every intent already in the store gets an "expired" receipt and the enable marker is written, all in one flush. No decision compares StoredAt with a clock any more, so a fast writer clock and the Rust daemon's secs.nanosZ stamps stop mattering. - The operator's EditorPrefs hold a token, and the sink runs only while the store carries the marker with that token. A re-clone or a copied .brokkr has no such marker, so a stale "enabled" authorizes nothing and the editor drops it. The epoch and agentCommandsEnabledAt (host snapshot key 19) are gone. - Selection is one pass over the store per tick (Pending), not a copy and sort per intent. - Receipts are capped at the newest 1000, pruned 128 pairs per tick with the intent deleted before its receipt. - A marker that could not be written is withdrawn, so the intent reads as never started and is retried, not "interrupted". - The drain writes through IBrokkrCommandStore; puts stage and one flush makes them durable. - The CLI timeout text no longer says the intent "stays written" without the expiry caveat; the check-then-write window on --command-id is documented. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> |
||
| .voidbot | ||
| brokkr-command | ||
| brokkr-contracts | ||
| brokkr-contracts.Tests | ||
| brokkr-daemon | ||
| docs | ||
| schemas | ||
| surfaces | ||
| tools | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| README.md | ||
Brokkr
Brokkr is the GameCult creative-tool broker daemon: a CultMesh service that lets Unity, Blender, and future editor runtimes expose their live authoring surfaces to the Verse without pretending those runtimes are the same machine.
The name earns its keep twice. Brokkr is the dwarf at the forge bellows in the Eddic treasure contest, holding the work steady while the artifact takes shape. Brokkr is also the broker: the daemon that routes typed editor observations, capabilities, commands, and Eve/CultUI surfaces between tool runtimes and the Verse.
Authority
- Brokkr owns the broker contract, provider advertisement, routing policy, and typed command receipts.
- Unity owns Unity editor truth: scenes, assets, selection, play mode, imports, build settings, and editor-side side effects.
- Blender owns Blender editor truth: scenes, objects, assets, operators, add-ons, render settings, and editor-side side effects.
- Eve owns rendering of Brokkr surfaces.
- Odin owns discovery of Brokkr as a Verse provider.
- CultCache owns durable
.ccwitnesses and command receipts.
Plugins are adapters. They do not own Verse state. They connect their host editor to Brokkr, publish editor observations, and execute admitted commands from the broker.
Surfaces
surfaces/unity/Packages/com.gamecult.brokkr: Unity editor package scaffold.surfaces/blender/brokkr_bridge: Blender add-on target backed by CultLib's Python CultMesh node/server, with optional debug export/import probes.brokkr-command: .NET CLI that writes one Unity command intent through the project's directory store and reports the editor's receipt (docs/provider-contract.md).brokkr-daemon: Rust CLI that emits Brokkr's provider advertisement and command policy and runs the Unity/Blender sync pass.
First Smoke
cargo run -p brokkr-daemon -- provider
The first smoke prints the typed provider advertisement. That is deliberately small: discovery shape first, live sockets second.
Sync Contract
cargo run -p brokkr-daemon -- sync-contract
The sync contract advertises Brokkr-owned sessions, object bindings, sync vars, timeline bindings, and receipts. Unity and Blender editor plugins publish those documents through CultMesh so a daemon sync loop can translate them into host-owned command intents without stealing scene truth.
Commands
brokkr-daemon is a command-line tool over cache files, not a running service.
It has four subcommands:
provider(aliassmoke): print the provider advertisement.sync-contract: print the sync contract.sync-once --unity-cache PATH --blender-cache PATH [--dry-run]: run one sync pass between the two editor caches.sync-loop --unity-cache PATH --blender-cache PATH [--interval-ms N] [--max-passes N] [--dry-run]: repeat the sync pass.
Unity Install
Add the Unity package by local path, alongside org.gamecult.cultlib (see
surfaces/unity/README.md):
"com.gamecult.brokkr": "file:F:/Projects/Brokkr/surfaces/unity/Packages/com.gamecult.brokkr"
Then open GameCult > Brokkr in Unity. The window mirrors editor state to a
CultMesh cache file in the project.