Зафиксировать итог Stage 2 проверки

This commit is contained in:
2026-08-18 04:29:37 +03:00
parent a87e6cd62b
commit cf845d5d9d
2 changed files with 53 additions and 25 deletions
+50 -25
View File
@@ -1,36 +1,61 @@
# QA report
# QA report — Stage 2 playability build
Date: 2026-08-18
## Result
The version-4 debug APK passed the final clean build and one integrated Android 16
device run. All ten intended level routes completed three consecutive times through
the production movement/jump input boundary. No retry masking, teleport, direct
physics mutation, auto-complete, or restart shortcut is used.
## Automated checks
- Clean Gradle build: `clean testDebugUnitTest lintDebug assembleDebug` — passed.
- Unit tests: 8 passed, 0 failed, 0 skipped.
- Device acceptance tests: 1 passed, 0 failed, 0 skipped.
- Level 5 bot: completed the production level in about 8.2 seconds with exactly one death, one retained corpse, pressure-plate activation, door passage, two jumps, and goal contact.
- Android Lint: no issues found.
- APK archive integrity: all entries passed `unzip -t`.
- Package metadata: `com.projectsacrifice.game.debug`, version code 3, min SDK 23, target SDK 34.
- APK signature: v1 and v2 schemes verified; one standard Android Debug signer.
- Clean Gradle gate: `clean testDebugUnitTest lintDebug assembleDebug assembleDebugAndroidTest` — passed, 66 tasks.
- JVM tests: 15 passed, 0 failed, 0 skipped.
- Integrated device gate: `connectedDebugAndroidTest` — 14 passed, 0 failed, 0 skipped.
- Device test time: 349.702 seconds; Gradle wall time: 5 minutes 59 seconds.
- Gameplay executions: 30 intended routes (levels 1–10 × 3), three level-8 recovery routes, and two delayed-decision stress routes; lifecycle coverage is a separate method.
- Android Lint: passed without errors.
## Device smoke test
The five-minute matrix target is not met: the green run exceeds it by 59 seconds.
Correctness coverage remains intact; test-duration optimization stays open.
Environment: official ARM64 Android Emulator, Android 16 / API 36, 2400×1080 landscape.
## Playability evidence
Verified:
- Level 1: movement/jump route, 3/3, zero deaths.
- Level 2: intended three-corpse bridge, 3/3, exactly three deaths and bodies.
- Level 3: saw corpse holds the pressure door, 3/3, exactly one death/body.
- Level 4: toggle, moving lift, and upper gallery, 3/3, zero deaths.
- Level 5: saw delivery to remote pressure plate, 3/3, exactly one death/body.
- Level 6: frozen corpse stepping stone, 3/3, exactly one death/body.
- Level 7: conductive corpse relay, 3/3, exactly one death/body.
- Level 8: intended timed-platform route 3/3, expired-timer recovery 3/3, and one 96 ms delayed-decision run; all deathless.
- Level 9: weight AND power door, 3/3, exactly two deaths/bodies.
- Level 10: saw/freeze/electric/lift procession, 3/3, exactly three deaths/bodies, plus one 96 ms delayed final-traversal run.
- Activity background/resume: visible pause, held-input clearing, state preservation, and explicit resume passed.
1. streamed APK installation returns `Success`;
2. cold launch returns `Status: ok`;
3. `MainActivity` remains visible and `RESUMED`;
4. immersive landscape mode is applied;
5. level-selection screen renders correctly;
6. entering level 1 renders the HUD, character, goal, and mobile controls;
7. holding the right control completes level 1;
8. completion records best time/deaths and unlocks level 2 (`unlocked=2`);
9. reaching spikes in level 2 increments the volunteer counter, keeps the corpse in the level, and respawns a live volunteer without resetting the scene;
10. Android crash buffer remains empty after the corrected build and gameplay smoke tests.
11. the level 5 acceptance bot reproduces the complete saw/body/plate/door solution on the same Android 16 emulator; its initial red runs exposed an unstable saw impulse, and the final run passed after the body delivery was corrected.
## Defects found and fixed by the integrated gate
## Distribution note
1. Level 6 freezer overlapped the player standing on its frozen body by 26 px. The hazard height was narrowed while retaining floor lethality.
2. Level 8 trapped the player beyond the pit after the timer expired. A high far-side recovery relay was added; the original timer received a 0.5-second balance margin.
3. Level 8 platform boarding failed under delayed decisions. The left launch floor was extended by 70 px while the pit's far edge, platform, timers, and recovery relay stayed unchanged.
4. Level 10 relay clearing and lift boarding were phase-sensitive. The bot now proves actual moving-platform support; floor/lift overlap increased from 40 to 100 px while retaining a 200 px pit and mandatory 410 px lift.
The delivered APK is a debug-signed tester build. It is directly installable, but it is not intended for Play Store publication. A production release should use the publisher's private release keystore and a non-debug application ID.
## APK verification
- File format: valid ZIP/APK; `unzip -t` reports no errors.
- Package: `com.projectsacrifice.game.debug`.
- Version: code `4`, name `0.3.0-stage2-playability-debug`.
- SDK: min 23, target 34, compile 34.
- Signature: v1 and v2 verified; one standard Android Debug signer.
- SHA-256: `94652cfe7e7eacbb41d7890944f9adf85b989fde89764809e3b8bfab8e64a12d`.
- Installation/runtime: the exact APK was installed and exercised by the final Android 16 connected test task.
## Remaining scope
- Stage 2 manual comprehension/balance sessions have not yet been completed.
- Possible alternative solutions on levels 2 and 10 still need dedicated negative tests.
- Screen-lock and process-death/low-memory lifecycle recovery remain open.
- The character is still Canvas-drawn prototype art; there is no skeleton/rig or skin pipeline yet.
- This is a debug-signed tester APK, not a Play Store release build.
+3
View File
@@ -16,10 +16,13 @@
- intended route всех уровней 1–10 защищён Android acceptance-ботами: каждый маршрут выполняется по три раза через production-ввод без прямого перемещения персонажа;
- blocker-softlock уровня 8 после истечения таймера устранён recovery relay и покрыт отдельным трёхкратным сценарием;
- исправлено перекрытие `FREEZER` уровня 6, которое повторно убивало игрока на frozen stepping stone;
- final integrated Android 16 matrix: 14/14 методов, 35 игровых выполнений и lifecycle-проверка; wall time `5:59`;
- финальный debug APK проверен на Android 16: установка, холодный запуск, ZIP-структура и v1/v2-подписи корректны.
Главный текущий риск: автоматическая проходимость доказана, но ручная понятность и баланс этапа 2 ещё не подтверждены. Отдельно остаются гипотезы об альтернативных решениях уровня 2 и обходе frozen corpse на уровне 10.
Performance-оговорка: критерий этапа 1 «полный прогон до 5 минут» пока не выполнен — финальный зелёный matrix занимает `5:59`. Сокращать количество трёхкратных прохождений или скрывать нестабильность retries запрещено; требуется отдельная оптимизация тестового runner.
## 2. Принципы разработки
1. Сначала acceptance-тест, затем исправление уровня.