This commit is contained in:
2026-05-11 22:58:01 +03:00
parent 262f9ca39e
commit 72d034746d
30 changed files with 1681 additions and 1222 deletions

View File

@@ -1,3 +1,18 @@
# #region AnchorConfig [C:3] [TYPE Block] [SEMANTICS config,anchor]
# @BRIEF Якорный синтаксис — глобальный формат и переопределения по директориям.
# @RELATION BINDS_TO -> [Std.Semantics.Core §II]
# @RATIONALE По умолчанию #region/#endregion — новый код пишется в region-формате.
# Legacy DEF и Doc-формат brace признаются для обратной совместимости.
anchor:
format: region
overrides:
docs/: brace
specs/: brace
syntax: {}
# #endregion AnchorConfig
# #region IndexingConfig [C:3] [TYPE Block] [SEMANTICS config,indexing]
# @BRIEF Правила обхода файлов — include/exclude паттерны и source/doc директории.
indexing:
include: []
exclude:
@@ -20,12 +35,21 @@ indexing:
doc_dirs:
- docs
- specs
# #endregion IndexingConfig
# #region ComplexityRules [C:5] [TYPE Block] [SEMANTICS config,rules,validation]
# @BRIEF Обязательные и запрещённые тэги по уровням сложности C1-C5.
# @RELATION BINDS_TO -> [Std.Semantics.Core §III]
# @RATIONALE Каждый уровень строго контролирует допустимый набор тэгов — это предотвращает verbosity и структурную эрозию (INV_7).
# LAYER и SEMANTICS — Module-специфичные тэги; не входят в базовую шкалу сложности core.
# BRIEF указан как alias PURPOSE — явно в forbidden для C1, т.к. C1 запрещает все content-тэги.
# @REJECTED Свободная валидация без строгих forbidden-списков отвергнута — порождает Slop и размывает Decision Memory.
# @REJECTED UX_STATE в общих complexity_rules отвергнут — UX_STATE Component-специфичен и управляется через contract_type_overrides.
complexity_rules:
'1':
required:
- LAYER
- SEMANTICS
required: []
forbidden:
- BRIEF
- PURPOSE
- RELATION
- PRE
@@ -33,12 +57,11 @@ complexity_rules:
- SIDE_EFFECT
- DATA_CONTRACT
- INVARIANT
- UX_STATE
- RATIONALE
- REJECTED
'2':
required:
- LAYER
- PURPOSE
- SEMANTICS
forbidden:
- RELATION
- PRE
@@ -46,34 +69,34 @@ complexity_rules:
- SIDE_EFFECT
- DATA_CONTRACT
- INVARIANT
- UX_STATE
- RATIONALE
- REJECTED
'3':
required:
- LAYER
- PURPOSE
- RELATION
- SEMANTICS
forbidden:
- PRE
- POST
- SIDE_EFFECT
- DATA_CONTRACT
- INVARIANT
- RATIONALE
- REJECTED
'4':
required:
- LAYER
- PURPOSE
- RELATION
- PRE
- POST
- SIDE_EFFECT
- SEMANTICS
forbidden:
- DATA_CONTRACT
- INVARIANT
- RATIONALE
- REJECTED
'5':
required:
- LAYER
- PURPOSE
- RELATION
- PRE
@@ -81,8 +104,14 @@ complexity_rules:
- SIDE_EFFECT
- DATA_CONTRACT
- INVARIANT
- SEMANTICS
- RATIONALE
- REJECTED
forbidden: []
# #endregion ComplexityRules
# #region ContractTypeOverrides [C:3] [TYPE Block] [SEMANTICS config,adr,override]
# @BRIEF Особые правила валидации для ADR, Component и Tombstone.
# @RATIONALE ADR не имеет COMPLEXITY (это всегда архитектурное решение). Component имеет @UX_STATE вместо @PRE/@POST на C3. Tombstone — минимальный контракт-заглушка.
contract_type_overrides:
ADR:
required:
@@ -99,6 +128,8 @@ contract_type_overrides:
- DATA_CONTRACT
- INVARIANT
- UX_STATE
- LAYER
- SEMANTICS
Component:
'3':
required:
@@ -147,24 +178,39 @@ contract_type_overrides:
- UX_STATE
- PURPOSE
- RELATION
- LAYER
- SEMANTICS
# #endregion ContractTypeOverrides
# #region TagSchema [C:5] [TYPE Block] [SEMANTICS config,tags,schema]
# @BRIEF Полная схема GRACE-тэгов: типы, алиасы, enum-ы, предикаты, применимость.
# @RATIONALE Централизованная схема тэгов — единый источник истины для парсера, валидатора и MCP-тулов. Расширяется через alias_for без изменения канонических имён.
# @REJECTED Разрозненные определения тэгов в коде парсера отвергнуты — делают валидацию неконсистентной и неподдерживаемой.
tags:
C:
type: string
multiline: false
description: 'Краткий алиас для COMPLEXITY. Используйте @C: 3 вместо @COMPLEXITY: 3.'
description: 'Краткий алиас для COMPLEXITY. @C: 3 ≡ @COMPLEXITY: 3.'
alias_for: COMPLEXITY
separator: null
is_reference: false
enum: []
allowed_predicates: []
contract_types: []
contract_types:
- Module
- Function
- Class
- Component
- Block
- Skill
- Agent
protected: false
orthogonal: false
decision_memory: false
alias_for: COMPLEXITY
COMPLEXITY:
type: string
multiline: false
description: Уровень сложности контракта (1-5). Определяет набор обязательных и запрещённых тегов. C1 — простые DTO/утилиты, C2 — требует PURPOSE, C3 — добавляет RELATION, C4 — контрактные гарантии (PRE/POST/SIDE_EFFECT), C5 — критические инварианты и DATA_CONTRACT.
description: Уровень сложности (1-5). C1 — DTO/утилиты, C2 — +PURPOSE, C3 — +RELATION, C4 — контракты (PRE/POST), C5 — инварианты и Decision Memory.
separator: null
is_reference: false
enum:
@@ -180,6 +226,42 @@ tags:
- Class
- Component
- Block
- Skill
- Agent
protected: false
orthogonal: false
decision_memory: false
alias_for: null
BRIEF:
type: string
multiline: true
description: 'Doxygen-совместимый алиас для PURPOSE. @BRIEF Краткое описание. Разрешается в канонический PURPOSE при парсинге.'
alias_for: PURPOSE
separator: null
is_reference: false
enum: []
allowed_predicates: []
contract_types: []
protected: false
orthogonal: false
decision_memory: false
PURPOSE:
type: string
multiline: true
description: Назначение контракта. Краткое (1-2 предложения) описание. Каноническое имя. Обязателен с C2. @BRIEF — Doxygen-алиас.
separator: null
is_reference: false
enum: []
allowed_predicates: []
contract_types:
- Module
- Function
- Class
- Component
- Block
- ADR
- Skill
- Agent
protected: false
orthogonal: false
decision_memory: false
@@ -187,7 +269,7 @@ tags:
DATA_CONTRACT:
type: string
multiline: false
description: 'DTO-контракт: описание входных и выходных данных (например, Input -> RequestDTO, Output -> ResponseDTO). Обязателен на C5.'
description: 'DTO-контракт: Input -> RequestDTO, Output -> ResponseDTO. Обязателен на C5.'
separator: null
is_reference: false
enum: []
@@ -204,7 +286,7 @@ tags:
INVARIANT:
type: string
multiline: false
description: Инвариант, который должен сохраняться на всём протяжении жизни контракта. Обязателен на C5.
description: Инвариант на всём протяжении жизни контракта. Обязателен на C5.
separator: null
is_reference: false
enum: []
@@ -221,7 +303,7 @@ tags:
LAYER:
type: string
multiline: false
description: 'Архитектурный слой модуля: Domain (бизнес-логика), UI (интерфейс), Infra (инфраструктура), Test (тесты). Обязателен для всех уровней сложности Module.'
description: 'Архитектурный слой: Domain (бизнес-логика), UI (интерфейс), Infra (инфраструктура), Test (тесты). Обязателен для Module на всех C-level.'
separator: null
is_reference: false
enum:
@@ -239,7 +321,7 @@ tags:
POST:
type: string
multiline: false
description: Гарантия результата контракта. Что гарантированно верно на выходе. Обязателен с C4. Запрещено ослаблять без проверки upstream зависимостей.
description: Постусловие — гарантия результата. Обязателен с C4. Запрещено ослаблять без проверки upstream @RELATION зависимостей.
separator: null
is_reference: false
enum: []
@@ -256,7 +338,7 @@ tags:
PRE:
type: string
multiline: false
description: Предусловие выполнения контракта. Критические условия, которые должны быть истинны на входе. Обязателен с C4.
description: Предусловие выполнения. Критические условия на входе. Обязателен с C4.
separator: null
is_reference: false
enum: []
@@ -270,29 +352,10 @@ tags:
orthogonal: false
decision_memory: false
alias_for: null
PURPOSE:
type: string
multiline: true
description: Назначение контракта. Краткое (1-2 предложения) описание того, что делает данный узел. Обязателен с C2.
separator: null
is_reference: false
enum: []
allowed_predicates: []
contract_types:
- Module
- Function
- Class
- Component
- Block
- ADR
protected: false
orthogonal: false
decision_memory: false
alias_for: null
RATIONALE:
type: string
multiline: true
description: Обоснование выбранного архитектурного/реализационного пути. Защищённый ортогональный тег. Запрещает повторение отвергнутых альтернатив.
description: Обоснование выбранного пути. Защищённый, decision_memory. C5-only.
separator: null
is_reference: false
enum: []
@@ -304,6 +367,8 @@ tags:
- ADR
- Component
- Block
- Skill
- Agent
protected: true
orthogonal: true
decision_memory: true
@@ -311,7 +376,7 @@ tags:
REJECTED:
type: string
multiline: true
description: Явно запрещённый альтернативный путь с указанием риска, бага или технического долга, disqualifying его. Защищённый ортогональный тег.
description: Запрещённый альтернативный путь + причина дисквалификации. Защищённый, decision_memory. C5-only. Resurrection — fatal regression.
separator: null
is_reference: false
enum: []
@@ -323,6 +388,8 @@ tags:
- ADR
- Component
- Block
- Skill
- Agent
protected: true
orthogonal: true
decision_memory: true
@@ -330,7 +397,7 @@ tags:
RELATION:
type: array
multiline: false
description: 'Связь между контрактами в формате PREDICATE -> [TargetId]. Обязателен с C3. Доступные предикаты: DEPENDS_ON, CALLS, INHERITS, IMPLEMENTS, DISPATCHES, BINDS_TO, VERIFIES.'
description: 'Связь между контрактами: PREDICATE -> [TargetId]. Обязателен с C3.'
separator: ->
is_reference: true
enum: []
@@ -341,6 +408,7 @@ tags:
- IMPLEMENTS
- DISPATCHES
- BINDS_TO
- CALLED_BY
- VERIFIES
contract_types:
- Module
@@ -349,6 +417,8 @@ tags:
- Component
- Block
- ADR
- Skill
- Agent
protected: false
orthogonal: false
decision_memory: false
@@ -356,13 +426,14 @@ tags:
SEMANTICS:
type: array
multiline: false
description: Набор семантических маркеров модуля (например, indexing, validation, metadata). Ортогональный тег.
description: Семантические маркеры (домен, зона ответственности). Ортогональный — допустим на любом C-level для Module.
separator: ','
is_reference: false
enum: []
allowed_predicates: []
contract_types:
- Module
- Skill
protected: false
orthogonal: true
decision_memory: false
@@ -370,7 +441,7 @@ tags:
SIDE_EFFECT:
type: string
multiline: false
description: 'Явное описание внешних эффектов контракта: мутации состояния, запись в БД, I/O, сетевые вызовы. Обязателен с C4.'
description: 'Побочные эффекты: мутации состояния, I/O, БД, сеть. Обязателен с C4.'
separator: null
is_reference: false
enum: []
@@ -387,7 +458,7 @@ tags:
STATUS:
type: string
multiline: false
description: 'Статус артефакта: DEPRECATED -> REPLACED_BY: [NewId], ACTIVE, EXPERIMENTAL. Ортогональный тег для Tombstone/ADR/Module.'
description: 'Статус: ACTIVE, DEPRECATED -> REPLACED_BY: [NewId], EXPERIMENTAL. Ортогональный для Tombstone/ADR/Module.'
separator: null
is_reference: false
enum: []
@@ -403,7 +474,7 @@ tags:
TEST_CONTRACT:
type: string
multiline: false
description: Что именно проверяет данный тест. Ортогональный тестовый тег.
description: Что проверяет тест. Ортогональный тестовый тэг.
separator: null
is_reference: false
enum: []
@@ -418,7 +489,7 @@ tags:
TEST_EDGE:
type: string
multiline: false
description: Краевой случай (edge case), покрываемый тестом. Ортогональный тестовый тег.
description: Краевой случай, покрываемый тестом. Ортогональный.
separator: null
is_reference: false
enum: []
@@ -433,7 +504,7 @@ tags:
TEST_FIXTURE:
type: string
multiline: false
description: Используемая тестовая фикстура или набор данных. Ортогональный тестовый тег.
description: Тестовая фикстура или набор данных. Ортогональный.
separator: null
is_reference: false
enum: []
@@ -447,7 +518,7 @@ tags:
TEST_INVARIANT:
type: string
multiline: false
description: Инвариант, проверяемый тестом. Ортогональный тестовый тег.
description: Инвариант, проверяемый тестом. Ортогональный.
separator: null
is_reference: false
enum: []
@@ -462,7 +533,7 @@ tags:
TEST_SCENARIO:
type: string
multiline: false
description: Конкретный тестовый сценарий (шаги и ожидаемый результат). Ортогональный тестовый тег.
description: Тестовый сценарий (шаги + ожидаемый результат). Ортогональный.
separator: null
is_reference: false
enum: []
@@ -477,7 +548,7 @@ tags:
UX_FEEDBACK:
type: string
multiline: false
description: 'Формат обратной связи пользователю: тосты, инлайн-ошибки, модальные окна. Ортогональный тег для Component.'
description: 'Формат обратной связи: тосты, инлайн-ошибки, модальные окна. Ортогональный для Component.'
separator: null
is_reference: false
enum: []
@@ -491,7 +562,7 @@ tags:
UX_REACTIVITY:
type: string
multiline: false
description: 'Реактивная модель обновления интерфейса: store-driven render, optimistic updates, debounced inputs. Ортогональный тег для Component.'
description: 'Реактивная модель: store-driven render, optimistic updates, debounced inputs. Ортогональный для Component.'
separator: null
is_reference: false
enum: []
@@ -505,7 +576,7 @@ tags:
UX_RECOVERY:
type: string
multiline: false
description: 'Стратегия восстановления при сбоях: retry с экспоненциальной задержкой, fallback-интерфейс, ручной перезапуск. Ортогональный тег для Component.'
description: 'Стратегия восстановления: retry, fallback-интерфейс, ручной перезапуск. Ортогональный для Component.'
separator: null
is_reference: false
enum: []
@@ -519,7 +590,7 @@ tags:
UX_STATE:
type: string
multiline: false
description: Конечный автомат UX-состояний компонента (например, loading -> ready -> error). Обязателен для Component с C3+.
description: Конечный автомат UX-состояний (loading ready error). Обязателен для Component с C3+.
separator: null
is_reference: false
enum: []
@@ -530,14 +601,19 @@ tags:
orthogonal: false
decision_memory: false
alias_for: null
# #endregion TagSchema
# #region InfrastructureConfig [C:2] [TYPE Block] [SEMANTICS config,embedding,http]
# @BRIEF Инфраструктурные настройки: embedding, HTTP API, doc-режим.
embedding: null
http_api:
http_enabled: true
http_enabled: false
http_host: 127.0.0.1
http_port: 8421
http_port: 8420
http_api_key: '123'
doc_mode: null
doc_tag_mapping: null
doc_stripped_output: null
doc_symbol_types: null
tier_thresholds: {}
# #endregion InfrastructureConfig