# Known Issues Каталог известных проблем и плановых работ. Обновляется при каждом codex/external review. ## Toolchain (build-time, dev-only — НЕ попадает в production bundle) ### `npm audit`: 4 moderate vulnerabilities в цепочке vite@5.4.21 **Дата фиксации:** 2026-05-24 (codex review #3, HEAD `bb9f720`). **Затронуто:** `esbuild ≤ 0.24.2`, транзитивно через `vite@5.x` и `vitest@1.x`. **CVE / advisories:** - [GHSA-67mh-4wv8-2f99](https://github.com/advisories/GHSA-67mh-4wv8-2f99) — esbuild dev-server CORS: встроенный esbuild dev-server отражает произвольный `Origin`, что позволяет cross-origin чтение source-кода во время разработки. **Impact analysis:** - **Production bundle:** не затронут. Vite/Rollup собирают финальный бандл во время `npm run build`; esbuild-код не отгружается клиенту. На YG/RuStore/Play загружается только `dist/` (см. `vite.config.ts`, `build` section). - **Dev-server:** уязвим только при запуске `npm run dev` И биндинге на доступный по сети адрес. Vite по умолчанию слушает `127.0.0.1`. **Mitigation (текущий):** - НЕ запускать dev-server с флагом `--host 0.0.0.0` или `--host` в untrusted сетях. Команда `npm run dev` дефолтно safe. - В CI и production builds esbuild dev-server не запускается вовсе. **Resolution plan:** Контролируемый апгрейд toolchain перед **Phase 5** (YG SDK integration), когда build chain в любом случае пересматривается: - `vite 5.x → 8.x` — major upgrade, ломает API: - `build.rollupOptions.output` — изменён shape - Plugin lifecycle hooks (`buildStart`, `transform`) — сигнатуры - Возможны проблемы с `base: './'` на YG (требует проверки) - `vitest 1.x → 3.x` — major upgrade, ломает API: - Test runner v3 API (`setupFiles`, `globals`) - Coverage provider config (`@vitest/coverage-v8` обязателен) Текущий ETA: ~ конец июня 2026 (вместе с Phase 5 prep). Не блокирует Phase 3-4. --- ## Phase 2 — game-side ### AI personality distinguishability — codified, требует внешней валидации **Дата фиксации:** 2026-05-24 (codex review #3). Поведенческие отличия 4 личностей реализованы (`PersonalityModifier` в `src/ai/AIPlayer.ts`, специальные хуки в `DefensiveAI`/`AggressiveAI`/`GhostAI`/`TricksterAI`). Однако **Phase 2 DoD #X** — «тестер различает 4 личности после 5 матчей» — не доказуем code-only проверкой; требует blind playtest. **Resolution plan:** Прогон по [`playtest-protocol.md`](./playtest-protocol.md) с внешним тестером (не разработчик) до закрытия Phase 2. Pass-bar: ≥75% blind-attribution accuracy. --- ## Cross-references - Phase roadmap: [`README.md#фазовый-план`](./README.md#фазовый-план) - Concept docs: `~/Knowledge/Projects/pinball-duel/` - Audit history: `~/Knowledge/Projects/pinball-duel/index.md` (10 раундов до `dc53623`, затем codex rounds #1-3 в git log с тегом `Post-codex-review-*`)