fix(desktop): restore the shard-4 message-thread-summary cluster (one harness cause, #132) - #156
Merged
Merged
Conversation
Author
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
This was referenced Aug 11, 2026
Closed
oscarlehuu
force-pushed
the
devin/fix-132-thread-summary-e2e
branch
2 times, most recently
from
August 11, 2026 11:40
0c175de to
a5d6108
Compare
oscarlehuu
force-pushed
the
devin/fix-132-thread-summary-e2e
branch
from
August 11, 2026 13:03
a5d6108 to
f32fb3e
Compare
oscarlehuu
force-pushed
the
devin/fix-132-thread-summary-e2e
branch
from
August 11, 2026 14:01
c7eff74 to
497ee9b
Compare
Signed-off-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-Authored-By: Oscar Le <oscar.lehuu@gmail.com>
Signed-off-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-Authored-By: Oscar Le <oscar.lehuu@gmail.com>
Signed-off-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-Authored-By: Oscar Le <oscar.lehuu@gmail.com>
oscarlehuu
force-pushed
the
devin/fix-132-thread-summary-e2e
branch
from
August 11, 2026 14:14
497ee9b to
36723ce
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.
Summary
The hypothesis in #132 was right: 15 of the 17 shard-4 failures were one shared cause, and it is a harness bug, not a product bug. Two one-line conditions in the E2E mock bridge, no product code touched.
Upstream's read-model overhaul stopped live thread replies from entering the channel timeline list; a thread's reply summary now comes from the relay's kind:39005 recount push.
e2eBridge.tsonly emitted that push when the channel was the huddle ephemeral channel, so a reply emitted live into an ordinary channel likegeneralproduced nomessage-thread-summaryat all — and 15 specs asserted on it.Making the recount universal then exposed a second mock/relay divergence: the mock persisted kind:20002 typing indicators into channel history, and the now-visible recount counted them as thread descendants (
messaging.spec.tssaw "20 replies" where 18 were real). The relay treats kinds 20000–29999 as ephemeral and never stores them, so the mock now matches:D-041records the rule both bugs violated: mock relay behavior is derived from relay semantics for all channels and kinds, never narrowed to the surface that first needed it — a selectively-faithful mock produces failures indistinguishable from product bugs, which is the expensive failure mode.No spec was skipped, weakened, deleted, or given a longer timeout. The failures that remain are left red and honestly attributed to four new issues rather than silenced.
Related issue
Fixes #132 (partially — the shared cause and every failure it covers; see below).
Residue split out with full evidence, per the "file it, don't bundle a half-fix" rule:
hooks.tsalready keeps a per-root live reply cache nobody consumes). Coversthread-unread03/05/06/07/15.?thread=<id>deep link resolves the event and its whole ancestor chain but never opens the panel, becauseuseChannelRouteTargetreturns early whentargetMessageIdis null (product). Coversthread-orientation03/04.relay-reconnect.spec.ts:617, unchanged before/after, hypothesis recorded.scroll-history.spec.ts:1281, unchanged before/after, hypothesis recorded.project-outcomes.spec.ts:108is untouched — owned by #125/PR #131.overscroll-boundary.spec.ts:34was not chased, as instructed: it passes in a targeted run on both branches and only ever fails inside a full-suite run, consistent with #132's flaky/environmental call.Definition of Done
message-thread-summaryclustere2eBridge.tslive kind:39005 emission. 8 of the 13thread-unreadand boththreadpane-ultrawidetests go green.relay-reconnect:617/scroll-history:1281— fix if tractable, else file with evidenceoverscroll-boundary:34— do not chase, state itproject-outcomes:108— out of scopedocs/crew/STATE.mdis unchanged deliberately: this changes no shipped state, only test-harness fidelity.Testing
No visual change, so no screenshots.
Shard 4 — the lane #132 is about — measured in CI, not locally (this PR's run 31458263391, job 93676494888), against the baseline #132 published:
8 fewer failures, 1.4m of headroom bought back — 9.3m of margin against the 30m cancellation budget, up from 7.9m. That is the point of the exercise: the remaining failures are no longer paying the assertion-timeout and retry cost of 17.
The 9 that remain in CI are exactly the attributed residual set, with nothing unexpected:
thread-unread03/05/06/07/15 (#152),thread-orientation03/04 (#153),relay-reconnect:617(#154),scroll-history:1281(#155). CI also marked 4 tests flaky-but-passing on retry (overscroll-boundary:34,project-outcomes:56,thread-reply-anchor-roleplay:163/:215) — the same intermittents seen locally, none of them a final failure.Locally, same invocation in separate worktrees: base
20ba49d07228 passed / 18 failed → this branch 235 passed / 11 failed, 0 newly failing, 8 newly passing. Consistent with CI.Full smoke (all 4 shards, sequential, same box): base 965 passed / 33 failed → this branch 972 passed / 26 failed.
Every "newly failing" title from that full-suite comparison was re-run targeted on both branches rather than assumed flaky — that is how the typing-indicator bug above was caught (
messaging.spec.ts:1328was a genuine regression from the first commit, and is fixed here, not explained away).Also green:
pnpm --filter buzz build:e2e,pnpm --filter buzz check,pnpm --filter buzz typecheck.Note on the base
Branched off PR #129 rather than
main, because #129 is what un-cancels shard 4 and is not merged yet — so this PR's diff shows #129's three commits underneath it. Once #129 lands, the rebase is clerical and this reduces to the 3 files above.Link to Devin session: https://app.devin.ai/sessions/bee9c37812e84af8b8fa520936a3118d
Requested by: @oscarlehuu