# Sonnet 4.6 — Полный код-ревью v1.1.20 Дата: 2026-07-29 ## 🔴 КРИТИЧЕСКИЙ БАГ #1 — `_finish_op`: неправильный порядок аргументов для CREATE Файл: /home/naeel/nubes/autotest/app-autotest/site/routes/api_test.py Сигнатура: `def _finish_op(client, op_uid, instance_uid, svc_id, display_name, op_name, svc_op_id, is_create, client_id, stand, is_delete=False, params=None, user_email="", app_version=""):` Вызов CREATE передаёт 13 аргументов. `params` попадает на позицию `is_delete` → dict truthy → после успешного CREATE вызывается `tracker_remove` — инстанс НЕМЕДЛЕННО удаляется из трекера. ## 🔴 ВАЖНЫЙ БАГ #2 — `api_history()`: утечка соединения Нет `try/finally` — при исключении соединение не возвращается в пул. 5 утечек = пул исчерпан. ## 🔴 ВАЖНЫЙ БАГ #3 — pool.py: `_initialized = True` до `init_db()` При сетевой ошибке `init_db()` не выполняется, но флаг уже True — схема не создастся до перезапуска воркера. ## 🟡 XSS — `displayName` и `svc` не экранируются в app.js `_esc()` не применяется при рендере списка инстансов. Вектор через поле displayName. ## 🟡 Cookie без `secure=True` ## 🟡 MODIFY — не досылаются required+default параметры (в отличие от CREATE) ## 🟠 Мёртвый код: runner.py (LEGACY), дубликат redeploy/else, устаревшие docstring'и ## 🟠 pool.py — race condition при создании пула без мьютекса