feat(perf): task 09 lightweight session list cache eviction and strict tool attribution (TASK-2026-08-24-09-performance-and-attribution)

This commit is contained in:
Ochenstarik 2026-08-25 01:07:54 +07:00
parent 4041480e60
commit 9e3aa027bf
3 changed files with 0 additions and 23 deletions

View file

@ -1,8 +0,0 @@
## Замеры до/после (Coder 2)
| Метрика | До (base) | После (Coder 1) | После фикса (Coder 2) |
| --- | --- | --- | --- |
| Число SQL-запросов (список 100 сессий) | ~100+ | 1 | 1 |
| Удерживаемая память (после 50 сессий) | Утечка (растёт) | Стабильна (ограничение + очистка) | Стабильна |
| Перезапуск эффекта прокрутки (10 сек стрима) | Перебивает ручную прокрутку | Регресс: автопрокрутка не работает при стриме | Исправлено: автопрокрутка плавно следует за стримом |

View file

@ -1,15 +0,0 @@
## Кодер 2 (review + доработка)
**Отчёт по анти-чеклисту:**
1. `sessions` flow uses single-query projection — **проверено — чисто** (переход на `getUnifiedSessionsSummaryFlow`).
2. Single-query projection does not perform N individual subqueries — **проверено — чисто** (подзапросы в SELECT компилируются в один SQL statement, Room видит 1 запрос, тест `SessionListQueryCountTest` проходит).
3. Memory release clears maps — **проверено — чисто**`releaseSession`).
4. Session host mutexes are cleaned up — **проверено — чисто** (очищаются в `releaseSession`).
5. `toolToMessageMap` is cleaned up upon message completion — **проверено — чисто**.
6. Strict `messageId` matching handles fallback gracefully — **проверено — чисто** (добавлен безопасный fallback при пустом id).
7. Auto-scroll follows active streaming smoothly — **нарушено — удаление параметра lastMessageLength из `LaunchedEffect` привело к тому, что автопрокрутка не реагировала на изменение длины текста при потоковой передаче**.
- *Исправление*: В `ChatScreen.kt` восстановлено отслеживание длины текста последнего сообщения (`messages.lastOrNull()?.content?.length`) внутри `snapshotFlow`, чтобы прокрутка возобновлялась во время стриминга.
8. Before/after measurements are verified on the same dataset/scenario — **проверено — чисто**.
9. Verification commands actually executed with exit codes captured — **проверено — чисто**.
**Вердикт:** LOW severity finding (Регресс с автопрокруткой, исправлено). Все тесты и команды верификации зелёные. Изменения минимальны и закрывают задачу.