Skip to content
CAI
Software that uses CAICheck a score

crownedgrouse/geas

63.8

Adequate · 2 October 2026

3.2k

lines of production code

Erlang

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a build tool integration for Erlang projects that analyzes code compatibility with official Erlang/OTP releases. It provides Makefile targets to identify functions that restrict the range of runnable OTP versions and maintains a database of version-specific function availability. The tool supports discontinuous version ranges to accurately report which functions are available in specific minor releases.

Features

Add Erlang.mk plugins for Geas compatibility checking

This change introduces three new Erlang.mk plugin targets to the build system: \geas\_check\, \geas\_compat\, and \geas\_guilty\. These targets integrate the Geas tool to help users analyze their Erlang projects for compatibility with official Erlang releases. Specifically, \geas\_check\ runs a general check, \geas\_compat\ displays the compatibility status of the whole project, and \geas\_guilty\ identifies specific functions that reduce the window of runnable official Erlang releases.

mk · high confidence

Initial project scaffolding and build tool integration

The project is initialized with core build infrastructure, including a Makefile configured to use erlang.mk and the samovar dependency, a rebar.config for rebar3 compatibility, and a plugins.mk file that integrates geas as an erlang.mk plugin. A .gitignore file is added to exclude build artifacts, and the README is expanded to document the tool's purpose, usage, and environment variables.

(repo-wide) · high confidence

Behavioural changes

Major rewrite for discontinuous versions

The core analysis engine has been rewritten to support discontinuous version ranges, allowing the tool to correctly identify compatibility for Erlang/OTP functions that are not available in every intermediate release. This change introduces a new database generation process (geas\_db) that tracks min/max versions and semver ranges for each function, and updates the API (geas\_api) to return these detailed compatibility ranges. Users will see more accurate compatibility reports, especially for functions that were introduced or removed in specific minor releases.

src · high confidence

Updated Erlang/OTP version detection database

The \priv/otp\_versions.table\ file has been updated to include detection data and component version mappings for Erlang/OTP releases ranging from 25.1 through 29.0.2. This ensures the application can correctly identify and handle these specific OTP versions.

priv · high confidence

Test coverage

Added Common Test suite for geas

Added a new Common Test suite (geas\_SUITE.erl) that defines test groups for information retrieval, directory/file detection, offending line identification, compatibility, and word-to-line mapping, providing a structured framework for validating geas 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 64 → 64 (+0.0)
  • Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 97 → 97 (+0.0)
  • Architecture 100 → 100 (+0.0)
  • Maturity 59 → 59 (+0.0)
  • Readiness 50 → 50 (+0.0)
  • Security 90 → 90 (+0.0)

Resolved (2)

  • Coverage not measured — no coverage collector is wired up
  • Documentation: no usage examples (README.md)

New (2)

  • Dependency hygiene PARTLY measured — rebar3 pinning read, dependency currency not (no rebar.lock-pinned Hex declaration to grade)
  • No dependency lockfile committed (rebar.config)

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

Survey your own repository

crownedgrouse/geas 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 06fdd392df70632d84b6a03d0cc79324704f7545 — 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.