Skip to content
CAI
Software that uses CAICheck a score

savaki/eventsource

51.0

Adequate · 21 September 2026

1.3k

lines of production code

Go

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a Go library for implementing event sourcing architectures. It provides core abstractions for managing aggregate state through commands and events, including interfaces for dispatching commands and serializing data. The library supports multiple storage backends, offering both in-memory and persistent implementations for MySQL and DynamoDB, with the latter supporting stream-based event extraction.

Features

Add DynamoDB store implementation with stream support

Introduced a new DynamoDB-backed event store provider that supports creating tables with DynamoDB streams enabled, allowing for event extraction from stream records. The store allows configuration of region, hash/range keys, and event batching, and includes debug logging and a public utility to extract table names from event source ARNs.

provider/dynamodbstore · high confidence

Add MySQL-backed event store implementation

Introduces a new SQL-based event store provider for MySQL, allowing users to persist event data in a relational database. The implementation includes schema creation, transactional writes, and history fetching with versioning support. A debug option is also provided for logging.

provider/sqlstore · high confidence

Added command dispatcher and handler interfaces

Introduced a new command execution layer with a Dispatcher that manages the lifecycle of commands, including pre-processing, aggregate loading, handler application, and event saving. The change adds the command.Handler interface and the Dispatcher implementation in command/dispatcher.go, along with supporting interfaces and models in command/handler.go. A corresponding test suite in command/dispatcher\_test.go validates the end-to-end flow of creating and updating a user aggregate through commands.

command · high confidence

Added example implementations for event sourcing

Added example code demonstrating the eventsource library with both an in-memory store (simple) and a DynamoDB-backed store (dynamodb). The examples show how to define event structs, implement the On method for state updates, and use the repository pattern to save and load aggregates.

examples · high confidence

Initial release of the eventsource Go library

Introduces a new event sourcing library for Go, providing core abstractions for event-driven architecture. The release includes an \Aggregate\ interface with an \On\ method for handling events, a \Repository\ interface for persisting and loading state, and a \Serializer\ interface for encoding events. It ships with a default JSON serializer, an in-memory store implementation, and a \Model\ struct to simplify event definition. The library also provides standard error handling via a custom \Error\ interface and utility types like \EpochMillis\ for timestamps.

(repo-wide) · 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 47 → 51 (+4.4)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 97 → 98 (+0.9)
  • Architecture 69 → 69 (+0.0)
  • Maturity 43 → 46 (+3.1)
  • Readiness 28 → 36 (+7.4)
  • Security 100 → 100 (+0.0)

Resolved (8)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — no supported dependency manifest was read
  • Duplicated block (16 lines × 2) (examples/dynamodb/main.go)
  • Duplicated block (17 lines × 2) (examples/dynamodb/main.go)
  • No exposed public API
  • Test reliability not included
  • The README is a single file with no architecture or design documentation for an event-sourcing library.
  • single-maintainer — knowledge-concentration (bus factor) risk

New (3)

  • Duplicated block (17 lines × 2) (examples/dynamodb/main.go)
  • Duplicated block (19 lines × 2) (examples/dynamodb/main.go)
  • Duplicated block (33 lines × 2) (examples/dynamodb/main.go)

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

Survey your own repository

savaki/eventsource 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 015de6207d9764888558bae2339e44cd33019802 — 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.