Skip to content
CAI
Software that uses CAICheck a score

zacksiri/eventful

59.3

Adequate · 21 September 2026

625

lines of production code

Elixir

primary language

6

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is an Elixir library that provides state machine capabilities for Ecto schemas, enabling the definition of multiple state machines per schema with configurable event schemas. It manages transitions, triggers, and metadata while ensuring optimistic locking and structured error handling. The codebase includes comprehensive test coverage and documentation for these features.

Features

Add support for multiple state machines and configurable event schemas

The Eventful module now supports defining multiple state machines on a single schema, allowing for more complex workflows. The \\_\using\\_\ macro has been expanded to accept \parent\ and \actor\ relations, enabling the generation of an Event schema with associations and metadata. A new \handle/2\ macro allows users to define handlers for specific domains, improving the structure of event processing.

lib · high confidence

Initial configuration setup for PostgreSQL and test environment

The application now includes initial configuration files for development and test environments, establishing a PostgreSQL database connection via Ecto. The test environment is configured with a Postgres adapter, specifying the database, pool, hostname, username, and password, while also setting the logger level to warning. The main config file is updated to import environment-specific configurations, enabling the application to connect to a PostgreSQL database during development and testing.

config · high confidence

Introduce state machine and transition management capabilities

The library now provides a complete state machine implementation for Ecto schemas. Users can define multiple state machines per schema using the new \Eventful.Transitable\ macro, which validates state changes and supports optimistic locking. The \Eventful.Transition\ module generates transition logic, while \Eventful.Trigger\ allows for custom side-effects. The \Eventful.Metadata\ module handles change tracking and parameters, and \Eventful.Error\ provides structured error handling for transitions.

lib/eventful · high confidence

Behavioural changes

Updated installation instructions and documentation for Eventful v3.0

The README has been completely rewritten to document the new state machine capabilities, including how to define Event schemas, create migrations, and set up transitions and guards. The installation instructions now specify version 3.0.0, and badges for CI status and Hex.pm version have been added. Additionally, a CodeClimate configuration file and an MIT license have been added to the repository.

(repo-wide) · high confidence

Test coverage

Added test database migrations for models, actors, and events; Added test models and transitions for the Eventful framework; Added test support modules for Ecto schemas and state machines; Added tests for eventful transitions; Updated test suite configuration and structure.

Dependencies

Release version 3.3.0 with updated dependencies and tooling

The project has been bumped to version 3.3.0. The dependency list has been updated to include Ecto, Ecto SQL, Jason, Postgrex, ExDoc, and Dialyxir, with the lockfile reflecting specific versions for Ecto 3.12.5, Ecto SQL 3.12.1, and Telemetry 1.3.0. Additionally, the build configuration now includes ExCoveralls for test coverage, Dialyxir for static analysis, and ExDoc for documentation generation.

(dependencies) · medium 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

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 58 → 59 (+1.2)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 100 → 100 (+0.0)
  • Architecture 69 → 69 (+0.0)
  • Maturity 53 → 53 (+0.0)
  • Readiness 57 → 54 (-2.4)
  • Security 58 → 74 (+15.1)

Resolved (13)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — no supported dependency manifest was read
  • High CVE: [GHSA redacted] (mix.lock)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • Medium CVE: EEF-[CVE redacted] (mix.lock)
  • No exposed public API
  • Off-boarding risk: anonymized user #1
  • Test reliability not included
  • complexity unreadable for .ex, .exs — churn × complexity hotspots could not be measured

New (18)

  • Documentation: no architecture or design documentation (README.md)
  • High CVE: [GHSA redacted] (mix.lock)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • Medium CVE: EEF-[CVE redacted] (mix.lock)
  • Medium: security finding (details withheld)
  • Medium: security finding (details withheld)
  • No dependency advisory monitoring
  • Outdated: dialyxir
  • Outdated: ecto
  • Outdated: ecto_sql
  • Outdated: ex_doc
  • Outdated: jason
  • Outdated: postgrex

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

Survey your own repository

zacksiri/eventful 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 21 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 37ef21dbaf5e591268b2a8927a51b3dfce990525 — 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-b84573e22831.