build: take libchat's GroupV2 fork fix, and surface what stalls a group - #67
Draft
osmaczko wants to merge 3 commits into
Draft
build: take libchat's GroupV2 fork fix, and surface what stalls a group#67osmaczko wants to merge 3 commits into
osmaczko wants to merge 3 commits into
Conversation
Doc-test reportHeadless Pages can take a minute to update after the run finishes. |
osmaczko
force-pushed
the
build/bump-libchat-join-fork-fix
branch
from
August 22, 2026 09:22
590306d to
3e739d8
Compare
…ents A member joining a GroupV2 group after a voted steward election kept serving the pre-election steward list and rejected the elected steward's next commit, so the group split into branches that never converge again and every later add landed on one of them. The same pin brings what a conversation now reports about running itself: the phase it moved into, how much of a commit round arrived, and a step of its own that did not go through. A group that has stopped moving says nothing else, so without those a stalled add reads the same as an idle group. libchat renamed ConversationClass::Private to Dm over the same range, so the inbound class-to-kind mapping follows it.
A GroupV2 group that splits or stops growing explains itself in de-mls's own lines and nowhere else, and the composed filter left that target at `warn` while every one of those lines is `info` or `debug`. A run that hit the problem therefore carried no account of it, and the account cannot be asked for afterwards: it is gone with the run. Add `de_mls` to the targets the client's level moves, and default that level to `debug` while GroupV2 is being stabilised. Everything around them stays at `warn`, so the crates that log per network frame stay out of the way, and `RUST_LOG` still replaces the composition outright for a run that wants less.
A send is handed off asynchronously and its outcome comes back as an event, and the module subscribed to none of them. A message the delivery node could not put on the wire therefore vanished without a line anywhere, which is exactly the shape of a group that stops growing: the invite is accepted locally, nothing carries it, and every log still reads as a healthy run. Declare `messageError` in the contract subset and drain it alongside `connectionStateChanged`. The event names the send by request id and by nothing else, so an accepted send now logs that id against its topic; without the pair the error line says nothing about what failed.
osmaczko
force-pushed
the
build/bump-libchat-join-fork-fix
branch
from
August 24, 2026 08:39
3e739d8 to
a4b938d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
build: take libchat's GroupV2 fork fix and its conversation-status events
A member joining a GroupV2 group after a voted steward election kept serving the pre-election steward list and rejected the elected steward's next commit, so the group split into branches that never converge again and every later add landed on one of them.
The same pin brings what a conversation now reports about running itself: the phase it moved into, how much of a commit round arrived, and a step of its own that did not go through. A group that has stopped moving says nothing else, so without those a stalled add reads the same as an idle group.
libchat renamed ConversationClass::Private to Dm over the same range, so the inbound class-to-kind mapping follows it.
feat: log the GroupV2 protocol, at debug by default
A GroupV2 group that splits or stops growing explains itself in de-mls's own lines and nowhere else, and the composed filter left that target at
warnwhile every one of those lines isinfoordebug. A run that hit the problem therefore carried no account of it, and the account cannot be asked for afterwards: it is gone with the run.Add
de_mlsto the targets the client's level moves, and default that level todebugwhile GroupV2 is being stabilised. Everything around them stays atwarn, so the crates that log per network frame stay out of the way, andRUST_LOGstill replaces the composition outright for a run that wants less.feat: report a send that delivery gave up on
A send is handed off asynchronously and its outcome comes back as an event, and the module subscribed to none of them. A message the delivery node could not put on the wire therefore vanished without a line anywhere, which is exactly the shape of a group that stops growing: the invite is accepted locally, nothing carries it, and every log still reads as a healthy run.
Declare
messageErrorin the contract subset and drain it alongsideconnectionStateChanged. The event names the send by request id and by nothing else, so an accepted send now logs that id against its topic; without the pair the error line says nothing about what failed.Note for the review, not for history: the libchat pin is the head of
feat/surface-group-progress-events, which sits on top of logos-messaging/libchat#216 and has no pull request of its own yet. Neither is merged. Re-pin to the squash-merges onmainbefore this lands, and fold that into the first commit above.