Skip to content
CAI
Software that uses CAICheck a score

Averor/cqrs-es-bundle

39.0

Weak · 22 September 2026

723

lines of production code

PHP

primary language

6

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a Symfony bundle that implements CQRS and Event Sourcing patterns. It provides a structured message bus architecture with distinct command, event, and query buses, each supporting automatic discovery and lazy-loading of handlers and listeners. The system also introduces domain primitives for identifiers and events to standardize tracking and identification within the application.

Features

Added message bus aliases for commands, events, and queries

Introduced three new classes in the Averor\\MessageBus namespace—CommandBus, EventBus, and QueryBus—that serve as aliases for the underlying message bus implementations. CommandBus extends MessageBus, EventBus extends MessageBus and implements the IEventBus interface, and QueryBus extends the specific QueryBus implementation. These aliases simplify the API by providing direct access to the message bus components without needing to reference the full implementation classes.

src/Alias · medium confidence

Automatic registration of CQRS and event-driven components

The bundle now automatically discovers and registers command handlers, query handlers, event listeners, projectors, and process managers. Each discovered handler is registered as a lazy-loaded service, which improves application startup performance by deferring their instantiation until they are actually needed.

src/DependencyInjection/CompilerPass · high confidence

New domain primitives for identifiers and events

Added UuidIdentifier as a concrete implementation of the Identifier interface, enabling UUID-based identification for domain objects. Additionally, introduced the DomainEventTrait to provide domain events with a unique message ID and creation timestamp, standardizing how events are tracked and identified within the system.

src/Domain · high confidence

Behavioural changes

Refactored CQRS bundle dependency injection and configuration

The CQRS bundle's dependency injection has been restructured to support configurable logging for the command, event, and query buses. A new Configuration class defines the settings for each bus, allowing users to specify a logger service and log level. The CqrsExtension now dynamically registers logging middleware for each bus type when configured, and registers auto-configuration tags for command handlers, event listeners, process managers, projectors, and query handlers. As part of this refactor, the previous placeholder compiler passes (CommandHandlersCompilerPass, EventListenersCompilerPass, QueryHandlersCompilerPass) have been removed.

src/DependencyInjection · medium confidence

Refactors CQRS and Event Sourcing compiler passes and adds container extension

The AverorCqrsEsBundle has been refactored to use new, more descriptive compiler pass classes (RegisterCommandHandlers, RegisterEventListeners, RegisterProjectors, RegisterProcessManagers, RegisterQueryHandlers) instead of the previous generic naming. Additionally, a CqrsExtension has been added to the bundle, enabling proper configuration of the CQRS and Event Sourcing components via Symfony's configuration system.

src · high confidence

Dependencies

Update Averor packages to dev-master and add new dependencies

The composer.json file has been updated to point the Averor packages (message-bus, query-bus, event-sourcing) to the dev-master branch instead of the ^2.0 release versions. Additionally, psr/log (^1.0) and ramsey/uuid (^3.8) have been added as new requirements. The custom VCS repository definitions for the Averor packages have been removed, and symfony/proxy-manager-bridge has been moved from a requirement to a suggested package. The autoload configuration has also been updated to include the Avertor\\MessageBus namespace.

(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

Score

  • CAI 37 → 39 (+1.8)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 97 → 98 (+0.7)
  • Architecture 57 → 69 (+11.9)
  • Maturity 37 → 37 (+0.0)
  • Readiness 15 → 15 (+0.0)
  • Security 100 → 100 (+0.0)

Resolved (12)

  • Change coupling clique: RegisterCommandHandlers.php, RegisterEventListeners.php, RegisterQueryHandlers.php (src/DependencyInjection/CompilerPass/RegisterCommandHandlers.php)
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • Duplicated block (10 lines × 2) (src/DependencyInjection/CqrsExtension.php)
  • Duplicated block (11 lines × 2) (src/DependencyInjection/CompilerPass/RegisterCommandHandlers.php)
  • Duplicated block (16 lines × 5) (src/DependencyInjection/CompilerPass/RegisterCommandHandlers.php)
  • Duplicated block (18 lines × 5) (src/DependencyInjection/CompilerPass/RegisterCommandHandlers.php)
  • Duplicated block (20 lines × 3) (src/DependencyInjection/CompilerPass/RegisterEventListeners.php)
  • Duplicated block (8 lines × 3) (src/DependencyInjection/CqrsExtension.php)
  • No exposed public API
  • The README states the bundle is an 'Averor/Cqrs es Bundle' but never explains what event sourcing/aggregate roots this bundle provides and which query types are supported. (README.md)
  • early-stage repository — too few commits for a meaningful bus factor
  • early-stage repository — too little history to judge knowledge freshness

New (12)

  • Dependency hygiene PARTLY measured — Composer dependencies read, no committed lock to grade for currency
  • Documentation: no installation or build instructions (README.md)
  • Duplicated block (11 lines × 2) (src/DependencyInjection/CompilerPass/RegisterCommandHandlers.php)
  • Duplicated block (13 lines × 2) (src/DependencyInjection/CqrsExtension.php)
  • Duplicated block (17 lines × 5) (src/DependencyInjection/CompilerPass/RegisterCommandHandlers.php)
  • Duplicated block (20 lines × 2) (src/DependencyInjection/CompilerPass/RegisterCommandHandlers.php)
  • Duplicated block (20 lines × 3) (src/DependencyInjection/CompilerPass/RegisterEventListeners.php)
  • Duplicated block (25 lines × 5) (src/DependencyInjection/CompilerPass/RegisterCommandHandlers.php)
  • Duplicated block (28 lines × 3) (src/DependencyInjection/CompilerPass/RegisterEventListeners.php)
  • Duplicated block (6 lines × 3) (src/DependencyInjection/CqrsExtension.php)
  • Members sharing a duplicated core (5 members, 50+ identical tokens) (src/DependencyInjection/CompilerPass/RegisterCommandHandlers.php)
  • Members sharing a duplicated core (5 members, 50+ identical tokens) (src/DependencyInjection/CompilerPass/RegisterCommandHandlers.php)

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

Survey your own repository

Averor/cqrs-es-bundle 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 f62d03f721391594286b0862eb57aadc938bed59 — 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-821afab8930d.