Skip to content
CAI
Software that uses CAICheck a score

prooph/event-store-symfony-bundle

69.7

Adequate · 22 September 2026

1.5k

lines of production code

PHP

primary language

7

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a Symfony bundle that integrates the Prooph Event Store, providing a structured way to manage event sourcing and projections within a PHP application. It offers dependency injection configuration, console commands for projection management, and middleware for transactional message handling. The codebase includes comprehensive test coverage for these features, ensuring reliable integration with modern PHP and Symfony versions.

How it got here

2016 — Symfony DI integration and test coverage

8 changes.

This period focused on integrating a dependency injection container and compiler pass infrastructure for the Prooph Event Store bundle, enabling structured configuration of event stores and projections. The work included implementing the Symfony DI extension, adding comprehensive test coverage for the new components, and updating dependencies to support modern PHP and Symfony versions.

2017–2021 — Projection management and transactional messaging

11 changes.

This period focused on introducing comprehensive command-line tools and configuration abstractions for managing event store projections. The work also established a transactional messaging layer via a new middleware, ensuring database consistency during message handling. Extensive test coverage was added to validate these new features and internal components.

Features

Add EventStoreTransactionMiddleware for Symfony Messenger

A new \EventStoreTransactionMiddleware\ has been added to the \src/Messenger\ directory. This middleware integrates with Symfony Messenger to automatically manage database transactions around message handling, ensuring that all operations within a message handler are committed or rolled back as a single unit of work.

src/Messenger · high confidence

Initial project scaffolding and CI/CD configuration

The repository has been initialized with essential configuration files, including \.travis.yml\ for continuous integration, \phpunit.xml.dist\ for test execution, \phpstan.neon\ for static analysis, and \.php-cs-fixer.php\ for code style enforcement. Additionally, standard documentation files such as \README.md\, \CONTRIBUTING.md\, and \phpunit.xml.dist\ have been added to support development and contribution workflows.

(repo-wide) · high confidence

Introduce Symfony DI configuration and service wiring for Event Store and Projections

The bundle now provides a formalized configuration tree and dependency injection wiring for the event store and projection managers. Users can define event store connections, projection managers, and individual projections via a structured YAML/XML config, with the extension automatically registering service locators for projections, read models, and options. This replaces ad-hoc or manual service registration with a consistent, validated configuration model that supports Symfony's DI container, including support for service IDs prefixed with '@' and optional connection parameters.

src/DependencyInjection · high confidence

Introduces DIC and compiler pass infrastructure for the Prooph Event Store bundle

The bundle now registers several compiler passes (MetadataEnricherPass, PluginsPass, RegisterProjectionsPass, ProjectionOptionsPass, PluginLocatorPass, and DeprecateFqcnProjectionsPass) during the container build phase. This enables new dependency injection container (DIC) configuration support, allowing users to define projections via configuration or tagged services, and introduces a service locator for plugins.

src · high confidence

New console commands for managing projections

Added a suite of Symfony console commands for managing projections, including \event-store:projection:delete\, \event-store:projection:names\, \event-store:projection:reset\, \event-store:projection:run\, \event-store:projection:state\, \event-store:projection:stop\, and \event-store:projection:positions\. These commands allow users to delete, list, reset, run, check the state of, stop, and view stream positions for projections directly from the command line, with support for filtering, limiting, and regex-based filtering in the names command.

src/Command · high confidence

New factory classes for event store and projection management

Added new factory classes in the src/Factory directory to handle the creation of event stores and projection managers. This includes ActionEventEmitterFactory and its implementation DefaultActionEventEmitterFactory, which wrap event stores with action event emitters; DefaultEventStoreFactory, which manages event store creation and plugin attachment; and ProjectionManagerFactory, which creates appropriate projection managers based on the underlying event store type (e.g., Postgres, MySQL, MariaDB, or InMemory). These changes introduce new interfaces and implementations for managing event store and projection manager instantiation.

src/Factory · high confidence

New projection configuration and interface abstractions

The bundle introduces new abstractions for managing projection settings and types. A \ProjectionOptions\ class and its corresponding \ProjectionOptionsFactory\ are added to centralize and map projection configuration, specifically supporting gap detection settings. Additionally, new \Projection\ and \ReadModelProjection\ interfaces are introduced to define how projections and read-model projections interact with their respective projectors, enabling more structured projection definitions.

src/Projection · high confidence

Behavioural changes

Deprecate configuring projections by fully qualified class names

The bundle now issues a deprecation warning when users configure projections using fully qualified class names (FQCNs) in the configuration. The \DeprecateFqcnProjectionsPass\ compiler pass detects this legacy configuration style and triggers an \E\_USER\_DEPRECATED\ error, indicating that this approach is deprecated since v0.5 and will be removed in v1.0. Users should instead tag their projection services with the appropriate tags (e.g., \prooph\_event\_store.projection\) to ensure proper registration and future compatibility.

src/DependencyInjection/Compiler · high confidence

Test coverage

Added BlackHole test fixture for EventStore; Added BlackHole test fixture for dependency injection testing; Added test fixtures for projection and event testing; Added test fixtures for projections and read models; Added tests for EventStoreTransactionMiddleware; Added tests for ProjectionOptionsFactory; Added tests for projection management commands; Added tests for the Symfony DependencyInjection extension; Added tests for the Symfony bundle and projection manager factory; Added unit tests for dependency injection compiler passes.

Dependencies

Update Symfony and PHP version support

The package now supports PHP 7.4 and 8.0+, and Symfony 5.4, 6.4, and 7.0. This update ensures compatibility with the latest Symfony releases and modern PHP versions, while also updating development dependencies like phpunit and phpstan.

(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

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 63 → 70 (+6.4)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 99 → 100 (+0.2)
  • Architecture 100 → 94 (-5.9)
  • Maturity 45 → 45 (+0.0)
  • Readiness 73 → 89 (+15.5)
  • Security 75 → 95 (+19.7)

Resolved (9)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • LLM evaluation failed
  • No exposed public API
  • Test reliability not included
  • dormant codebase — no living knowledge left to concentrate

New (10)

  • Dependency hygiene PARTLY measured — Composer dependencies read, no committed lock to grade for currency
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • Workflow token permissions not restricted

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

Survey your own repository

prooph/event-store-symfony-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 a502004ed41922153c0835b3d5c2fb7451d504c7 — 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.