- Critical #1: anti-stuck watchdog для ball. Если speed < 40 px/sec
дольше 1.5s — random nudge (350 px/sec) в сторону одних из ворот.
Skip активен когда booster cradle. + min-speed 2.0 (Matter units)
после bumper-hit, чтобы curve не абсорбировал энергию.
Telemetry: ball_unstuck event.
- High #2: touch L/R в aiming-фазе теперь вызывают booster.rotateAim()
вместо flipper.activate() — mirror keyboard logic. Mobile aiming
теперь работает.
- High #3: Hard difficulty label явно помечен «(partial) — AI cradle —
позже». Согласно sprint-mode scope (см. KNOWN_ISSUES.md).
- Medium #4: MatchTracker.recordBoosterUsed('player') вызывается на
successful attemptCradle → matchResult.boostersUsed теперь корректен.
AchievementEvaluator unlock'ает cradle_first_use при boostersUsed > 0
(с idempotency через already-unlocked check). +3 unit-теста.
- Medium UX #5: full-screen overlay'и в MainMenuScene (personality
selector, difficulty selector, stub message) теперь alpha=1.0
(раньше 0.92/0.85 — фон просвечивал, ощущение «наслоения»).
- Low #6: footer «Phase 0-2» → «Phase 0-3 dev build».
88/88 tests (было 85). typecheck/lint/build ✅.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>