Добавить испытания и прогрессию по LevelID

This commit is contained in:
2026-08-19 09:25:32 +03:00
parent 259fcd316b
commit 3de8d45039
37 changed files with 968 additions and 63 deletions
+30 -2
View File
@@ -1,8 +1,8 @@
# Графы решений уровней 1–17
# Графы решений уровней 1–18
Документ фиксирует **авторский маршрут** каждого уровня текущего vertical slice. Он получен из `LevelCatalog`, моделей `LevelDefinition` и фактической логики `GameView`, затем проверен device-level ботами через production-команды движения и прыжка. `targetDeaths` ниже — целевое число жертв для результата уровня, но оно не доказывает минимальность решения.
На 19 августа 2026 года intended route всех уровней 1–17 автоматически выполнен по три раза подряд без retry masking. Device-тесты управляют production `GameView` через те же флаги, что и touch-контролы. Для уровня 8 отдельно проверено восстановление после истечения таймера на дальней стороне `PIT`.
На 19 августа 2026 года intended route всех уровней 1–18 автоматически выполнен по три раза подряд без retry masking. Device-тесты управляют production `GameView` через те же флаги, что и touch-контролы. Для уровня 8 отдельно проверено восстановление после истечения таймера на дальней стороне `PIT`.
## Семантика, общая для графов
@@ -434,6 +434,34 @@ save-v4 состояние. V1–v3 active sessions мигрируют с пус
до push `allDoorsOpen=false`; после push `firstPhysicalObjectX≥920` и Door open;
после release Door остаётся open; затем два отдельных jump edge и `completed=true`.
## Уровень 18 — `Threefold Proof`
**Статус:** доказан production-input ботом, 3/3 последовательных прохождения.
**Ожидаемые и доказанные смерти:** `0`; обязательный challenge-route получает
casualty, time и collectible stars.
```text
LevelID="foundations.threefold-proof", WorldID="foundations"
→ игрок проходит безопасный teaching floor без смертей
→ у x≈650 начинает прыжок к cache=(850,650,58,58)
→ пересекает cache: collectibleFound=true, cache исчезает только для этой попытки
→ продолжает вправо и достигает goal x=2000..2086
→ COMPLETE с deaths=0 и time≤30 s
→ ChallengeResult выдаёт casualty/time/collectible = true, stars=3
→ ProgressStore сохраняет лучшие критерии по стабильному LevelID
→ три последовательных restart-free прохождения воспроизводят 3/3 stars
```
**Контракт:** collectible является опциональным world-space объектом и сохраняется
в active session v5. Restart сбрасывает состояние текущей попытки; завершённый
collectible challenge накапливается в progress v3 независимо от лучших casualty и
time runs. Legacy levels без collectible получают третью звезду за core completion.
**Bot checkpoints:** `deaths=0`; после прыжка `collectibleFound=true` и
`collectibleVisible=false`; затем `completed=true`; `CompletionResult.stars=3`,
`bestStars=3`; новый `ProgressStore` после трёх запусков возвращает 3 звезды для
`foundations.threefold-proof`.
## Проверки, следующие из графов
1. Сохранять полный integrated device-regression: intended route принятых уровней по три раза и отдельный recovery route уровня 8.