Skip to content
CAI
Software that uses CAICheck a score

chop-dbhi/eda

56.2

Adequate · 21 September 2026

1.2k

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 an event-driven messaging library built on top of NATS, designed to simplify the publishing and consuming of structured events. It provides a unified \Event\ model that carries metadata, schema information, and typed data payloads. The codebase includes several example applications demonstrating various consumption patterns, such as building causal graphs in Neo4j, aggregating state, and writing to standard output.

Features

Add Neo4j causal graph example

A new example application has been added that consumes events from a NATS stream and builds a causal graph in a Neo4j database. The application creates nodes for each event and adds directed edges to represent causal relationships, requiring Neo4j 3.0+ to utilize the Bolt protocol.

examples/neo4j-causal-graph · high confidence

Add aggregated-state example with separate producer and consumer components

The aggregated-state example now organizes its code into separate directories for the consumer and each producer (test-events, visit-events), each with its own main.go file. This structure clarifies the roles of each component in the event-driven architecture, making it easier to understand and run the example. The README provides clear instructions for starting each component.

examples/aggregated-state · high confidence

Add stdout example for event consumption

A new example application has been added at examples/stdout that demonstrates how to consume and write events to standard output in JSON format. The example connects to a NATS cluster, subscribes to an event stream, and handles both JSON-encoded and string-based event data, outputting structured JSON to stdout.

examples/stdout · high confidence

Behavioural changes

Clock example refactored to use configurable stream names and CLI flags

The clock example now accepts command-line flags for the NATS address, cluster name, client ID, and stream name, replacing hardcoded values and environment variables. The subscription is now bound to the specified stream rather than a fixed 'clock' stream, and the handler no longer requires a connection argument, simplifying the API usage.

examples/clock · medium confidence

Event message extended with time, schema, metadata, and aggregate fields

The internal Event protobuf message has been expanded to include a \time\ field for the source timestamp, an \ack\_time\ field for backend acknowledgment, a \schema\ field to identify the data schema, a \meta\ map for arbitrary key-value metadata, and an \aggregate\ field to associate events with specific entities. These additions allow producers to attach richer context and enable the backend to track acknowledgment states and group events by aggregate.

internal · high confidence

Event model and API refactored to use a unified Event struct

The library's public API has been refactored to use a single \Event\ struct for both publishing and consuming events, replacing the previous approach of passing separate type and data arguments. The \Event\ struct now includes fields for \Stream\, \AckTime\, \Schema\, and \Meta\ (arbitrary key-value pairs). The \Publish\ method now accepts an \\*Event\ directly, and the \Handler\ signature has been simplified to receive the context and event without the connection object. Additionally, the \SubscriptionOptions\ have been updated to use a struct literal instead of functional options, and the \Data\ field in \Event\ now uses a new \Data\ type with built-in encoders for bytes, string, JSON, and Protocol Buffers.

(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 58 → 56 (-1.5)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 98 → 98 (-0.1)
  • Architecture 69 → 69 (+0.0)
  • Maturity 49 → 52 (+3.8)
  • Readiness 50 → 44 (-6.0)
  • Security 95 → 95 (+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 (11 lines × 2) (examples/aggregated-state/consumer/main.go)
  • Duplicated block (19 lines × 2) (examples/aggregated-state/producer-test-events/main.go)
  • No exposed public API
  • Test reliability not included
  • early-stage repository — too few commits for a meaningful bus factor
  • early-stage repository — too little history to judge knowledge freshness

New (8)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (10 lines × 4) (examples/aggregated-state/producer-test-events/main.go)
  • Duplicated block (11 lines × 2) (examples/aggregated-state/consumer/main.go)
  • Duplicated block (15 lines × 2) (examples/aggregated-state/consumer/main.go)
  • Duplicated block (37 lines × 2) (examples/aggregated-state/producer-test-events/main.go)
  • Hotspot: stan.go (stan.go)
  • TodoComment (stan.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

chop-dbhi/eda 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 090737ff98f5319f3cc8539ae920740307dfc118 — 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.