* fix(session): hold a turn's row updates until the session's row is queued
The record hold covered only the fan-out's events. A turn taken during a
slow greeting runs before Create queues the session's row, and what it
changes on that row went to the writer ahead of the INSERT, matching no
row: the title naming gives the conversation (the row takes the spec's,
so it was lost), and a connection chosen or video seen between Create
building the row and queueing it.
SawVideo, chose and retitle now queue through the same hold as the
turns, in order. Describe and the voice switch run only on a session
the manager already lists, after its row is queued.
Closes AI-1925
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* AI-1925: Note the queued session updates in the changelog
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
* AI-1925: Read the spec under labelMu where a login's chose can write it
sessionRow, row, the episode card, the title ask and the manager's lookups copied the
whole spec while chose replaced spec.ConnectorSelections. Spec() copies it under labelMu.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
* AI-1925: Run the spec reads against a login's chose under -race
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>