@tdd_issue @tdd_issue_988
Feature: TDD Issue #988 — ReactiveEventBus.emit() swallows exception details
  As a developer debugging a subscriber failure
  I want the exception handler in ReactiveEventBus.emit() to log the full
  exception message and traceback
  So that I can diagnose why a subscriber failed without guessing

  This test captures bug #988. The exception handler in
  ReactiveEventBus.emit() currently logs only `type(exc).__name__`
  (e.g. "ValueError") without `str(exc)` or `exc_info=True`. When a
  subscriber raises, the log contains no diagnostic detail — no message,
  no traceback, no clue about which input or state caused the failure.

  The traceback scenario uses `@tdd_expected_fail` because that
  assertion still FAILS while the bug exists. The tag inversion
  mechanism causes CI to report that scenario as passed. Once the
  fix for #988 is merged, the `@tdd_expected_fail` tag must be
  removed so both scenarios run normally.

  See CONTRIBUTING.md > Bug Fix Workflow > TDD Issue Test Tags.

  @tdd_issue @tdd_issue_4367
  Scenario: Bug #988 — emit() logs exception message when handler raises
    Given a ReactiveEventBus with a handler that raises a ValueError
    When I emit an event that triggers the failing handler
    Then the warning log should contain the exception message text

  @tdd_expected_fail
  Scenario: Bug #988 — emit() logs traceback via exc_info when handler raises
    Given a ReactiveEventBus with a handler that raises a ValueError
    When I emit an event that triggers the failing handler
    Then the warning log should contain traceback information
