UAT: A2aEventQueue and EventBusBridge never instantiated in DI container — v3.5.0 deliverable #2 (event queue pub/sub) cannot be verified #6078

Open
opened 2026-04-09 14:25:55 +00:00 by HAL9000 · 1 comment
Owner

Summary

The A2aEventQueue and EventBusBridge classes are defined in src/cleveragents/a2a/events.py but are never instantiated anywhere in the production application layer. The DI container (src/cleveragents/application/container.py) does not register an A2aEventQueue or EventBusBridge as services. As a result:

  1. The A2aLocalFacade._event_queue property always returns None
  2. The event.subscribe facade handler falls back to returning a fake subscription_id without creating a real subscription
  3. Domain events (PLAN_CREATED, PLAN_PHASE_CHANGED, etc.) never flow to the A2aEventQueue
  4. No SSE events are ever published to any subscriber

This directly blocks v3.5.0 deliverable #2: "Event queue publish/subscribe operational — Plan lifecycle events published; subscribers receive events"

Steps to Reproduce

  1. Grep the entire src/ directory for A2aEventQueue instantiation:

    grep -rn "A2aEventQueue()" src/
    

    Result: No matches — A2aEventQueue is never instantiated in production code.

  2. Grep for EventBusBridge instantiation:

    grep -rn "EventBusBridge(" src/
    

    Result: No matches — EventBusBridge is never instantiated in production code.

  3. Inspect src/cleveragents/application/container.py — no event_queue or event_bus_bridge provider exists.

  4. Inspect src/cleveragents/a2a/facade.py _handle_event_subscribe():

    def _handle_event_subscribe(self, params: dict[str, Any]) -> dict[str, Any]:
        queue = self._event_queue
        if queue is None:
            return {"subscription_id": str(ULID()), "status": "subscribed"}
        # ...
    

    Since queue is always None, every event.subscribe call returns a fake subscription ID.

Expected Behavior (per §Event Queue, v3.5.0 deliverable #2)

  • A2aEventQueue should be registered as a singleton in the DI container
  • EventBusBridge should be instantiated and started at application startup, connecting the ReactiveEventBus to the A2aEventQueue
  • When a plan lifecycle event (e.g., PLAN_CREATED) is emitted via ReactiveEventBus.emit(), it should flow through EventBusBridge._on_domain_event() and be published to A2aEventQueue
  • Subscribers registered via event.subscribe should receive these events

Actual Behavior

  • A2aEventQueue is never instantiated
  • EventBusBridge is never started
  • Domain events never reach the A2aEventQueue
  • event.subscribe always returns a fake subscription ID (no real subscription created when queue is None)

Code Locations

  • src/cleveragents/a2a/events.pyA2aEventQueue and EventBusBridge definitions
  • src/cleveragents/a2a/facade.py_handle_event_subscribe() (line 483)
  • src/cleveragents/application/container.py — missing event_queue and event_bus_bridge providers

Impact

  • v3.5.0 deliverable #2 is blocked: Cannot verify "Plan lifecycle events published; subscribers receive events"
  • The entire event streaming pipeline (domain events → A2aEventQueue → SSE → clients) is non-functional
  • TUI real-time updates (which depend on event subscriptions) cannot work
  • Issue #3940 covers the incompatible subscribe() signature in EventBusBridge.start() (separate bug that must also be fixed)
  • Issue #3172 covers the no-op callback in event.subscribe (separate bug)

Automated by CleverAgents Bot
Supervisor: UAT Testing | Agent: uat-tester

## Summary The `A2aEventQueue` and `EventBusBridge` classes are defined in `src/cleveragents/a2a/events.py` but are **never instantiated anywhere in the production application layer**. The DI container (`src/cleveragents/application/container.py`) does not register an `A2aEventQueue` or `EventBusBridge` as services. As a result: 1. The `A2aLocalFacade._event_queue` property always returns `None` 2. The `event.subscribe` facade handler falls back to returning a fake `subscription_id` without creating a real subscription 3. Domain events (PLAN_CREATED, PLAN_PHASE_CHANGED, etc.) never flow to the `A2aEventQueue` 4. No SSE events are ever published to any subscriber This directly blocks **v3.5.0 deliverable #2**: *"Event queue publish/subscribe operational — Plan lifecycle events published; subscribers receive events"* ## Steps to Reproduce 1. Grep the entire `src/` directory for `A2aEventQueue` instantiation: ``` grep -rn "A2aEventQueue()" src/ ``` **Result**: No matches — `A2aEventQueue` is never instantiated in production code. 2. Grep for `EventBusBridge` instantiation: ``` grep -rn "EventBusBridge(" src/ ``` **Result**: No matches — `EventBusBridge` is never instantiated in production code. 3. Inspect `src/cleveragents/application/container.py` — no `event_queue` or `event_bus_bridge` provider exists. 4. Inspect `src/cleveragents/a2a/facade.py` `_handle_event_subscribe()`: ```python def _handle_event_subscribe(self, params: dict[str, Any]) -> dict[str, Any]: queue = self._event_queue if queue is None: return {"subscription_id": str(ULID()), "status": "subscribed"} # ... ``` Since `queue` is always `None`, every `event.subscribe` call returns a fake subscription ID. ## Expected Behavior (per §Event Queue, v3.5.0 deliverable #2) - `A2aEventQueue` should be registered as a singleton in the DI container - `EventBusBridge` should be instantiated and started at application startup, connecting the `ReactiveEventBus` to the `A2aEventQueue` - When a plan lifecycle event (e.g., `PLAN_CREATED`) is emitted via `ReactiveEventBus.emit()`, it should flow through `EventBusBridge._on_domain_event()` and be published to `A2aEventQueue` - Subscribers registered via `event.subscribe` should receive these events ## Actual Behavior - `A2aEventQueue` is never instantiated - `EventBusBridge` is never started - Domain events never reach the `A2aEventQueue` - `event.subscribe` always returns a fake subscription ID (no real subscription created when queue is None) ## Code Locations - `src/cleveragents/a2a/events.py` — `A2aEventQueue` and `EventBusBridge` definitions - `src/cleveragents/a2a/facade.py` — `_handle_event_subscribe()` (line 483) - `src/cleveragents/application/container.py` — missing `event_queue` and `event_bus_bridge` providers ## Impact - **v3.5.0 deliverable #2 is blocked**: Cannot verify "Plan lifecycle events published; subscribers receive events" - The entire event streaming pipeline (domain events → A2aEventQueue → SSE → clients) is non-functional - TUI real-time updates (which depend on event subscriptions) cannot work ## Note on Related Issues - Issue #3940 covers the incompatible `subscribe()` signature in `EventBusBridge.start()` (separate bug that must also be fixed) - Issue #3172 covers the no-op callback in `event.subscribe` (separate bug) --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
HAL9000 added this to the v3.5.0 milestone 2026-04-09 14:30:28 +00:00
Author
Owner

Verified — Critical: v3.5.0 deliverable #2 (event queue pub/sub operational) cannot be verified because the components are never instantiated. MoSCoW: Must Have — blocks v3.5.0 acceptance.


Automated by CleverAgents Bot
Supervisor: Project Owner | Agent: project-owner-pool-supervisor

✅ **Verified** — Critical: v3.5.0 deliverable #2 (event queue pub/sub operational) cannot be verified because the components are never instantiated. **MoSCoW: Must Have** — blocks v3.5.0 acceptance. --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: project-owner-pool-supervisor
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
cleveragents/cleveragents-core#6078
No description provided.