Update AGENTS.md to reflect live status of country, wardrobes, and weather; clarify off-queue tasks in off-queue.md; introduce phase 10 (craft) in README.md with design details and phase breakdown.
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# Фаза 58. SchoolWorker и карточка
|
||||
|
||||
## Зависимости
|
||||
|
||||
Нет. Поведение уже покрыто хостом и клиентскими тестами карточки. Этап A (56, 57) не обязан
|
||||
быть зелёным, но резать удобнее после tsc в `npm test`.
|
||||
|
||||
## Зачем
|
||||
|
||||
Три файла держат слишком много швов: почта работника, тик, запись; сборка карточки; вкладки
|
||||
DOM. Разрезать по существующим границам, не меняя поток и JSON.
|
||||
|
||||
## Задачи
|
||||
|
||||
- [ ] `SchoolWorker` — `partial` (почта / тик / запись или эквивалент по швам). Один тип,
|
||||
тот же `LongRunning`-поток, тот же mailbox. Без `lock` вокруг `School`/`World`
|
||||
- [ ] `PersonCardReader`: публичный вход по-прежнему `Read(School, personId, locale)`;
|
||||
сборка вкладок — соседние `internal` helper или `partial`, не второй публичный API
|
||||
- [ ] `personCard.ts`: вкладки в отдельных модулях; `personCardHost.ts` по-прежнему fetch
|
||||
- [ ] Инверсия Game → типы из `HSchool.Server.Api` **не** входит: `using` можно оставить
|
||||
|
||||
## Тесты, без которых фаза не закрыта
|
||||
|
||||
- [ ] Карточка: нужды, одежда/ноша, связи — как сейчас (`PeopleApiTests`,
|
||||
`InventoryApiTests`, `Card_ConnectionsCarryOnlyThisPersonsOpinions`)
|
||||
- [ ] `personCard.test.ts` (вкладки, портрет-кнопки, связи) проходит
|
||||
- [ ] Пауза одной школы не останавливает другую (существующий хостовый факт)
|
||||
- [ ] Дамп школы по-прежнему 200 на известный id (`Dump_ReturnsPeopleNodesAndTimetable` —
|
||||
текущий оракул, ужесточение — фаза 59)
|
||||
- [ ] `SchoolWorker` остаётся одним `internal sealed` типом (рефлексия или исходник: нет
|
||||
второго worker-класса с mailbox)
|
||||
|
||||
## Критерий готовности
|
||||
|
||||
- Открыть школу, карточку, паузу — как вчера
|
||||
- Нет нового публичного фасада карточки и нет второго потока на школу
|
||||
|
||||
## Стоп
|
||||
|
||||
Не менять инвариант 3. Не инвертировать DTO. Не трогать протокол, сейв, SwarmUI. Не резать
|
||||
`GameLoopService` «заодно».
|
||||
Reference in New Issue
Block a user