diff --git a/applications/PoP/roomtest/bug_closed.md b/applications/PoP/roomtest/bug_closed.md
index ac5da13..774f619 100644
--- a/applications/PoP/roomtest/bug_closed.md
+++ b/applications/PoP/roomtest/bug_closed.md
@@ -702,3 +702,42 @@ dir_56_none`. То есть стражи — такая же часть дан
стоит колонкой правее тела, — врождённое свойство движка (один спрайт = один
тайл при спрайте шире колонки). Сверено в SDLPoP: там так же. Подробности — в
разделе «НЕ БАГИ» выше.
+
+
+## BUG-LOOSE-2. Осколки только от одной из двух падающих плит — **ЗАКРЫТ**
+
+**Симптом.** Комната 12, соседние падающие плиты (0,1) и (0,2): после
+пробежки осколки появляются только на (1,2), на (1,1) — нет. В комнате 7
+(плиты 0,5/0,6 → 2,5/2,6) обе дают осколки.
+
+**Корень.** Гипотеза автора отчёта подтвердилась чтением кода: Кид уходит в
+комнату 15 раньше, чем долетает плита (0,1). Наш падающий кусок был привязан
+к ТЕКУЩЕЙ комнате — `pop_loose_reset()` на смене комнаты звал
+`pop_loose_mob_reset()` и гасил всё, что ещё летит, а тайл под куском читался
+из карты отрисованной комнаты. Кусок уничтожался, `loose_land` не случался,
+щебень не клался. В комнате 7 обе плиты успевают сесть до ухода — потому там
+и выглядело правильно.
+
+В оригинале `mobs[]` чистится ТОЛЬКО в `start_level` (seg003:88); `do_mobs`
+(seg007:1063) прокручивает все куски независимо от `drawn_room`, `move_loose`
+работает по `curmob.room`, а `redraw_at_cur_mob` (seg007:132C) сверяется с
+`drawn_room` лишь для ОТРИСОВКИ.
+
+**Фикс.** У куска появилось поле `room` (`curmob.room`). На смене комнаты
+зовётся `pop_loose_mob_room_changed()` — сбрасывает только heal-историю, а
+полёт продолжается. Тайл читается через `mob_tile_at()` (своя комната —
+`tile_code`, чужая — `pop_level_tile`). Приземление в покинутой комнате пишет
+щебень прямо в данные уровня: сигнальная пара `pop_loose_landed`/
+`pop_debris_at` обслуживает только текущую комнату. Отрисовка и
+`check_loose_fall_on_kid` (там оригинал начинает с `Char.room == curmob.room`)
+— только для своей комнаты. Настоящий `mobs_count = 0` переехал в
+`pop_start_level`.
+
+**Проверено вручную (2026-08-03).** Автоматикой гонку воспроизвести не
+удалось: мост MAME шлёт нажатия рывками, и «уйти из комнаты раньше, чем
+долетит плита» через него не набирается. Подтверждено живым прогоном.
+
+Это ровно тот случай, ради которого заведены host-тесты: на уровне логики
+проверка занимает несколько строк — заспавнить кусок, сменить комнату, тикать
+до приземления, проверить щебень в данных уровня. Стоит первым в
+`../docs/host_tests_plan.md`.
diff --git a/applications/PoP/roomtest/bug_list.md b/applications/PoP/roomtest/bug_list.md
index 0f01af5..0840489 100644
--- a/applications/PoP/roomtest/bug_list.md
+++ b/applications/PoP/roomtest/bug_list.md
@@ -16,16 +16,14 @@ BUG-DEATH-1 (смерть от меча), BUG-GATE-ANIM-1 (анимация во
`bumped_floor`). Клавиатурный BUG-KBD-3 доведён до конца во второй волне
(см. ниже); из первой волны открытым остался косметический BUG-SEAM-DRAW-1.
-Ревизия **2026-08-03, вечер** (вторая волна с прогона): четыре наблюдения →
-BUG-KBD-4 (фантомный отжим Shift), BUG-RESPAWN-2 (стражи не оживают) и
-BUG-DRAWORDER-1 (Кид поверх тела стража) — **закрыты**; у последнего остался
-артефакт «ноги поверх головы», сверенный с SDLPoP и записанный в «НЕ БАГИ».
-BUG-LOOSE-2 (осколки только от одной из двух плит) — **исправлен по SDLPoP, но
-гонка автоматикой не воспроизведена** (см. таблицу ниже).
+Ревизия **2026-08-03, вечер** (вторая волна с прогона): все четыре наблюдения
+закрыты — BUG-KBD-4 (фантомный отжим Shift), BUG-RESPAWN-2 (стражи не оживают),
+BUG-DRAWORDER-1 (Кид поверх тела стража) и BUG-LOOSE-2 (осколки только от одной
+из двух плит). У BUG-DRAWORDER-1 остался артефакт «ноги поверх головы»,
+сверенный с SDLPoP и записанный в «НЕ БАГИ».
| ID | что | тип | статус |
|----|-----|-----|--------|
-| [BUG-LOOSE-2](#bug-loose-2) | осколки только от одной из двух падающих плит (комната 12) | Minor | фикс есть, **гонка не воспроизведена** |
| [BUG-SEAM-DRAW-1](#bug-seam-draw-1) | у решётки на шве экран переключается, а Кид в шве НЕ рисуется | Minor | открыт |
| [T-1](#t-1) | пики перерисовываются безусловно | оптимизация | открыт |
| [T-2](#t-2) | Кид перерисовывается в покое | оптимизация | открыт |
@@ -64,9 +62,6 @@ BUG-LOOSE-2 (осколки только от одной из двух плит)
| # | что проверить | ожидаемо |
|---|---------------|----------|
-| 14 | **[BUG-LOOSE-2]** комната 12: разбежаться по плитам (0,1)/(0,2) и уйти в 15 ДО того, как долетит вторая; вернуться | осколки на ОБОИХ — (1,1) и (1,2) |
-| 15 | то же в комнате 7 (плиты 0,5/0,6 → 2,5/2,6) | не сломалось: по-прежнему двое осколков |
-| 16 | плита, улетевшая из комнаты вниз, при возврате | лишнего щебня не появилось |
| 17 | **[BUG-KBD-4]** долго играть Shift+стрелка, много тапов подряд | Shift не «отваливается»; если однажды залипнет — снимается первым же нажатием стрелки |
| 18 | **[BUG-RESPAWN-2]** убить стража (комнаты 3/21), умереть, вернуться в ту же комнату | страж снова жив, стоит на исходном тайле, HP полные |
@@ -79,37 +74,6 @@ BUG-LOOSE-2 (осколки только от одной из двух плит)
# Открытые баги уровня 1
-
-## BUG-LOOSE-2. Осколки только от одной из двух падающих плит
-
-**Симптом.** Комната 12, соседние падающие плиты (0,1) и (0,2): после
-пробежки осколки появляются только на (1,2), на (1,1) — нет. В комнате 7
-(плиты 0,5/0,6 → 2,5/2,6) обе дают осколки.
-
-**Корень** (гипотеза автора отчёта подтвердилась чтением кода). Наш
-падающий кусок был привязан к ТЕКУЩЕЙ комнате: `pop_loose_reset()` на смене
-комнаты звал `pop_loose_mob_reset()` и гасил всё, что ещё летит, а тайл под
-куском читался из карты отрисованной комнаты. Кид убегает в комнату 15
-раньше, чем долетает плита (0,1) — кусок уничтожается, `loose_land` не
-случается, щебень не кладётся. В комнате 7 обе плиты успевают сесть до
-ухода, поэтому там всё выглядело правильно.
-
-В оригинале `mobs[]` чистится ТОЛЬКО в `start_level` (seg003:88), `do_mobs`
-(seg007:1063) прокручивает все куски независимо от `drawn_room`, `move_loose`
-работает по `curmob.room`, а `redraw_at_cur_mob` (seg007:132C) сверяется с
-`drawn_room` лишь для ОТРИСОВКИ.
-
-**Фикс.** У куска появилось поле `room` (`curmob.room`); на смене комнаты
-зовётся `pop_loose_mob_room_changed()` — сбрасывает только heal-историю;
-тайл читается через `mob_tile_at()` (своя комната — `tile_code`, чужая —
-`pop_level_tile`); приземление в покинутой комнате пишет щебень прямо в
-данные уровня; отрисовка и `check_loose_fall_on_kid` (там оригинал начинает с
-`Char.room == curmob.room`) — только для своей комнаты. Настоящий
-`mobs_count = 0` переехал в `pop_start_level`.
-
-**Не проверено.** Гонка «уйти из комнаты раньше, чем долетит плита»
-автоматикой не воспроизведена. Ручной прогон — пп. 14–16 таблицы выше.
-
## BUG-SEAM-DRAW-1. Кид, упершийся в решётку на шве, не рисуется