Files
avandClaude Opus 5 893d63d929 канон: «почему» больше не отправляется в architecture.md
Три документа — CLAUDE.md, паспорт и openspec/config.yaml — велели писать
причину отвергнутого решения в architecture.md. По канону дом «почему» это
design.md изменения и промоут в docs/adr/, а architecture.md переезд как раз
опустошает: обоснования шли ровно туда, откуда их вычищают.

Раздел «Процесс» в CLAUDE.md пересказывал шаги пайплайна дословно — тот же
второй дом, что уже вычищен из config.yaml. Осталось три вещи, которые
действительно проектные: автономность, prior art, «поток не останавливается».

config.yaml пересказывал паспорт и инвариант безопасности — стали ссылками.

docs/review.md ссылался на healthlog-review-rubric и healthlog-task-pipeline,
удалённые вместе с проектными копиями. Первое — указание на будущее, поэтому
исправлено на проходы rubric и ops; второе оставлено историей с пометкой.

README.md называл architecture.md домом «принятых решений» и не упоминал
database.md и adr/ вовсе.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-03 17:31:12 +03:00

66 lines
5.2 KiB
YAML

schema: spec-driven
context: |
Language: Russian
Пиши на русском, но:
- Структурные заголовки оставляй на английском:
## ADDED/MODIFIED/REMOVED Requirements, ### Requirement:, #### Scenario:
- Ключевые слова GIVEN/WHEN/THEN и RFC 2119 (SHALL/MUST/SHOULD) — на английском
- Технические термины (API, REST, JSON, MCP), пути и код — на английском
Имена capabilities:
- Capability — это ПОВЕДЕНИЕ/домен системы, а не пакет кода (совпадение с
именем пакета допустимо, но не критерий).
- Существительное, понятное без знания кода: ingest, parsing, storage,
read-api, self-description. НЕ store/httpapi (это реализация).
- Гранулярность по принципу «требования меняются вместе». Дробить, когда в
одной спеке смешиваются разные заботы. Переименовать дёшево (RENAMED
Requirements) — не дроби преждевременно в маленьком проекте.
RFC 2119 — это требование валидатора, не стиль:
- Каждое ### Requirement ОБЯЗАНО содержать литерал SHALL или MUST, иначе
`openspec validate` падает (проверено). Поэтому эти слова и WHEN/THEN не
русифицируем — они несут точную нормативную/структурную семантику.
Ревью (процесс, не артефакт):
- Правило выбора профиля и состав проходов здесь не пересказываем: их дом —
скилл av-dev-pipeline:review-pipeline, проектная настройка — docs/review.md.
Конвенции кода (соблюдать при apply):
- Механизируемое проверяет `task gate`, прозой остаётся
docs/conventions/README.md. Ни состав шагов гейта, ни перечень конвенций
здесь не пересказываем: и то и другое растёт по ходу задач, а источник
скажет точнее и всегда актуальнее.
Что это за проект — читай перед предложением, а не отсюда:
- docs/passport.md — цель, её граница (чем проект НЕ является), потребители,
типовые сценарии, референсы;
- CLAUDE.md — инварианты с severity и семантика гейта;
- docs/architecture.md — устройство; docs/database.md — схема;
docs/security.md — периметр и модель угроз; docs/adr/ — почему решено так.
Пересказа этих документов здесь нет намеренно: второй дом факта расходится с
первым молча, и заметно это становится в предложении, которое уже написано.
Развилка или блокер — сперва prior art. Проект не уникален: готовые решения
смотрим в референсах паспорта, отвергаем — с названной причиной, и причина
идёт в design.md этого же изменения (оттуда её промоутит в docs/adr/ скилл
av-dev-pm:docs).
Разведка уже проведена, догадки о формате не нужны:
- docs/research/apple-health.md — находки на живом потоке, во многом расходящиеся с
документацией Health Auto Export. ПРОВЕРЬ ТАМ, прежде чем строить
предположение о формате входа: скорее всего вопрос закрыт измерением.
- Тесты на разбор формата держим на реальных пакетах (testdata), а не на
выдуманных: документация формата тонкая и местами врёт.
# Per-artifact rules (optional)
rules:
proposal:
- Capabilities называй по поведению/домену системы, не по пакету кода
specs:
# Кавычки обязательны: без них YAML обрежет строку на первом '#'.
- "Каждое ### Requirement обязано содержать SHALL или MUST (иначе валидация падает)"
- "Сценарий — ровно #### (четыре решётки); три или список молча теряются"
- "SHALL/MUST должно стоять в ПЕРВОМ абзаце требования: валидатор смотрит только его, обоснование ниже он не видит (проверено)"
- "Заголовки и WHEN/THEN/GIVEN — на английском, остальной текст на русском"