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 — на английском, остальной текст на русском"