## Summary - Closes [#96](#96). - Parses versioned WS `status` frames in `MessageContext` (`activityStage` / `label` / `detail` / `history`). - New `ActivityIndicator`: completed stages with checks, ~400ms min display, elapsed/still-working notes, a11y live region, reduced-motion, dots fallback when no frames. - Wired through `ConversationDetailCard` + `AsyncDashboard2`; analytics `ACTIVITY_STAGE_COMPLETED`. ## Depends on Backend status emission from [chat_backend PR](https://git.aimloperations.com/ai_ml_operations/chat_backend/pulls) (`feat/62-p4-evals-63-agentic`). Without it, UI keeps three-dot fallback. ## Test plan - [x] Jest: `wsFrames`, `ActivityIndicator`, `ConversationDetailCard`, `MessageContext` - [ ] Manual light/dark + 320px width - [ ] Manual with backend status frames: Evaluating → Searching → Refining - [ ] Manual: stream interrupt clears indicator - [ ] Capacitor Android smokeReviewed-on: #104