Skip to content

DL-240

The RIG-1641 OQ-5 residual pre-settle mention-loss window (a mention to an offline out-of-sweep-set member, lost when a crash or bus overrun drops MessagePosted before the settle-edge routeMentions pass) is closed by a per-message delivery marker, NOT a high-water cursor: a nullable messages.mentions_routed_at BIGINT (unix ms) set by the consumer after the settle-edge pass, with a recovery scan at consumer start + the Lagged() overrun re-subscribe reading WHERE mentions_routed_at IS NULL (skipping message_ids in c.held), replaying the ONE shared routeMentions body, then marking. The killed cursor could advance past a LOWER in-flight seq (messages.seq is BIGSERIAL assigned at INSERT but the bus event publishes post-commit, comms.go:361-375) whose crash-dropped event then stranded the mention forever — a new silent loss the marker cannot express. Seed-forward on first deploy (no historical backfill; compass pre-live). Extends DL-226’s no-loss invariant from the settle edge back to the message-post commit; DL-226’s wake+owed-mention mechanism is unchanged

Status: Active (Matt, 2026-08-23)

Record: ../../server/compass-mention-offline-redelivery-pre-settle-closure.md#resolved-decisions