Добавить production-каталог опасностей

This commit is contained in:
2026-08-19 05:30:56 +03:00
parent cc7f487cf7
commit dc2ebcbf8c
33 changed files with 1160 additions and 37 deletions
+76 -1
View File
@@ -285,9 +285,84 @@ Goal расположен на верхнем уступе за PIT и закр
**Softlock/неопределённость:** исправлены два независимых blocker-состояния: saw-тело больше не соскальзывает с плиты после доставки, а перекрытие floor/lift увеличено до 140 px при сохранении 200 px `PIT` и обязательного вертикального подъёма. Период lift увеличен до `10.0 s`, чтобы нижняя фаза была читаемой при задержанном вводе. Бот теперь явно приземляется на frozen corpse и прыгает с него; доставка saw-тела, три сохранённых тела, посадка, подъём и lift→ledge прыжок подтверждены тремя запусками и стресс-сценарием. Возможная альтернативная двухсмертная трасса не считается blocker, пока intended three-body route остаётся стабильным.
## Уровень 11 — `The Brass Breather`
**Статус:** доказан production-input ботом, 3/3 изолированно и 3/3 в общей hazard-матрице.
**Ожидаемые и доказанные смерти:** `1`.
```text
CRUSHER перекрывает единственный проход
→ первый доброволец входит в активный пресс и оставляет тело
→ следующий доброволец подходит к безопасной границе
→ наблюдает закрытие и следующий переход пресса в REST
→ прыгает через сохранённое тело и проходит пресс в полном окне отдыха
→ достигает goal с одной смертью
```
**Контракт:** `cycleSeconds=4`, `activeSeconds=2.5`; collision активен только в
CRUSH-фазе. Bot snapshot наблюдает `firstHazardActive`, не использует sleeps,
restart или прямую мутацию состояния.
## Уровень 12 — `Blue Funeral`
**Статус:** доказан production-input ботом, 3/3 изолированно и 3/3 в общей hazard-матрице.
**Ожидаемые и доказанные смерти:** `1`.
```text
FIRE перекрывает floor
→ первый доброволец демонстрирует смертельность синего огня
→ после respawn игрок подходит к рассчитанной точке x≈535
→ отдельным takeoff подтверждает airborne state
→ пересекает весь flame box до приземления
→ достигает goal, тело остаётся в уровне
```
**Контракт:** постоянный `FIRE=(700,790,120,90)` с отдельными visual/audio IDs.
Маршрут запрещает вторую смерть на approach, takeoff и clear checkpoints.
## Уровень 13 — `Crossfire Clock`
**Статус:** доказан production-input ботом, 3/3 изолированно и 3/3 в общей hazard-матрице.
**Ожидаемые и доказанные смерти:** `1`.
```text
PROJECTILE каждые 3 s проходит справа налево
→ первый доброволец погибает и показывает линию снаряда
→ после respawn игрок останавливается у x≈600
→ ждёт наблюдаемое окно projectile x=850..930 и прыгает через первый проход
→ останавливается за линией и ждёт следующий цикл x=1350..1450
→ вторым прыжком проходит возвращённый снаряд
→ добегает за spawn снаряда и достигает goal без новых смертей
```
**Контракт:** runtime вычисляет текущий box из `speedX=-400` и сбрасывает его
на исходную позицию по `cycleSeconds=3`. Оба прыжка привязаны к snapshot
координате, а не к wall-clock.
## Уровень 14 — `Steam Charge`
**Статус:** доказан production-input ботом, 3/3 изолированно и 3/3 в общей hazard-матрице.
**Ожидаемые и доказанные смерти:** `1`; дверь обязана открыться.
```text
Door требует signal "blast-gate" от удалённой PRESSURE
→ первый доброволец входит в активный EXPLOSION
→ impulse (550,-500) доставляет тело на PRESSURE x=980..1160
→ тело закрепляется на плите и открывает Door
→ следующий доброволец наблюдает новый BLAST и следующую REST-фазу
→ проходит inactive explosion
→ перепрыгивает сохранённое тело на плите
→ проходит открытую Door и достигает goal
```
**Контракт:** `EXPLOSION` использует data-driven цикл `4/2 s`; inactive-фаза
отличается визуально (`REST`) и не убивает. Device RED с `impulseX=1400`
доказал перелёт тела за плиту; минимальное authored значение `550` стабильно
помещает тело в `firstCorpseX=980`, после чего `allDoorsOpen=true`.
## Проверки, следующие из графов
1. Сохранять полный integrated device-regression: intended route уровней 1–10 по три раза и отдельный recovery route уровня 8.
1. Сохранять полный integrated device-regression: intended route принятых уровней по три раза и отдельный recovery route уровня 8.
2. Отдельно проверить предполагаемый sequence break уровня 2 и необязательность `FREEZER` на уровне 10.
3. Добавить параметризованные проверки restart из ключевых промежуточных состояний.
4. Повторить bot matrix на дополнительных frame rates и поддерживаемых версиях Android.