syncbat 0.9.0

Sync-first runtime layer for batpak-family operation kits.
Documentation
[package]
name = "syncbat"
version = "0.9.0"
edition = "2021"
rust-version = "1.92"
license = "MIT OR Apache-2.0"
description = "Sync-first runtime layer for batpak-family operation kits."
repository = "https://github.com/freebatteryfactory/batpak"
homepage = "https://github.com/freebatteryfactory/batpak"
documentation = "https://docs.rs/syncbat"
readme = "README.md"
keywords = ["event-sourcing", "runtime", "sync", "operation-kit"]
categories = ["database-implementations"]

[features]
default = []
# Opt-in crypto-shred payload encryption, forwarded to batpak. Enables key-aware
# subscription delivery: encrypted events cross the core boundary decrypted, and a
# crypto-shredded event is skipped loudly rather than shipped as ciphertext. NOT a
# default feature — a default build behaves identically (plaintext delivery).
payload-encryption = ["batpak/payload-encryption"]

[dependencies]
batpak = { path = "../core", version = "0.9.0", default-features = false }
serde = { version = "1", features = ["derive"] }
# The `#[operation]` attribute macro lives in the one family proc-macro crate
# (`batpak-macros`); re-exported below as `syncbat::operation`.
batpak-macros = { path = "../macros", version = "0.9.0" }
blake3 = "1"
flume = "0.12"
# `tracing` provides structured spans + events around dispatch.
# Subscribers come from the binary (a downstream host); syncbat just
# emits. No runtime cost when no subscriber is installed.
tracing = "0.1"

[dev-dependencies]
batpak-testkit = { path = "../testkit" }
# Used by integration tests to recompute the expected default-policy digest and
# pin that the safe default is specifically Blake3 over the raw receipt bytes.
blake3 = "1"
criterion = { version = "0.8", features = ["html_reports"] }
tempfile = ">=3.24, <3.25"
# Used by the round-2 subscription-runtime mutation kills to observe the loud
# crypto-shred delivery warn through a minimal thread-local subscriber (already
# a main dependency, so the lockfile does not move).
tracing = "0.1"
trybuild = "1"
proptest = "1"
serde_json = "1"

[[bench]]
name = "dispatch"
harness = false

[lints]
workspace = true