PR J: Redis-backed Event Bus broker (feature-flagged) #14

Open
nsatoshi wants to merge 0 commits from devin/1776881249-pr-j-redis-event-bus into main
Owner

Closes gap-analysis v2 §7.3 + §10.3.

What

  • New orchestrator/src/services/eventBusBroker.ts: per-process singleton bridging the in-process EventEmitter across replicas over Redis pub/sub.
  • eventBus.publish() hands every persisted record to the broker after the local emit; remote replicas re-emit inbound records on their own local emitter.
  • Echo suppression via per-process instanceId in the envelope.
  • Feature-flagged by REDIS_URL. When unset the broker is strictly inert — single-process behaviour is preserved byte-for-byte.
  • 3 unit tests for feature-flag semantics (REDIS_URL unset path). Live Redis behaviour will be covered by the Testcontainers suite in PR Q.

Why

Gap-analysis v2 §7.3 flagged the event bus as process-local: when the orchestrator scales to >1 replicas, SSE subscribers connected to replica A never see events originated on replica B. This PR closes that gap without changing the signature chain or persistence layer.

Verification

  • npx tsc --noEmit clean.
  • npx jest 83/83 green.
Closes gap-analysis v2 §7.3 + §10.3. ## What - New `orchestrator/src/services/eventBusBroker.ts`: per-process singleton bridging the in-process `EventEmitter` across replicas over Redis pub/sub. - `eventBus.publish()` hands every persisted record to the broker after the local emit; remote replicas re-emit inbound records on their own local emitter. - Echo suppression via per-process `instanceId` in the envelope. - Feature-flagged by `REDIS_URL`. When unset the broker is strictly inert — single-process behaviour is preserved byte-for-byte. - 3 unit tests for feature-flag semantics (`REDIS_URL` unset path). Live Redis behaviour will be covered by the Testcontainers suite in PR Q. ## Why Gap-analysis v2 §7.3 flagged the event bus as process-local: when the orchestrator scales to >1 replicas, SSE subscribers connected to replica A never see events originated on replica B. This PR closes that gap without changing the signature chain or persistence layer. ## Verification - `npx tsc --noEmit` clean. - `npx jest` 83/83 green.
nsatoshi added 1 commit 2026-04-22 11:09:22 -07:00
Redis-backed Event Bus broker (feature-flagged via REDIS_URL)
CI / Frontend Lint (pull_request) Failing after 7s
CI / Frontend Type Check (pull_request) Failing after 6s
CI / Frontend Build (pull_request) Failing after 7s
CI / Frontend E2E Tests (pull_request) Failing after 8s
CI / Orchestrator Build (pull_request) Failing after 6s
CI / Contracts Compile (pull_request) Failing after 7s
CI / Contracts Test (pull_request) Failing after 6s
Code Quality / SonarQube Analysis (pull_request) Failing after 19s
Code Quality / Code Quality Checks (pull_request) Failing after 4s
Security Scan / Dependency Vulnerability Scan (pull_request) Failing after 5s
Security Scan / OWASP ZAP Scan (pull_request) Failing after 3s
bf12f94250
Closes gap-analysis v2 §7.3 and §10.3.

- New services/eventBusBroker.ts: per-process singleton with unique
  instanceId; subscribes to a Redis pub/sub channel (default
  ccombo:events) and re-emits inbound records on the in-process
  EventEmitter. Outbound envelopes carry the instanceId so the
  originating replica drops its own echo.
- eventBus.publish() hands every persisted record to the broker after
  the local emit, so same-process SSE subscribers see zero change
  while remote-replica subscribers now receive every event.
- When REDIS_URL is unset the broker is strictly inert (no connect,
  no publish) — single-process behaviour is preserved byte-for-byte.
- 3 unit tests for feature-flag semantics; full suite 83/83 green.
- Live Redis behaviour will be covered by the Testcontainers suite
  in PR Q.
This pull request is broken due to missing fork information.
This pull request can be merged automatically.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin devin/1776881249-pr-j-redis-event-bus:devin/1776881249-pr-j-redis-event-bus
git checkout devin/1776881249-pr-j-redis-event-bus
Sign in to join this conversation.