Merge branch 'phase/70-director-summons'

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Leonid Pershin
2026-08-21 11:59:02 +03:00
co-authored by Cursor
18 changed files with 840 additions and 19 deletions
+15 -15
View File
@@ -12,27 +12,27 @@
## Задачи
- [ ] Авто-триггер вызова из фактов (обрыв драки / выговор и пороги в `BehaviorDef`); кнопки
- [x] Авто-триггер вызова из фактов (обрыв драки / выговор и пороги в `BehaviorDef`); кнопки
игрока нет
- [ ] Временное состояние «вызван» — сильная обязанность дойти до `PrincipalsOffice`, пройти
- [x] Временное состояние «вызван» — сильная обязанность дойти до `PrincipalsOffice`, пройти
приём, сняться
- [ ] Нет директора в штате или нет узла кабинета — вызов не стартует / гаснет по правилу в данных
- [ ] Кабинет занят приёмом → ждут в коридорном узле у ребра к кабинету, не внутри
- [ ] В кабинете один на приём; очередь FIFO с детерминированным порядком
- [ ] Приём — короткое действие; мнение о директоре падает; при необходимости допись в список
- [x] Нет директора в штате или нет узла кабинета — вызов не стартует / гаснет по правилу в данных
- [x] Кабинет занят приёмом → ждут в коридорном узле у ребра к кабинету, не внутри
- [x] В кабинете один на приём; очередь FIFO с детерминированным порядком
- [x] Приём — короткое действие; мнение о директоре падает; при необходимости допись в список
проступков (69)
- [ ] Обычная ходьба и `travelMinutes`; телепорта нет
- [ ] Skip / утро не оставляют вечный «вызван» без разрешения (явное правило в коде фазы)
- [ ] Очередь и вызовы только на потоке школы (инвариант 3)
- [x] Обычная ходьба и `travelMinutes`; телепорта нет
- [x] Skip / утро не оставляют вечный «вызван» без разрешения (явное правило в коде фазы)
- [x] Очередь и вызовы только на потоке школы (инвариант 3)
## Тесты, без которых фаза не закрыта
- [ ] После qualifying-проступка ученик получает обязанность к кабинету (при живом директоре)
- [ ] Двое вызванных: один в кабинете, второй в коридоре у входа, не оба внутри
- [ ] Освобождение кабинета впускает следующего из очереди
- [ ] Тот же сид и те же события → тот же порядок очереди
- [ ] Без директора вызов не зависает навечно
- [ ] Игрок не может послать вызов по HTTP/сокету (нет такого намерения)
- [x] После qualifying-проступка ученик получает обязанность к кабинету (при живом директоре)
- [x] Двое вызванных: один в кабинете, второй в коридоре у входа, не оба внутри
- [x] Освобождение кабинета впускает следующего из очереди
- [x] Тот же сид и те же события → тот же порядок очереди
- [x] Без директора вызов не зависает навечно
- [x] Игрок не может послать вызов по HTTP/сокету (нет такого намерения)
## Критерий готовности
+1 -1
View File
@@ -20,7 +20,7 @@
| Фаза | Статус | Зачем |
| --- | --- | --- |
| [69. Память проступков](69-offense-memory.md) | ✅ | Короткий список на человеке и карточке |
| [70. Вызов и очередь](70-director-summons.md) | 🔄 | Авто, ходьба, коридор, один в кабинете |
| [70. Вызов и очередь](70-director-summons.md) | | Авто, ходьба, коридор, один в кабинете |
| [71. Тосты вызова](71-summons-notices.md) | ⬜ | `EventDef` info; очередь видна |
69 стоит на 44; 70 — на 69 и ходьбу/решения; 71 — на 70 и 64.