AI Style Guide — генерация RENAR-артефактов
Назначение: style, тон, структура, длина и лексикон для AI-агентов, генерирующих RENAR-артефакты (ADAPT, BR, SR, SPEC, TC, Impact Analysis). Снимает класс рисков «разные модели → разный стиль → drift восприятия» (см. AIR-04, AIR-13 в 03-ai-risk-register.md). Источник:
research/07-style-guide-ai-generation.md.
Аналог в индустрии: Google Developer Documentation Style Guide, Microsoft Style Guide for technical writing, Diátaxis. Цель — единый ровный tone независимо от модели или промпт-инженера.
1. Принципы
1.1 Стиль = договорная точность
RENAR-артефакт — договорной документ между клиентом, командой и системой. Никаких метафор, никакого «красочного» языка, никаких ассоциаций. Только однозначные утверждения.
Хорошо:
Система должна принимать заявку на регистрацию через POST /auth/register.
Плохо:
Пользователи смогут легко и удобно создавать аккаунты через современный API.
1.2 Один артефакт = одна мысль
Каждый BR / SR / SPEC / TC покрывает одну концепцию. Если AI-агент склонен «упаковать» 3 темы в один SR — он должен декомпозировать, не упаковывать.
Сигнал упаковки: союз «и» в title, multiple actions в одном утверждении.
Плохо:
SR-05: Регистрация, авторизация и восстановление пароля
Хорошо:
SR-05: Регистрация клиента SR-06: Авторизация клиента SR-07: Восстановление пароля
1.3 Нет претензий на полноту
AI не должен «дорабатывать» требование от себя, если в источнике (ADAPT или ТЗ) этого нет. Каждое утверждение либо имеет citation, либо помечено derived с явным обоснованием.
Плохо:
- При регистрации проверяется уникальность email.
- При регистрации проверяется уникальность телефона. ← в ADAPT нет, AI домыслил
Хорошо:
- При регистрации проверяется уникальность email. [ADAPT-001 §2.1 Forward]
Если AI считает, что нужна проверка телефона — он не пишет её в SR, а добавляет в Critic-output: «возможно нужна проверка уникальности телефона — нет в ADAPT, требует backward finding к stakeholder».
1.4 Однозначность важнее красоты
Если выбор между точным длинным предложением и компактным неоднозначным — AI выбирает точное длинное. Длина — не enemy, ambiguity — enemy.
2. Структура и длина по типу артефакта
2.1 ADAPT
Body: 200-800 строк (зависит от объёма ТЗ).
Обязательные секции:
## Краткое содержание— 3-5 параграфов для одностраничного чтения клиентом.## Term mapping— таблица «клиент → инженер».## Forward: интерпретация по разделам ТЗ— раздел на каждый § ТЗ.## Backward: обнаруженные проблемы— записи B-NNN с lifecycle.## Резюме backward findings— таблица по категориям.## Generated artifacts(auto после approval).
Тон: двусторонний — Forward в инженерных терминах с явной интерпретацией, Backward в клиент-friendly формулировках.
2.2 BR — Business Requirement
Body: 30-80 строк.
Обязательные секции:
## Потребность— одно предложение по шаблону[Роль] должен [действие], чтобы [бизнес-цель].## Критерии успеха— 3-7 измеримых пунктов.## Контекст— 5-15 строк.
Запрещено:
- Технологии («через REST API», «Postgres», «React»).
- Конкретные экраны или поля БД.
- Размышления автора («мы думаем», «возможно», «было бы хорошо»).
Тон: формальный, императивный («должен», не «может»).
2.3 SR — System Requirement
Body: 40-150 строк.
Обязательные секции:
## Описание— одно предложение по шаблонуСистема должна [поведение]. [Условие].## Поведение— 5-20 пунктов с inline citations к ADAPT.## Ограничения— 3-10 пунктов.
Опциональные секции (когда применимо):
## Не входит в это требование— explicit out-of-scope.## Связанные SR— cross-links.
Запрещено:
- Названия таблиц БД, конкретных функций, классов.
- Frameworks («через FastAPI», «React-компонент»).
- Конкретные UI-paths («кнопка в правом углу») — это в SPEC-UI.
Тон: формальный, точный, поведенческий («система отвечает 422», не «возвращается ошибка»).
2.4 SPEC-* (9 типов)
Body: 80-400 строк (varies по типу).
Общие обязательные секции (см. 02-schemas.md §5):
## Назначение## Scope(входит / не входит)## <Type-specific sections>## Связь с требованиями## Связь с другими SPEC## Verification## Open questions
Тон по типам:
- SPEC-ARCH / API / DATA / INT / SEC / OPS: технико-аналитический. Допустимы конкретные технологии.
- SPEC-UI: пользователь-центричный нарратив с поведенческой точностью. «Менеджер видит ленту заказов, нажимает на заказ, открывается детальный экран», не «UI должен иметь listing component».
- SPEC-AI: model card style — capabilities, limits, failure modes, eval criteria.
- SPEC-PROC: procedural narrative с BPMN / state machine references.
2.5 TC — Test Case
Body: 30-80 строк.
Обязательные секции:
## Given(Предусловия) — 2-5 строк.## When(Действие) — 1-3 строки.## Then (Pass)— бинарный, наблюдаемый, воспроизводимый критерий.## Fail criteria— список наблюдаемых признаков нарушения, включая возможные побочные эффекты (security leaks, missing audit logs).## Not in scope— out-of-scope с pointer на покрывающие TC.
Тон: исполнительный, чёткий («выполняется X», «возвращается Y»).
2.6 Impact Analysis
Body: 50-200 строк (зависит от размера дельты).
Обязательные секции:
## Затронутые требования— таблица с типом изменения.## Затронутые SPEC— таблица с действием.## Затронутые TC— таблица с действием.## Затронутые задачи в backlog.## Open questions— что нужно уточнить со stakeholder через backward в delta-ADAPT.
Тон: аналитический, без оценок. Не «это плохое изменение», а «это изменение затрагивает X требований и Y задач».
3. Лексикон
3.1 Use (canonical)
- «Система должна …» (модальность).
- «должен» / «не должен» (RFC 2119 vocabulary — MUST / MUST NOT).
- «должна» / «не должна» (для системы).
- «возвращает» (HTTP/API behavior).
- «предусловия» / «постусловия» (формальные термины тестирования).
- «требование» / «утверждение» / «assertion».
- «критерий приёмки» (acceptance criterion).
- «backward finding» / «forward интерпретация» (RENAR canonical из ADAPT).
3.2 Запрещено
| Слово/фраза | Заменить на | Почему |
|---|---|---|
| «Хочется чтобы» | «Система должна» | Модальность должна быть строгой. |
| «Удобно» | конкретный измеримый критерий | Subjective. |
| «Современный» | конкретные tech requirements в SR/SPEC | Marketing language. |
| «Качественный» | измеримые quality characteristics из ISO/IEC 25010 | Subjective. |
| «Быстрый» | p95/p99 latency с числом | Vague. |
| «Надёжный» | uptime / reliability с числом | Vague. |
| «Возможно» / «Может быть» | (никогда в требованиях) | Hedging. |
| «Скорее всего» | (никогда) | Same. |
| «Желательно» | priority: should / could во frontmatter | Mixing channels. |
| «Понятный» | criteria for clarity (Flesch reading ease, etc.) | Subjective. |
| «Гладкий experience» | UX criteria в SPEC-UI | Marketing. |
| «Бесшовный» | конкретный технический критерий | Marketing. |
| «Поддерживать» (без объяснения как) | конкретный SR-уровень criteria | Vague. |
| «Интегрироваться с X» (без contract) | SPEC-INT с counterparty | Vague. |
3.3 Use Cases vs Stories vs Requirements
RENAR использует только canonical терминологию из 01-glossary.md. AI-агент не имеет права называть требование «User Story», «Use Case», «Scenario», «Capability» — это запрещённые синонимы. Полный список запрещённых терминов и подстановок — в 01-glossary.md §4.
4. Шаблоны утверждений
4.1 BR-утверждение
Шаблон: [Роль] должен [действие], чтобы [бизнес-цель].
Пример:
Пользователь должен автоматически получать и хранить уведомления выбранных приложений в фоновом режиме, чтобы не пропустить важные сообщения.
4.2 SR-утверждение
Шаблон: <actor> <action> <condition>. <consequence>.
Пример:
Система при первом запуске проверяет наличие разрешения NotificationListenerService. Если разрешение не выдано — отображается экран онбординга с кнопкой «Выдать доступ».
4.3 TC Pass-критерий
Шаблон: <actor> <action> <input>. <observable> <measurement>.
Пример:
POST /auth/login с body
{"email":"x@y.z", "password":"correct"}. Response status = 200, body содержит JWT сexp = now + 24h ± 1m.
4.4 TC Fail-критерий
Список наблюдаемых признаков нарушения, включая возможные побочные эффекты:
- Response status ≠ 200 (ошибка авторизации).
- В 401-ответе указано конкретное поле, которое неверно (утечка информации).
- В системный лог записывается plaintext password (security violation).
- Email с уведомлением о входе НЕ отправляется при успешной авторизации (missing side effect).
Не допускается: «Pass не выполняется». Это не Fail-критерий, это negation.
5. Citation conventions
5.1 Inline citation
Каждое утверждение в BR/SR/SPEC имеет inline-citation в квадратных скобках:
При первом запуске отображается экран онбординга. [ADAPT-001 §2.1 Forward]
Формат: [<id> <section>] или [<id> <section> line <N>] для точной строки.
5.2 Derived маркер
Если утверждение не цитата из ADAPT, а логически выведено:
Кнопка
Назадблокируется на экране онбординга. [ADAPT-001 §2.1 Forward, derived: ADAPT требует «нельзя пропустить онбординг» → блокировка системногоback]
Объяснение derived обязательно.
5.3 Multi-source
Если утверждение поддерживается несколькими источниками:
Пароль хранится в зашифрованном виде. [ADAPT-001 §3 НФТ-002, ISO 27001 A.10.1.1]
5.4 Что НЕ citation
- Ссылка на сам код («см.
auth/login.py») — не источник требования. - Ссылка на тикет в багтрекере — не источник требования (см. 01-glossary.md §1 Authority chain).
- Ссылка на чат / устный разговор без записи в ADAPT backward → asked-to-client → answered.
6. System prompt для AI-генератора
Каждый AI-агент, генерирующий RENAR-артефакт, получает system prompt из:
- Role: «Ты архитектор требований по стандарту RENAR».
- Style guide reference: ссылка на этот документ.
- Glossary reference: ссылка на 01-glossary.md.
- Constraints:
- Каждое утверждение либо с citation, либо
derivedс объяснением. - Использовать только canonical термины.
- Структура и длина — согласно §2 этого документа.
- Никаких запрещённых слов из §3.2.
- Каждое утверждение либо с citation, либо
- Output schema: точный YAML frontmatter format (см. 02-schemas.md).
- Examples: 2-3 примера good/bad для каждого типа артефакта.
Prompt-templates хранятся в prompts/ директории организации с версионированием:
prompts/adapt-from-tz.md@v2.1prompts/decompose-adapt.md@v2.1prompts/generate-tc-pos-neg.md@v1.0prompts/critic-review-sr.md@v1.2
ai-provenance.prompt-template во frontmatter артефакта содержит точную версию.
7. Стиль для разных моделей
Разные LLM имеют разные tendencies. Style guide учитывает это через prompt constraints:
| Модель | Tendency | Mitigation |
|---|---|---|
| Claude Opus | Verbose, склонен к hedging («может быть», «возможно») | Explicit constraint в prompt: «без hedging modal verbs». |
| Claude Sonnet | Конкретный, может пропустить edge case | Adversarial critic catches gaps. |
| GPT-4 / o-series | Marketing language tendency | Explicit blacklist слов из §3.2. |
| Mini / Haiku | Hallucinated citations | Citation validator hook (см. AIR-07). |
| Gemini Pro | Иногда смешивает RU/EN | Lang constraint в prompt + post-validation. |
Style guide не запрещает использование любой модели, но требует enforcement через post-generation validation.
8. Validation pipeline
После генерации RENAR-артефакта запускается автоматическая валидация:
AI generates artifact
↓
Style validator (отдельный AI с другим prompt или rule-based)
├── citation check (each assertion has [...] или derived marker)
├── lexicon check (no forbidden words from §3.2)
├── structure check (required sections present)
├── length check (within bounds from §2)
├── canonical terms check (no forbidden synonyms)
├── modal verb check (нет hedging)
↓
On fail: regenerate с refined prompt или human review.
On pass: enter draft → ready transition (далее QG-1 / adversarial / approval).
Validator hooks — substrate-нативные. На git — pre-commit; на Raven — pre-save document validator; на любом другом — equivalent gate.
9. Stylistic decisions для RU/EN
9.1 Body language
Body артефакта пишется на языке проекта:
- Российский клиент → RU.
- Международный → EN.
- Двуязычный → primary lang в
lang:поле frontmatter; second lang — отдельный artifact сreplaces/replaced-bylinks или translations подпапка.
9.2 Frontmatter всегда канонический
Frontmatter поля — всегда canonical (английская латиница):
type: BR(нетип: БТ).status: approved(нестатус: утверждено).priority: must(неприоритет: обязательно).
UI отображает русские переводы (см. 01-glossary.md §3.5). Frontmatter — машинный, не для UI.
9.3 Mixed-lang запрещён
В пределах одного утверждения mixing RU+EN недопустим:
Плохо:
Система должна возвращать
JWT tokenпосле successful login.
Хорошо (RU):
Система должна возвращать JWT-токен после успешной аутентификации.
Хорошо (EN):
The system must return a JWT token after successful authentication.
Технические термины (JWT, OAuth, gRPC, RBAC) — допустимы в любом языке без перевода.
10. Cross-references
- Закрытый список canonical терминов и запрещённых синонимов — 01-glossary.md.
- Формальные frontmatter schemas — 02-schemas.md.
- AI-риски и mitigations — 03-ai-risk-register.md.
- Knowledge graph schema (используется validator’ом для cross-reference checks) — 05-knowledge-graph-schema.md.
AI Style Guide RENAR 1.0-draft — renar.tech