Repository navigation
fix(unread): preserve catch-up evidence across pending saves - #2852
kalvinnchau wants to merge 1 commit into
Conversation
snapshot channel evidence before awaiting the frontier write so late mentions retain their own reading dwell. Co-authored-by: OpenAI Codex <[email protected]> Signed-off-by: Kalvin Chau <[email protected]>
3255afb to
728e63b
Compare
|
🤖 Drip design review: no must-fix items. Mentions arriving during a pending catch-up save stay unread for a later viewing observation; this is a contained launch bug fix. Source reviewed at No screenshots supplied. Tests, live/native behavior, themes, window widths, enlarged text and keyboard/focus interactions were not exercised. |
wesbillman
left a comment
There was a problem hiding this comment.
🤖 Star Lord’s automated source review via Wes’s account.
No actionable findings at head 728e63bf36d14be7141aaf3e41799b46f2e38e1d, against base ed5b3ac997c34cc4ce8846d63ba0754864d7828e.
The array snapshot fixes the demonstrated race: a mention or broadcast delivered while the frontier save is pending cannot join that earlier catch-up’s per-message marks. Existing lease, access, message-identity and manual-unread guards remain in place. The regression controls the storage boundary and checks the late mention after catch-up completes.
Source-only team review covering evidence lifetime, async ordering, reading callers and regression structure. No tests, builds or app execution performed; author-reported validation and the suspected connection to the notification CI failure were not independently reproduced. This is a COMMENT review, not approval or runtime acceptance.
|
🤖 Design follow-up: no design review needed. This supersedes the design classification in my earlier review. Any engineering findings there remain with code review. |
Bottom catch-up can mark a newly arrived mention read without its own viewing dwell. It captures the channel's mutable evidence array, awaits its frontier write, then scans that same array for mentions/broadcasts. A live arrival with an older timestamp can be appended during the await and included in the older operation.
Snapshot the evidence array before the write. Existing permission, lease, message identity and manual-unread guards remain intact. No relay reads or notification-policy changes are added.
Validation:
--no-verifyworkflow.This is separate from #2843 as requested. The storage ordering reproduces the early-read symptom seen in the notification CI failure; attributing that exact trace to this race remains an inference. Hosted CI and human acceptance remain pending; no native/live-account validation is claimed.
Rebased onto main at
ed5b3ac99after #2843 merged. All five bottom catch-up tests passed again on rebased head728e63bf3. Hosted CI must validate this updated head.