refactor(semantics): make axiom_config.yaml descriptive, not gatekeeping

This commit is contained in:
2026-05-20 17:18:55 +03:00
parent 084f782065
commit a43886106e
2 changed files with 7044 additions and 6890 deletions

View File

@@ -36,102 +36,73 @@ indexing:
# #endregion IndexingConfig
# #region ComplexityRules [C:5] [TYPE Block] [SEMANTICS config,rules,validation]
# @BRIEF Обязательные и запрещённые тэги по уровням сложности C1-C5.
# @BRIEF Уровни сложности C1-C5 — описательные сигналы, не gatekeeper-правила.
# @RELATION BINDS_TO -> [Std.Semantics.Core]
# @INVARIANT Каждый тэг в required/forbidden списках обязан иметь определение в TagSchema.
# @RATIONALE INVARIANT, RATIONALE, REJECTED, BRIEF/PURPOSE, EXAMPLE, ERROR/RAISES — универсально опциональны (C1+).
# @PRE/@POST — обязательны на C4, но C4 с SIDE_EFFECT-only валиден если предусловия тривиальны.
# @DATA_CONTRACT — рекомендуется на C5, но не обязателен (не все C5 контракты имеют DTO-маппинг).
# @RELATION — обязателен с C3, разрешён на C2 для документирования одиночных зависимостей.
# @REJECTED Строгий запрет INVARIANT ниже C5 — заставлял раздувать контракты до C5 ради одного инварианта.
# Строгий запрет RELATION на C2 — мешал документировать простые зависимости.
# @INVARIANT Каждый тэг в required/suggested списках обязан иметь определение в TagSchema.
# @RATIONALE Tiers are descriptive signals, not gatekeepers. Any tag is welcomed at any tier.
# @PRE/@POST on a C2 utility is informative, not a violation.
# @RATIONALE/@REJECTED are universally welcomed — decision memory at all levels.
# @REJECTED Old forbidden lists per tier caused agents to remove useful documentation tags.
# No tag is forbidden at any tier. Let agents document what needs documenting.
complexity_rules:
'1':
required: []
forbidden:
- PRE
- POST
- SIDE_EFFECT
- DATA_CONTRACT
suggested:
- BRIEF
'2':
required:
- PURPOSE
forbidden:
- PRE
- POST
- SIDE_EFFECT
- DATA_CONTRACT
required: []
suggested:
- BRIEF
- RELATION
'3':
required:
- PURPOSE
required: []
suggested:
- BRIEF
- RELATION
forbidden:
- PRE
- POST
- SIDE_EFFECT
- DATA_CONTRACT
'4':
required:
- PURPOSE
required: []
suggested:
- BRIEF
- RELATION
- PRE
- POST
- SIDE_EFFECT
forbidden:
- DATA_CONTRACT
'5':
required:
- PURPOSE
required: []
suggested:
- BRIEF
- RELATION
- PRE
- POST
- SIDE_EFFECT
- INVARIANT
forbidden: []
- DATA_CONTRACT
# #endregion ComplexityRules
# #region ContractTypeOverrides [C:3] [TYPE Block] [SEMANTICS config,adr,override]
contract_type_overrides:
ADR:
required:
suggested:
- PURPOSE
- RELATION
- RATIONALE
- REJECTED
forbidden:
- COMPLEXITY
- C
- PRE
- POST
- SIDE_EFFECT
- DATA_CONTRACT
- INVARIANT
- UX_STATE
- LAYER
- SEMANTICS
Component:
'3':
required:
suggested:
- PURPOSE
- RELATION
- UX_STATE
forbidden:
- PRE
- POST
- SIDE_EFFECT
- DATA_CONTRACT
'4':
required:
suggested:
- PURPOSE
- RELATION
- UX_STATE
- PRE
- POST
- SIDE_EFFECT
forbidden:
- DATA_CONTRACT
'5':
required:
suggested:
- PURPOSE
- RELATION
- UX_STATE
@@ -139,51 +110,29 @@ contract_type_overrides:
- POST
- SIDE_EFFECT
- INVARIANT
forbidden: []
Tombstone:
required:
suggested:
- STATUS
forbidden:
- COMPLEXITY
- C
- PRE
- POST
- SIDE_EFFECT
- DATA_CONTRACT
- INVARIANT
- UX_STATE
- PURPOSE
- RELATION
- LAYER
- SEMANTICS
Block:
'3':
required:
suggested:
- PURPOSE
- RELATION
forbidden:
- PRE
- POST
- SIDE_EFFECT
- DATA_CONTRACT
'4':
required:
suggested:
- PURPOSE
- RELATION
- PRE
- POST
- SIDE_EFFECT
forbidden:
- DATA_CONTRACT
'5':
required:
suggested:
- PURPOSE
- RELATION
- PRE
- POST
- SIDE_EFFECT
- INVARIANT
forbidden: []
# #endregion ContractTypeOverrides
# #region TagSchema [C:5] [TYPE Block] [SEMANTICS config,tags,schema]
@@ -234,7 +183,7 @@ tags:
PURPOSE:
type: string
multiline: true
description: 'Назначение контракта. Обязателен с C2.'
description: 'Назначение контракта. Универсально опциональный. Хороший тон — иметь @BRIEF на любой функции.'
contract_types:
- Module
- Function
@@ -344,7 +293,7 @@ tags:
SIDE_EFFECT:
type: string
multiline: false
description: 'Побочные эффекты. Обязателен с C4.'
description: 'Побочные эффекты (I/O, DB, API, сеть). Рекомендуется на функциях с side effects.'
contract_types:
- Module
- Function
@@ -436,7 +385,7 @@ tags:
UX_STATE:
type: string
multiline: false
description: Конечный автомат UX. Обязателен Component C3+.
description: Конечный автомат UX. Рекомендуется для компонентов с множественными состояниями.
contract_types: [Component]
protected: false
orthogonal: false
@@ -444,7 +393,7 @@ tags:
RELATION:
type: string
multiline: false
description: 'Графовая зависимость. Обязателен с C3.'
description: 'Графовая зависимость. Описывает связь между контрактами. Рекомендуется на любой функции/модуле с внешними зависимостями.'
is_reference: true
allowed_predicates: [DEPENDS_ON, CALLS, INHERITS, IMPLEMENTS, DISPATCHES, BINDS_TO, CALLED_BY, VERIFIES, USES]
contract_types:
@@ -462,7 +411,7 @@ tags:
PRE:
type: string
multiline: true
description: 'Предусловия. Обязателен с C4. Если предусловия тривиальны (напр. "DB доступна"), допустимо опустить при наличии @SIDE_EFFECT.'
description: 'Предусловия. Рекомендуется на функциях с нетривиальными входными требованиями.'
contract_types:
- Module
- Function
@@ -475,7 +424,7 @@ tags:
POST:
type: string
multiline: true
description: 'Гарантии результата. Обязателен с C4. Если постусловия очевидны из @PURPOSE, допустимо опустить при наличии @SIDE_EFFECT.'
description: 'Гарантии результата. Рекомендуется на функциях с нетривиальными постусловиями.'
contract_types:
- Module
- Function
@@ -533,7 +482,7 @@ tags:
DATA_CONTRACT:
type: string
multiline: false
description: 'DTO-маппинг (Input→Output). Рекомендуется с C5, не обязателен. Не все C5 контракты имеют DTO.'
description: 'DTO-маппинг (Input→Output). Универсально опциональный. Полезен на любом контракте с чёткими типами входа/выхода.'
contract_types:
- Module
- Function
@@ -546,7 +495,7 @@ tags:
INVARIANT:
type: string
multiline: true
description: 'Инвариант — условие, истинное всегда. Универсально опциональный (C1+), обязателен на C5. Документируй неуничтожимые гарантии на любом уровне.'
description: 'Инвариант — условие, истинное всегда. Универсально опциональный (C1+). Документируй неуничтожимые гарантии на любом уровне.'
contract_types:
- Module
- Function

File diff suppressed because one or more lines are too long