Skip to content
CAI
Software that uses CAICheck a score

gdamjan/erlang-irc-bot

57.7

Adequate · 2 October 2026

782

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 an IRC bot implemented as an OTP application using Erlang. It manages connection lifecycles with state machines, supports SSL/TLS, and provides a unified API for controlling bot interactions. The project includes structured logging for production and development environments, along with a basic test suite for CI validation.

Behavioural changes

Customized logging configuration for development and production

The application now uses a custom log formatter (ircbot\_log\_formatter) in production to structure output, while a new development script (dev.escript) allows users to easily switch the log level to debug and format logs with a simple single-line template during local development.

config · high confidence

IRC bot core rewritten with gen\_statem and new API

The bot's connection and state management have been completely rewritten to use gen\_statem instead of gen\_fsm, introducing a structured lifecycle (standby, connecting, registering, ready, reconnect) with quadratic backoff for reconnection. A new ircbot\_api module provides a unified interface for controlling connections and sending IRC commands (join, part, nick, etc.), while the application now supports SSL/TLS connections with certificate verification and uses the Erlang logger with a systemd-compatible formatter for robust logging.

src · high confidence

Project restructured as a real OTP application with rebar3 and Erlang 25+ support

The project has been refactored into a proper OTP application, migrating the build system to rebar3 and raising the minimum Erlang/OTP version requirement to 25.0. This change includes the addition of a LICENSE file (MIT), a new .gitignore configuration, and a settings.cfg.example file for user configuration. The README has been updated to reflect the new quick-start instructions using rebar3 and the Erlang REPL, and the core state management has been migrated from gen\_fsm to gen\_statem to align with modern OTP standards.

(repo-wide) · high confidence

Test coverage

Added dummy Common Test suite for CI validation

A new dummy Common Test suite (dummy\_SUITE.erl) has been added to the test directory to satisfy CI requirements. The suite contains a single placeholder test that always passes, ensuring the Erlang test runner executes without errors during continuous integration.

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 → 58 (+2.3)
  • Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 100 → 100 (+0.0)
  • Architecture 69 → 69 (+0.0)
  • Maturity 53 → 53 (+0.0)
  • Readiness 47 → 50 (+3.1)
  • Security 67 → 75 (+8.3)

Resolved (3)

  • Coverage not measured — no coverage collector is wired up
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (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

gdamjan/erlang-irc-bot 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 204c8dac36f4cf583ec5faf1c2fb5acdcdb05e18 — 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.