Files
pinball-duel/KNOWN_ISSUES.md
aevgarik a1b0ae9e96 Post-codex-review-3 docs: KNOWN_ISSUES + playtest protocol
- KNOWN_ISSUES.md: dev-only vite/esbuild moderate CVEs с impact analysis
  (production бандл не затронут), mitigation, плановый vite 5→8 + vitest 1→3
  апгрейд перед Phase 5; AI distinguishability caveat с ссылкой на playtest.
- playtest-protocol.md: 20-матчевая blind-attribution методика для закрытия
  Phase 2 DoD «тестер различает 4 личности»; рубрика per-match, expected
  tells (для оценщика, не тестера), randomization protocol, failure-mode
  follow-ups, report template, codex-automation roadmap.
- README.md: новый раздел «Operational docs» с cross-ref на оба файла.

Не код — операционная документация для closure Phase 2 и трекинга backlog.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 04:10:04 +03:00

3.6 KiB
Raw Blame History

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 — 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 с внешним тестером (не разработчик) до закрытия Phase 2. Pass-bar: ≥75% blind-attribution accuracy.


Cross-references

  • Phase roadmap: 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-*)