Skip to content
CAI
Software that uses CAICheck a score

thalo-rs/esdl

49.1

Weak · 21 September 2026

1.2k

lines of production code

Rust

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is an ESDL schema parser and validator that defines a domain-specific language for describing data structures and events. It parses and validates schema definitions, supporting scalar types, versioning, and optional fields, while providing a structured \Schema\ representation for further processing. The system previously generated Rust code from these schemas but has since removed the code generation module, focusing instead on parsing, validation, and serialization capabilities.

Behavioural changes

Add bank-account example using ESDL

A new example file, examples/bank-account.esdl, has been added to demonstrate a BankAccount aggregate with OpenedAccount, DepositedFunds, and WithdrewFunds events, each carrying a Float amount or initial balance.

examples · low confidence

ESDL schema language gains new scalar types and syntax updates

The ESDL schema language now supports \Long\, \Double\, and \Bytes\ scalar types, while \Timestamp\ and \UInt\ have been removed. The syntax for return types has changed to use the \-\>\ separator, and optional types are now explicitly marked with a \?\ suffix. Documentation in README.md has been updated to reflect these changes, including a new table of scalar types and examples of optional and array types.

(repo-wide) · high confidence

Parser supports version declarations and new scalar types

The parser now recognizes a \version\ declaration in the schema, storing parsed versions in the \Schema\ struct. Additionally, new scalar types \Long\, \Double\, and \Bytes\ have been added to the type system, while the parser syntax for optional types has changed from \!\ to \?\ and return types now use \-\>\ as a separator.

src/parser · high confidence

Removal of Rust code generation module

The Rust code generation module has been removed from the codebase. Specifically, the \src/codegen\ directory, which previously handled compiling schemas into Rust code, has been deleted. This includes the \error.rs\ and \mod.rs\ files that defined the \Compiler\ struct and associated logic for generating Rust types, events, and commands from schema definitions.

src/codegen · high confidence

Schema parsing and validation restructured with new error handling

The \src\ module now exposes a unified \parse\ function that parses and validates ESDL schema strings, returning a \Schema\ struct that includes a \version\ field and supports serialization. Error handling has been consolidated into a new \error.rs\ module, which adds \Io\, \MissingVersion\, \MultipleVersions\, and \Parse\ error variants, and implements \From\ conversions for \nom\_supreme\ errors. The \Schema\ struct and related types (\Aggregate\, \Command\, \Event\, \CustomType\, \RepeatableType\) now derive \Eq\, \Serialize\, and \Deserialize\, and the old \codegen\ feature-gated code generation logic has been removed from these types.

src · high confidence

Dependencies

Update Rust dependencies and add semver support

The project updates several Rust dependencies to newer versions: nom-supreme 0.6→0.8, serde and serde\_derive 1.0.134→1.0.137, syn 1.0.86→1.0.92, thiserror/thiserror-impl 1.0.30→1.0.31, and proc-macro2/quote 1.0.36/1.0.15→1.0.38/1.0.18. It also adds the semver crate (1.0.6) as a new dependency, while removing the unused wasm feature flag and updating the package version to 0.6.0.

(dependencies) · 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 51 → 49 (-2.0)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 100 → 100 (-0.2)
  • Architecture 69 → 69 (+0.0)
  • Maturity 41 → 31 (-9.8)
  • Readiness 36 → 47 (+10.6)
  • Security 100 → 100 (+0.0)

Resolved (5)

  • 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
  • dormant codebase — no living knowledge left to concentrate

New (4)

  • Documentation: no usage examples (README.md)
  • Duplicated block (8 lines × 2) (src/schema.rs)
  • Outdated: semver
  • Outdated: serde

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

Survey your own repository

thalo-rs/esdl 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 63481ca72ce76374d7fc777054babdf5af0c7483 — 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-fa71c66cabd8.