🟢 41🔴 43⚪️ 28Σ 112/112
| 🔴 | Live room · viewer via share link › regular joins host room, chat is visible, host end takes viewer to summary 📈 | 47758 ms | |
| 🔴 | Live wizard · Начать сейчас (CORE-1094) › start-now → title → skip optional → publish → room smoke → cleanup 📈 | 47345 ms | |
| 🔴 | Live room · ended summary (CORE-286 UI) › chat ping survives end onto summary archive, then room is deleted 📈 | 32046 ms | |
| 🔴 | Live room · host join lobby › lobby chrome then join as host without required media 📈 | 47371 ms | |
| 🔴 | Live room · host participants + share › participants panel, one host action, share URL 📈 | 32425 ms | |
| 🔴 | Live room · host in-session chrome › mic/cam chrome then end without orphaned room 📈 | 37262 ms | |
| 🔴 | iPad web layout smoke › quick room controls fit into the first viewport 📈 | 27269 ms | |
| 🔴 | Live room · host chat UI › open chat, send unique bubble, host pin or delete 📈 | 37232 ms | |
| 🔴 | Master live audio settings panel › room-settings dock (or mic/cam toggles when devices not enumerated) 📈 | 48687 ms | |
| 🔴 | iPad web layout smoke › chats screen mounts without tablet scroll trap 📈 | 49888 ms | |
| ⚪️ | Quick Reply Buttons › quick reply buttons have correct styling 📈 | 41140 ms | |
| 🔴 | iPad web layout smoke › home header keeps primary controls visible 📈 | 30227 ms | |
| ⚪️ | Quick Reply Buttons › quick reply buttons disappear after user sends next message 📈 | 44851 ms | |
| 🟢 | voice moderation endpoint contract › the 60 s duration guard rejects an over-long clip (X-Audio-Seconds > cap -> 422) 📈 | 325 ms | |
| 🟢 | voice moderation endpoint contract › a clean clip is approved (200, approved !== false) 📈 | 1091 ms | |
| ⚪️ | Quick Reply Buttons › quick reply buttons only appear on the last AI message 📈 | 45267 ms | |
| 🟢 | voice moderation endpoint contract › chat-api /health is up 📈 | 266 ms | |
| ⚪️ | Self-hosted lives (LiveKit) — RTC media + native (scaffold) › native — LiveKit room renders remote tile on the device (CORE-343 POC) 📈 | 0 ms | |
| ⚪️ | Self-hosted lives (LiveKit) — RTC media + native (scaffold) › web — cohost joins on LiveKit; master + viewer see both 📈 | 0 ms | |
| ⚪️ | Self-hosted lives (LiveKit) — RTC media + native (scaffold) › web — master broadcasts on LiveKit, viewer sees video + SH badge 📈 | 0 ms | |
| ⚪️ | Self-hosted lives (LiveKit) — «SH» badge (web UI) › SH badge renders on a LiveKit quick room 📈 | 20242 ms | |
| 🟢 | Self-hosted lives (LiveKit) — API routing + CORE-401 uid › CORE-401 — room roster agoraUid matches identityToUid(userId) 📈 | 1390 ms | |
| 🟢 | Self-hosted lives (LiveKit) — API routing + CORE-401 uid › CORE-401 — token uid equals identityToUid(identity) on LiveKit 📈 | 1048 ms | |
| 🟢 | Self-hosted lives (LiveKit) — API routing + CORE-401 uid › room RTC token routes to LiveKit for a rtc_livekit master 📈 | 1103 ms | |
| ⚪️ | RU content load (CORE-45) › chats (/chats): screen mounts and does not hang blank 📈 | 0 ms | |
| ⚪️ | RU content load (CORE-45) › home: hero masters load (public content, no auth) 📈 | 0 ms | |
| ⚪️ | RU content load (CORE-45) › practices catalog: public videos load 📈 | 0 ms | |
| ⚪️ | RU content load (CORE-45) › events (/lives): schedule content loads for a signed-in user 📈 | 0 ms | |
| ⚪️ | RU content load (CORE-45) › masters catalog: public masters load 📈 | 0 ms | |
| ⚪️ | Practice reflection › user can dismiss a pending memory fact 📈 | 16386 ms | |
| ⚪️ | Practice reflection › "Что я знаю о тебе" surfaces a candidate fact after several reflections 📈 | 41301 ms | |
| 🔴 | Quick Reply Buttons › clicking a quick reply button sends it as user message 📈 | 37298 ms | |
| ⚪️ | Practice reflection › user can decline reflection without breaking the thread 📈 | 45856 ms | |
| ⚪️ | Quick Reply Buttons › quick reply buttons render on AI message with quick_replies data 📈 | 50166 ms | |
| 🔴 | Practice room completion smoke › public-meta endpoint hides private rooms, exposes public ones 📈 | 31931 ms | |
| 🔴 | Practice reflection › Agapella can follow up after a user reply 📈 | 37350 ms | |
| 🟢 | Practice room completion smoke › create live-led without soundTrackId is rejected 📈 | 659 ms | |
| 🟢 | Practice room completion smoke › live-led create → status → visibility → promote-to-video gate → recordings feed 📈 | 4417 ms | |
| ⚪️ | Practice reflection › completing a practice triggers a reflection from Agapella in Wisdom Council 📈 | 42015 ms | |
| 🟢 | Master video-practice MP4 upload › rejects upload with no title (sanity guard for the multipart form) 📈 | 1141 ms | |
| 🔴 | Master video-practice MP4 upload › uploads a real MP4 and returns the new practice 📈 | 60103 ms | |
| 🔴 | Offline event · catalog RSVP › regular RSVP on a public MasterEvent drops spotsLeft and shows Я иду 📈 | 120075 ms | |
| ⚪️ | Moderation · admin surface (Phase 4C · AMB-129) › Transcripts screen loads and renders its filter 📈 | 0 ms | |
| 🔴 | Moderation · admin surface (Phase 4C · AMB-129) › Moderation queue loads, renders chrome, and triages a pending row when present 📈 | 26568 ms | |
| 🔴 | Moderation · published-content block (Phase 1 · AMB-251) › block-class live title → 422 (not persisted); clean title → accepted 📈 | 27240 ms | |
| ⚪️ | master-profile-publish.spec.ts › master draft stays private until approval, then becomes public 📈 | 35312 ms | |
| 🟢 | content moderation check (/api/moderation/check) › benign Russian text is allowed 📈 | 256 ms | |
| 🟢 | content moderation check (/api/moderation/check) › Russian violent threat is blocked 📈 | 260 ms | |
| 🟢 | content moderation check (/api/moderation/check) › English violent threat is blocked 📈 | 303 ms | |
| 🔴 | CORE-225 offline event duration units › creates a multi-day offline event and shows the same duration in card, calendar, and detail modal 📈 | 98300 ms | |
| 🔴 | Master event public visibility › created master event appears in calendar and public master profile for another user 📈 | 84183 ms | |
| 🔴 | Manifesto upload from RU — presigned direct-to-S3 (CORE-232/291) › manifesto presign -> PUT to S3 round-trips (no origin choke) 📈 | 300069 ms | |
| 🔴 | manifesto-ru-diagnostic.spec.ts › diagnostic: record network of RU manifesto upload 📈 | 20224 ms | |
| 🔴 | manifesto-ru-ui.spec.ts › full UI: master uploads manifesto from RU (real saveManifestoVideo) 📈 | 21213 ms | |
| 🟢 | Master screen-sharing › master owns the setScreenShare endpoint — non-owner gets 403 📈 | 16864 ms | |
| 🔴 | loginAs session (API helper) › loginAs master plants a cookie session off /login 📈 | 27071 ms | |
| 🔴 | Master screen-sharing › screen-share token endpoint refuses non-owners and rejects when recording not started 📈 | 27505 ms | |
| 🔴 | Login form (real UI) › invalid credentials show an error and do not authenticate 📈 | 36375 ms | |
| 🔴 | Master screen-sharing › POST /screen-share persists IsScreenSharing and is idempotent 📈 | 38386 ms | |
| 🔴 | Login form (real UI) › valid credentials log in and store the auth token 📈 | 33548 ms | |
| 🔴 | Master screen-sharing › viewer token and live detail surface broadcasterUid / screenUid / isScreenSharing 📈 | 38725 ms | |
| 🟢 | GET /api/lives/{id}/transcription › hides the transcription from a non-owner caller 📈 | 3983 ms | |
| 🟢 | GET /api/lives/{id}/transcription › rejects unauthenticated callers with 401 📈 | 288 ms | |
| 🟢 | GET /api/lives/{id}/transcription › returns the wire-contract shape for the live's master 📈 | 3281 ms | |
| 🟢 | CORE-170 — live track picker data contract › getMasterVideos feeds valid switchTrack payloads 📈 | 4231 ms | |
| ⚪️ | Live multi-speaker mode › edit downsize — confirm dialog appears when reducing seats below current cohost count 📈 | 0 ms | |
| 🟢 | Live chat author identity (AMB-247 / AMB-248) › live chat broadcast + REST history agree on author identity (avatar + profile target) 📈 | 2297 ms | |
| ⚪️ | Private lives preview mode › rotating the token invalidates the old URL 📈 | 0 ms | |
| ⚪️ | Private lives preview mode › make private → share URL + 404 for anon → publish 📈 | 0 ms | |
| ⚪️ | Live multi-speaker mode › happy path — master creates С гостями + 3, copies invite link, guest joins, tile toggles with mic/cam 📈 | 0 ms | |
| ⚪️ | Live multi-speaker mode › capacity blocker — N+1 guest sees Места заняты with «Смотреть как зритель» CTA 📈 | 0 ms | |
| ⚪️ | Live multi-speaker mode › anonymous guest — unauthenticated user joins via preview link 📈 | 0 ms | |
| 🟢 | Fuzzy search (pg_trgm) › users search: exact substring works (regression baseline) 📈 | 687 ms | |
| 🟢 | Fuzzy search (pg_trgm) › practices search: prefix + typo path 📈 | 1081 ms | |
| 🟢 | Fuzzy search (pg_trgm) › master search: prefix + substring + one-letter typo + transpose + miss 📈 | 1378 ms | |
| 🟢 | Common feed (что у моих) › cursor pagination yields disjoint pages 📈 | 15531 ms | |
| 🔴 | favorites-screen-smoke.spec.ts › Phase C: dashboard#favorites + chip filter 📈 | 38750 ms | |
| 🟢 | Common feed (что у моих) › kinds filter narrows result set 📈 | 1261 ms | |
| ⚪️ | Common feed (что у моих) › subscribe to master → master content surfaces in feed 📈 | 1343 ms | |
| 🟢 | Common feed (что у моих) › authenticated user with no follows → empty feed 📈 | 6565 ms | |
| 🟢 | Common feed (что у моих) › anonymous → 401 📈 | 389 ms | |
| 🟢 | DM gate (AMB-246 — mutual-follow dropped) › legacy create-by-masterProfileId still works for master targets 📈 | 732 ms | |
| 🟢 | DM gate (AMB-246 — mutual-follow dropped) › anonymous viewer → followsMeBack/canMessage are null 📈 | 404 ms | |
| 🟢 | DM gate (AMB-246 — mutual-follow dropped) › self-message → 403 MESSAGE_NOT_ALLOWED 📈 | 435 ms | |
| 🟢 | DM gate (AMB-246 — mutual-follow dropped) › PublicUserProfile: canMessage is follow-independent; followsMeBack tracks direction 📈 | 2473 ms | |
| 🟢 | DM gate (AMB-246 — mutual-follow dropped) › mutual follow → created + message send works → unfollow → messages still send 📈 | 4562 ms | |
| 🟢 | DM gate (AMB-246 — mutual-follow dropped) › only caller follows other → still created 📈 | 1108 ms | |
| 🟢 | DM gate (AMB-246 — mutual-follow dropped) › no follow either way → conversation is created (gate lifted) 📈 | 510 ms | |
| 🔴 | design-system-tier4-smoke.spec.ts › design-system tokens + chats surface live on preview 📈 | 22003 ms | |
| 🔴 | My Calendar smoke test › legacy /api/user/calendar path still serves unified events (not 500) 📈 | 27244 ms | |
| 🔴 | My Calendar smoke test › guest (no JWT) gets 401 on my-calendar 📈 | 27247 ms | |
| 🔴 | dashboard-circle-and-calendar-fix.spec.ts › Phase C-2: КРУГ hidden for non-master + footer below calendar fold 📈 | 180065 ms | |
| 🔴 | My Calendar smoke test › month filter accepts YYYY-MM and returns only that month 📈 | 31987 ms | |
| 🔴 | CORE-755 — общий таймлайн практики › участника возвращает на позицию эфира после перемотки 📈 | 31982 ms | |
| 🟢 | CORE-286 — finished room serves chat history › an ended quick room WITHOUT a recording still serves GET /messages 📈 | 2055 ms | |
| 🟢 | AI moderation gate · create surfaces › video practice: block-class Title/Description → 422 before any file is required 📈 | 324 ms | |
| 🟢 | AI moderation gate · create surfaces › community-feed post: block-class Content → 422 (not persisted); benign → created 📈 | 1529 ms | |
| 🟢 | content-creation moderation gate › a benign Live is created normally (200/201) then cleaned up 📈 | 2506 ms | |
| 🟢 | content-creation moderation gate › a Live with a violent title is rejected (422) and not created 📈 | 435 ms | |
| ⚪️ | chat-overrides-smoke.spec.ts › Phase 4e+4f: chat surface renders new Agapella overrides 📈 | 44286 ms | |
| 🔴 | My Calendar smoke test › add → badge → list → mark-viewed → remove 📈 | 60100 ms | |
| 🔴 | Logged-in app shell › User: dashboard has no Create Live-session wizard CTA 📈 | 32227 ms | |
| 🔴 | auth-register-onboarding.spec.ts › new user reaches the dashboard after first-login profile onboarding 📈 | 20246 ms | |
| 🔴 | Logged-in app shell › Master: header/menu → practices, schedule, chats, dashboard 📈 | 27245 ms | |
| ⚪️ | Agape Highlights rendering › highlight phrases are tappable and send the reply as user message 📈 | 45296 ms | |
| 🔴 | AMB-47 — host stays in room, room not prematurely ended › Veronika scenario: scheduled video-practice stays live past scheduledAt+countdown 📈 | 107784 ms | |
| 🟢 | AI chat over Agape.ChatApi (flip gate) › a sent message persists across a hub reconnect 📈 | 3017 ms | |
| 🟢 | AI chat over Agape.ChatApi (flip gate) › Wisdom Council: send → a companion replies 📈 | 2972 ms | |
| 🟢 | AI chat over Agape.ChatApi (flip gate) › 1:1 AI companion: send → streamed reply arrives 📈 | 4875 ms | |
| 🟢 | AI chat over Agape.ChatApi (flip gate) › provisions the Wisdom Council + a 1:1 companion channel 📈 | 1061 ms | |
| 🔴 | Agape Highlights rendering › highlighted message renders inside a proper bubble 📈 | 27246 ms | |
| 🔴 | Admin UI smoke › login + every sidebar route loads 📈 | 20628 ms |