feat: maximize sorter demo realism and add safe agent MVP

Wire live classifyItem into continuous playback, add jam/E-stop cases,
presenter controls (seek/speed/hotkeys), quality modes, demo scripts,
audit docs, and a verify-only autonomous agent CLI with hard safety limits.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Даня Архипов
2026-07-15 16:53:35 +00:00
parent e89c728dd2
commit 985f7c327d
40 changed files with 3358 additions and 453 deletions

View File

@@ -0,0 +1,117 @@
# Базовая линия производительности (Performance Baseline)
**Дата:** 2026-07-15
**Ветка:** `feature/maximum-demo-realism`
**Команды:** `npm test`, `npm run build`
Легенда: **Измерено** · **Оценка** · **Не измерено в этом прогоне** (клиентский FPS на железе жюри).
---
## 1. Тесты
| Метрика | Baseline до изменений | После изменений | Тип |
| ------- | --------------------: | --------------: | --- |
| Passed assertions/tests | 144 | **153** | Измерено |
| Test files | 14 | **16** | Измерено |
| Runner | Vitest | Vitest | — |
| Результат | green | green | Измерено |
Дельта: +9 тестов, +2 файла (в т.ч. расширенный `simulation.test.ts`, `qualityMode.test.ts` и связанные).
---
## 2. Production build
| Метрика | До | После | Тип |
| ------- | -- | ----- | --- |
| Build status | OK | OK | Измерено |
| Build time | ~391 ms | OK (порядок сотен ms) | Измерено / частично |
| Pipeline | `tsc -b && vite build` | то же | Измерено |
### Размеры артефактов (после)
| Артефакт | Raw | Gzip | Тип |
| -------- | --: | ---: | --- |
| CSS | 39.66 kB | 8.79 kB | Измерено |
| Continuous twin JS chunk | 51.29 kB | 13.68 kB | Измерено |
| Main R3F-related chunk (до итерации) | ~881 kB | — | Измерено (baseline до) |
> Точный полный rollup всех чанков «после» зависит от конкретного `vite build` output; CSS и continuous twin зафиксированы аудитом. Main Three/R3F chunk исторически доминирует по весу — это ожидаемо.
---
## 3. Runtime (клиент)
| Метрика | Ожидание / факт | Тип |
| ------- | --------------- | --- |
| Рендер 3D | WebGL в браузере клиента | Измерено (архитектура) |
| Серверный 3D | Не используется | Измерено |
| Target FPS demo/high | 60 | Измерено (presets) |
| Target FPS low/medium | 30 | Измерено |
| Shadows / effects | Выключены в presets | Измерено |
| Adaptive quality | `detectQualityMode` / `adaptQuality` | Измерено |
| Фактический FPS 1080p на GTX клиента жюри | Зависит от клиента | **Не измерено** здесь |
Сервер (OwlPrime) при раздаче статики: load ~0.5–0.6 — **не** является bottleneck FPS (**Измерено** нагрузка хоста).
---
## 4. Качество vs производительность (trade-offs)
| Рычаг | Влияние на FPS | Влияние на реализм |
| ----- | -------------- | ------------------ |
| dprMax 1→1.5 | − | + резкость |
| antialias | − | + края |
| shadows on | −− | + контакт с лентой |
| effects/AO | −−− | + «кино» |
| maxVisibleItems | + при снижении | − плотность потока |
| rollerDetail none/sparse | + | − механика роликов |
| Static rollers (perf commit) | + | − вращение |
Текущая политика: **сначала стабильный FPS**, затем дозированный реализм.
---
## 5. Сравнение до / после (сводка)
| Метрика | До | После | Изменение |
| ------- | -: | ----: | --------: |
| Tests passed | 144 | 153 | +9 |
| Test files | 14 | 16 | +2 |
| Build | OK ~391ms | OK | стабильно |
| Demo playlist cases | 8 | 10 | +2 (faults) |
| Live classify on `/` | playlist-heavy | wired `classifyItem` | качество демо ↑ |
| Quality modes | не как система | low…demo | +адаптация |
| CSS gzip | — | 8.79 kB | зафиксировано |
| Continuous chunk gzip | — | 13.68 kB | зафиксировано |
---
## 6. Нагрузка инструментов разработки на сервере
| Инструмент | Оценка стоимости | Рекомендация |
| ---------- | ---------------- | ------------ |
| `npm test` | Умеренная CPU, минуты | OK on-demand |
| `npm run build` | Короткая CPU | OK |
| Playwright 1 worker | Высокая RAM | Не во время демо |
| Local LLM 7B | Очень высокая VRAM/RAM | Избегать на хосте демо |
| Agent dry-run | = tests+build | Лимит 1 worker |
---
## 7. Регрессионные триггеры (когда обновлять baseline)
Переснять baseline, если:
- включены shadows/effects в default demo;
- добавлен physics engine;
- вырос main chunk >20%;
- FPS жалобы на 1366×768;
- изменён continuous twin chunk существенно.
---
## 8. Вывод
Производительность MVP **приемлема** для статического хостинга и клиентского WebGL. Бюджет сознательно защищён отключёнными тенями/эффектами. Главный риск FPS — будущие визуальные «улучшения без лимитов», а не текущий nginx.