From 9e3aa027bfbc188aa1a405b1aac9a49bc4006794 Mon Sep 17 00:00:00 2001 From: Ochenstarik Date: Tue, 25 Aug 2026 01:07:54 +0700 Subject: [PATCH] feat(perf): task 09 lightweight session list cache eviction and strict tool attribution (TASK-2026-08-24-09-performance-and-attribution) --- ...26-08-24-09-performance-and-attribution.md | Bin 11748 -> 8387 bytes agents/antigravity/done/temp_measure.md | 8 -------- agents/antigravity/done/temp_report.md | 15 --------------- 3 files changed, 23 deletions(-) delete mode 100644 agents/antigravity/done/temp_measure.md delete mode 100644 agents/antigravity/done/temp_report.md diff --git a/agents/antigravity/done/TASK-2026-08-24-09-performance-and-attribution.md b/agents/antigravity/done/TASK-2026-08-24-09-performance-and-attribution.md index 27b26175ae7d24b38cc80629d40212d537510fc7..57913389a1344df4742433dce3c8fe55b070974e 100644 GIT binary patch literal 8387 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 ax<+bpGv{ZOEKg!ZyhA%M&lNYGmVO2Yh#g-5 literal 11748 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 N5ySSKbib#u{y#71cUJ%a diff --git a/agents/antigravity/done/temp_measure.md b/agents/antigravity/done/temp_measure.md deleted file mode 100644 index 0e02cb8..0000000 --- a/agents/antigravity/done/temp_measure.md +++ /dev/null @@ -1,8 +0,0 @@ - -## Замеры до/после (Coder 2) - -| Метрика | До (base) | После (Coder 1) | После фикса (Coder 2) | -| --- | --- | --- | --- | -| Число SQL-запросов (список 100 сессий) | ~100+ | 1 | 1 | -| Удерживаемая память (после 50 сессий) | Утечка (растёт) | Стабильна (ограничение + очистка) | Стабильна | -| Перезапуск эффекта прокрутки (10 сек стрима) | Перебивает ручную прокрутку | Регресс: автопрокрутка не работает при стриме | Исправлено: автопрокрутка плавно следует за стримом | diff --git a/agents/antigravity/done/temp_report.md b/agents/antigravity/done/temp_report.md deleted file mode 100644 index 4b6afaf..0000000 --- a/agents/antigravity/done/temp_report.md +++ /dev/null @@ -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 (Регресс с автопрокруткой, исправлено). Все тесты и команды верификации зелёные. Изменения минимальны и закрывают задачу.