Skip to content
CAI
Software that uses CAICheck a score

basho/riak_kv

47.4

Weak · 6 August 2026

59.7k

lines of production code

Erlang

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Riak KV is a distributed key-value store that manages data persistence and retrieval across multiple storage backends. It provides core read/write operations, map-reduce processing, and internal state management through refactored finite state machines. The system includes comprehensive property-based testing and debugging utilities to ensure reliability and performance.

Features

Add basic Erlang-VM-style tracing utilities

A suite of new Erlang modules has been added to priv/tracers to provide various debugging and performance profiling capabilities. These include tracing accumulated time, backend latency, garbage collection latency, function arguments, merge and handoff operations, and general timeit-style timing. The implementation uses the Erlang dbg module for call/return tracing and switches to os:timestamp for timekeeping, while also suppressing export\_all warnings.

priv/tracers · high confidence

Added multi-backend configuration support and fixed map-reduce reduce functions

Users can now configure multiple storage backends via the new \priv/multi\_backend.schema\ file, which maps Cuttlefish configuration keys to specific backend modules (e.g., bitcask, leveldb, memory) and their respective settings. Additionally, the \reduceMin\ and \reduceMax\ JavaScript map-reduce functions have been updated to handle empty input arrays gracefully, preventing errors when no values are present.

priv · high confidence

Behavioural changes

Refactored get and put FSMs into separate core modules

The get and put finite state machines (FSMs) have been refactored to isolate core logic into new modules (riak\_kv\_get\_core and riak\_kv\_put\_core). This change simplifies the FSM implementations by moving state management and business logic out of the FSMs and into dedicated core modules, improving code organization and maintainability.

src · high confidence

Refactored internal request and reply record structures

The internal request and reply record structures for the KV vnode have been refactored. Legacy request records (such as those for put, get, listkeys, delete, map, and vclock) have been removed or replaced with new, more specific records like riak\_kv\_w1c\_put\_reply\_v1 and riak\_kv\_listkeys\_req\_v2. This change simplifies the internal API by consolidating and clarifying the data structures used for communication between the vnode and its components.

include · high confidence

Removed legacy riak\_kv.app file in favor of .app.src

The ebin/riak\_kv.app file, which previously defined the application's metadata, module list, and dependencies, has been removed. This change reflects a shift to using .app.src files to automatically generate the .app file, avoiding manual updates to the module list and ensuring consistency with the build system.

ebin · high confidence

Test coverage

Added QuickCheck (EQC) tests for core components; Added backend test utilities and schema tests.

Dependencies

Updated build configuration and dependencies for Riak KV 3.0

The project has been updated to use Rebar3, with the \rebar.config\ file rewritten to specify modern dependency versions (e.g., \riak\_core\ 3.0.16, \bitcask\ 2.1.0) and new compiler options such as \warnings\_as\_errors\ and \lager\_transform\. A \.gitignore\ file was added to exclude build artifacts, and the \Makefile\ was refactored to delegate build tasks to Rebar3. Additionally, the legacy \.hgignore\ file was removed.

(repo-wide) · 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

Score

  • CAI 47 → 47 (+0.0)
  • Rubric changed (rubric-2026.08.18 → rubric-2026.08.19) — scores are not directly comparable.

Lenses

  • Code Health 84 → 84 (+0.0)
  • Architecture 99 → 100 (+0.5)
  • Maturity 30 → 30 (+0.0)
  • Readiness 69 → 69 (+0.0)
  • Security 80 → 80 (+0.0)
  • Event-Driven 43 → 43 (+0.0)
  • Event Sourcing 100 → 100 (+0.0)

Resolved (2)

  • Change coupling: riak_kv_pb_object.erl ↔ riak_kv_wm_queue.erl (src/riak_kv_pb_object.erl)
  • LLM evaluation failed

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

basho/riak_kv 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 6 August 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 18817d228ecd818f8fc997fc6a6a288d00372209 — the exact code this score is about.
  • Scored under rubric-2026.08.19 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer latest.