reckon-db-org/reckon-db
67.1
Adequate · 17 September 2026
19.2k
lines of production code
Erlang
with Rust
1
measurement over time
What this system is
reckon-db is a BEAM-native, distributed event store built on Khepri and Raft that provides high-throughput event appending, streaming subscriptions, and snapshot management. It accelerates core operations like aggregation, compression, and cryptographic verification through optional embedded Rust NIFs, while maintaining compatibility via pure Erlang fallbacks. The system ensures data integrity through tamper-resistant read paths, secondary indexes, and strict event ordering guarantees across cluster nodes.
Features
Add benchmark slices for parallel stream throughput and pre-encoded event reuse
New benchmark slices have been added to evaluate specific performance hypotheses. The \append\_many\_streams\ slice tests whether throughput scales linearly with parallel workers by appending to independent streams, helping to identify if serialization bottlenecks exist at the Raft group level. The \append\_preencoded\ slice tests whether reusing a single pre-built event map (instead of constructing a new one per append) reduces garbage collection pressure and improves throughput compared to standard event construction.
_benchmarks/slices/append\_many\_streams, benchmarks/slices/append\preencoded · high confidence
Initial release of reckon-db with embedded Rust NIFs and cluster-wide store discovery
The application is now available as reckon-db (v5.11.9), a BEAM-native event store built on Khepri and Ra. This release introduces embedded Rust NIFs for accelerated crypto, hashing, compression, and aggregation, with automatic fallback to pure Erlang implementations if the native toolchain is unavailable. It also adds a distributed store registry for cluster-wide discovery and includes a file-based archive backend for storing archived events.
src · high confidence
Introduce storage-layer benchmark infrastructure with DCB workload slices
Adds a new \benchmarks/\ directory that provides a structured harness for measuring reckon-db storage performance. This includes a shared orchestration script (\bench.sh\), a \rebar.config\ declaring dependencies on \reckon\_db\, \reckon\_gater\, and \reckon\_bench\_harness\, and a taxonomy of workload slices. The initial slices cover \append\_single\_stream\ (baseline throughput/latency) and two Dynamic Consistency Boundary (DCB) scenarios (\dcb\_append\_uncontended\ and \dcb\_append\_contended\) to measure the overhead and contention behavior of \append\_if\_no\_tag\_matches\. Baseline performance data for these slices is included in the \results/\ directory.
benchmarks · high confidence
Native Rust NIFs for accelerated event aggregation, compression, and hashing
This release introduces a suite of embedded Rust NIFs to replace pure Erlang implementations for performance-critical operations. The new native modules provide high-speed event aggregation with tagged value semantics (sum/overwrite), multi-algorithm data compression (LZ4, Zstd, Zlib), cryptographic operations (Ed25519 verification, SHA-256 hashing, base64 encoding), pattern matching (wildcard/regex filtering), and fast hashing (xxHash, FNV). These NIFs are optional; the system automatically falls back to pure Erlang implementations if the native libraries are unavailable, ensuring compatibility with the community edition.
(repo-wide) · high confidence
New diagnostic and migration scripts for NIF integration and test suite updates
This change introduces several new scripts to support the embedded Rust NIF migration and update the integrity/subscription test suites. The \diagnose\_nif.escript\ and \smoke-nifs.escript\ provide diagnostic capabilities to load and verify NIF modules (hash, crypto, archive, aggregate, filter, graph) during development and testing. Additionally, four shell scripts (\fix\_integrity\_stream\_ids.sh\, \fix\_integrity\_tamper\_paths.sh\, \fix\_subscription\_suite\_stream\_ids.sh\, \publish-to-hex.sh\) automate the migration of test suite stream IDs to conform to the new strict regex, update event path structures for Model C, and streamline the Hex.pm publishing process.
scripts · high confidence
Behavioural changes
Renamed core records and macros to reckon\_db namespace
The library has been renamed from erl-esdb to reckon-db, reflected in the include files which now define core records (such as \#store\_config, \#cluster\_node) and macros under the reckon\_db prefix. This change introduces new configuration options, including a default cluster mode for resilience, tamper-resistance integrity settings, and support for secondary indexes and DCB (Dynamic Consistency Boundary) paths. Additionally, a comprehensive set of telemetry event macros is provided for monitoring streams, subscriptions, snapshots, cluster health, and emitter activity.
include · high confidence
Fixes
Fix event ordering in global reads and subscriptions
Events appended in a single batch are now returned in strict version order during global reads and catch-up subscriptions. Previously, \read\_all\_global/3\ and related scan fallbacks sorted only by \epoch\_us\, which caused events from the same append to appear in an undefined order (e.g., \\[14, 30, 9, 15, ...\]\) because they shared the same timestamp. This could lead to projections processing events out of sequence and losing data. The fix updates the sorting logic to use \epoch\_us\, \stream\_id\, and \version\, ensuring deterministic ordering that matches the index entry order.
(repo-wide) · high confidence
Fixes silent stale NIF caching during compilation
The build script for embedded Rust NIFs now correctly detects when source files have changed, preventing the use of outdated compiled libraries. Previously, the build process would silently reuse existing \.so\ files even if the Rust source code was modified, which could mask changes or security fixes. This update ensures that NIFs are rebuilt whenever their source code or dependencies are updated, guaranteeing that the running application uses the latest compiled code.
priv · high confidence
Test coverage
Added end-to-end tests for reckon-db and mesh integration; Added integration tests for cluster, integrity, and indexing features; Added security tests for gossip message decoding; Added test support helpers for reckon-db integration and channel authorization; Added unit tests for core Reckon DB modules.
Dependencies
Add Rust NIF crates for event aggregation, archive, crypto, filtering, and hashing
This release introduces five new Rust-based Native Implemented Functions (NIFs) to accelerate core reckon-db operations. The \reckon\_db\_aggregate\_nif\ crate provides optimized event aggregation using the Rustler Erlang bindings. The \reckon\_db\_archive\_nif\ crate adds high-performance compression capabilities, supporting LZ4, Zstandard, and Zlib. The \reckon\_db\_crypto\_nif\ crate implements cryptographic operations, including Ed25519 signatures, SHA-256 hashing, and Base64 encoding. The \reckon\_db\_filter\_nif\ crate enables fast pattern matching and filtering via regex and glob support. Finally, the \reckon\_db\_hash\_nif\ crate provides high-speed hashing using xxHash and FNV. All crates are configured with LTO and maximum optimization for release builds.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 67.
Lenses
- Code Health 92
- Architecture 100
- Maturity 82
- Readiness 46
- Security 98
- Event-Driven 80
- Event Sourcing 100
Changes since last survey
- 199 commits — 130 feature/other, 69 fixes
By area
- (root) — 95 commits
- doc/dist — 26 commits
- test/unit — 8 commits
- test/integration — 7 commits
- include/reckon_db.hrl — 5 commits
- doc/assets — 4 commits
- plans/PLAN_DCB_IMPLEMENTATION.md — 3 commits
- src/reckon_db.app.src — 3 commits
- src/reckon_db_gateway_worker.erl — 3 commits
- src/reckon_db_store_coordinator.erl — 3 commits
- benchmarks/slices — 2 commits
- plans/DESIGN_SECONDARY_INDEX.md — 2 commits
- plans/PLAN_5_0_PROPAGATION.md — 2 commits
- plans/PLAN_ROOT.md — 2 commits
- src/reckon_db_dcb.erl — 2 commits
- src/reckon_db_filters.erl — 2 commits
- src/reckon_db_snapshots.erl — 2 commits
- src/reckon_db_store_registry.erl — 2 commits
- src/reckon_db_subscriptions.erl — 2 commits
- (repo) — 1 commit
Notable commits
- fix: Fix silent stale-NIF caching in build-nifs.sh
- fix: bench(dcb): fix harness bugs, add DCB slices, publish baseline numbers
- fix: chore: Bump reckon_gater 1.3.1 → 1.3.2 (wrong_expected_version retry fix)
- fix: chore: Release v1.2.1 - Fix hexdocs asset paths
- fix: fix(cluster): add reckon_db_cluster facade — restores 4 broken health RPCs
- fix: fix(cluster): normalize consistency_checker's status atom to gateway vocabulary
- fix: fix(coordinator): bound + retry cluster-join, ignore self-clusters
- fix: fix(coordinator): cold-start non-coordinators must join the elected coordinator
- fix: fix(coordinator): elect among store-runners + reconcile (5.5.5)
- fix: fix(coordinator): wrap khepri_cluster:join in side-process + kill timer
- fix: fix(docs): Correct asset paths for hexdocs
- fix: fix(emitter): deliver to remote subscriber pids
- fix: fix(security): authenticated atom-free gossip v2 for multicast discovery
- fix: fix(store_registry): use pg:monitor for membership tracking
- fix: fix(streams): don't crash the gateway worker on a failed khepri:put
- fix: fix(subscriptions): filter catch-up batches by the subscription selector
- fix: fix(subscriptions): start emitter pool before registering trigger
- fix: fix: Add support for gater-style subscription types
- fix: fix: Cluster mode store startup — await Ra leader, remove broken API (v1.7.1)
- fix: fix: Fix EDoc syntax in by_tags/1 documentation
- …and 179 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
reckon-db-org/reckon-db was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 17 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit e312b96b915fe43fff025ad4e533a4dc0989eabb — the exact code this score is about.
- Scored under rubric-2026.09.13 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-d1ef6c0bd534.