couchbase/chronicle
48.5
Weak · 2 October 2026
15k
lines of production code
Erlang
primary language
2
measurements over time
What this system is
Chronicle is a replicated key-value store library built on the Raft consensus algorithm, designed for Erlang/Elixir environments. It provides core infrastructure for cluster management, including node provisioning, voter configuration, and failover handling, alongside low-level mechanisms for data durability and runtime configuration. The system includes tooling for local development, diagnostic log export, and comprehensive testing of cluster stability scenarios.
Features
Added C NIF for directory synchronization
A new C source file (c\_src/sync\_nif.c) has been added to the project, implementing a Native Implemented Function (NIF) named \do\_sync\_dir\. This function opens a specified directory path and calls \fsync\ on it to ensure that directory metadata changes are persisted to disk, returning an 'ok' atom on success or an error tuple on failure. This provides a low-level mechanism for ensuring directory-level data durability from the Erlang/Elixir side.
_c\src · high confidence
Introduce Chronicled example application with cluster management REST API
The \examples/chronicled\ directory now contains a standalone Erlang application that demonstrates how to use the Chronicle library. It provides a REST API (powered by Cowboy) for managing a replicated key-value store cluster, including endpoints for provisioning nodes, adding/removing voters and replicas, handling failovers, and performing standard CRUD operations on keys. The example includes full build configuration via rebar3 and documentation for starting and interacting with the cluster.
examples/chronicled · high confidence
Introduce chronicle\_env module for runtime configuration and setup
The new chronicle\_env module centralizes runtime configuration and initialization for the chronicle subsystem. It provides functions to retrieve the data directory, set up the logger and its filter, configure statistics collection, and enable encryption-at-rest by loading encrypt/decrypt functions from application environment variables. This module acts as the entry point for initializing these core services before the cluster components start.
src · high confidence
New chronicle\_dump script for exporting logs and RSM snapshots
A new \chronicle\_dump\ script is introduced to facilitate the extraction of diagnostic data from Chronicle. It supports dumping log files with optional sanitization of sensitive data and decryption of encrypted content. Additionally, it can export RSM (Replicated State Machine) snapshot 'guts' (metadata and bucket names) and raw snapshots, with options to sanitize stack traces and handle errors gracefully by directing output to stderr and returning appropriate exit codes.
_scripts/chronicle\dump · high confidence
Removals
Removal of Haskell-based topology model
The Haskell implementation for the topology model (models/topology.hs) has been removed from the codebase. This eliminates the legacy Haskell-based logic for managing node states, terms, and configuration transitions, meaning users can no longer utilize this specific Haskell component for topology operations.
models · high confidence
Behavioural changes
Chronicle build system and cluster startup tooling overhaul
The Chronicle Raft consensus implementation now supports building with both rebar2 and rebar3 via a new CMakeLists.txt integration, allowing it to be built as part of the Couchbase Server suite. The rebar configuration has been updated to enforce a minimum OTP version of 22, add the PC (Protobuf Compiler) plugin, and configure dialyzer to treat unknown types and functions as errors. Additionally, a new Python-based \start\_cluster\ script has been introduced to facilitate local development and testing, featuring support for starting nodes with configurable indices, hostnames, and application profiles, while ensuring logs are set to debug level and terms are limited in size.
(repo-wide) · high confidence
Test coverage
Added test coverage for Chronicle components and fixed test harness behavior; Added test script for leader removal and re-addition scenarios.
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
Score
- CAI 48 → 49 (+0.5)
- Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 92 → 92 (+0.0)
- Architecture 100 → 88 (-11.7)
- Maturity 40 → 40 (+0.0)
- Readiness 26 → 29 (+3.6)
- Security 100 → 100 (+0.0)
Resolved (3)
- Coverage not measured — no coverage collector is wired up
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (examples/chronicled/README.md)
New (5)
- Dependency hygiene PARTLY measured — rebar3 pinning read, dependency currency not (no rebar.lock-pinned Hex declaration to grade)
- Documentation: no installation or build instructions (examples/chronicled/README.md)
- No ADRs found
- Projects may be oversized for their cohesion
- Unbounded dependency requirement: chronicle
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
couchbase/chronicle 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 2 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 3013144c9c86608c4cf93c13927af30ae083ef72 — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.