Skip to content
CAI
Software that uses CAICheck a score

rvirding/erlog

57.3

Adequate · 23 September 2026

3.7k

lines of production code

Erlang

with Perl

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Erlog is an Erlang-based Prolog interpreter that provides a logic programming environment with a dedicated shell and interactive launcher. It features a standardized build system and includes utilities for handling Erlang records and executing Prolog expressions. The system also offers an Elixir wrapper for idiomatic usage and includes a comprehensive test suite to ensure stability.

Features

Add Elixir wrapper module for Erlog

A new Elixir-style wrapper module \Elixir.Erlog\ is introduced to provide a more idiomatic interface for Elixir users. This module forwards calls to the core \erlog\ module but reorders arguments so that the Erlog state is the first argument, enabling the use of the Elixir pipe operator \\|\>\ to chain Erlog function calls.

src · high confidence

Added Erlog shell launcher script

A new executable script named 'erlog' has been added to the bin directory. This script serves as a launcher for the Erlog shell, executing the 'erlog\_boot' module to start the shell by default.

bin · high confidence

Added Prolog module for Erlang record handling

A new file, stdlib/erlang.pl, was added to the standard library. This Prolog module provides utilities for working with Erlang records, including predicates to access record fields and modify them.

stdlib · high confidence

Behavioural changes

Added assert macros for Prolog expression evaluation

The header file include/erlog\_assert.hrl was added, introducing the assertProlog and assertPrologFail macros. These macros allow users to verify that a Prolog expression evaluates to success or failure respectively, raising an error if the outcome does not match expectations.

include · high confidence

Build system and project configuration overhaul

The project has been migrated to use Rebar as the primary build tool, introducing a rebar.config and associated scripts to handle conditional compilation flags for various Erlang/OTP versions. A new Makefile and Emakefile have been added to support the build process, while the .travis.yml file has been updated to use Rebar for testing across multiple Erlang releases. Additionally, the project has adopted the Apache License, Version 2.0, and updated the README to reflect these structural changes.

(repo-wide) · high confidence

Standardize Emacs Prolog mode headers in example files

All example files in the examples directory now include an Emacs mode-line header specifying 'prolog' mode. This ensures that editors supporting Emacs file headers will automatically recognize these files as Prolog source code, providing appropriate syntax highlighting and indentation. Additionally, a new example file, homer.pl, has been added to demonstrate a logic puzzle involving store visits and gifts.

examples · high confidence

Updated erlog.app with version 0.7 and corrected module list

The erlog.app file has been updated to version 0.7 and now explicitly lists all modules included in the application, such as erlog, erlog\_bips, and erlog\_lib\_dcg, ensuring proper compilation and deployment of the Erlang application.

ebin · high confidence

Test coverage

Added test coverage for erlang.pl, records, and halt functionality

Added new test files to increase coverage for the Prolog/Erlog integration. The changes include tests for the 'erlang.pl' module which handles Erlang-specific logic, tests for Prolog record handling (both getting and setting), and a new test for the 'halt' functionality.

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 55 → 57 (+2.4)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 91 → 94 (+2.9)
  • Architecture 100 → 100 (+0.0)
  • Maturity 31 → 43 (+12.3)
  • Readiness 58 → 60 (+2.3)
  • Security 100 → 67 (-33.3)

Resolved (7)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • No exposed public API
  • Test reliability not included
  • TooManyMethods: erlog_int (src/erlog_int.erl)
  • complexity unreadable for .erl, .hrl — churn × complexity hotspots could not be measured
  • dormant codebase — no living knowledge left to concentrate

New (11)

  • Coverage not measured — no coverage collector is wired up
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no licence statement (README.md)
  • Documentation: no usage examples (README.md)
  • No SBOM
  • No artifact signing
  • No build provenance
  • erlog_bips.prove_goal (cognitive 26) (src/erlog_bips.erl)
  • erlog_bips.prove_goal (cyclomatic 60) (src/erlog_bips.erl)
  • erlog_int.prove_goal (cognitive 18) (src/erlog_int.erl)
  • erlog_int.prove_goal (cyclomatic 51) (src/erlog_int.erl)

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

Survey your own repository

rvirding/erlog 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 23 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 26ac2415c673683d7c816e3168048be012c86735 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-955b9cee9818.