docs/ по канону 12: паспорт с целью проекта, архитектура сегодняшнего устройства, схема хранилища, модель угроз, конвенции кода, журнал ревью. Конвенции перенесены из jellybit; места, где код им не следует, помечены строкой «Расхождение» как объявленный долг. tasks/ с роадмапом: две достигнутые цели, две запланированные (веб и многопользовательский режим), два направления (все форматы, долгие записи) и пять задач в беклоге. openspec/config.yaml — маршрутизатор с адресами документов, спек пока нет. CLAUDE.md переписан по форме канона: инварианты с severity, семантика гейта, запреты с путями. Taskfile получил task gate.
2.3 KiB
2.3 KiB
Журнал решений
Одна запись — одно решение. ADR переносит решение из архивного design.md, а
не сочиняет его заново: запись цитирует решение и ссылается на
openspec/changes/archive/<id>/design.md.
Когда заводить
Верно одно из трёх:
- дорогой откат — переделка стоит дороже переписывания одного файла;
- намеренный отказ от очевидного подхода;
- пересмотр прежнего решения — тогда у старой записи обязателен статус «заменено на».
Не заводить для рутины и для того, что видно из кода и git log.
Соглашения
- Имя файла —
ADR-ГГГГ-ММ-ДД-slug.md, дата — когда решение реально принято. Слаг английский по сути, а не транслитом:queue-as-table, неochered-tablicej. Форму имени и слаг проверяетdocs.py check. - Записи неизменяемы: передумали — новая запись, старой ставится статус.
- Активная запись статуса не имеет. Значений два:
заменено на ADR-…иустарело; ставятся полем меты записи —- **Статус:** …рядом с датой и источником, а не абзацем в теле.
Записи
Новые сверху.
| Дата | Запись | Статус |
|---|
Записей нет: канон заведён 2026-08-10, а решения, принятые до него, источника в архиве изменений не имеют — сочинять их задним числом правило запрещает. Ближайшие кандидаты назовёт первое же изменение, которое тронет хранилище или вход: замена SQLite на PocketBase и вход через OIDC оба проходят триггер «дорогой откат».