verification on linux / google chrome / repository playwright main: 6575ce32508bd7908444241f3719aa33aaf77f90 pr: 4215470d07c5f950a76ad4365fd01042be3de225 real app setup on each revision: add project /home/user/t3code in web ui; select codex gpt-6.1-sol; submit prompt; observe completed provider reply. snooze one minute; wait for Woke; settle without opening; un-settle; mark unread. this creates a genuine local visit through the app. no mock, fixture, synthetic timestamps or database writes. main cold startup with actual browser localStorage copied into a clean browser context: unread server visit before: 2026-10-30T14:30:18.351Z real local visit: 2026-10-30T14:36:49.427Z websocket emitted thread.visit visitedAt=2026-10-30T14:36:49.427Z without opened=true server visit after: 2026-10-30T14:36:49.427Z Done badge disappeared without opening the thread: BUG REPRODUCED pr cold startup: real local visit: 2026-10-30T14:55:28.309Z unread server visit: 2026-10-30T14:48:34.297Z local > server: true startup emitted zero thread.visit commands; server watermark unchanged; Done remained. reload emitted zero thread.visit commands; Done remained. opening thread emitted thread.visit visitedAt=2026-10-30T14:56:40.278Z opened=true; Done cleared. neighboring follow-up Codex gpt-6.1-sol turn completed with reply: neighboring follow-up verified. its completion showed Done while away; opening cleared Done. blacksmith checks: cd apps/web && vp test run --project unit src/hooks/useThreadVisitedMigration.test.ts: 5/5 pass vp run check:changed 9910c0e87469a44a18ce5c381533fc0a06c81ef1: format, lint, knip 1/2, knip 2/2, typecheck (2 packages), tests (1 file): pass worker fetched shallow base history first so check:changed had a merge base. limitation: warm-cache startup on main tried migration before connection and failed silently; a clean shell cache with the actual existing localStorage was necessary to expose the original overwrite. unverified in real app: null-watermark initial migration and older-server compatibility (unit cases passed), native mobile, Electron shell, non-Codex providers, remote/relay.