Skip to main content

0029. Parent broadcast conformance stops before narrowing

Status: Accepted · 2026-08-12 · #269 · Revised 2026-09-30 · #519 Governed by: 0000, 0019

TL;DR Direct dynamic parent broadcasts remain conformance. Narrowed delivery stays outside the claim pending dedicated coverage. The former version-disagreement rationale is retracted: current pinned 4.8.3 and 4.8.4 installs route the measured case.

Decision​

Socket.IO 4.7.5 and 4.8.3 agree that a direct parent emit reaches the current concrete child namespaces, while each child keeps its own rooms, adapter, sockets, and lifecycle. smocket will reproduce and publish that common behavior together with concrete-child routing.

The original record said that 4.7.5 routed parent.to(room).emit(...), while 4.8.3 threw a TypeError because its child collection was not wired into the narrowed adapter. That version-disagreement claim is retracted for the current pinned installations; it is retained here as the history of the exclusion.

On 2026-09-30, paired 4.8.3 and 4.8.4 server/client installs with the default in-memory adapter both delivered a narrowed room broadcast to an admitted child. The child socket joined the room; the client recorded the direct and narrowed events before acknowledging a later marker sent by that child socket. Neither reference threw. Both resolved socket.io-adapter 2.5.8.

Under 0043, new conformance uses the declared 4.8.4 target rather than agreement across minors. This issue retains the existing support boundary: the measured narrowed case does not establish the full routing matrix. Dedicated coverage must precede publishing narrowed delivery as supported. smocket does not reproduce the historically recorded TypeError.

This boundary is about the parent operation only. Room routing on every concrete child remains ordinary conformance. Under [0019], adding the common dynamic parent surface is a minor after v1 and a patch before v1.

Alternatives rejected​

  • Reproduce the 4.8.3 TypeError. Original rationale (retracted): one supported version does not throw, and encoding an adapter wiring defect would make the mock less useful without a stable fidelity source. Current measurements do not throw.
  • Select the 4.7.5 narrowed routing result now. Original rationale (retracted): it is coherent, but publishing it would overstate agreement across versions. The remaining reason to defer is dedicated coverage, rather than version disagreement.
  • Exclude all parent broadcasts. Direct parent broadcast behavior agrees and is observable, so excluding it would leave verified surface unimplemented.