[package]
edition = "2021"
rust-version = "1.92"
name = "batpak"
version = "0.8.0"
build = "build.rs"
exclude = []
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Event sourcing with causal graphs and caller-defined gates. Sync API, no async runtime."
homepage = "https://github.com/heyoub/batpak"
documentation = "https://docs.rs/batpak"
readme = "README.md"
keywords = [
"event-sourcing",
"audit-trail",
"causal-graph",
"hash-chain",
"append-only",
]
categories = [
"database-implementations",
"data-structures",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/heyoub/batpak"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
"--cfg",
"docsrs",
]
[features]
blake3 = []
dangerous-test-hooks = ["dep:fastrand"]
default = ["blake3"]
[lib]
name = "batpak"
path = "src/lib.rs"
[[example]]
name = "append_with_gate"
path = "examples/append_with_gate.rs"
[[example]]
name = "batch_append"
path = "examples/batch_append.rs"
[[example]]
name = "caller_defined_gates"
path = "examples/caller_defined_gates.rs"
[[example]]
name = "chat_room"
path = "examples/chat_room.rs"
[[example]]
name = "cross_crate_payloads"
path = "examples/cross_crate_payloads.rs"
[[example]]
name = "cursor_worker"
path = "examples/cursor_worker.rs"
[[example]]
name = "dungeon_typestate"
path = "examples/dungeon_typestate.rs"
[[example]]
name = "eight_jobs"
path = "examples/eight_jobs.rs"
[[example]]
name = "event_sourced_counter"
path = "examples/event_sourced_counter.rs"
[[example]]
name = "lifecycle_observer"
path = "examples/lifecycle_observer.rs"
[[example]]
name = "outbox"
path = "examples/outbox.rs"
[[example]]
name = "quickstart"
path = "examples/quickstart.rs"
[[example]]
name = "raw_projection_counter"
path = "examples/raw_projection_counter.rs"
[[example]]
name = "raw_projection_counter_derived"
path = "examples/raw_projection_counter_derived.rs"
[[example]]
name = "read_only"
path = "examples/read_only.rs"
[[example]]
name = "signed_receipts"
path = "examples/signed_receipts.rs"
[[example]]
name = "store_lock_helper"
path = "examples/store_lock_helper.rs"
[[example]]
name = "submit_pipeline"
path = "examples/submit_pipeline.rs"
[[example]]
name = "typed_reactor"
path = "examples/typed_reactor.rs"
[[example]]
name = "typed_reactor_multi"
path = "examples/typed_reactor_multi.rs"
[[example]]
name = "visibility_fence"
path = "examples/visibility_fence.rs"
[[example]]
name = "wait_for_durable"
path = "examples/wait_for_durable.rs"
[[test]]
name = "atomic_batch"
path = "tests/atomic_batch.rs"
[[test]]
name = "batch_staging_regression"
path = "tests/batch_staging_regression.rs"
[[test]]
name = "canonical_patch_stability"
path = "tests/canonical_patch_stability.rs"
[[test]]
name = "chain_walk_evidence_report"
path = "tests/chain_walk_evidence_report.rs"
[[test]]
name = "chaos"
path = "tests/chaos.rs"
[[test]]
name = "chaos_testing"
path = "tests/chaos_testing.rs"
[[test]]
name = "cold_start_artifact_fixtures"
path = "tests/cold_start_artifact_fixtures.rs"
[[test]]
name = "cold_start_recovery"
path = "tests/cold_start_recovery.rs"
[[test]]
name = "config_propagation"
path = "tests/config_propagation.rs"
[[test]]
name = "control_plane_surface"
path = "tests/control_plane_surface.rs"
[[test]]
name = "coordinate_hardening"
path = "tests/coordinate_hardening.rs"
[[test]]
name = "cursor_at_least_once_witness"
path = "tests/cursor_at_least_once_witness.rs"
[[test]]
name = "cursor_durability"
path = "tests/cursor_durability.rs"
[[test]]
name = "cursor_worker_restart"
path = "tests/cursor_worker_restart.rs"
[[test]]
name = "dag_position_hint"
path = "tests/dag_position_hint.rs"
[[test]]
name = "decode_typed_dispatch_contract"
path = "tests/decode_typed_dispatch_contract.rs"
[[test]]
name = "decode_typed_seam"
path = "tests/decode_typed_seam.rs"
[[test]]
name = "derive_event_sourced_errors"
path = "tests/derive_event_sourced_errors.rs"
[[test]]
name = "derive_event_sourced_generic"
path = "tests/derive_event_sourced_generic.rs"
[[test]]
name = "derive_event_sourced_parity"
path = "tests/derive_event_sourced_parity.rs"
[[test]]
name = "derive_eventpayload_errors"
path = "tests/derive_eventpayload_errors.rs"
[[test]]
name = "derive_multi_event_reactor_errors"
path = "tests/derive_multi_event_reactor_errors.rs"
[[test]]
name = "deterministic_concurrency"
path = "tests/deterministic_concurrency.rs"
[[test]]
name = "durable_frontier_chaos"
path = "tests/durable_frontier_chaos.rs"
[[test]]
name = "durable_frontier_semantics"
path = "tests/durable_frontier_semantics.rs"
[[test]]
name = "durable_frontier_waits"
path = "tests/durable_frontier_waits.rs"
[[test]]
name = "dx_surface"
path = "tests/dx_surface.rs"
[[test]]
name = "event_api"
path = "tests/event_api.rs"
[[test]]
name = "event_payload_registry_downstream"
path = "tests/event_payload_registry_downstream.rs"
[[test]]
name = "event_payload_registry_policy"
path = "tests/event_payload_registry_policy.rs"
[[test]]
name = "event_payload_surface"
path = "tests/event_payload_surface.rs"
[[test]]
name = "evidence_report_family"
path = "tests/evidence_report_family.rs"
[[test]]
name = "fault_hooks"
path = "tests/fault_hooks.rs"
[[test]]
name = "fence_cancellation"
path = "tests/fence_cancellation.rs"
[[test]]
name = "fuzz_chaos_feedback"
path = "tests/fuzz_chaos_feedback.rs"
[[test]]
name = "fuzz_targets"
path = "tests/fuzz_targets.rs"
[[test]]
name = "gate_pipeline"
path = "tests/gate_pipeline.rs"
[[test]]
name = "group_commit_crash"
path = "tests/group_commit_crash.rs"
[[test]]
name = "hash_chain"
path = "tests/hash_chain.rs"
[[test]]
name = "idempotent_batch_crash_recovery"
path = "tests/idempotent_batch_crash_recovery.rs"
[[test]]
name = "index_filter_composition"
path = "tests/index_filter_composition.rs"
[[test]]
name = "index_topology"
path = "tests/index_topology.rs"
[[test]]
name = "lane_a_artifact_substrate"
path = "tests/lane_a_artifact_substrate.rs"
[[test]]
name = "lane_a_store_substrate"
path = "tests/lane_a_store_substrate.rs"
[[test]]
name = "lane_b1_registry_substrate"
path = "tests/lane_b1_registry_substrate.rs"
[[test]]
name = "lane_b2_backup_envelope_substrate"
path = "tests/lane_b2_backup_envelope_substrate.rs"
[[test]]
name = "lane_b3_transition_substrate"
path = "tests/lane_b3_transition_substrate.rs"
[[test]]
name = "lane_b4_reservation_substrate"
path = "tests/lane_b4_reservation_substrate.rs"
[[test]]
name = "lane_store_resource_evidence"
path = "tests/lane_store_resource_evidence.rs"
[[test]]
name = "mmap_cold_start"
path = "tests/mmap_cold_start.rs"
[[test]]
name = "monad_laws"
path = "tests/monad_laws.rs"
[[test]]
name = "multi_view_parity"
path = "tests/multi_view_parity.rs"
[[test]]
name = "observability_flows"
path = "tests/observability_flows.rs"
[[test]]
name = "observation_typestate"
path = "tests/observation_typestate.rs"
[[test]]
name = "outbox_drop_safety"
path = "tests/outbox_drop_safety.rs"
[[test]]
name = "outcome_combinators"
path = "tests/outcome_combinators.rs"
[[test]]
name = "perf_gates"
path = "tests/perf_gates.rs"
[[test]]
name = "platform_backend"
path = "tests/platform_backend.rs"
[[test]]
name = "projection_cache"
path = "tests/projection_cache.rs"
[[test]]
name = "projection_cache_edges"
path = "tests/projection_cache_edges.rs"
[[test]]
name = "projection_run_evidence_report"
path = "tests/projection_run_evidence_report.rs"
[[test]]
name = "proptest_config"
path = "tests/proptest_config.rs"
[[test]]
name = "public_panic_cleanup"
path = "tests/public_panic_cleanup.rs"
[[test]]
name = "raw_projection_mode"
path = "tests/raw_projection_mode.rs"
[[test]]
name = "react_loop_multi"
path = "tests/react_loop_multi.rs"
[[test]]
name = "react_loop_multi_raw"
path = "tests/react_loop_multi_raw.rs"
[[test]]
name = "react_loop_typed"
path = "tests/react_loop_typed.rs"
[[test]]
name = "reaction_batch"
path = "tests/reaction_batch.rs"
[[test]]
name = "read_api_pagination"
path = "tests/read_api_pagination.rs"
[[test]]
name = "read_walk_evidence_report"
path = "tests/read_walk_evidence_report.rs"
[[test]]
name = "replay_consistency"
path = "tests/replay_consistency.rs"
[[test]]
name = "schema_snapshot_report"
path = "tests/schema_snapshot_report.rs"
[[test]]
name = "scope_visibility"
path = "tests/scope_visibility.rs"
[[test]]
name = "segment_scan_hardening"
path = "tests/segment_scan_hardening.rs"
[[test]]
name = "store_advanced"
path = "tests/store_advanced.rs"
[[test]]
name = "store_ancestors"
path = "tests/store_ancestors.rs"
[[test]]
name = "store_append_behavior"
path = "tests/store_append_behavior.rs"
[[test]]
name = "store_cursor_behavior"
path = "tests/store_cursor_behavior.rs"
[[test]]
name = "store_edge_cases"
path = "tests/store_edge_cases.rs"
[[test]]
name = "store_error_contract"
path = "tests/store_error_contract.rs"
[[test]]
name = "store_integration"
path = "tests/store_integration.rs"
[[test]]
name = "store_locking"
path = "tests/store_locking.rs"
[[test]]
name = "store_projection_wiring"
path = "tests/store_projection_wiring.rs"
[[test]]
name = "store_properties"
path = "tests/store_properties.rs"
[[test]]
name = "store_query_behavior"
path = "tests/store_query_behavior.rs"
[[test]]
name = "store_reactive_behavior"
path = "tests/store_reactive_behavior.rs"
[[test]]
name = "store_recovery_behavior"
path = "tests/store_recovery_behavior.rs"
[[test]]
name = "store_restart_policy"
path = "tests/store_restart_policy.rs"
[[test]]
name = "store_snapshot_compaction"
path = "tests/store_snapshot_compaction.rs"
[[test]]
name = "store_subscription_behavior"
path = "tests/store_subscription_behavior.rs"
[[test]]
name = "store_surface_contracts"
path = "tests/store_surface_contracts.rs"
[[test]]
name = "subscriber_frontier_observations"
path = "tests/subscriber_frontier_observations.rs"
[[test]]
name = "subscription_ops"
path = "tests/subscription_ops.rs"
[[test]]
name = "substrate_additions"
path = "tests/substrate_additions.rs"
[[test]]
name = "typestate_safety"
path = "tests/typestate_safety.rs"
[[test]]
name = "unified_cold_start_red"
path = "tests/unified_cold_start_red.rs"
[[test]]
name = "unified_config_red"
path = "tests/unified_config_red.rs"
[[test]]
name = "unified_group_commit_red"
path = "tests/unified_group_commit_red.rs"
[[test]]
name = "unified_projection_red"
path = "tests/unified_projection_red.rs"
[[test]]
name = "unified_reader_red"
path = "tests/unified_reader_red.rs"
[[test]]
name = "unified_topology_red"
path = "tests/unified_topology_red.rs"
[[test]]
name = "unified_watch_red"
path = "tests/unified_watch_red.rs"
[[test]]
name = "wire_format"
path = "tests/wire_format.rs"
[[test]]
name = "writer_command_flow"
path = "tests/writer_command_flow.rs"
[[bench]]
name = "ancestry_walk"
path = "benches/ancestry_walk.rs"
harness = false
[[bench]]
name = "batch_throughput"
path = "benches/batch_throughput.rs"
harness = false
[[bench]]
name = "cold_start"
path = "benches/cold_start.rs"
harness = false
[[bench]]
name = "columnar_query"
path = "benches/columnar_query.rs"
harness = false
[[bench]]
name = "compaction"
path = "benches/compaction.rs"
harness = false
[[bench]]
name = "evidence_reports"
path = "benches/evidence_reports.rs"
harness = false
[[bench]]
name = "frontier_waiters"
path = "benches/frontier_waiters.rs"
harness = false
[[bench]]
name = "projection_latency"
path = "benches/projection_latency.rs"
harness = false
[[bench]]
name = "query_materialization"
path = "benches/query_materialization.rs"
harness = false
[[bench]]
name = "recovery_lanes"
path = "benches/recovery_lanes.rs"
harness = false
[[bench]]
name = "replay_lanes"
path = "benches/replay_lanes.rs"
harness = false
[[bench]]
name = "subscription_fanout"
path = "benches/subscription_fanout.rs"
harness = false
[[bench]]
name = "topology_matrix"
path = "benches/topology_matrix.rs"
harness = false
[[bench]]
name = "topology_write_cost"
path = "benches/topology_write_cost.rs"
harness = false
[[bench]]
name = "unified_bench"
path = "benches/unified_bench.rs"
harness = false
[[bench]]
name = "write_throughput"
path = "benches/write_throughput.rs"
harness = false
[[bench]]
name = "writer_batch_staging"
path = "benches/writer_batch_staging.rs"
harness = false
[[bench]]
name = "writer_coordinate_churn"
path = "benches/writer_coordinate_churn.rs"
harness = false
[dependencies.batpak-macros]
version = "0.8.0"
[dependencies.batpak-macros-support]
version = "0.8.0"
[dependencies.blake3]
version = "1"
[dependencies.crc32fast]
version = "1"
[dependencies.dashmap]
version = "6"
[dependencies.ed25519-compact]
version = "2.2.0"
features = ["std"]
default-features = false
[dependencies.fastrand]
version = "2"
optional = true
[dependencies.flume]
version = "0.12"
[dependencies.libc]
version = "0.2"
[dependencies.memmap2]
version = "0.9"
[dependencies.parking_lot]
version = "0.12"
[dependencies.rayon]
version = "1.12"
[dependencies.rmp-serde]
version = "=1.3.1"
[dependencies.serde]
version = "1"
features = [
"derive",
"rc",
]
[dependencies.serde_json]
version = "1"
[dependencies.tempfile]
version = ">=3.24, <3.25"
[dependencies.tracing]
version = "0.1"
[dependencies.uuid]
version = ">=1.20, <1.24"
features = [
"std",
"v7",
]
default-features = false
[dependencies.zeroize]
version = "1"
[dev-dependencies.arbitrary]
version = "1"
features = ["derive"]
[dev-dependencies.batpak-bench-support]
version = "0.8.0"
[dev-dependencies.criterion]
version = "0.8"
features = ["html_reports"]
[dev-dependencies.fastrand]
version = "2"
[dev-dependencies.loom]
version = "0.7"
[dev-dependencies.proptest]
version = "1"
[dev-dependencies.serial_test]
version = "3.5.0"
features = ["file_locks"]
[dev-dependencies.tempfile]
version = ">=3.24, <3.25"
[dev-dependencies.tracing-subscriber]
version = "0.3"
features = [
"fmt",
"std",
]
[dev-dependencies.trybuild]
version = "1"
[build-dependencies.crc32fast]
version = "1"
[build-dependencies.proc-macro2]
version = "1"
features = ["span-locations"]
[build-dependencies.serde]
version = "1"
features = ["derive"]
[build-dependencies.serde_json]
version = "1"
[build-dependencies.syn]
version = "2"
features = [
"full",
"visit",
]
[build-dependencies.yaml_serde]
version = "0.10.4"
[lints.clippy]
assertions_on_constants = "deny"
cast_possible_truncation = "deny"
cast_sign_loss = "deny"
clone_on_ref_ptr = "warn"
dbg_macro = "deny"
disallowed_methods = "deny"
large_enum_variant = "warn"
missing_errors_doc = "warn"
module_name_repetitions = "allow"
must_use_candidate = "allow"
needless_pass_by_value = "warn"
needless_return = "deny"
panic = "deny"
print_stderr = "deny"
print_stdout = "deny"
todo = "deny"
unimplemented = "deny"
unwrap_used = "deny"
wildcard_enum_match_arm = "warn"
[lints.rust]
deprecated = "deny"