Привязать все задачи к этапам разработки

This commit is contained in:
2026-08-19 00:05:32 +03:00
parent 093fb63ca6
commit b840684ef3
6 changed files with 283 additions and 86 deletions
+14 -2
View File
@@ -13,6 +13,7 @@ master tracks origin/master
- [`DEVELOPMENT_PLAN.md`](DEVELOPMENT_PLAN.md) — утверждённый GDD + TDD + production roadmap;
- [`CURRENT_ROADMAP.md`](CURRENT_ROADMAP.md) — ближайшая последовательность работ для существующего vertical slice.
- [`STAGE_REGISTRY.md`](STAGE_REGISTRY.md) — обязательная stage-классификация всех Beads от Prototype до Release Candidate.
## Структура backlog
@@ -22,9 +23,16 @@ master tracks origin/master
- предметные задачи с acceptance criteria, приоритетами и зависимостями;
- уже подтверждённые кодом и QA элементы закрыты с причиной.
На 18 августа 2026 года в snapshot находятся 72 beads: 22 закрыты, 6 находятся в работе и 44 открыты. Эти числа нельзя трактовать как точный процент готовности, потому что в базе смешаны эпики, features и задачи разного размера.
На 18 августа 2026 года в snapshot находятся 78 beads. Эти числа нельзя
трактовать как точный процент готовности, потому что в базе смешаны эпики,
features и задачи разного размера.
Текущий gate — `goon-game-milestone-vslice`. Инженерный кандидат этапа 2 собран; незакрытые gates включают `goon-game-human-playtest` и performance/repetition criteria `goon-game-regression-10`. Задачи этапа 3 можно начинать параллельно, не объявляя внешний playtest завершённым.
Текущий primary gate — Stage 5 и `goon-game-milestone-vslice`. Этапы 0–4
не содержат незакрытых primary-задач. Stage 5 включает внешний
`goon-game-human-playtest`, оставшийся performance/repetition criterion
`goon-game-regression-10`, balance comprehension gate, art/audio, lifecycle,
save migration и performance budget. Production content 55–70 уровней имеет
primary Stage 6.
## Ежедневные команды
@@ -60,6 +68,7 @@ bd close goon-game-bot-framework --reason "Acceptance criteria выполнен
```sh
bd dep cycles
bd export --output .beads/issues.jsonl
./scripts/check-stage-assignments.sh
```
Завершение сессии:
@@ -81,3 +90,6 @@ git status --short --branch
5. Не редактировать `.beads/issues.jsonl` вручную: source of truth — embedded Dolt в `.beads/embeddeddolt`.
6. Git remote обязателен для исходников и JSONL snapshot; после каждого изменения backlog экспортировать JSONL, коммитить и делать push.
7. `bd dolt push` публикует отдельную внутреннюю историю и выполняется только после явного разрешения владельца.
8. Каждая Bead обязана иметь минимум один `stage-N`, ровно один
`primary-stage-N` и совпадающую metadata `primary_stage`; новые задачи без
этой классификации не должны попадать в commit.
+77 -6
View File
@@ -6,7 +6,7 @@
## 1. Текущее состояние
Инженерная часть этапов 2–4 завершена:
Этапы 0–4 завершены по primary-stage ownership:
- реализованы 10 последовательных уровней;
- работают движение, прыжок и мобильное multitouch-управление;
@@ -37,6 +37,11 @@
Performance-оговорка: исторический критерий этапа 1 «полный прогон до 5 минут» не выполнен на текущем throttled AVD. После расширения набора до 16 методов exact final matrix занимает `9:32.496`. Сокращать трёхкратные прохождения или скрывать нестабильность retries запрещено; оптимизация runner остаётся отдельной QA-задачей и не меняет доказанную проходимость.
`goon-game-regression-10` сохраняет вторичную связь со Stage 1, а
`goon-game-level-balance` — со Stage 2. Их незавершённые performance и external
comprehension gates имеют primary Stage 5, поэтому завершённые инженерные этапы
не содержат скрытых открытых primary-задач.
## 2. Принципы разработки
1. Сначала acceptance-тест, затем исправление уровня.
@@ -49,6 +54,13 @@ Performance-оговорка: исторический критерий этап
## 3. Этапы
### Этап 0. Prototype foundation — завершён
В этот исторический этап входят базовый Android APK, character/death/corpse,
Canvas physics, camera, puzzle objects, hazards, HUD/multitouch, save, unit tests
и greybox-набор из десяти уровней. Он сохраняется в registry, чтобы завершённые
baseline-задачи также имели явного владельца по stage.
### Этап 1. Боты проходимости для уровней 1–10 — P0, 4–6 дней
Задачи:
@@ -120,7 +132,7 @@ Performance-оговорка: исторический критерий этап
- некорректный сигнал, дверь или объект отклоняется валидатором при сборке;
- все существующие уровни после миграции проходят тех же ботов.
### Этап 5. Художественная и звуковая альфа — P1, 8–15 дней
### Этап 5. Завершение Vertical Slice — P0/P1, 10–18 дней
Задачи:
@@ -129,15 +141,38 @@ Performance-оговорка: исторический критерий этап
- добавить анимации движения, смерти, respawn и реакции механизмов;
- добавить звуки управления, механизмов, результата и фоновую музыку;
- предусмотреть независимые настройки музыки, эффектов и вибрации;
- оптимизировать ресурсы для Android.
- завершить lifecycle/process-death и versioned save migration;
- доказать performance budget и три полных playability regression прогона;
- провести внешний playtest уровней 1–10 без объяснений разработчика;
- закрыть оставшийся comprehension/balance gate.
Критерии завершения:
- все игровые состояния визуально различимы без чтения внутренней логики;
- звук не является единственным источником обязательной информации;
- проект сохраняет стабильную частоту кадров на целевых устройствах.
- progress восстанавливается после Activity/process recreation и обновления приложения;
- `goon-game-milestone-vslice` принят вместе с performance и human-playtest gates.
### Этап 6. Техническая стабилизация — P0 перед внешней альфой, 4–7 дней
### Этап 6. Production content — P1, несколько итераций
Задачи:
- спроектировать и произвести четыре мира и 55–70 уровней;
- расширить hazards, corpse states и weighted physical objects;
- завершить character state machine, CorpseManager и event-driven PuzzleSystem;
- добавить challenges, collectibles и production progression;
- расширить модульные варианты персонажей без нарушения анимационных контрактов;
- проводить каждый уровень через JSON validator, solution graph, bot и level DoD.
Критерии завершения:
- все production-уровни проходят content pipeline и имеют versioned bot trace;
- новые mechanics сначала обучаются отдельно и только затем комбинируются;
- content не содержит blocker-softlocks и обязательных невосстановимых объектов;
- принят `goon-game-milestone-production`.
### Этап 7. Техническая стабилизация и release engineering — P0, 4–8 дней
Задачи:
@@ -148,6 +183,7 @@ Performance-оговорка: исторический критерий этап
- проверить обновление приложения поверх предыдущей версии и сохранность прогресса;
- подготовить release build, отдельный application ID для тестового канала и закрыто хранимый keystore;
- сформировать APK для прямой установки и AAB для Google Play Internal Testing.
- зафиксировать gameplay analytics contract и crash/ANR reporting без персональных данных.
Критерии завершения:
@@ -156,7 +192,7 @@ Performance-оговорка: исторический критерий этап
- release APK/AAB подписан, устанавливается и запускается на чистом устройстве;
- debug-инструменты не попадают в публичную конфигурацию без необходимости.
### Этап 7. Закрытая альфа — 1–2 итерации по 5–7 дней
### Этап 8. Закрытая альфа — 1–2 итерации по 5–7 дней
Задачи:
@@ -173,6 +209,36 @@ Performance-оговорка: исторический критерий этап
- отсутствуют открытые блокирующие дефекты;
- все значимые дефекты имеют решение или явно принятое продуктовое решение.
### Этап 9. Beta — 1–3 стабилизационные итерации
Задачи:
- объявить feature/content freeze;
- выполнить широкую device, upgrade, save-migration и localization QA matrix;
- исправлять blocker/critical/major defects без добавления новых mechanics;
- повторять production bots, analytics и ручные smoke-сценарии на каждом кандидате.
Критерии завершения:
- beta QA matrix зелёная;
- нет blocker и critical progression defects;
- content, format/physics versions и save migrations заморожены для RC.
### Этап 10. Release Candidate
Задачи:
- собрать финальные signed APK/AAB из воспроизводимого commit;
- проверить store metadata, privacy, analytics и crash reporting;
- выполнить финальный полный regression, чистую установку и upgrade path;
- зафиксировать известные ограничения и release decision.
Критерии завершения:
- `goon-game-milestone-rc` принят;
- нет blocker/critical defects, все уровни проходимы;
- release signatures, artifacts, remote commit и сохранность прогресса подтверждены.
## 4. Обязательный набор проверок каждого APK
Перед передачей тестировщикам должны выполняться:
@@ -203,6 +269,11 @@ preview. Боты публикуют versioned trace с идентификато
регрессий; неизменность gameplay подтверждена полным Android regression.
Контракт и evidence находятся в [`STAGE4_CONTENT_FORMAT.md`](STAGE4_CONTENT_FORMAT.md)
и [`STAGE4_QA_REPORT.md`](STAGE4_QA_REPORT.md). Следующая инженерная итерация —
этап 5, самостоятельный художественный стиль, анимации и звук.
этап 5, полное завершение Vertical Slice: самостоятельный art/audio pass,
lifecycle/save/performance gates и внешний playtest.
Полный registry этапов 0–10 и правила машинной привязки каждой Bead находятся в
[`STAGE_REGISTRY.md`](STAGE_REGISTRY.md). Production-задача четырёх миров и
55–70 уровней имеет primary Stage 6 и не остаётся вне нумерованного roadmap.
Параллельно внешний QA должен выполнить `goon-game-human-playtest`: по две ручные сессии каждого уровня без подсказок разработчика. До получения этого протокола milestone Vertical Slice нельзя называть принятым внешними тестировщиками.
+74
View File
@@ -0,0 +1,74 @@
# Stage registry Project Sacrifice
Этот документ задаёт единую нумерацию выполнения полного production plan.
Доменные EPIC продолжают отвечать на вопрос «какая система меняется», а stage —
«в какой последовательности и каким gate работа принимается».
## Контракт привязки
Каждая обычная Bead, feature, bug, milestone и EPIC обязана иметь:
- минимум один label `stage-N`;
- ровно один label `primary-stage-N`;
- metadata `primary_stage=N`, совпадающую с primary label.
Дополнительные `stage-N` допустимы для сквозной работы. Primary stage определяет,
какой gate отвечает за закрытие незавершённой задачи. Поэтому исторически начатая
работа может относиться к раннему stage, но иметь более поздний primary stage,
если её оставшийся acceptance gate выполняется позже.
## Нумерация
| Stage | Название | Основной результат | Тип |
|---:|---|---|---|
| 0 | Prototype foundation | Устанавливаемый greybox prototype и базовые systems | AFK, завершён |
| 1 | Playability automation | Боты уровней 1–10 и единый regression runner | AFK |
| 2 | Level correctness and balance | Устранённые softlocks, чистый restart, solution graphs | AFK |
| 3 | Mobile UX and accessibility | Controls, onboarding/results, RU/EN, accessibility | AFK |
| 4 | Content architecture and tools | Versioned JSON, validator/exporter, bot traces | AFK |
| 5 | Vertical Slice completion | Art/audio vertical slice, lifecycle/save/perf и внешний playtest | HITL gate |
| 6 | Production content | 4 мира, 55–70 уровней, полный набор mechanics/challenges | Mixed |
| 7 | Stabilization and release engineering | Device/performance matrix, analytics/crash, signed APK/AAB | AFK/HITL |
| 8 | Closed Alpha | Проверка продукта внешней alpha-группой | HITL |
| 9 | Beta | Feature freeze, широкая QA-матрица и исправления | HITL |
| 10 | Release Candidate | Финальный release gate без blocker/critical defects | HITL |
## Незавершённые сквозные gates
- `goon-game-regression-10` имеет `stage-1`, но primary Stage 5: runner создан,
однако критерий трёх полных прогонов быстрее пяти минут ещё не доказан.
- `goon-game-level-balance` имеет `stage-2`, но primary Stage 5: инженерные
исправления сделаны, а внешний comprehension/playtest gate остаётся открытым.
- `goon-game-human-playtest` относится к Stage 5 и не может быть закрыт ботами.
- `goon-game-content-worlds` имеет primary Stage 6 и начинается после принятия
`goon-game-milestone-vslice` Stage 5.
## Проверка
После любого изменения Beads выполнить:
```sh
./scripts/check-stage-assignments.sh
bd dep cycles
bd export --output .beads/issues.jsonl
```
Stage audit должен завершаться с `unassigned=0` и `invalidPrimary=0`.
Snapshot на 19 августа 2026 года:
| Primary stage | Всего Beads | Незакрыто |
|---:|---:|---:|
| 0 | 12 | 0 |
| 1 | 4 | 0 |
| 2 | 5 | 0 |
| 3 | 5 | 0 |
| 4 | 4 | 0 |
| 5 | 15 | 15 |
| 6 | 18 | 18 |
| 7 | 9 | 9 |
| 8 | 1 | 1 |
| 9 | 1 | 1 |
| 10 | 4 | 4 |
Всего: 78; непривязанных: 0; задач с некорректным primary stage: 0.