hub: bbNotifyWritersAtClose DM carries no payload, only go-call-blackboard_read
Same shape MSG-391 removes, one hop later. hub.mjs:11256-11259 - when a blackboard entry closes, every writer gets a DM whose entire content is that the entry closed and to go call blackboard_read. The hub is already holding the bodies it is telling them to fetch, so each writer spends a third turn on a retrieval the sender could have satisfied inline. Flagged by coder-llmmsgsrv-cc in the MSG-391 handoff and deliberately left out of that patch to keep it a pure extraction. Fix shape: bbReadView, added by MSG-391 at hub.mjs:11279, is already the single authorization-plus-payload path, so the close DM can call it per recipient and inline what that recipient is entitled to see. Do NOT re-derive the authorization at the close site - the whole value of the 391 extraction is that there is exactly one copy of the mayReadAll expression, MSG-358 hasDeclined-dominates rule included. Two things the gate must check. (1) An entry that closed by TIMEOUT may carry a different entitlement than one that closed by completion, and MSG-391 did not exercise the timed-out path at all, so it cannot be inherited as tested. (2) The self-filter MSG-391 applies to blackboard_write results must be RE-DECIDED here, not inherited: a writer reading a close summary may legitimately want its own answer in context, which is the opposite of the write case where it sent that answer one call ago. Blocked on MSG-391 shipping first.