Skip to content
CAI
Software that uses CAICheck a score

dmart28/reveno

46.6

Weak · 22 September 2026

9.8k

lines of production code

Java

primary language

7

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Reveno is a high-performance, durable framework for building event-sourced and CQRS-based applications. It provides a core engine for managing domain models, commands, and asynchronous or synchronous event handling. The system supports both immutable and mutable state representations, with built-in capabilities for automatic state snapshotting and compensating actions for failover. Additionally, it includes a metrics subsystem for tracking transaction latency and throughput via Graphite or logging sinks.

Features

Add Reveno metrics subsystem with Graphite and logging sinks

The reveno-metrics module introduces a new metrics collection and reporting system. It provides a \RevenoMetrics\ entry point to register a \MetricsInterceptor\ that tracks transaction latency and throughput. The system supports two output sinks: sending metrics to a Graphite server (via \GraphiteSink\ and \PickledGraphrite\) or to the application log (via \Slf4jSink\). Configuration is handled through a builder-style \Configuration\ interface, allowing users to set the Graphite host/port, instance name, and buffer sizes. The implementation includes \Counter\ and \Histogram\ meters, with the latter supporting both exact and probabilistic (Vitter's R) sampling strategies.

reveno-metrics · high confidence

Add async and sync event publishing examples

The examples/events-publishing location now includes two new Java files, AsyncEvents.java and BasicEvents.java, which demonstrate how to publish and handle events in Reveno. The BasicEvents example shows a synchronous event handler that guarantees ordering and executes on a single thread, while the AsyncEvents example demonstrates an asynchronous event handler executed by a thread pool of 10 threads, which does not guarantee ordering but allows for non-blocking processing of events like BalanceAddedEvent.

examples/events-publishing · high confidence

Add simple banking account example with domain model and DSL implementation

The examples/simple-banking-account directory now includes a complete, runnable example of a simple banking account system. This includes the domain model (Account, AccountView), the core application logic (SimpleBankingAccount) implementing commands and transaction actions, and a simplified DSL-based implementation (SimpleBankingAccountDSL) that demonstrates a more concise way to configure the same functionality. Users can now see how to define entities, commands, and views within the Reveno framework.

examples/simple-banking-account · high confidence

Added Gradle wrapper and updated README with framework documentation

The project now includes the Gradle wrapper scripts (gradlew, gradlew.bat) and a .gitignore file to standardize the build environment and manage build artifacts. The README.md has been significantly expanded to document the Reveno framework, highlighting its features such as high performance, durability, and CQRS support, and includes installation instructions for Maven and Gradle.

(repo-wide) · high confidence

Added acceptance test model with immutable and mutable domain objects

The acceptance test model now includes full domain models for accounts, orders, positions, and fills, each provided in both immutable and mutable implementations. This allows tests to use either stateless, immutable objects or mutable ones depending on the testing requirements.

reveno-test-model/src/main/java/org/reveno/atp/acceptance/model · high confidence

Added basic views and snapshotting example applications

Introduced two new example applications in the \examples\ directory. The \basic-views\ example demonstrates how to define and query read-only views (TraderView, OrderView) that map domain entities (Trader, Order) to simplified DTOs. The \snapshotting\ example illustrates how to configure and verify automatic state snapshots, showing how to persist and restore trader and order data across engine restarts.

examples/basic-views · high confidence

Added compensating mutable model example

A new example demonstrating the use of compensating actions for mutable model failover. The example defines an Account entity and a command to add to a balance, showing how the system handles exceptions by executing a compensating action to revert the balance change.

examples/compensating-mutable-model · high confidence

Test coverage

Added Gradle wrapper and acceptance tests for DSL, snapshotting, and preallocated journals; Added RevenoBaseTest and TestRevenoEngine for acceptance testing; Added ViewsMappingBenchmark for performance testing; Added acceptance test handlers for account and order operations; Added acceptance test model views for account, order, and position; Added test utility classes for file and long conversion.

Dependencies

Initial Gradle build system and dependency configuration

The project has been restructured with a new Gradle build system, introducing a multi-module architecture with separate build scripts for the core library, metrics, and test models. This change establishes the foundational build configuration, including dependency management for libraries like Guava, JUnit, and Protostuff, as well as Maven publishing and OSGi manifest generation for the Reveno framework.

(dependencies) · medium confidence

Updated Gradle wrapper to version 5.4.1

The project's Gradle wrapper has been updated to version 5.4.1, ensuring that builds use a consistent and modern version of the Gradle build tool.

gradle · 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 → 47 (-4.8)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 90 → 94 (+4.4)
  • Architecture 100 → 88 (-11.8)
  • Maturity 55 → 55 (+0.0)
  • Readiness 24 → 20 (-4.5)
  • Security 97 → 97 (+0.0)
  • Domain Modelling 91 → 73 (-18.1)

Resolved (8)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • Duplicated block (5 lines × 2) (reveno-core/src/main/java/org/reveno/atp/utils/BinaryUtils.java)
  • Duplicated block (9 lines × 2) (reveno-core/src/main/java/org/reveno/atp/core/serialization/protostuff/ZeroCopyLinkBuffer.java)
  • No exposed public API
  • Test reliability not included
  • TooManyMethods: EngineWorkflowContext (reveno-core/src/main/java/org/reveno/atp/core/EngineWorkflowContext.java)
  • dormant codebase — no living knowledge left to concentrate

New (47)

  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (5 lines × 2) (examples/basic-views/src/main/java/org/reveno/atp/examples/basic_views/BasicViews.java)
  • Duplicated block (5 lines × 2) (reveno-core/src/main/java/org/reveno/atp/utils/BinaryUtils.java)
  • Duplicated block (9 lines × 2) (reveno-core/src/main/java/org/reveno/atp/core/serialization/protostuff/ZeroCopyLinkBuffer.java)
  • Inverted test pyramid
  • No assertions (empty test): foldersTest (reveno-core/src/test/java/org/reveno/atp/core/storage/FileSystemStorageTest.java)
  • No assertions: defaultJavaTest (reveno-core/src/test/java/org/reveno/atp/core/serialization/SerializersTest.java)
  • No assertions: longestSyntax (reveno-core/src/acceptanceTest/java/org/reveno/atp/acceptance/tests/DslViewsTests.java)
  • No assertions: protostuffExceptionTest (reveno-core/src/test/java/org/reveno/atp/core/serialization/SerializersTest.java)
  • No assertions: protostuffTest (reveno-core/src/test/java/org/reveno/atp/core/serialization/SerializersTest.java)
  • No assertions: shortestSyntax (reveno-core/src/acceptanceTest/java/org/reveno/atp/acceptance/tests/DslViewsTests.java)
  • No assertions: test (reveno-core/src/acceptanceTest/java/org/reveno/atp/acceptance/tests/preallocated/PreallocatedMultipleBufferingMmapTest.java)
  • No assertions: test (reveno-core/src/acceptanceTest/java/org/reveno/atp/acceptance/tests/preallocated/PreallocatedMultipleBufferingOSTest.java)
  • No assertions: test (reveno-core/src/acceptanceTest/java/org/reveno/atp/acceptance/tests/preallocated/PreallocatedMultipleBufferingVMTest.java)
  • No assertions: test (reveno-core/src/acceptanceTest/java/org/reveno/atp/acceptance/tests/preallocated/PreallocatedMultipleUnbufferedIOTest.java)
  • No assertions: test (reveno-core/src/test/java/org/reveno/atp/core/data/DefaultJournalerTest.java)
  • No assertions: testJavaSerializer (reveno-core/src/acceptanceTest/java/org/reveno/atp/acceptance/tests/preallocated/PreallocatedBufferingMmapTest.java)
  • No assertions: testJavaSerializer (reveno-core/src/acceptanceTest/java/org/reveno/atp/acceptance/tests/preallocated/PreallocatedBufferingOSTest.java)
  • …and 27 more

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

Survey your own repository

dmart28/reveno 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 22 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 c05651fb041553d92178eb572ebad3be98b1d654 — 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-90d5d2fe38ee.