Завершить третий этап и подготовить сборку 0.6.0
This commit is contained in:
+14
-3
@@ -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 нельзя называть принятым внешними тестировщиками.
|
||||
|
||||
@@ -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).
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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).
|
||||
|
||||
@@ -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 остаётся
|
||||
открытой: реальные тестировщики должны пройти каждый уровень без подсказок
|
||||
разработчика. Этот внешний протокол не подменяется автоматическими ботами.
|
||||
Reference in New Issue
Block a user