Problem
Architecture requires a single EventBusLayer reference because Effect memoizes layers by reference; a second bus silently drops events.
Production wiring in runtime.ts is correct, but @vibest/server/events publicly exports makeEventBus, and unit tests already construct standalone buses via makeEventBus() instead of sharing EventBusLayer. New code could repeat that in production layers.
Severity
P3
Affected files
packages/server/src/events/index.ts
packages/server/src/events/event-bus.ts
- Correct production pattern:
packages/server/src/rpc/runtime.ts
- Test footgun examples:
packages/server/test/harness/session-manager.test.ts, session-service.test.ts
Suggested fix
Stop exporting makeEventBus from the public @vibest/server/events entry; keep it module-private to event-bus.ts. Tests that need an isolated bus can import from the internal path or use Layer.build(EventBusLayer) as turn-log.test.ts already does.
Problem
Architecture requires a single
EventBusLayerreference because Effect memoizes layers by reference; a second bus silently drops events.Production wiring in
runtime.tsis correct, but@vibest/server/eventspublicly exportsmakeEventBus, and unit tests already construct standalone buses viamakeEventBus()instead of sharingEventBusLayer. New code could repeat that in production layers.Severity
P3
Affected files
packages/server/src/events/index.tspackages/server/src/events/event-bus.tspackages/server/src/rpc/runtime.tspackages/server/test/harness/session-manager.test.ts,session-service.test.tsSuggested fix
Stop exporting
makeEventBusfrom the public@vibest/server/eventsentry; keep it module-private toevent-bus.ts. Tests that need an isolated bus can import from the internal path or useLayer.build(EventBusLayer)asturn-log.test.tsalready does.