DL-332
Publishing message_posted on BOTH the in-process events.Bus (client gRPC stream + presence, until the client edge migrates) and the fabric (delivery) during the phased, multi-step migration is NOT a violation of DL-313’s “one eventing substrate — NATS only”: that constraint bans a second SWAPPABLE EventFabric implementation (an in-process channel impl of the seam), not the pre-existing bus coexisting during the phased cutover. The two publishes serve disjoint consumer sets (no consumer reads both), so no double-handling occurs; the transitional shape ends when the client edge migrates and the bus retires. Interpretation frozen here (per the red-team) so the bus-retirement inherits it explicitly
Status: Active (Matt, 2026-09-05)