From fe2f9e4e98fe083613a8bf311aa560d034194d73 Mon Sep 17 00:00:00 2001 From: Andrew Plaza Date: Fri, 24 Jul 2026 12:31:54 -0400 Subject: [PATCH] feat(mls/database): add AddMissingInstallations Task variant Durable TaskRunner intent used by libxmtp's device-sync worker: when a sync-group welcome signals a new installation, one task per eligible group reconciles membership with the inbox's latest identity state, retried with backoff instead of a one-shot inline add (xmtp/libxmtp#3897). Co-Authored-By: Claude Fable 5 --- proto/mls/database/task.proto | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/proto/mls/database/task.proto b/proto/mls/database/task.proto index 95d67860..5791994b 100644 --- a/proto/mls/database/task.proto +++ b/proto/mls/database/task.proto @@ -17,6 +17,7 @@ message Task { PullInDeadline pull_in_deadline = 4; KpRotation kp_rotation = 5; KpDeletion kp_deletion = 6; + AddMissingInstallations add_missing_installations = 7; } } @@ -52,3 +53,13 @@ message SendSyncArchive { message ProcessPendingSelfRemove { bytes group_id = 1; } + +// Durable TaskRunner intent: reconcile a group's membership with the inbox's +// latest identity state (add installations registered after the group was +// last updated). Enqueued by the device-sync worker when a sync-group welcome +// signals a new installation; runs on the TaskRunner with retry/backoff so a +// transient failure (e.g. identity propagation lag) cannot permanently skip +// the add. group_id is the target conversation. +message AddMissingInstallations { + bytes group_id = 1; +}