Завершить третий этап и подготовить сборку 0.6.0

This commit is contained in:
2026-08-18 19:28:51 +03:00
parent fa68e2e04a
commit 55b90fb0a5
7 changed files with 139 additions and 6 deletions
+14 -3
View File
@@ -6,7 +6,7 @@
## 1. Текущее состояние
Инженерная часть этапа 2 завершена; этап 3 начат с настроек мобильного управления:
Инженерная часть этапов 2 и 3 завершена:
- реализованы 10 последовательных уровней;
- работают движение, прыжок и мобильное multitouch-управление;
@@ -19,6 +19,12 @@
- тело, доставленное пилой на `PRESSURE` уровня 10, фиксируется после оседания и больше не соскальзывает с плиты;
- restart из промежуточного состояния уровня 10 очищает тела, сигналы, таймер и удерживаемый ввод;
- Settings screen сохраняет размер и opacity touch-controls и режим вибрации; три form-factor контракта и защита от повторного held-jump покрыты device-тестами;
- добавлены сохраняемые Standard/Large text и high-contrast режимы, видимый статус сигналов/дверей/respawn и локализованные content descriptions;
- короткое трёхшаговое обучение не блокирует gameplay и после Skip/Done не показывается повторно;
- экран результата разделяет текущий и лучший результаты, показывает targets, следующую цель и рабочие Level select/Replay/Next level переходы;
- весь Canvas UI, десять названий и подсказок доступны на русском и английском; язык хранится отдельно и не меняет progress/control settings;
- Stage 3 focused matrix: 14/14 методов без retries; UI contracts GREEN на 20:9, 16:9 и логическом 16:10 tablet viewport;
- final Stage 3 Android 16 matrix: `OK (30 tests)` без filters/retries за `1,409.366 s`; все intended routes 1–10, recovery/stress, lifecycle, restart и UI/persistence contracts GREEN;
- final integrated Android 16 matrix: 16/16 методов, 36 игровых выполнений, lifecycle и restart; wall time `9:32.496`;
- финальный debug APK проверен на Android 16: установка, холодный запуск, ZIP-структура и v1/v2-подписи корректны.
@@ -176,10 +182,15 @@ Performance-оговорка: исторический критерий этап
8. холодный запуск и проверка crash-буфера;
9. ручной smoke-тест уровня 1 и одного сложного комбинированного уровня.
## 5. Завершение этапа 2 и следующая итерация
## 5. Завершение этапов 2–3 и следующая итерация
Инженерный scope этапа 2 закрыт: уровни 1–10 проходят intended route по три раза, уровень 8 имеет restart-free recovery, уровень 10 использует все три тела и сохраняет тело на lift-плите, а restart возвращает чистое состояние. Передаваемые результаты — обновлённый проект, проверенный APK и [`STAGE2_QA_REPORT.md`](STAGE2_QA_REPORT.md).
Этап 3 начат задачей `goon-game-controls-settings`: добавлены сохраняемые пресеты размера/opacity controls и вибрации, фактическое расширение touch target и защита от повторного прыжка при удержании. Проверки выполнены на 20:9, логическом 16:9 и tablet-sized экране; подробности находятся в [`STAGE3_CONTROLS_QA.md`](STAGE3_CONTROLS_QA.md). Следующие slices этапа 3 — accessibility, обучение/result screen и RU/EN локализация.
Этап 3 завершён: к сохраняемым пресетам управления добавлены accessibility,
неблокирующее обучение, полный result flow и RU/EN локализация. Совместный
device-gate проверяет сохранность progress/settings, а UI contracts выполнены на
20:9, 16:9 и tablet-sized экране. Подробный итог находится в
[`STAGE3_QA_REPORT.md`](STAGE3_QA_REPORT.md). Следующая инженерная итерация — этап
4, перенос описаний уровней в валидируемый формат и инструменты контента.
Параллельно внешний QA должен выполнить `goon-game-human-playtest`: по две ручные сессии каждого уровня без подсказок разработчика. До получения этого протокола milestone Vertical Slice нельзя называть принятым внешними тестировщиками.
+6
View File
@@ -54,3 +54,9 @@
- localized строки должны заменить английский текст и в Canvas, и в content
descriptions одним источником, не удаляя read-only acceptance hooks;
- minSdk 23, control settings, progress format и Stage 2 physics/levels не менялись.
## Финальная интеграция
Все пять device-методов выполнены в составе unfiltered Android 16 gate:
`OK (30 tests)`, `1,409.366 s`. Итоговая сборка и form-factor evidence описаны в
[`STAGE3_QA_REPORT.md`](STAGE3_QA_REPORT.md).
+6
View File
@@ -57,3 +57,9 @@ recreation, progress, control size, opacity, and vibration preservation.
- `LevelCatalog.java` and level geometry are not modified. Canvas rendering now uses
`GameStrings.levelTitle/levelHint`; the existing English fields remain compatible
with gameplay tests and older callers.
## Final integration
`GameLanguagePersistenceTest` and the combined Stage 3 RU/EN acceptance tests passed
inside the unfiltered Android 16 gate: `OK (30 tests)`, `1,409.366 s`. See
[`STAGE3_QA_REPORT.md`](STAGE3_QA_REPORT.md) for the release evidence.
+7
View File
@@ -55,3 +55,10 @@ BUILD SUCCESSFUL
`Saved best`.
4. По очереди проверить `Level select`, `Replay`, `Next level`; завершённость
уровня, unlocked level и control preset должны сохраниться.
## Финальная интеграция
`OnboardingStoreTest`, оба `OnboardingAndResultFlowTest` и объединённый RU/EN
acceptance прошли в составе unfiltered Android 16 gate: `OK (30 tests)`,
`1,409.366 s`. Релизная версия назначена `0.6.0-stage3-complete`; общий отчёт:
[`STAGE3_QA_REPORT.md`](STAGE3_QA_REPORT.md).
+93
View File
@@ -0,0 +1,93 @@
# Stage 3 QA report
Дата: 18 августа 2026 года.
Версия: `0.6.0-stage3-complete` (`versionCode=7`).
## Результат
Инженерный scope этапа 3 завершён. В общую сборку интегрированы:
- сохраняемые размер и прозрачность touch-controls и режим вибрации;
- Standard/Large text, high contrast, видимые состояния сигналов, дверей и respawn;
- локализованные accessibility descriptions;
- полная RU/EN локализация Canvas UI, десяти названий и подсказок уровней;
- неблокирующее трёхшаговое обучение с постоянным Skip/Done;
- result screen с текущим и лучшим результатом, targets, следующей целью и
рабочими переходами Levels/Replay/Next;
- совместная сохранность языка, accessibility, controls и прогресса после recreate;
- state-driven боты уровней 1–10, restart-free recovery уровня 8 и проверка
неподвижного тела на lift-плите уровня 10.
## Автоматические проверки
Финальный clean gate:
```text
./gradlew clean testDebugUnitTest lintDebug assembleDebug assembleDebugAndroidTest
BUILD SUCCESSFUL
66 actionable tasks
42/42 JVM tests
```
Финальный unfiltered device gate выполнен на холодно запущенном Android 16 AVD,
физический размер `1080x2400` (20:9), после установки точных APK clean-сборки и
`pm clear com.projectsacrifice.game.debug`:
```text
AndroidJUnitRunner
Tests run: 30
Time: 1,409.366 s
OK (30 tests)
```
Runner запускался без `-e class`, retries и повторного запуска отдельных методов.
Матрица включает все intended routes уровней 1–10 по три раза, дополнительные
stressed/recovery маршруты уровня 8, throttled mastery и sliding-body regression
уровня 10, lifecycle, restart и все Stage 3 persistence/UI contracts.
До финального объединения UI contracts также прошли на логических viewport:
- 16:9 safe viewport — GREEN, `66.208 s`;
- 16:10 tablet-sized `2560x1600` landscape — GREEN, `167.823 s`;
- focused Stage 3 matrix — 14/14 GREEN, `576.355 s`.
Последующие изменения касались automation/read-only snapshot и не меняли UI
геометрию; финальный 20:9 gate повторно проверил весь интегрированный интерфейс.
## RED → GREEN evidence
Первый полный 30-тестовый прогон был завершён полностью и дал 27/30 GREEN. Три
нагрузочные границы были исправлены без изменения физики уровней или retry:
1. Level 3: takeoff начинался на несколько пикселей поздно (`x=505.67633`,
`y=664.41797`, лишняя смерть). State-driven точка старта получила запас и
повторно прошла 3/3 внутри полного load-order.
2. Level 6: координатный checkpoint не доказывал опору на frozen block; добавлен
обязательный `playerOnGround`, после чего landing route прошёл 3/3.
3. Level 10: бот мог прыгнуть на лифт во время его восходящей фазы и упасть в PIT
(`x=1942.7063`, deaths=4). Snapshot расширен read-only направлением движения;
посадка разрешается на нисходящей фазе, normal 3/3 и throttled route GREEN.
Level 8 отдельно получил исходящую фазу горизонтальной платформы, безопасное
позиционирование под recovery relay и перед финальным прыжком. Финальный suite
подтвердил stressed 1/1, intended 3/3 и recovery 3/3 без смерти/restart.
## Проверка APK
Финальный `app-debug.apk` проверен как самостоятельный устанавливаемый артефакт:
- ZIP/APK-структура: `unzip -t` без ошибок;
- package: `com.projectsacrifice.game.debug`;
- версия: `versionCode=7`, `versionName=0.6.0-stage3-complete-debug`;
- `minSdkVersion=23`, `targetSdkVersion=34`;
- подпись: `apksigner verify` GREEN, схемы v1 и v2;
- SHA-256: `7be25ea96cf0de7ea1930335b3570bd9def93cdb48029e24e4c9c14078e4195d`;
- clean install и cold launch на Android 16: `Status: ok`, `LaunchState: COLD`,
`TotalTime: 1401 ms`; crash-буфер пуст.
## Границы приёмки
Инженерный Stage 3 gate закрыт. Отдельная задача ручного внешнего playtest остаётся
открытой: реальные тестировщики должны пройти каждый уровень без подсказок
разработчика. Этот внешний протокол не подменяется автоматическими ботами.