Update AGENTS.md and various SKILL.md files to improve documentation structure, clarify design phase references, and ensure consistency in file paths. Adjust links to design documents for better navigation and organization across phases.
This commit is contained in:
@@ -18,8 +18,8 @@ description: >-
|
|||||||
|
|
||||||
## Когда это, а когда нет
|
## Когда это, а когда нет
|
||||||
|
|
||||||
Прочитай `docs/bugs/README.md`, `docs/phases/README.md` и инварианты в
|
Прочитай `docs/bugs/README.md` и инварианты в `AGENTS.md`. Оглавление фаз
|
||||||
`AGENTS.md`.
|
(`docs/phases/README.md`) — только если нужно отличить баг от открытой ⬜.
|
||||||
|
|
||||||
- Уже стоит ⬜/🔄 в индексе багов — бери его, не заводи второй.
|
- Уже стоит ⬜/🔄 в индексе багов — бери его, не заводи второй.
|
||||||
- Это ещё не сделанная фаза в `docs/phases/` — скажи и отдай `/phase-work`.
|
- Это ещё не сделанная фаза в `docs/phases/` — скажи и отдай `/phase-work`.
|
||||||
|
|||||||
@@ -50,9 +50,10 @@ N — **одновременные** агенты, не «запусти N и з
|
|||||||
|
|
||||||
## Старт
|
## Старт
|
||||||
|
|
||||||
1. Прочитай `docs/phases/README.md` и `docs/phases/reviewed.md`. Если IDE не
|
1. Оглавление `docs/phases/README.md` (каталог). Открытые ⬜:
|
||||||
на `main` — статусы с `git show main:docs/phases/README.md`, не с рабочей
|
`rg "⬜" docs/phases/*/README.md` — читай только эти индексы, не все.
|
||||||
копии (там может быть чужой 🔄 из бага).
|
Ревьюеру — только `docs/phases/<slice>/reviewed.md`, не сводку всех срезов.
|
||||||
|
Если IDE не на `main` — статусы с `git show main:docs/phases/<slice>/README.md`.
|
||||||
2. Посчитай, сколько ⬜ с **закрытыми** зависимостями (шапка фазы). 🔄 не бери
|
2. Посчитай, сколько ⬜ с **закрытыми** зависимостями (шапка фазы). 🔄 не бери
|
||||||
как новый захват.
|
как новый захват.
|
||||||
3. Проверь `git branch --list "phase/*"` и `review/*` — заявка уже стоит.
|
3. Проверь `git branch --list "phase/*"` и `review/*` — заявка уже стоит.
|
||||||
@@ -88,8 +89,9 @@ N — **одновременные** агенты, не «запусти N и з
|
|||||||
не сажай `/bug-work` в слот.
|
не сажай `/bug-work` в слот.
|
||||||
|
|
||||||
Параллельные разработчики не должны править одни файлы без нужды. В промпте
|
Параллельные разработчики не должны править одни файлы без нужды. В промпте
|
||||||
назови соседа и стоп-границу фазы. Общие `docs/phases/README.md`,
|
назови соседа и стоп-границу фазы. Общие `docs/phases/<slice>/README.md`,
|
||||||
`docs/protocol.md`, `AGENTS.md` — точечно.
|
`docs/protocol.md`, `AGENTS.md` — точечно. Каталог `docs/phases/README.md`
|
||||||
|
трогай только когда появляется новый срез.
|
||||||
|
|
||||||
## На уведомлении агента
|
## На уведомлении агента
|
||||||
|
|
||||||
@@ -138,7 +140,7 @@ N — **одновременные** агенты, не «запусти N и з
|
|||||||
`stash push -u` **своего** ярлыка, merge, pop только его. Конфликт pop —
|
`stash push -u` **своего** ярлыка, merge, pop только его. Конфликт pop —
|
||||||
оставить stash, не форсировать. **Не** stash’ать незакоммиченное живого
|
оставить stash, не форсировать. **Не** stash’ать незакоммиченное живого
|
||||||
worktree соседа.
|
worktree соседа.
|
||||||
- Конфликт README: обе стороны (пришедший ✅ и чужие 🔄/✅).
|
- Конфликт индекса среза: обе стороны (пришедший ✅ и чужие 🔄/✅).
|
||||||
- `protocol.md`: оставить все блоки (сессия + карточка + темп), не бампить
|
- `protocol.md`: оставить все блоки (сессия + карточка + темп), не бампить
|
||||||
версию чужой фазы.
|
версию чужой фазы.
|
||||||
- После merge: `branch -d` (не `-D`), снять lock, worktree remove.
|
- После merge: `branch -d` (не `-D`), снять lock, worktree remove.
|
||||||
|
|||||||
@@ -21,10 +21,11 @@ Memory — один раз или без неё; stash с пометкой portr
|
|||||||
|
|
||||||
Репо: <корень>. Сливать только в основном дереве, и только если оно уже на
|
Репо: <корень>. Сливать только в основном дереве, и только если оно уже на
|
||||||
main (не checkout ветки пользователя bug/…).
|
main (не checkout ветки пользователя bug/…).
|
||||||
Фаза: docs/phases/<файл>.md
|
Фаза: docs/phases/<slice>/<файл>.md
|
||||||
Дизайн среза: docs/design/<файл>.md
|
Дизайн среза: docs/design/<slice>/<файл>.md
|
||||||
Инварианты: AGENTS.md
|
Инварианты: AGENTS.md
|
||||||
Индекс: docs/phases/README.md — эта фаза сейчас ⬜.
|
Индекс: docs/phases/<slice>/README.md — эта фаза сейчас ⬜.
|
||||||
|
Чужие срезы, сводку reviewed.md и оглавление дальше таблицы не читать.
|
||||||
|
|
||||||
Соседи (🔄 / параллельно): <номера и чего не трогать>.
|
Соседи (🔄 / параллельно): <номера и чего не трогать>.
|
||||||
Стоп фазы: <из её файла>.
|
Стоп фазы: <из её файла>.
|
||||||
@@ -32,10 +33,10 @@ Windows Vitest: при падении параллели — `--maxWorkers=1`.
|
|||||||
|
|
||||||
Застолбить до кода:
|
Застолбить до кода:
|
||||||
1. git branch --list "phase/<N>-*" — пусто, иначе стоп (это чужой захват).
|
1. git branch --list "phase/<N>-*" — пусто, иначе стоп (это чужой захват).
|
||||||
Занятость: `git show main:docs/phases/README.md`, не рабочую копию IDE.
|
Занятость: `git show main:docs/phases/<slice>/README.md`, не рабочую копию IDE.
|
||||||
2. git branch phase/<N>-<slug> main
|
2. git branch phase/<N>-<slug> main
|
||||||
От **main**, не от HEAD (HEAD часто bug/…). Не checkout основного дерева.
|
От **main**, не от HEAD (HEAD часто bug/…). Не checkout основного дерева.
|
||||||
3. 🔄 в README **на main**, отдельный коммит только этой строки.
|
3. 🔄 в индексе среза **на main**, отдельный коммит только этой строки.
|
||||||
Дерево уже на main — коммить там. Иначе: worktree add <scratch>/wt-claim-main
|
Дерево уже на main — коммить там. Иначе: worktree add <scratch>/wt-claim-main
|
||||||
main, коммит там, worktree remove. В bug/… не коммить и не revert чужое.
|
main, коммит там, worktree remove. В bug/… не коммить и не revert чужое.
|
||||||
4. git worktree add <scratch>/wt-phase-<N> phase/<N>-<slug>
|
4. git worktree add <scratch>/wt-phase-<N> phase/<N>-<slug>
|
||||||
@@ -46,15 +47,15 @@ Windows Vitest: при падении параллели — `--maxWorkers=1`.
|
|||||||
Задачи и обязательные тесты — как в файле фазы целиком.
|
Задачи и обязательные тесты — как в файле фазы целиком.
|
||||||
Гоняй только проект(ы) из Testing policy в AGENTS.md, `--filter` на новый
|
Гоняй только проект(ы) из Testing policy в AGENTS.md, `--filter` на новый
|
||||||
класс. Весь solution не гонять.
|
класс. Весь solution не гонять.
|
||||||
Общие файлы (README фаз, protocol.md, AGENTS.md) — точечно.
|
Общие файлы (индекс среза, protocol.md, AGENTS.md) — точечно. Каталог срезов не трогать.
|
||||||
HTTP/протокол — docs/protocol.md тем же коммитом; версию сокета не бампить,
|
HTTP/протокол — docs/protocol.md тем же коммитом; версию сокета не бампить,
|
||||||
если фаза этого не требует.
|
если фаза этого не требует.
|
||||||
|
|
||||||
Слияние по скиллу: убрать worktree, merge/lock (общий: фаза/баг/ревью/side;
|
Слияние по скиллу: убрать worktree, merge/lock (общий: фаза/баг/ревью/side;
|
||||||
чужой — ждать, не снимать), merge --no-ff, конфликт README — обе стороны.
|
чужой — ждать, не снимать), merge --no-ff, конфликт индекса среза — обе стороны.
|
||||||
Грязный main или дерево не на main — не сливать, не checkout, снять lock,
|
Грязный main или дерево не на main — не сливать, не checkout, снять lock,
|
||||||
отчёт. Stash сам не делай.
|
отчёт. Stash сам не делай.
|
||||||
✅ в README — последним коммитом ветки, только строка статуса.
|
✅ в индексе среза — последним коммитом ветки, только строка статуса.
|
||||||
Не сливай чужие ветки.
|
Не сливай чужие ветки.
|
||||||
|
|
||||||
Отчёт: фаза и ветка; задачи; тесты списком; какой проект прогнал; незакрытое; слита ли.
|
Отчёт: фаза и ветка; задачи; тесты списком; какой проект прогнал; незакрытое; слита ли.
|
||||||
@@ -106,7 +107,7 @@ phase-work; stash — только если ниже явно сказано, ч
|
|||||||
<или:>
|
<или:>
|
||||||
Грязный main — не stash, снять lock, отчёт.
|
Грязный main — не stash, снять lock, отчёт.
|
||||||
|
|
||||||
Конфликт README — обе стороны. protocol.md — не выкидывать чужие блоки.
|
Конфликт индекса среза — обе стороны. protocol.md — не выкидывать чужие блоки.
|
||||||
После успеха: branch -d (не -D), снять lock, worktree remove.
|
После успеха: branch -d (не -D), снять lock, worktree remove.
|
||||||
Не пушь. HSchool.Server не убивай. Весь solution не гонять: конфликт только
|
Не пушь. HSchool.Server не убивай. Весь solution не гонять: конфликт только
|
||||||
в статусе — тесты не нужны; в коде — узкий проект из Testing policy.
|
в статусе — тесты не нужны; в коде — узкий проект из Testing policy.
|
||||||
@@ -122,7 +123,7 @@ phase-work; stash — только если ниже явно сказано, ч
|
|||||||
Следуй `.claude/skills/phase-review/SKILL.md`. Один проход — только фазы
|
Следуй `.claude/skills/phase-review/SKILL.md`. Один проход — только фазы
|
||||||
<X>–<Y> (этап <A> среза <имя>), не весь срез и не следующий.
|
<X>–<Y> (этап <A> среза <имя>), не весь срез и не следующий.
|
||||||
|
|
||||||
Свой заголовок в docs/phases/reviewed.md. Чужие разделы журнала не затирай.
|
Свой заголовок в docs/phases/<slice>/reviewed.md. Чужие срезы не открывать.
|
||||||
Ветка `git branch review/<slug> main` (от main, не от HEAD).
|
Ветка `git branch review/<slug> main` (от main, не от HEAD).
|
||||||
Worktree вне репо: <scratch>/wt-review-<slug> — дальше только его пути.
|
Worktree вне репо: <scratch>/wt-review-<slug> — дальше только его пути.
|
||||||
Журнал коммить в этом worktree, не в bug/… пользователя.
|
Журнал коммить в этом worktree, не в bug/… пользователя.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: phase-review
|
name: phase-review
|
||||||
description: Ревью срезов и фаз проекта h-school по их же критериям приёмки — с дописыванием недостающих тестов, исправлением найденного и журналом проверенного в docs/phases/reviewed.md. Обязательно используй этот скилл, когда просят «сделай ревью», «проведи ревью», «проверь срез», «проверь непроверенные срезы», «что ещё не проверено», «review the slice» — и вообще при любой просьбе проверить, действительно ли сделанная фаза сделана. Не для ревью одного диффа или пул-реквеста: там нужен /code-review. Не для волны разработчиков — /phase-orch (он может запустить этот скилл как одного из агентов). Не для планирования нового среза — /slice-work.
|
description: Ревью срезов и фаз проекта h-school по их же критериям приёмки — с дописыванием недостающих тестов, исправлением найденного и журналом проверенного в docs/phases/<slice>/reviewed.md. Обязательно используй этот скилл, когда просят «сделай ревью», «проведи ревью», «проверь срез», «проверь непроверенные срезы», «что ещё не проверено», «review the slice» — и вообще при любой просьбе проверить, действительно ли сделанная фаза сделана. Не для ревью одного диффа или пул-реквеста: там нужен /code-review. Не для волны разработчиков — /phase-orch (он может запустить этот скилл как одного из агентов). Не для планирования нового среза — /slice-work.
|
||||||
---
|
---
|
||||||
|
|
||||||
# Ревью срезов
|
# Ревью срезов
|
||||||
@@ -16,8 +16,9 @@ description: Ревью срезов и фаз проекта h-school по их
|
|||||||
|
|
||||||
## Журнал
|
## Журнал
|
||||||
|
|
||||||
`docs/phases/reviewed.md` — единственный источник правды о том, что уже проверено. Если файла
|
`docs/phases/<slice>/reviewed.md` — правда о проверке **этого** среза. Сводка ссылок —
|
||||||
нет, создай его с заголовком и одной строкой о том, что это такое.
|
короткий `docs/phases/reviewed.md`. Чужие журналы не читать. Если файла среза нет, создай
|
||||||
|
его и добавь строку в сводку.
|
||||||
|
|
||||||
Раздел на срез:
|
Раздел на срез:
|
||||||
|
|
||||||
@@ -38,8 +39,9 @@ description: Ревью срезов и фаз проекта h-school по их
|
|||||||
|
|
||||||
## Как выбрать, что проверять
|
## Как выбрать, что проверять
|
||||||
|
|
||||||
1. Прочитай `docs/phases/README.md` — там срезы, их фазы и статусы.
|
1. Оглавление `docs/phases/README.md` и сводка `docs/phases/reviewed.md` — только чтобы выбрать
|
||||||
2. Прочитай журнал.
|
срез. Дальше — индекс, фазы и `reviewed.md` **этой** папки, не остальные.
|
||||||
|
2. Прочитай журнал этого среза.
|
||||||
3. Срез попадает в очередь, если:
|
3. Срез попадает в очередь, если:
|
||||||
- его нет в журнале; **или**
|
- его нет в журнале; **или**
|
||||||
- `git log <коммит-из-журнала>..HEAD -- <пути среза>` непустой — код менялся после проверки;
|
- `git log <коммит-из-журнала>..HEAD -- <пути среза>` непустой — код менялся после проверки;
|
||||||
@@ -80,7 +82,7 @@ description: Ревью срезов и фаз проекта h-school по их
|
|||||||
**3. «Things that will bite you».** Этот раздел `AGENTS.md` — список уже случившихся регрессий.
|
**3. «Things that will bite you».** Этот раздел `AGENTS.md` — список уже случившихся регрессий.
|
||||||
Проверить, что ни одна не вернулась, дешевле, чем поймать её второй раз.
|
Проверить, что ни одна не вернулась, дешевле, чем поймать её второй раз.
|
||||||
|
|
||||||
**4. Дизайн-док среза** (`docs/design/*.md`, ссылка есть в индексе фаз). Расхождение кода с
|
**4. Дизайн-док среза** (`docs/design/<slice>/`, ссылка есть в индексе среза). Расхождение кода с
|
||||||
принятым решением — находка, даже если тесты зелёные. Но сначала спроси себя, не устарел ли док:
|
принятым решением — находка, даже если тесты зелёные. Но сначала спроси себя, не устарел ли док:
|
||||||
бывает, что решение сознательно поменяли, и тогда чинить надо документ.
|
бывает, что решение сознательно поменяли, и тогда чинить надо документ.
|
||||||
|
|
||||||
|
|||||||
@@ -22,13 +22,18 @@ description: Берёт ровно одну фазу из среза в docs/pha
|
|||||||
|
|
||||||
**Номера нет** — выбираешь сам. Волну «запусти троих» так не раздавай — это `/phase-orch`.
|
**Номера нет** — выбираешь сам. Волну «запусти троих» так не раздавай — это `/phase-orch`.
|
||||||
|
|
||||||
1. Читаешь `docs/phases/README.md`: находишь первый срез, где есть ⬜.
|
1. `rg "⬜" docs/phases/*/README.md` — не читай индексы всех срезов. Оглавление
|
||||||
2. Внутри среза берёшь первую ⬜, у которой закрыты зависимости — они перечислены в шапке фазы.
|
`docs/phases/README.md` — каталог папок, без таблиц фаз.
|
||||||
|
2. В первом срезе с ⬜ берёшь первую ⬜, у которой закрыты зависимости — они в шапке фазы.
|
||||||
3. Проверяешь, что её никто не взял: `git branch --list "phase/<номер>-*"` пусто.
|
3. Проверяешь, что её никто не взял: `git branch --list "phase/<номер>-*"` пусто.
|
||||||
|
|
||||||
**Статус в `README.md` — первый источник правды, ветка — только арбитр гонки.** 🔄 значит занято,
|
Номер дали — файл `docs/phases/*/<N>-*.md`. Читай его, `README.md` этой папки и дизайн
|
||||||
✅ значит сделано, ⬜ значит свободно. Ветка может существовать и при ✅ — её просто не убрали после
|
среза по ссылке в индексе. Чужие срезы и `reviewed.md` не открывать.
|
||||||
слияния; это не заявка, а мусор, см. «Кто убирает ветку».
|
|
||||||
|
**Статус в индексе среза (`docs/phases/<slice>/README.md`) — первый источник правды, ветка —
|
||||||
|
только арбитр гонки.** 🔄 значит занято, ✅ значит сделано, ⬜ значит свободно. Ветка может
|
||||||
|
существовать и при ✅ — её просто не убрали после слияния; это не заявка, а мусор, см.
|
||||||
|
«Кто убирает ветку».
|
||||||
|
|
||||||
Фаза 🔄 — чужая работа в процессе. Не трогай её, даже если кажется, что там застряли —
|
Фаза 🔄 — чужая работа в процессе. Не трогай её, даже если кажется, что там застряли —
|
||||||
кроме случая выше: номер передали и ветка уже есть, тебя посадили продолжить.
|
кроме случая выше: номер передали и ветка уже есть, тебя посадили продолжить.
|
||||||
@@ -49,7 +54,7 @@ git branch phase/25-golden-fixtures main
|
|||||||
Команда упала с «already exists» — значит фазу взял другой агент между твоей проверкой и попыткой.
|
Команда упала с «already exists» — значит фазу взял другой агент между твоей проверкой и попыткой.
|
||||||
Не спорь, вернись к выбору и возьми следующую.
|
Не спорь, вернись к выбору и возьми следующую.
|
||||||
|
|
||||||
Ветка создалась — фаза твоя. Сразу пометь её 🔄 в `docs/phases/README.md` **на `main`**, отдельным
|
Ветка создалась — фаза твоя. Сразу пометь её 🔄 в `docs/phases/<slice>/README.md` **на `main`**, отдельным
|
||||||
коммитом из одной этой строки. Соседи читают занятость с `main`, а пустая свежая ветка ещё ничем
|
коммитом из одной этой строки. Соседи читают занятость с `main`, а пустая свежая ветка ещё ничем
|
||||||
не отличается от слитой — по ней одной понять, что фаза в работе, нельзя.
|
не отличается от слитой — по ней одной понять, что фаза в работе, нельзя.
|
||||||
|
|
||||||
@@ -84,10 +89,10 @@ git worktree add <путь-в-scratchpad>/wt-phase-25 phase/25-golden-fixtures
|
|||||||
|
|
||||||
Cursor workspace по умолчанию — корень IDE, не этот worktree. После `worktree add` каждый
|
Cursor workspace по умолчанию — корень IDE, не этот worktree. После `worktree add` каждый
|
||||||
`Read` / `Write` / `StrReplace` / `Shell` идёт **абсолютным путём** (или `working_directory`)
|
`Read` / `Write` / `StrReplace` / `Shell` идёт **абсолютным путём** (или `working_directory`)
|
||||||
внутрь `…/wt-phase-25`. Относительный `docs/phases/README.md` пишется в ветку, которую сейчас
|
внутрь `…/wt-phase-25`. Относительный `docs/phases/<slice>/README.md` пишется в ветку, которую сейчас
|
||||||
держит пользователь. `git add` / `commit` без `-C` worktree — то же самое.
|
держит пользователь. `git add` / `commit` без `-C` worktree — то же самое.
|
||||||
|
|
||||||
Занятость чужих фаз читай так: `git show main:docs/phases/README.md` и
|
Занятость чужих фаз читай так: `git show main:docs/phases/<slice>/README.md` и
|
||||||
`git branch --list "phase/*"` — не рабочую копию на `bug/…`.
|
`git branch --list "phase/*"` — не рабочую копию на `bug/…`.
|
||||||
|
|
||||||
Дальше вся работа там. В конце worktree удаляется (`git worktree remove --force`), ветка остаётся.
|
Дальше вся работа там. В конце worktree удаляется (`git worktree remove --force`), ветка остаётся.
|
||||||
@@ -184,7 +189,7 @@ git -C <корень> merge --no-ff phase/25-golden-fixtures
|
|||||||
`--no-ff` — чтобы фаза осталась видимой в истории одним куском, а не растворилась в линии.
|
`--no-ff` — чтобы фаза осталась видимой в истории одним куском, а не растворилась в линии.
|
||||||
|
|
||||||
**5. Конфликты разрешай только те, что понимаешь.** Почти всегда это строка статуса в
|
**5. Конфликты разрешай только те, что понимаешь.** Почти всегда это строка статуса в
|
||||||
`docs/phases/README.md` — там обе стороны правы, надо оставить обе. Конфликт в коде, смысл
|
`docs/phases/<slice>/README.md` — там обе стороны правы, надо оставить обе. Конфликт в коде, смысл
|
||||||
которого тебе неясен, — `git merge --abort`, снять замок, оставить ветку и написать в отчёте, с
|
которого тебе неясен, — `git merge --abort`, снять замок, оставить ветку и написать в отчёте, с
|
||||||
чем именно она не сходится.
|
чем именно она не сходится.
|
||||||
|
|
||||||
@@ -235,8 +240,8 @@ git branch --merged main --list "phase/*" --format="%(refname:short)"
|
|||||||
работай там, статус не возвращай в ⬜.
|
работай там, статус не возвращай в ⬜.
|
||||||
- **Не меняй молча** версию протокола, форму сейва и публичное поведение API — даже когда это
|
- **Не меняй молча** версию протокола, форму сейва и публичное поведение API — даже когда это
|
||||||
очевидно правильно. Если фаза этого требует, так и написано в её задачах.
|
очевидно правильно. Если фаза этого требует, так и написано в её задачах.
|
||||||
- **Общие файлы трогай минимально.** `AGENTS.md`, `docs/protocol.md`, `README.md` правят все ветки
|
- **Общие файлы трогай минимально.** `AGENTS.md`, `docs/protocol.md` правят все ветки сразу.
|
||||||
сразу — чем точечнее правка, тем дешевле слияние.
|
Индекс — только свой `docs/phases/<slice>/README.md`. Каталог срезов не трогать.
|
||||||
|
|
||||||
## Окружение: что укусит
|
## Окружение: что укусит
|
||||||
|
|
||||||
|
|||||||
@@ -22,10 +22,11 @@ description: >-
|
|||||||
|
|
||||||
## 1. Обсуждение
|
## 1. Обсуждение
|
||||||
|
|
||||||
Прочитай `docs/phases/README.md`, `docs/bugs/README.md`, инварианты в
|
Прочитай оглавление `docs/phases/README.md` (не индексы всех срезов),
|
||||||
`AGENTS.md` и затронутые дизайн-доки. Это уже чья-то фаза в индексе — скажи
|
`docs/bugs/README.md`, инварианты в `AGENTS.md` и **только** затронутый
|
||||||
и отдай `/phase-work`. Регрессия уже сделанного — `/bug-work`. Этапы, новый
|
дизайн. Это уже чья-то фаза — скажи и отдай `/phase-work`. Регрессия уже
|
||||||
кусок игры, остановка посередине целой школой — `/slice-work`.
|
сделанного — `/bug-work`. Этапы, новый кусок игры, остановка посередине
|
||||||
|
целой школой — `/slice-work`.
|
||||||
|
|
||||||
Два–пять вопросов, два–три варианта, **рекомендация обязательна**. Спросить
|
Два–пять вопросов, два–три варианта, **рекомендация обязательна**. Спросить
|
||||||
только форму: что увидит игрок; протокол / HTTP / сейв; какой инвариант; одна
|
только форму: что увидит игрок; протокол / HTTP / сейв; какой инвариант; одна
|
||||||
@@ -40,23 +41,26 @@ description: >-
|
|||||||
|
|
||||||
**Новый срез** — не этот скилл, [slice-work](../slice-work/SKILL.md).
|
**Новый срез** — не этот скилл, [slice-work](../slice-work/SKILL.md).
|
||||||
|
|
||||||
**Мелкое** (дырка, одна кнопка, DX, склейка живых систем) — фаза в секции
|
**Мелкое** (дырка, одна кнопка, DX, склейка живых систем) — фаза в
|
||||||
**«Вне очереди»** в конце индекса. Это срез без номера, чтобы не спорить со
|
`docs/phases/off-queue/`. Это срез без номера, чтобы не спорить со следующим
|
||||||
следующим именованным. Дизайн — `##` в `docs/design/off-queue.md`; файла нет —
|
именованным. Дизайн новой темы — **новый файл**
|
||||||
заведи с заголовком, зачем он.
|
`docs/design/off-queue/<slug>.md`, не дописывать в чужой файл темы. Строка в
|
||||||
|
`docs/design/off-queue/README.md`.
|
||||||
|
|
||||||
Номер фазы: максимум по `docs/phases/*.md` и индексу, плюс один, затем
|
Номер фазы: максимум по именам `docs/phases/*/<NN>-*.md` (не README, не
|
||||||
`git branch --list "phase/<N>-*"`. Занято — следующий. Гонку ловят ветки, не
|
reviewed), плюс один, затем `git branch --list "phase/<N>-*"`. Занято —
|
||||||
индекс: у новой фазы на `main` строки ещё нет.
|
следующий. Гонку ловят ветки, не индекс: у новой фазы на `main` строки ещё нет.
|
||||||
|
|
||||||
## 3. Документы
|
## 3. Документы
|
||||||
|
|
||||||
Как у соседней фазы, не новый жанр. Каркас тот же: Зависимости, Зачем, Задачи,
|
Как у соседней фазы в `off-queue/`, не новый жанр. Каркас тот же: Зависимости,
|
||||||
Тесты без которых фаза не закрыта, Критерий готовности, Стоп.
|
Зачем, Задачи, Тесты без которых фаза не закрыта, Критерий готовности, Стоп.
|
||||||
|
Файл — `docs/phases/off-queue/<N>-<slug>.md`.
|
||||||
|
|
||||||
«Тесты…» — контракт для `/phase-review`: каждый пункт станет отдельным тестом
|
«Тесты…» — контракт для `/phase-review`: каждый пункт станет отдельным тестом
|
||||||
по Testing policy в `AGENTS.md`. Дизайн: зачем; «Было / Стало / Почему», если
|
по Testing policy в `AGENTS.md`. Дизайн: зачем; «Было / Стало / Почему», если
|
||||||
меняется принятое; что не входит. Индекс — новая строка, статус ⬜.
|
меняется принятое; что не входит. Индекс — новая строка в
|
||||||
|
`docs/phases/off-queue/README.md`, статус ⬜. Общий каталог срезов не трогать.
|
||||||
|
|
||||||
Протокол, HTTP, сейв — назвать явно. Версию не бампать: это коммит с кодом.
|
Протокол, HTTP, сейв — назвать явно. Версию не бампать: это коммит с кодом.
|
||||||
|
|
||||||
|
|||||||
@@ -19,8 +19,9 @@ description: >-
|
|||||||
|
|
||||||
## Когда это
|
## Когда это
|
||||||
|
|
||||||
Прочитай `docs/phases/README.md`, `docs/bugs/README.md`, инварианты в
|
Прочитай оглавление `docs/phases/README.md` (не индексы всех срезов),
|
||||||
`AGENTS.md` и соседние дизайн-доки.
|
`docs/bugs/README.md`, инварианты в `AGENTS.md` и **только** дизайн-доки,
|
||||||
|
на которые срез опирается.
|
||||||
|
|
||||||
- Уже чья-то фаза в индексе — скажи и отдай `/phase-work`.
|
- Уже чья-то фаза в индексе — скажи и отдай `/phase-work`.
|
||||||
- Регрессия уже сделанного — `/bug-work`.
|
- Регрессия уже сделанного — `/bug-work`.
|
||||||
@@ -54,15 +55,18 @@ description: >-
|
|||||||
|
|
||||||
Срез: максимум именованного в индексе, плюс один.
|
Срез: максимум именованного в индексе, плюс один.
|
||||||
|
|
||||||
Фазы: максимум по `docs/phases/*.md` и индексу, плюс один, затем
|
Фазы: максимум по именам `docs/phases/*/<NN>-*.md` (не README, не reviewed),
|
||||||
`git branch --list "phase/<N>-*"`. Занято — следующий. Гонку ловят ветки,
|
плюс один, затем `git branch --list "phase/<N>-*"`. Занято — следующий.
|
||||||
не индекс: у новой фазы на `main` строки ещё нет.
|
Гонку ловят ветки, не индекс: у новой фазы на `main` строки ещё нет.
|
||||||
|
|
||||||
## 3. Документы
|
## 3. Документы
|
||||||
|
|
||||||
Как у соседа (`social.md`, `session.md`, `inventory.md`), не новый жанр.
|
Как у соседа по папке (`09-social/`, `08-session/`, `07-inventory/`), не новый жанр.
|
||||||
|
|
||||||
`docs/design/<slug>.md`:
|
Папки: `docs/design/<NN>-<slug>/` и `docs/phases/<NN>-<slug>/`. NN — номер
|
||||||
|
среза с ведущим нулём (`11-…`). «Вне очереди» номер среза не занимает.
|
||||||
|
|
||||||
|
`docs/design/<NN>-<slug>/<slug>.md` (если доков несколько — как у `01-shell/`):
|
||||||
|
|
||||||
- шапка: договорённость на срез, не текущий код; ссылки на соседние доки;
|
- шапка: договорённость на срез, не текущий код; ссылки на соседние доки;
|
||||||
- зачем, что увидит игрок, на какие вопросы отвечает, чего **нет**;
|
- зачем, что увидит игрок, на какие вопросы отвечает, чего **нет**;
|
||||||
@@ -73,13 +77,14 @@ description: >-
|
|||||||
- «Заведомо не сейчас»;
|
- «Заведомо не сейчас»;
|
||||||
- «Зафиксировано этим разговором».
|
- «Зафиксировано этим разговором».
|
||||||
|
|
||||||
Фазы — как у соседней, не короче бага: Зависимости, Зачем, Задачи, Тесты
|
Фазы — `docs/phases/<NN>-<slug>/<M>-<phase-slug>.md`, как у соседней, не короче
|
||||||
без которых фаза не закрыта, Критерий готовности, Стоп. Галочки все `[ ]`.
|
бага: Зависимости, Зачем, Задачи, Тесты без которых фаза не закрыта, Критерий
|
||||||
«Тесты…» — контракт для `/phase-review`: каждый пункт станет отдельным
|
готовности, Стоп. Галочки все `[ ]`. «Тесты…» — контракт для `/phase-review`:
|
||||||
тестом по Testing policy в `AGENTS.md`.
|
каждый пункт станет отдельным тестом по Testing policy в `AGENTS.md`.
|
||||||
|
|
||||||
Индекс — новая секция **перед** «Вне очереди», все ⬜, этапы как у 7–9.
|
Индекс среза — `docs/phases/<NN>-<slug>/README.md` с таблицей фаз, все ⬜,
|
||||||
Куда ходят люди — строка в Orientation `AGENTS.md`.
|
этапы как у 7–9. В общий `docs/phases/README.md` — **одна строка** в таблицу,
|
||||||
|
без копипасты фаз. Куда ходят люди — строка в Orientation `AGENTS.md`.
|
||||||
|
|
||||||
Протокол, HTTP, сейв — назвать явно. Версию не бампать: это коммит с кодом.
|
Протокол, HTTP, сейв — назвать явно. Версию не бампать: это коммит с кодом.
|
||||||
🔄 не ставить: фазы ещё никто не взял.
|
🔄 не ставить: фазы ещё никто не взял.
|
||||||
|
|||||||
@@ -20,16 +20,18 @@ way; this file is *how to work in them*.
|
|||||||
| connection handling, workers, saves | `src/HSchool.Server` |
|
| connection handling, workers, saves | `src/HSchool.Server` |
|
||||||
| what runs locally | `src/HSchool.AppHost/AppHost.cs` |
|
| what runs locally | `src/HSchool.AppHost/AppHost.cs` |
|
||||||
| screens, dialogs, formatting, UI language | `src/HSchool.Client/src` |
|
| screens, dialogs, formatting, UI language | `src/HSchool.Client/src` |
|
||||||
| clothing, inventory, climate, dress codes | [`docs/design/inventory.md`](docs/design/inventory.md) — slice 7, phases 29–37; country, wardrobes and weather are live |
|
| clothing, inventory, climate, dress codes | [`docs/design/07-inventory/`](docs/design/07-inventory/inventory.md) — slice 7, phases 29–37 |
|
||||||
| login, who owns a school, watching others | [`docs/design/session.md`](docs/design/session.md) — slice 8, phases 38–39 |
|
| login, who owns a school, watching others | [`docs/design/08-session/`](docs/design/08-session/session.md) — slice 8, phases 38–39 |
|
||||||
| clock speed buttons and high-speed stride | `src/HSchool.Simulation/ClockSpeed.cs` **and** [`docs/design/session.md`](docs/design/session.md) — phase 40 |
|
| clock speed buttons and high-speed stride | `src/HSchool.Simulation/ClockSpeed.cs` **and** [`session.md`](docs/design/08-session/session.md) — phase 40 |
|
||||||
| talks, opinions, fights, romance pack | [`docs/design/social.md`](docs/design/social.md) — slice 9, phases 41–47 |
|
| talks, opinions, fights, romance pack | [`docs/design/09-social/`](docs/design/09-social/social.md) — slice 9, phases 41–47 |
|
||||||
| lesson consequences (teacher present, skill, warmth, textbook, weather commute) | [`docs/design/off-queue.md`](docs/design/off-queue.md) — phases 48, 50–53 |
|
| lesson consequences (teacher present, skill, warmth, textbook, weather commute) | [`docs/design/off-queue/lesson-consequences.md`](docs/design/off-queue/lesson-consequences.md) — phases 48, 50–53 |
|
||||||
| layer tests, client tsc-in-test, worker/card splits, dump nodes | [`docs/design/craft.md`](docs/design/craft.md) — slice 10, phases 56–59 |
|
| layer tests, client tsc-in-test, worker/card splits, dump nodes | [`docs/design/10-craft/`](docs/design/10-craft/craft.md) — slice 10, phases 56–59 |
|
||||||
| a bug in already-shipped behaviour | `.claude/skills/bug-work` — document in `docs/bugs/`, discuss only if the fix has a fork, then patch |
|
| a bug in already-shipped behaviour | `.claude/skills/bug-work` — document in `docs/bugs/`, discuss only if the fix has a fork, then patch |
|
||||||
| a task that is not in any slice | `.claude/skills/side-work` — discuss, document in «Вне очереди», then implement |
|
| a task that is not in any slice | `.claude/skills/side-work` — discuss, document in [`docs/phases/off-queue/`](docs/phases/off-queue/README.md), then implement |
|
||||||
| a new named slice of the game | `.claude/skills/slice-work` — discuss, write design and phases, then `/phase-orch` |
|
| a new named slice of the game | `.claude/skills/slice-work` — discuss, write design and phases, then `/phase-orch` |
|
||||||
|
|
||||||
|
Docs are per slice: `docs/phases/<slice>/` and `docs/design/<slice>/`. [`docs/phases/README.md`](docs/phases/README.md) is a catalog — open only the slice you are changing.
|
||||||
|
|
||||||
## Commands
|
## Commands
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
Индекс регрессий в уже сделанном. Статус: ⬜ не начат, 🔄 в работе, ✅ готов.
|
Индекс регрессий в уже сделанном. Статус: ⬜ не начат, 🔄 в работе, ✅ готов.
|
||||||
|
|
||||||
Это не фазы: номера не спорят со срезами, в `docs/phases/` не дублировать.
|
Это не фазы: номера не спорят со срезами, в `docs/phases/` не дублировать.
|
||||||
Склейка систем и DX — [«Вне очереди»](../phases/README.md#вне-очереди), скилл
|
Склейка систем и DX — [«Вне очереди»](../phases/off-queue/README.md), скилл
|
||||||
`/side-work`. Новый кусок игры — `/slice-work`. Как работать с багом —
|
`/side-work`. Новый кусок игры — `/slice-work`. Как работать с багом —
|
||||||
[`.claude/skills/bug-work`](../../.claude/skills/bug-work/SKILL.md).
|
[`.claude/skills/bug-work`](../../.claude/skills/bug-work/SKILL.md).
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Договорённость на следующий срез, не текущий код.
|
Договорённость на следующий срез, не текущий код.
|
||||||
Оболочка: [`near-term.md`](../01-shell/near-term.md). Рантайм: [`runtime.md`](../01-shell/runtime.md).
|
Оболочка: [`near-term.md`](../01-shell/near-term.md). Рантайм: [`runtime.md`](../01-shell/runtime.md).
|
||||||
Протокол: [`../protocol.md`](../../protocol.md).
|
Протокол: [`protocol.md`](../../protocol.md).
|
||||||
|
|
||||||
Один процесс сервера, несколько браузеров в локальной сети. Это не аккаунты и не интернет:
|
Один процесс сервера, несколько браузеров в локальной сети. Это не аккаунты и не интернет:
|
||||||
общий пароль альфы пускает к двери, имя отличает игроков. Школу по-прежнему тикает её работник,
|
общий пароль альфы пускает к двери, имя отличает игроков. Школу по-прежнему тикает её работник,
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
> **Отменено в фазе 8.** Панель общих событий убрана с экрана: пока ленты событий нет, постоянно
|
> **Отменено в фазе 8.** Панель общих событий убрана с экрана: пока ленты событий нет, постоянно
|
||||||
> пустая треть экрана мешала, и место отдано вкладкам «Карта» и «Люди». Решение записано в
|
> пустая треть экрана мешала, и место отдано вкладкам «Карта» и «Люди». Решение записано в
|
||||||
> [`docs/design/01-shell/near-term.md`](../../design/01-shell/near-term.md); появится лента — вернётся и панель.
|
> [`near-term.md`](../../design/01-shell/near-term.md); появится лента — вернётся и панель.
|
||||||
|
|
||||||
## Критерий готовности
|
## Критерий готовности
|
||||||
|
|
||||||
|
|||||||
@@ -2,10 +2,10 @@
|
|||||||
|
|
||||||
## Срез 1. Оболочка и карта
|
## Срез 1. Оболочка и карта
|
||||||
|
|
||||||
Дизайн закрыт: [`../design/near-term.md`](../../design/01-shell/near-term.md),
|
Дизайн закрыт: [`near-term.md`](../../design/01-shell/near-term.md),
|
||||||
[`../design/defs.md`](../../design/01-shell/defs.md),
|
[`defs.md`](../../design/01-shell/defs.md),
|
||||||
[`../design/runtime.md`](../../design/01-shell/runtime.md),
|
[`runtime.md`](../../design/01-shell/runtime.md),
|
||||||
[`../design/projects.md`](../../design/01-shell/projects.md).
|
[`projects.md`](../../design/01-shell/projects.md).
|
||||||
|
|
||||||
Новых игровых фич в эти фазы не добавлять. 1 и 2 можно вести параллельно (клиент / сервер).
|
Новых игровых фич в эти фазы не добавлять. 1 и 2 можно вести параллельно (клиент / сервер).
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
- [x] Тот же сид, карта и набор имён — ровно тот же ростер
|
- [x] Тот же сид, карта и набор имён — ровно тот же ростер
|
||||||
- [x] Тринадцатая семья не меняет, как разыграны первые двенадцать (фамилия, состав, имена).
|
- [x] Тринадцатая семья не меняет, как разыграны первые двенадцать (фамилия, состав, имена).
|
||||||
Класс ребёнка при этом меняется — места раздаются вперемешку по школе, иначе братья и
|
Класс ребёнка при этом меняется — места раздаются вперемешку по школе, иначе братья и
|
||||||
сёстры всегда оказывались одноклассниками; см. [`docs/design/02-people/people.md`](../../design/02-people/people.md)
|
сёстры всегда оказывались одноклассниками; см. [`people.md`](../../design/02-people/people.md)
|
||||||
- [x] Фамилии, родовые формы и отчества внутри семьи согласованы
|
- [x] Фамилии, родовые формы и отчества внутри семьи согласованы
|
||||||
- [x] Ученик с телосложением «полное» не получает высокую ловкость
|
- [x] Ученик с телосложением «полное» не получает высокую ловкость
|
||||||
- [x] Все ученические места заполнены, все должности закрыты
|
- [x] Все ученические места заполнены, все должности закрыты
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
`TaskCompletionSource`, потому что нужды живые
|
`TaskCompletionSource`, потому что нужды живые
|
||||||
- [x] Панель «Люди» в оболочке менеджера: фильтры, сортируемые колонки, пейджер. Сделана
|
- [x] Панель «Люди» в оболочке менеджера: фильтры, сортируемые колонки, пейджер. Сделана
|
||||||
**вкладкой рядом с картой**, а не нижним рядом — заодно с экрана ушла пустая панель
|
**вкладкой рядом с картой**, а не нижним рядом — заодно с экрана ушла пустая панель
|
||||||
событий из фазы 1; см. [`docs/design/02-people/people.md`](../../design/02-people/people.md)
|
событий из фазы 1; см. [`people.md`](../../design/02-people/people.md)
|
||||||
- [x] Строка списка — только лёгкие поля: ФИО, роль, класс или должность, возраст, пол
|
- [x] Строка списка — только лёгкие поля: ФИО, роль, класс или должность, возраст, пол
|
||||||
- [x] Карточка: тело, навыки, черты, нужды, семья со ссылками на родных — по ссылке открывается
|
- [x] Карточка: тело, навыки, черты, нужды, семья со ссылками на родных — по ссылке открывается
|
||||||
карточка родственника
|
карточка родственника
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## Срез 2. Люди
|
## Срез 2. Люди
|
||||||
|
|
||||||
Дизайн: [`../design/people.md`](../../design/02-people/people.md).
|
Дизайн: [`people.md`](../../design/02-people/people.md).
|
||||||
|
|
||||||
Школа наполняется людьми. Ученики, работники и родители существуют, показываются и обновляются
|
Школа наполняется людьми. Ученики, работники и родители существуют, показываются и обновляются
|
||||||
раз в год — но **ничего не делают**: ни расписания, ни перемещений, ни влияния характеристик.
|
раз в год — но **ничего не делают**: ни расписания, ни перемещений, ни влияния характеристик.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## Срез 3. Штат
|
## Срез 3. Штат
|
||||||
|
|
||||||
Дизайн: [`../design/staffing.md`](../../design/03-staffing/staffing.md).
|
Дизайн: [`staffing.md`](../../design/03-staffing/staffing.md).
|
||||||
|
|
||||||
Первый срез, где игрок принимает решения. Школа открывается пустой: надо нанять людей из пула
|
Первый срез, где игрок принимает решения. Школа открывается пустой: надо нанять людей из пула
|
||||||
соискателей, раздать им предметы и уложиться в выделенную на месяц сумму. Уроков по-прежнему нет —
|
соискателей, раздать им предметы и уложиться в выделенную на месяц сумму. Уроков по-прежнему нет —
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## Срез 4. Расписание
|
## Срез 4. Расписание
|
||||||
|
|
||||||
Дизайн: [`../design/schedule.md`](../../design/04-schedule/schedule.md).
|
Дизайн: [`schedule.md`](../../design/04-schedule/schedule.md).
|
||||||
|
|
||||||
Часы учебного плана раскладываются по дням и кабинетам. Школа начинает жить по времени: видно,
|
Часы учебного плана раскладываются по дням и кабинетам. Школа начинает жить по времени: видно,
|
||||||
что идёт в комнате прямо сейчас. Люди при этом по-прежнему **не ходят** — они находятся там, где
|
что идёт в комнате прямо сейчас. Люди при этом по-прежнему **не ходят** — они находятся там, где
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## Срез 5. Жизнь школы
|
## Срез 5. Жизнь школы
|
||||||
|
|
||||||
Дизайн: [`../design/ai.md`](../../design/05-ai/ai.md).
|
Дизайн: [`ai.md`](../../design/05-ai/ai.md).
|
||||||
|
|
||||||
Люди начинают ходить и решать. Присутствие перестаёт вычисляться из расписания и становится
|
Люди начинают ходить и решать. Присутствие перестаёт вычисляться из расписания и становится
|
||||||
состоянием: человек приходит утром, идёт коридором, может уйти с урока в туалет и вернуться.
|
состоянием: человек приходит утром, идёт коридором, может уйти с урока в туалет и вернуться.
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
- [x] Разрешённый порядок виден: пишется в лог при старте школы и возвращается в ответе создания
|
- [x] Разрешённый порядок виден: пишется в лог при старте школы и возвращается в ответе создания
|
||||||
- [x] Сейв хранит **разрешённый** порядок паков, чтобы школа поднималась тем же каталогом
|
- [x] Сейв хранит **разрешённый** порядок паков, чтобы школа поднималась тем же каталогом
|
||||||
- [x] Загрузчик пишет предупреждение, когда у конкретного def нет подписи в локали пака
|
- [x] Загрузчик пишет предупреждение, когда у конкретного def нет подписи в локали пака
|
||||||
- [x] `docs/protocol.md` и [`docs/design/06-foundation/foundation.md`](../../design/06-foundation/foundation.md) правятся тем же
|
- [x] `docs/protocol.md` и [`foundation.md`](../../design/06-foundation/foundation.md) правятся тем же
|
||||||
коммитом, что и обработчики
|
коммитом, что и обработчики
|
||||||
|
|
||||||
## Тесты, без которых фаза не закрыта
|
## Тесты, без которых фаза не закрыта
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
пока не выбран
|
пока не выбран
|
||||||
- [x] Пак едет в вывод сборки тестов теми же правилами, что и `core`
|
- [x] Пак едет в вывод сборки тестов теми же правилами, что и `core`
|
||||||
- [x] Короткий `README.md` внутри пака: что где лежит и как добавить своё
|
- [x] Короткий `README.md` внутри пака: что где лежит и как добавить своё
|
||||||
- [x] Ориентир в [`docs/design/01-shell/defs.md`](../../design/01-shell/defs.md) показывает на него как на образец
|
- [x] Ориентир в [`defs.md`](../../design/01-shell/defs.md) показывает на него как на образец
|
||||||
|
|
||||||
## Тесты, без которых фаза не закрыта
|
## Тесты, без которых фаза не закрыта
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
## Зачем
|
## Зачем
|
||||||
|
|
||||||
[`docs/design/05-ai/ai.md`](../../design/05-ai/ai.md) обещает: числа поведения — деф правил, как `StaffingDef` у
|
[`ai.md`](../../design/05-ai/ai.md) обещает: числа поведения — деф правил, как `StaffingDef` у
|
||||||
штата. Порог нужды и разброс на дорогу туда уехали, а веса целей остались константами в коде.
|
штата. Порог нужды и разброс на дорогу туда уехали, а веса целей остались константами в коде.
|
||||||
Пока они там, мод, меняющий одно число, вынужден быть форком.
|
Пока они там, мод, меняющий одно число, вынужден быть форком.
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
- [x] Существующие школы не меняются: сид читается из файла людей, как и сейчас
|
- [x] Существующие школы не меняются: сид читается из файла людей, как и сейчас
|
||||||
- [x] Тесты хоста, которым нужен предсказуемый состав, передают сид явно, а не полагаются на
|
- [x] Тесты хоста, которым нужен предсказуемый состав, передают сид явно, а не полагаются на
|
||||||
порядок создания
|
порядок создания
|
||||||
- [x] `docs/protocol.md` и [`docs/design/02-people/people.md`](../../design/02-people/people.md) правятся тем же коммитом
|
- [x] `docs/protocol.md` и [`people.md`](../../design/02-people/people.md) правятся тем же коммитом
|
||||||
|
|
||||||
## Тесты, без которых фаза не закрыта
|
## Тесты, без которых фаза не закрыта
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## Срез 6. Фундамент
|
## Срез 6. Фундамент
|
||||||
|
|
||||||
Дизайн: [`../design/foundation.md`](../../design/06-foundation/foundation.md).
|
Дизайн: [`foundation.md`](../../design/06-foundation/foundation.md).
|
||||||
|
|
||||||
Срез без единой новой кнопки для игрока. Мод становится настоящим объектом, числа поведения
|
Срез без единой новой кнопки для игрока. Мод становится настоящим объектом, числа поведения
|
||||||
уезжают из кода в данные, сид перестаёт быть идентификатором, у сейва появляется версия, а то,
|
уезжают из кода в данные, сид перестаёт быть идентификатором, у сейва появляется версия, а то,
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
ошибка
|
ошибка
|
||||||
- [x] Вещь с несколькими `layers` допустима (платье). Пересечение слоёв у двух надетых сразу
|
- [x] Вещь с несколькими `layers` допустима (платье). Пересечение слоёв у двух надетых сразу
|
||||||
валидатор не проверяет — это состояние человека, не каталога
|
валидатор не проверяет — это состояние человека, не каталога
|
||||||
- [x] Ваниль по [`docs/design/07-inventory/inventory.md`](../../design/07-inventory/inventory.md): бельё, носки, низы, верх,
|
- [x] Ваниль по [`inventory.md`](../../design/07-inventory/inventory.md): бельё, носки, низы, верх,
|
||||||
свитер, куртка/пальто/шуба, обувь, шапка, аксессуары, платье, форма физкультуры,
|
свитер, куртка/пальто/шуба, обувь, шапка, аксессуары, платье, форма физкультуры,
|
||||||
портфель, учебник, телефон, бутылка
|
портфель, учебник, телефон, бутылка
|
||||||
- [x] Палитра цветов и локали ru/en на все новые def
|
- [x] Палитра цветов и локали ru/en на все новые def
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
- [x] В «Управлении» вкладка **«Правила»** рядом со штатом, не новый верхний режим
|
- [x] В «Управлении» вкладка **«Правила»** рядом со штатом, не новый верхний режим
|
||||||
- [x] Четыре комбобокса: форма учеников, цвет учеников, форма сотрудников, цвет сотрудников.
|
- [x] Четыре комбобокса: форма учеников, цвет учеников, форма сотрудников, цвет сотрудников.
|
||||||
Значения — как в [`docs/design/07-inventory/inventory.md`](../../design/07-inventory/inventory.md)
|
Значения — как в [`inventory.md`](../../design/07-inventory/inventory.md)
|
||||||
- [x] Сохранение пишет завтрашнее правило; на экране видно, что действует сегодня и что
|
- [x] Сохранение пишет завтрашнее правило; на экране видно, что действует сегодня и что
|
||||||
вступит завтра
|
вступит завтра
|
||||||
- [x] HTTP: чтение текущих+отложенных, запись отложенных. Отказ по неизвестному коду правила —
|
- [x] HTTP: чтение текущих+отложенных, запись отложенных. Отказ по неизвестному коду правила —
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## Срез 7. Одежда, вещи и климат
|
## Срез 7. Одежда, вещи и климат
|
||||||
|
|
||||||
Дизайн: [`../design/inventory.md`](../../design/07-inventory/inventory.md).
|
Дизайн: [`inventory.md`](../../design/07-inventory/inventory.md).
|
||||||
|
|
||||||
Человек одевается, несёт вещи, мёрзнет и переодевается. Игрок смотрит гардероб и выбирает
|
Человек одевается, несёт вещи, мёрзнет и переодевается. Игрок смотрит гардероб и выбирает
|
||||||
правила школы; надевает не он. Погода видна у часов. Срез можно остановить после этапа A —
|
правила школы; надевает не он. Погода видна у часов. Срез можно остановить после этапа A —
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## Срез 8. Сессия и темп
|
## Срез 8. Сессия и темп
|
||||||
|
|
||||||
Дизайн: [`../design/session.md`](../../design/08-session/session.md).
|
Дизайн: [`session.md`](../../design/08-session/session.md).
|
||||||
|
|
||||||
Несколько браузеров на одном сервере: общий пароль альфы, имя игрока, свои школы и чужие
|
Несколько браузеров на одном сервере: общий пароль альфы, имя игрока, свои школы и чужие
|
||||||
отдельным списком. Часы становятся смотрибельными — минута за секунду, на высоких скоростях
|
отдельным списком. Часы становятся смотрибельными — минута за секунду, на высоких скоростях
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## Срез 9. Общение и романтический пак
|
## Срез 9. Общение и романтический пак
|
||||||
|
|
||||||
Дизайн: [`../design/social.md`](../../design/09-social/social.md).
|
Дизайн: [`social.md`](../../design/09-social/social.md).
|
||||||
|
|
||||||
Разговор становится кружком, мнение — числом, вражда — ссорой. Романтика не ваниль: отдельный
|
Разговор становится кружком, мнение — числом, вражда — ссорой. Романтика не ваниль: отдельный
|
||||||
пак. Срез можно остановить после этапа B — школа болтает, даже если драк и пака ещё нет.
|
пак. Срез можно остановить после этапа B — школа болтает, даже если драк и пака ещё нет.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## Срез 10. Ремесло
|
## Срез 10. Ремесло
|
||||||
|
|
||||||
Дизайн: [`../design/craft.md`](../../design/10-craft/craft.md).
|
Дизайн: [`craft.md`](../../design/10-craft/craft.md).
|
||||||
|
|
||||||
Срез без новой кнопки. Слои ловятся одним тестовым проектом, клиентский `npm test` гоняет tsc,
|
Срез без новой кнопки. Слои ловятся одним тестовым проектом, клиентский `npm test` гоняет tsc,
|
||||||
работник и карточка режутся по швам, дамп проверяет явку. После этапа A школа целая, даже если
|
работник и карточка режутся по швам, дамп проверяет явку. После этапа A школа целая, даже если
|
||||||
|
|||||||
@@ -2,12 +2,12 @@
|
|||||||
|
|
||||||
## Вне очереди
|
## Вне очереди
|
||||||
|
|
||||||
Дизайн: [`../design/off-queue.md`](../../design/off-queue/README.md).
|
Дизайн: [`off-queue.md`](../../design/off-queue/README.md).
|
||||||
|
|
||||||
Склейка уже живых систем и мелкий DX, не новый кусок игры. Номера не спорят с именованными
|
Склейка уже живых систем и мелкий DX, не новый кусок игры. Номера не спорят с именованными
|
||||||
срезами. После каждой игровой фазы школа целая. 50–52 стоят на 48; 53 — на 18 и 32, можно
|
срезами. После каждой игровой фазы школа целая. 50–52 стоят на 48; 53 — на 18 и 32, можно
|
||||||
параллельно с 48. 49, 54 и 55 от них не зависят. Баг в уже сделанном —
|
параллельно с 48. 49, 54 и 55 от них не зависят. Баг в уже сделанном —
|
||||||
[`../bugs/README.md`](../../bugs/README.md).
|
[bugs](../../bugs/README.md).
|
||||||
|
|
||||||
| Фаза | Статус | Зачем |
|
| Фаза | Статус | Зачем |
|
||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
|
|||||||
Reference in New Issue
Block a user