docs-internal/engine/bare-protocol-crates.md
Conventions for RivetKit protocol crates that use BARE schemas with versioned codecs via vbare.
rivetkit-rust/packages/ that should inherit repo-wide workspace deps must set [package] workspace = "../../../" and be added to the root /Cargo.toml workspace members.uint fields use vbare_compiler::Config::with_hash_map() because serde_bare::Uint does not implement Hash.serialize_with_embedded_version(latest) sees the right latest version.build.rs TS codec generation follows engine/packages/runner-protocol/build.rs: run @bare-ts/tools, post-process to @rivetkit/bare-ts, and write generated imports under rivetkit-typescript/packages/rivetkit/src/common/bare/generated/<protocol>/.vbare::OwnedVersionedData, not hand-rolled BARE cursors or writers.rivetkit crate stays a thin typed wrapper over rivetkit-core and re-exports shared transport/config types instead of redefining them.rivetkit needs ergonomic helpers on a rivetkit-core type it re-exports, prefer an extension trait plus prelude re-export instead of wrapping and replacing the core type.