Джина Гайд

Форматы репозитория требований v2

Основной принцип

Авторский материал хранится в Markdown и редактируется непосредственно. Агент проверяет смысл, полноту, противоречия и последствия изменения. Для автоматических проверок выделяется небольшой набор контрольных полей. Порядок разделов, пояснения и дополнительные колонки могут меняться.

Строгий машинный формат вводится, когда данные потребляет программа, проверка повторяется часто или ошибка существенно опасна. Не следует переводить весь документ в JSON ради проверки нескольких полей. Подробный выбор по каждому артефакту: ARTIFACTS.md.

Канонические источники

Содержание Источник Как проверять
Потребности docs/requirements/README.md Агент: цель, границы, гарантии
Правила openspec/specs/*/spec.md Агент: смысл; выбранные метаданные: ID/связи/покрытие
Вопросы docs/questions.md Агент: варианты и влияние; скрипт: статус и блокировки
Решения docs/decisions.md Агент: обоснование, альтернативы и последствия; скрипт: ID/ссылки
Допущения docs/assumptions.md Агент: достаточность подтверждения; скрипт: незакрытые блокировки
Применимость docs/applicability.md Агент: обоснование; скрипт: непроверенные области
Постоянное влияние impact/stretch-matrix.md Агент: смысл зависимостей; скрипт: известные триггеры/ссылки
Разбор изменения impact/reviews/*.md Агент: вывод и основание; скрипт: незакрытые позиции выбранного плана
Проект архитектуры architecture/*.md Агент: согласованность и достаточность представлений
Контракты и входы тестов contracts/*.schema.json, acceptance/datasets/*.json Машинная валидность и ожидаемые результаты
Контроль покрытия acceptance/scenarios/*.json Связи CHECK→REQ/aspect/case для повторяемого расчёта

generated/ содержит только вычисляемые coverage.md и traceability.md. Это необязательные отчёты/кэш; источником требований они не являются. JSON-вывод покрытия создаётся по запросу командой python scripts/reqtool.py coverage --json, отдельно сохранять generated/coverage.json не нужно.

Размещение HLR и материалов

Точка входа — docs/requirements/README.md. Канонические определения HLR находятся в Markdown-файлах предметных пакетов внутри docs/requirements/. В одном файле допускается несколько HLR. Статусы и приоритеты не дублируются в оглавлении; группировка каталогов не создаёт дополнительного уровня требований.

Загрузчик рекурсивно читает *.md в каталоге, исключая assets/, attachments/ и скрытые каталоги. Содержимое приложений не становится требованиями автоматически. При чтении проверяются те же метаданные и глобальная уникальность ID. Прежний docs/requirements.md также поддерживается; в новом комплекте это только ссылка на оглавление. Без прежнего файла каталог продолжает работать.

В assets/README.md обычным Markdown описываются назначение, источник/версия, связанные требования и роль материала. Иллюстрация не вводит нормативных правил. Нормативный источник явно связывается с требованием; существенные обязательства доступны в тексте. Относительные ссылки отсчитываются от документа; поля sources остаются путями от корня репозитория. Нормативные источники в sources участвуют в проверке ссылок и анализе влияния.

Вопросы

Один вопрос — раздел ## Q-AREA-001 — Формулировка. Свободно описывайте контекст, варианты и влияние. Для проверки готовности используются поля:

## Q-AREA-001 — Как обрабатывается частичный ответ?

- Статус: open
- Ответственный: product-owner
- Требования: REQ-AREA-001
- Блокирует: REQ-AREA-001
- Этапы: implementation
- Решение: —
- Рабочее решение: —

### Контекст

Пояснение проблемы и варианты решения.

Статус open/resolved. Блокирует содержит ID требований либо «—». Этапы: implementation/release либо «—». Вопрос со статусом resolved ссылается на DEC; open не содержит финального решения. Необязательное поле «Рабочее решение» содержит один текущий DEC со статусом working; отсутствующее поле эквивалентно «—». Оно не меняет статус вопроса или его блокировки. Рабочий DEC должен быть связан с открытым вопросом; proposed/working не используются как финальный ответ для resolved. Контрольные значения не извлекаются из произвольной прозы: неоднозначная запись должна остановить проверку, а не скрыть блокировку. Владелец, срок ответа, варианты и влияние проверяются агентом.

Решения и допущения

Решение — раздел ## DEC-AREA-001 — Выбранный вариант, поля Статус, Требования, Заменяет и обычные разделы «Обоснование», «Альтернативы», «Последствия», «Источник». Статусы proposed/working/accepted/deprecated/superseded. Working — рабочий вариант, принятый к реализации при открытом вопросе; accepted — окончательно принятый вариант. Для архитектурных решений используйте DEC-ARCH-*. Изменение принятого выбора оформляйте новым решением с ссылкой на замещаемое.

Допущение — раздел ## ASM-AREA-001 — Предположение, поля Статус, Требования и Блокирует; далее основание, риск и способ подтверждения. Статусы unconfirmed/confirmed/rejected. Неподтверждённое допущение блокирует --ready для перечисленных требований. Подтверждение должно объяснять, на каких данных основан вывод; его достаточность оценивает агент.

Не требуется заполнять машинной схемой всю пояснительную часть. Проверяются ID, статусы и выбранные связи; содержательная полнота остаётся предметом ревью.

Применимость

docs/applicability.md — редактируемая таблица. Контрольные колонки: Область, Статус (pending/assessed), Применимо (да/нет), Артефакты. Обоснование пишется свободно. profile/profile.json задаёт список областей проверяемого профиля. Pending означает, что область ещё не рассмотрена; assessed не доказывает полноту её спецификации.

Протяжка и разбор изменения

В impact/stretch-matrix.md правило имеет ID IMPACT, поля «Изменения ID» и «Изменения путей», таблицу «Пересмотреть | Причина». Пути-триггеры — glob относительно корня репозитория. Цель — существующий ID или файл. Пустой список обозначается «—». Это авторские связи влияния; инструмент также находит известные прямые связи требований, проверок, данных и выбранного каталога.

В impact/reviews/*.md один раздел REVIEW, поле «Изменения» и таблица «Правило | Цель | Статус | Вывод | Основание». Статусы pending/updated/checked/not_applicable. Для завершённой позиции нужны вывод и ссылки-основания. Существование основания проверяет скрипт, его достаточность — агент. Если используется автоматически рассчитанный план, старый разбор с пропущенными позициями отклоняется. Это проверка полноты известного списка, а не утверждение, что найдено всё влияние.

Автоматизируемые REQ, проверки и данные

По умолчанию сценарий приёмки — читаемый Markdown с исходной ситуацией, действием и наблюдаемым результатом. JSON вводится для конкретного машинного потребителя. Методическая основа и границы автоматизации описаны в GUIDE.md, раздел «Подход к сценариям приёмки».

Форма JSON-сценария — собственный профиль репозитория, а не общепринятый формат сценариев или штатный формат OpenSpec. JSON Schema задаёт структуру этого профиля, но не проверяет корректность бизнес-смысла или поведение продукта.

Для часто проверяемого покрытия сохраняется прежний блок requirement в Markdown спецификации: id, level, status, owner, parents, sources, questions, required_aspects, verification, risk. HLR имеет пустые parents/aspects; REQ — родителей HLR и аспекты обязательства. Status: draft/agreed/retired. Нормативный текст остаётся обычным Markdown, MUST/SHALL обозначает обязательство. Шаблон: templates/spec.md.

acceptance/scenarios/*.json используется для выбранного автоматического контроля: один CHECK может ссылаться на несколько REQ/aspects, один REQ проверяться многими CHECK. Uses — предусловие и не засчитывается в покрытие. Case_ids ограничивает применимые случаи; oracle должен существовать в expected каждого случая. Implementation=null означает план проверки. Даже заполненная implementation обозначает связь с реализацией проверки, а не успешное исполнение; нужны отдельные результаты испытаний. Человеческие сценарии без такого контроля можно описывать непосредственно в Markdown; не следует объявлять их автоматически покрытыми.

acceptance/datasets/*.json и contracts/*.schema.json содержат машинные входы и эталоны. Valid описывает соответствие входа схеме, а не успешность бизнес-действия. Отказ чужой роли может быть valid=true. Эти форматы оправданы повторяемой валидацией входов и контрактов.

Архитектурные проверки

Представления в architecture/ — авторский Markdown/Mermaid. Каталог architecture/catalog.md задаёт единственные определения элементов, статических связей и владельцев. Для выбранных частых проверок его таблицы имеют контрольные колонки ID/Тип/Родитель, От/К/Доступ/Сущность, владельцы/читатели, распределение REQ и связь ограничения с решением/проверкой.

profile/profile.json / architecture_required=true включает проверки каталога: ссылки, единственного владельца записи, допустимых читателей и значимых архитектурных ограничений. В примере этот контроль выбран из-за риска потери уведомления и раскрытия данных. В стартовом шаблоне он отключён: сначала определите, какие ограничения стоят такой проверки. Порядок и пояснительные колонки свободны; диаграммы, runtime, размещение и достаточность NFR проверяет агент. Каталог не превращает все архитектурные документы в строгую машинную модель.

История и идентификаторы

ID стабилен и уникален в основном снимке. Повтор ссылки допустим; archive и templates не являются новыми декларациями. OpenSpec проверяет текущий снимок отдельно от изменения/архива. Reqtool не применяет deltas автоматически. Ссылки на файлы в Markdown относительны к самому документу; JSON-пути к машинным входам — к корню репозитория.