maxPayloadBytes
The tightest budget across the registered connections (#2058).
This hub is the one decorator in #2058 with no delegate Seam to forward: it fans out through one OutboundSender per admitted connection, so the number it can publish is the minimum of what those senders name — a broadcast goes to every one of them, and a frame that overflows the narrowest is over budget for the room. Each sender's value is already net of the room's own channel header, so nothing is subtracted here.
A connection that names no ceiling is skipped rather than collapsing the answer to null, the same call us.tractat.kuilt.core.fabric.MeshSeam makes across a mesh of one bounded and one unknown link. A hub nobody has joined reports null, and so does a closed one: with no registered connection there is nothing to be bounded by.
So this loosens and tightens over a room's life — read it per send, never cache it. The senders are snapshotted under lock and their budgets read outside it, exactly as broadcast snapshots its targets before sending: a sender's number can come from the connection's own seam, which is a lock this hub must not acquire one of its own inside.