Skip to content
CAI
Software that uses CAICheck a score

AliReaza/event-driven

47.2

Weak · 22 September 2026

89

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 an event-driven listener framework that manages event subscriptions and unsubscriptions with configurable timeouts. It provides a provider interface for managing listeners and includes a test suite to verify its behavior. The project is maintained as a Composer package, relying on standard PHP testing tools and UUID generation.

Behavioural changes

Refined event-driven listener interface and provider signatures

The EventDrivenListenerInterface and ListenerProvider now accept an optional $timeout\_ms parameter in the subscribe() method, allowing callers to specify a timeout for event subscription. Additionally, the unsubscribe() method's $unsubscribe parameter is now explicitly typed as boolean, and the ListenerProvider's constructor property is changed from private to public, affecting how the internal provider instance is accessed.

src · high confidence

Test coverage

Added missing newlines to test files

Added missing newlines at the end of the EventDispatcherTest and ListenerProviderTest files, ensuring proper file formatting in the test suite.

tests · high confidence

Dependencies

Update composer.json dependencies and metadata

The composer.json manifest has been updated to version 1.2.0, with the alireaza/uuid dependency upgraded to 1.2.0 and phpunit/phpunit bumped to ^9.5.16. The package metadata was also corrected, including the author's homepage URL and the addition of a LinkedIn funding link.

(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 44 → 47 (+3.7)
  • 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 35 → 35 (+0.0)
  • Readiness 26 → 33 (+7.7)
  • Security 100 → 100 (+0.0)

Resolved (10)

  • 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 README states 'Event Driven' but gives no description of what the package provides or how to use it. (README.md)
  • There is no usage example showing how to create an event handler or subscribe to events. (README.md)
  • early-stage repository — too little history to judge knowledge freshness
  • git history depth insufficient
  • git history depth insufficient
  • single-maintainer — knowledge-concentration (bus factor) risk

New (8)

  • Dependency hygiene PARTLY measured — Composer dependencies read, no committed lock to grade for currency
  • Documentation: no architecture or design documentation (README.md)
  • Documentation: no contributor guidance (README.md)
  • Documentation: no usage examples (README.md)
  • Inconsistent parameter semantics for 'unsubscribe'. The parameter name 'unsubscribe' is a boolean, which is confusing (e.g., 'unsubscribe(true)' vs 'unsubscribe(false)'). It is unclear if this flag toggles the state or is a legacy artifact. Furthermore, 'unsubscribe' in EventDrivenListenerInterface likely tears down the broker connection, while in ListenerProvider it likely clears registered listeners. The shared name masks these distinct operational intents.
  • Semantic ambiguity of 'subscribe' across different domains. In EventDrivenListenerInterface, 'subscribe' likely refers to establishing a connection to a message broker or event source (lifecycle management). In ListenerProvider, 'subscribe' is overloaded to mean registering a specific listener callback (data registration), which is also explicitly named 'addListener'. This creates confusion between subscribing to a stream vs subscribing to an event type.
  • Skipped (documented): test_Coming_Soon (tests/Unit/EventDispatcherTest.php)
  • Skipped (documented): test_Coming_Soon (tests/Unit/ListenerProviderTest.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

AliReaza/event-driven 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 5250eb6d15bafc2cf12e7fe1e60ab8deece41d2c — 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.