maks-rafalko/tactician-domain-events
54.5
Adequate · 21 September 2026
228
lines of production code
PHP
primary language
4
measurements over time
What this system is
This system is a PHP library that provides a framework-agnostic event dispatcher and middleware for handling domain events. It allows developers to register event listeners and subscribers, record events for later processing, and manage event flow through a middleware chain. The codebase includes comprehensive testing and CI/CD configurations to ensure reliability.
Features
Introduce a new EventDispatcher component with subscriber support
The codebase now includes a new EventDispatcher component located in src/EventDispatcher. This introduces a framework-agnostic event dispatcher that supports both direct listeners and event subscribers. Users can now register listeners using callables or implement the EventSubscriberInterface to declare subscribed events. The previous EventBus interface has been renamed to EventDispatcherInterface and moved to the new namespace. The dispatcher also supports a NamedEvent interface for events that provide their own name.
src/EventDispatcher · high confidence
Behavioural changes
Refactor EventRecorder to use eraseEvents method
The EventRecorder now delegates the clearing of recorded events to the eraseEvents method within the releaseEvents logic, rather than directly resetting the internal array. Additionally, the record method is now public, and the return type hint for eraseEvents has been removed from the interface.
src/Recorder · medium confidence
ReleaseRecordedEventsMiddleware now returns the next middleware's result
The ReleaseRecordedEventsMiddleware (renamed from ReleaseRecorderEventsMiddleware) has been updated to capture and return the result from the next middleware in the bus, ensuring that the middleware chain properly propagates return values. Additionally, the dependency on the concrete EventBus class has been replaced with the more generic EventDispatcherInterface, aligning with the introduction of a framework-agnostic event dispatcher.
src/Middleware · medium confidence
Updated test configuration and added code coverage tools
The PHPUnit configuration has been updated to use the vendor binary for running tests and includes additional error/notice/warning conversion settings. The project has integrated Codecov for code coverage reporting and added configuration files for Infection (mutation testing) and Couscous (documentation site generation). Additionally, the license has been changed to MIT, and the repository's CI/CD pipeline has been updated to support these new tools.
(repo-wide) · high confidence
Test coverage
Added test coverage for core domain event components
Added comprehensive unit tests for the EventDispatcher, EventRecorder, and ReleaseRecordedEventsMiddleware, along with the necessary test fixtures. The new tests verify that the EventDispatcher correctly registers and dispatches events, the EventRecorder properly stores and releases recorded events, and the middleware correctly handles event release and exception scenarios.
tests · high confidence
Dependencies
Update package name and lock file
The Composer package name has been updated from 'tactician-domain-events' to 'bornfreee/tactician-domain-events', and the 'composer.lock' file has been removed from the repository.
(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
Score
- CAI 62 → 54 (-7.3)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 100 (+0.0)
- Architecture 69 → 69 (+0.0)
- Maturity 52 → 52 (+0.0)
- Readiness 57 → 39 (-17.3)
- Security 100 → 100 (+0.0)
Resolved (8)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- No exposed public API
- Test reliability not included
- The 'symfony_integration' menu points to a single, empty entry ('Coming soon.') with no content. (doc/symfony_integration.md)
- The public recorder example records a TaskWasCreated event but the recorded events are dispatched with any EventDispatcherInterface, not just Tactician's dispatcher. (doc/domain_events.md)
- early-stage repository — too few commits for a meaningful bus factor
- early-stage repository — too little history to judge knowledge freshness
New (2)
- Dependency hygiene PARTLY measured — Composer dependencies read, no committed lock to grade for currency
- No dependency advisory monitoring
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
maks-rafalko/tactician-domain-events 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 1eb23434d3a833dedb6180ead75ff983ef09a2e9 — 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.