Skip to content
CAI
Software that uses CAICheck a score

apache/couchdb-erlfdb

50.6

Adequate · 2 October 2026

2.9k

lines of production code

Erlang

with C

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is an Erlang library providing bindings to the FoundationDB distributed database. It exposes core database and transaction management capabilities, along with utilities for directory layers, key subspace handling, and high-contention allocation. The project includes a C-based NIF driver for low-level interaction, comprehensive EUnit tests, and tooling for local development and continuous integration.

Features

Add VS Code dev container for Erlang/FDB development

Developers can now use VS Code Dev Containers to run the project with a pre-configured FoundationDB 6.3.23 server and Erlang 24 environment. The setup automatically creates the FDB cluster file, initializes a single-node SSD database, and installs the Erlang Language Server extension, providing an out-of-the-box local development environment for erlfdb.

.devcontainer · high confidence

Added process monitor utility

A new Python script, priv/monitor.py, has been added to the project. This utility monitors a parent process and, upon its termination, forcefully kills a specified target process before exiting. It is designed to be executed directly via the shebang line using Python 3.

priv · high confidence

Initial release of the Erlang FoundationDB bindings

This change introduces the complete \erlfdb\ library, providing an Erlang interface to FoundationDB. It includes the core API module (\erlfdb\) for database and transaction management, a Directory Layer implementation (\erlfdb\_directory\), and utilities for key packing/unpacking (\erlfdb\_tuple\, \erlfdb\_subspace\). The bindings are configured to use API version 620 by default and include a high-contention allocator (\erlfdb\_hca\) and test cluster utilities.

src · high confidence

New include file for FDB error codes and tuple macros

A new header file, include/erlfdb.hrl, has been added to centralize definitions for the Erlang FDB client. This file introduces macros for packing and unpacking tuples with prefixes (ERLFDB\_PACK, ERLFDB\_EXTRACT) and creating subspace ranges (ERLFDB\_RANGE). It also defines constants for common retryable Transaction error codes (such as TRANSACTION\_TOO\_OLD, NOT\_COMMITTED, and DATABASE\_LOCKED) and provides the ERLFDB\_IS\_RETRYABLE/1 macro to check if an error code is retryable, excluding TRANSACTION\_TIMED\_OUT from the default list.

include · high confidence

Behavioural changes

FoundationDB API level bump to 620 and expanded Erlang NIF interface

The Erlang NIF driver now targets FoundationDB API version 620 (up from 600), enabling support for newer client features. This update introduces a comprehensive set of Erlang atoms for network, database, and transaction options (such as \writes\_not\_allowed\, \causal\_read\_risky\, and \report\_conflicting\_keys\), expands the future type system to handle void, int64, key, value, and array results, and adds transaction ownership tracking to lock transactions to the creating process. Additionally, error handling now raises structured \erlfdb\_error\ tuples instead of generic error atoms, and the driver now manages network threading and future resource lifecycles more robustly.

_c\src · high confidence

Migrate build system to rebar3 with GitHub Actions CI and code coverage

The project has upgraded its build tooling from rebar2 to rebar3, enabling Windows support and integrating with GitHub Actions for continuous integration. This change introduces automated code coverage reporting to Coveralls.io, adds the erlfmt code formatter as a project plugin, and provides a devcontainer configuration for VS Code to simplify local development and testing. The build process now dynamically detects the FoundationDB API version and configures compiler flags for both Linux and Windows environments.

(repo-wide) · high confidence

Test coverage

Added comprehensive EUnit test suite for FoundationDB bindings

Added a new set of EUnit tests covering core database operations, transaction options, snapshots, and API utilities. The suite includes tests for basic initialization and key-value operations (erlfdb\_02\_anon\_fdbserver\_test), transaction options such as size limits and write permissions (erlfdb\_03\_transaction\_options\_test), snapshot handling (erlfdb\_04\_snapshot\_test), transaction ID generation (erlfdb\_05\_get\_next\_tx\_id\_test), and address retrieval (erlfdb\_06\_get\_addresses\_test). Additionally, a new test script (test/tester.es) was added to support the fdb bindingtester, and existing tests were updated to verify error string descriptions.

test · 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 57 → 51 (-5.9)
  • Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 95 → 95 (+0.0)
  • Architecture 100 → 100 (+0.0)
  • Maturity 43 → 43 (+0.0)
  • Readiness 46 → 32 (-13.9)
  • Security 88 → 88 (+0.0)

Resolved (2)

  • Coverage not measured — no coverage collector is wired up
  • Documentation: no architecture or design documentation (README.md)

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

Survey your own repository

apache/couchdb-erlfdb 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 1f9375257ff64c41a2bbf6d19baa734e619f57cf — 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.