задачи: цель упразднена, у проекта появилась стадия
Тип goal и индекс ROADMAP.md убраны: цель — зонтик над параллельными направлениями, а у проекта на одного человека список работ линеен. Роадмап при этом наполовину дублировал беклог, а «что уже умеет» отвечают спеки и git log индекса. Секция «Готово» удалена, а не перенесена. Вместо цели — ось «стадия проекта»: build (беклог это план стройки, порядок строк значит зависимость, секция одна) и support (очередь правок, порядок значит важность, секции — полки домена). Стадия объявляется ключом [tasks] stage, меняется командой stage, без неё check отказывает: порядок строк нечем прочитать. Ушли теги goal:/decomposed, поле «Секция», раздел «Завершение», флаги --goal и edit --section. Версия раскладки 2 → 3, перевод проекта расписан записью журнала.
This commit is contained in:
@@ -29,7 +29,7 @@
|
||||
## Сопровождение и эксплуатация — целое и часть
|
||||
|
||||
Словарь этой темы — [shared/operations.md](../../../shared/operations.md):
|
||||
целое и часть, три места одной темы (секция роадмапа, раздел архитектуры, тема
|
||||
целое и часть, три места одной темы (задачи `chore`, раздел архитектуры, тема
|
||||
ревью `operations`) и граница с возможностями проекта. Здесь он не
|
||||
пересказывается: копия жила рядом с домом в одном дереве и была ровно тем
|
||||
вторым домом, против которого правило и написано.
|
||||
@@ -357,36 +357,35 @@ kebab-case.** Причина не эстетическая: имя файла с
|
||||
вовсе, и отказом это быть не может.
|
||||
|
||||
Раскладку, форму записи и команды держит скилл `av-dev:task-track`. Ниже — то,
|
||||
от чего зависит, читается ли проект как продукт: канон высказывается об этом
|
||||
потому, что роадмап отвечает на вопрос о **системе**, а не о работах.
|
||||
от чего зависит, читается ли проект как продукт.
|
||||
|
||||
**`ROADMAP.md` отвечает на «что приложение уже умеет и чего ещё не умеет».** Это
|
||||
не очередь работ: цель — **возможность приложения**, задача — шаг к ней.
|
||||
Достигнутая цель из роадмапа **не исчезает** — строка с датой переезжает в
|
||||
секцию достигнутого, потому что «что умеет» и есть половина вопроса, ради
|
||||
которого документ открывают. Вторым домом поведения роадмап при этом не
|
||||
становится: нормативное поведение живёт в `openspec/specs/`, роадмап отвечает,
|
||||
**когда и в каком порядке** оно появилось.
|
||||
**Индекс работ один — `BACKLOG.md`, и «что приложение уже умеет» он не
|
||||
отвечает.** На этот вопрос отвечают `openspec/specs/` (нормативное поведение) и
|
||||
`git log` индекса (когда и в каком порядке оно появилось). Роадмапа в каноне
|
||||
нет: половину своего вопроса он дублировал беклогом, а вторую — спеками.
|
||||
|
||||
**У каждой записи есть тип, и тип решает, что с ней можно делать.** Дом типа —
|
||||
**У проекта есть стадия, и она решает, что значит порядок строк беклога:**
|
||||
`build` — зависимость, `support` — важность. Канон её называет, потому что от
|
||||
неё зависит, читается ли список работ как план стройки или как очередь правок;
|
||||
механика — `task-track`, «Две стадии».
|
||||
|
||||
**У каждой задачи есть тип, и тип решает, что с ней можно делать.** Дом типа —
|
||||
поле меты `Тип` первой строкой; эмодзи в заголовке от него производна. Словарь
|
||||
закрыт:
|
||||
|
||||
| Тип | Что это |
|
||||
| --- | --- |
|
||||
| 🎯 `goal` | возможность приложения |
|
||||
| ✨ `feature` | снаружи появляется то, чего не было |
|
||||
| 🐞 `fix` | поведение расходится с заявленным |
|
||||
| 🧹 `chore` | обслуживание, поведение не меняется |
|
||||
| 🔬 `research` | исход — знание, а не изменение |
|
||||
|
||||
**Схемы записи здесь нет намеренно.** Какие разделы тип требует, нужна ли ему
|
||||
цель и берётся ли он в работу — скилл `av-dev:task-track`, раздел «Тип
|
||||
записи», подробно — по файлу на тип в его `references/task-<тип>.md`. Канон
|
||||
фиксирует **словарь**, потому что
|
||||
от него зависит, читается ли проект как продукт; схема — механика ведения задач,
|
||||
и второй её экземпляр разошёлся бы с первым (он и разошёлся: канон успел
|
||||
объявить цель у `fix` запрещённой, хотя она там необязательна).
|
||||
**Схемы записи здесь нет намеренно.** Какие разделы тип требует — скилл
|
||||
`av-dev:task-track`, раздел «Тип записи», подробно — по файлу на тип в его
|
||||
`references/task-<тип>.md`. Канон фиксирует **словарь**, потому что от него
|
||||
зависит, читается ли проект как продукт; схема — механика ведения задач, и второй
|
||||
её экземпляр разошёлся бы с первым (он и разошёлся: канон успел объявить цель у
|
||||
`fix` запрещённой, хотя она была необязательна, — и целей теперь нет вовсе).
|
||||
|
||||
Схема требуется **к взятию в работу**, а не к заведению: беклог пополняется чаще,
|
||||
чем разбирается, и требование на входе выгоняло бы в заметки то, что должно
|
||||
@@ -454,7 +453,7 @@ kebab-case.** Причина не эстетическая: имя файла с
|
||||
| почему решено так | `adr/`, источник — архивный `design.md` либо записка разведки |
|
||||
| граница домена, «чем не является» | `passport.md` |
|
||||
| инвариант и его severity | `CLAUDE.md` |
|
||||
| что приложение умеет и чего не умеет; порядок работ | `tasks/ROADMAP.md` |
|
||||
| что осталось сделать и в каком порядке | `tasks/BACKLOG.md` |
|
||||
| измеренное число | `research/` |
|
||||
| настройка с числовым значением | `database.md` |
|
||||
| периметр и модель угроз | `security.md` |
|
||||
@@ -488,8 +487,8 @@ kebab-case.** Причина не эстетическая: имя файла с
|
||||
| --- | --- |
|
||||
| `docs/review-brief.md` | документы канона и есть бриф; остаток — в `review.md` |
|
||||
| `docs/specs/` | `openspec/specs/` (поведение) и `architecture.md` (обзор) |
|
||||
| `docs/drafts/` | идея → запись `research`; отказ → ADR; порядок → `ROADMAP.md`; размышление → `opsx:explore` |
|
||||
| `docs/plan.md` | `tasks/ROADMAP.md` |
|
||||
| `docs/drafts/` | идея → запись `research`; отказ → ADR; порядок → `BACKLOG.md`; размышление → `opsx:explore` |
|
||||
| `docs/plan.md` | `tasks/BACKLOG.md` |
|
||||
| `BRIEF.md` | `passport.md` |
|
||||
| `docs/backlog/` | `tasks/` в корне репозитория |
|
||||
| `docs/review-journal.md`, `docs/review/journal.md` | `docs/review.md` |
|
||||
|
||||
@@ -22,6 +22,48 @@
|
||||
|
||||
---
|
||||
|
||||
## Версия 3 — 2026-08-13
|
||||
|
||||
Тип записи `goal` и индекс `ROADMAP.md` упразднены; у проекта появилась
|
||||
**стадия** — `build` (беклог это план стройки, порядок строк значит зависимость)
|
||||
или `support` (очередь правок, порядок значит важность).
|
||||
|
||||
Цель была зонтиком над параллельными направлениями — она нужна там, где список
|
||||
работ нельзя выстроить в один порядок. У проекта, который ведёт один человек,
|
||||
такого не бывает, и роадмап при этом наполовину дублировал беклог («чего ещё не
|
||||
умеет» = «что осталось в списке»), а вторую половину («что уже умеет») отвечают
|
||||
`openspec/specs/` и `git log` индекса.
|
||||
|
||||
**Что переехало.** Индекс остался один — `BACKLOG.md`. Поле меты `Секция` стало
|
||||
`Категория`; теги `goal:<слаг>`, `decomposed` и раздел `Завершение` упразднены;
|
||||
команды `list --goal`, `edit --goal`, `edit --section` и ключи `[tasks] roadmap`,
|
||||
`[tasks] completion_heading` — тоже. Появились ключ `[tasks] stage`, команда
|
||||
`tasks.py stage` и флаги `init --stage`, `adopt scan --stage`.
|
||||
|
||||
**Что сделать проекту.**
|
||||
|
||||
1. **Разобрать цели.** У каждой записи типа `goal` в `tasks/items/` два исхода, и
|
||||
выбирает человек: она становится обычной задачей (`edit <слаг> --type
|
||||
feature|fix|chore|research`) либо уходит (`close <слаг> --reason …`). Задачи,
|
||||
носившие её тег, живут дальше сами по себе. Скрипт этого не решает и говорит
|
||||
`НЕОДНОЗНАЧНО`.
|
||||
2. **Перенести содержимое `ROADMAP.md`.** Секция `Готово` **удаляется**: «что
|
||||
приложение умеет» отвечают спеки, «когда это появилось» — `git log`. Строки
|
||||
`Запланировано`, `Направления` и `Сопровождение` — это цели, и они разбираются
|
||||
шагом 1. Затем удалить сам файл и ключ `roadmap` из `.av-dev.toml`, если он там
|
||||
был.
|
||||
3. **Объявить стадию** — `tasks.py stage build` или `tasks.py stage support`.
|
||||
Приложение ещё строится и список работ линеен по зависимости — `build`;
|
||||
работает и правится точечно — `support`. Без ключа `check` отказывает: порядок
|
||||
строк нечем прочитать. На `build` секция беклога обязана остаться **одна** —
|
||||
слить полки надо руками, порядок строк в слитом списке знает только человек.
|
||||
4. **Поднять версию** — `docs.py bump`. Последним шагом.
|
||||
5. `docs.py check` и `tasks.py check --dir <каталог задач>` — до отсутствия
|
||||
дрейфа. Теги `goal:` и `decomposed`, поле `Секция` и старую форму меты снимет
|
||||
`tasks.py check --fix`.
|
||||
|
||||
---
|
||||
|
||||
## Версия 2 — 2026-08-13
|
||||
|
||||
Скилл `doc-canon` стал `canon`: префикс называл материал (`doc-`), а скилл
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
# Паспорт проекта
|
||||
|
||||
Зачем это и для кого. [architecture.md](architecture.md) отвечает «как
|
||||
устроено», [tasks/ROADMAP.md](../tasks/ROADMAP.md) — «в каком порядке», паспорт —
|
||||
устроено», [tasks/BACKLOG.md](../tasks/BACKLOG.md) — «что осталось», паспорт —
|
||||
«зачем и для кого».
|
||||
|
||||
## Цель
|
||||
@@ -261,7 +261,7 @@
|
||||
## Последствия
|
||||
|
||||
- `+` что стало лучше.
|
||||
- `−` чем платим: ограничения, риски, нагрузка на поддержку.
|
||||
- `−` чем платим: ограничения, риски, нагрузка на сопровождение.
|
||||
```
|
||||
|
||||
## `docs/review.md`
|
||||
|
||||
Reference in New Issue
Block a user