From 67cfa4516230c896872ab7d64cc522d3362cedb9 Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Mon, 3 Aug 2026 18:04:18 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BA=D0=B0=D0=BD=D0=BE=D0=BD=202:=20=D1=88?= =?UTF-8?q?=D0=B0=D0=BF=D0=BA=D0=B0=20ADR=20=E2=80=94=20=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D0=B0-=D0=B1=D0=BB=D0=BE=D0=BA=D0=BE=D0=BC,=20=D1=83=20=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D1=82=D1=83=D1=81=D0=B0=20=D0=BF=D0=BE=D1=8F=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=D1=81=D1=8F=20=D0=B4=D0=BE=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Поля Дата и Источник приведены к общей форме меты (поле на строку, имя жирным) — той же, что у задачи и у записи журнала дефектов. Существеннее второе. Правило «передумали — новая запись, старая получает статус» жило в каноне с первой версии, но места под статус шаблон не отводил: каждая запись изобретала своё — то абзацем, то заголовком, — а колонка «Статус» таблицы adr/README.md обязана его показывать и брала оттуда, где он у каждого свой. Теперь статус — такое же поле шапки, у активной записи его нет. Правка ушла в дом (canon.md, раздел adr/) и в оба скелета: template.md и «Соглашения» в adr/README.md. Скелеты уезжают в репозиторий проекта, поэтому версия канона поднята до 2 с записью в changelog: что добавилось, что переехало и три шага проекту. Копии под маркерами не тронуты — copies.py дословность подтверждает. Co-Authored-By: Claude Opus 5 (1M context) --- av-dev-pm/skills/canon/references/canon.md | 10 +++++-- .../skills/canon/references/changelog.md | 26 +++++++++++++++++++ .../skills/canon/references/skeletons.md | 13 +++++++--- av-dev-pm/skills/canon/scripts/docs.py | 2 +- 4 files changed, 44 insertions(+), 7 deletions(-) diff --git a/av-dev-pm/skills/canon/references/canon.md b/av-dev-pm/skills/canon/references/canon.md index d2e1573..7497610 100644 --- a/av-dev-pm/skills/canon/references/canon.md +++ b/av-dev-pm/skills/canon/references/canon.md @@ -1,6 +1,6 @@ # Канон документов проекта -**Версия 1.** +**Версия 2.** Это **единственный дом определения канона**. Скиллы `init`, `canon` и `docs` читают его, а не пересказывают: три описания одной раскладки разъедутся, и @@ -164,6 +164,12 @@ kebab-case. Записи неизменяемы: передумали — заводится новая, старая получает статус. Активная запись статуса не имеет. +**Статус живёт полем меты записи**, там же, где дата и источник: +`- **Статус:** заменено на ADR-…` либо `- **Статус:** устарело`. Места ему в +шаблоне не отводилось, и каждая запись изобретала своё — то абзацем, то +заголовком; в таблице `adr/README.md` статус при этом обязан быть, а брать его +оттуда, где он у каждого свой, нельзя. + ### `review.md` Два раздела с разными сроками жизни. @@ -286,7 +292,7 @@ kebab-case. ```json { - "canon": 1, + "canon": 2, "migrations": "internal/store/migrations", "tasks": { "backlog": "INDEX.md" diff --git a/av-dev-pm/skills/canon/references/changelog.md b/av-dev-pm/skills/canon/references/changelog.md index a18f8a5..8e80cbe 100644 --- a/av-dev-pm/skills/canon/references/changelog.md +++ b/av-dev-pm/skills/canon/references/changelog.md @@ -13,6 +13,32 @@ upgrade` идёт по записям снизу вверх от версии п --- +## Версия 2 — 2026-08-03 + +Шапка записи ADR — мета-блоком общей формы, и у статуса появился объявленный +дом. Раскладка не менялась: правка касается одного шаблона. + +**Что добавилось:** поле `- **Статус:**` в шапке `docs/adr/template.md` — +`заменено на ADR-…` либо `устарело`, у активной записи поля нет. Правило +«старая запись получает статус» было и раньше ([canon.md](canon.md), `adr/`), +но места под него шаблон не отводил: каждая запись изобретала своё, а колонка +«Статус» таблицы `adr/README.md` брала его оттуда, где он у каждого свой. + +**Что переехало:** поля `Дата` и `Источник` в шаблоне стали жирными +(`- **Дата:**`, `- **Источник:**`) — та же форма, что у меты задачи и у записи +журнала дефектов: поле на строку, имя жирным. + +**Что удалено:** ничего. + +**Что сделать проекту:** + +1. Привести `docs/adr/template.md` к скелету версии 2 + ([skeletons.md](skeletons.md), раздел `docs/adr/template.md`). +2. В существующих записях `docs/adr/ADR-*.md`: жирным поля шапки; если статус + записан прозой или заголовком — перенести его полем `- **Статус:**` в шапку + и сверить с колонкой «Статус» таблицы в `docs/adr/README.md`. +3. `docs/.pm.json`: `"canon": 2`. + ## Версия 1 — 2026-08-03 Первая версия. Проект любой прежней раскладки приводится к ней скиллом `canon` diff --git a/av-dev-pm/skills/canon/references/skeletons.md b/av-dev-pm/skills/canon/references/skeletons.md index ca40f26..61b74d8 100644 --- a/av-dev-pm/skills/canon/references/skeletons.md +++ b/av-dev-pm/skills/canon/references/skeletons.md @@ -220,7 +220,8 @@ реально принято. - Записи неизменяемы: передумали — новая запись, старой ставится статус. - Активная запись статуса не имеет. Значений два: `заменено на ADR-…` и - `устарело`. + `устарело`; ставятся полем меты записи — `- **Статус:** …` рядом с датой и + источником, а не абзацем в теле. ## Записи @@ -235,8 +236,12 @@ ```markdown # Краткий заголовок решения -- Дата: ГГГГ-ММ-ДД -- Источник: openspec/changes/archive//design.md +- **Дата:** ГГГГ-ММ-ДД +- **Источник:** openspec/changes/archive//design.md + +Статус ставится тем же полем и только при пересмотре: +`- **Статус:** заменено на ADR-…` либо `- **Статус:** устарело`. +У активной записи поля нет. ## Решение @@ -377,7 +382,7 @@ severity стоит здесь, а не выводится каждым прох ```json { - "canon": 1 + "canon": 2 } ``` diff --git a/av-dev-pm/skills/canon/scripts/docs.py b/av-dev-pm/skills/canon/scripts/docs.py index 5823f57..2cb51a4 100644 --- a/av-dev-pm/skills/canon/scripts/docs.py +++ b/av-dev-pm/skills/canon/scripts/docs.py @@ -25,7 +25,7 @@ from dataclasses import dataclass, field from pathlib import Path from typing import NoReturn -CANON_VERSION = 1 +CANON_VERSION = 2 OK, DRIFT, USAGE, ENV, INTERNAL = 0, 1, 2, 3, 4