semantics

This commit is contained in:
2026-04-02 12:12:23 +03:00
parent ea457c8d18
commit c6147385e5
15 changed files with 138 additions and 312 deletions

View File

@@ -196,7 +196,20 @@ Decision memory is preserved in three linked layers:
4. Повторное внедрение пути из upstream `@REJECTED` — это регрессия, пока не обновлен сам контракт или ADR на основе новых доказательств.
5. Тихое удаление decision-memory тегов запрещено. Сначала обновляется решение, потом код.
## X. TEST MARKUP RULES
## X. EXTERNAL & SHARED CONTRACTS POLICY
Если модуль зависит от внешней библиотеки или глобального/shared DTO, которые не имеют своих `[DEF]` якорей в коде, используются строгие префиксы:
1. **Внешние библиотеки:** `[EXT:НазваниеЛибы:Модуль]`
- Пример: `@RELATION: DEPENDS_ON -> [EXT:FastAPI:Router]`
- Префикс `EXT:` однозначно маркирует зависимость от внешнего пакета, не имеющего локальных `[DEF]` якорей.
2. **Глобальные / Shared DTO:** `[DTO:Name]`
- Пример: `@RELATION: DEPENDS_ON -> [DTO:ConnectionContracts]`
- Префикс `DTO:` используется, когда источник контракта не имеет явного `[DEF]` в текущей кодовой базе (например, shared-библиотека, генерируемый protobuf, внешний schema-registry).
3. **Запрет на выдуманные ID.** Используются точные имена классов, модулей и библиотек. Недопустимо указывать абстрактные или сгенерированные идентификаторы вместо реальных имён.
## XI. TEST MARKUP RULES
Для предотвращения перегрузки тестовых файлов семантическим шумом и снижения "orphan count" применяются упрощенные правила:
1. **Короткие ID:** Тестовые модули ОБЯЗАНЫ иметь короткие семантические ID (например, `AssistantApiTests`), а не полные пути импорта.
@@ -206,4 +219,7 @@ Decision memory is preserved in three linked layers:
5. **Запрет на цепочки:** Не нужно описывать граф вызовов внутри теста. Достаточно "заземлить" 1-2 главных хелпера на ID модуля через `BINDS_TO`, чтобы файл перестал считаться набором сирот.
6. **ADR Regression Checks:** Если модуль ограничен upstream `@REJECTED` или локальным reactive Micro-ADR, тестовый аудит обязан проверять, что запрещенный путь не был молча восстановлен.
### XI.1 Test External Contract References
В тестах допускаются ссылки на `[EXT:...]` и `[DTO:...]` в `@RELATION` и `@DATA_CONTRACT`, если тестируемый модуль действительно зависит от внешних сущностей. Это исключение не отменяет правило: реальные локальные контракты всегда предпочтительнее внешних префиксов.
# [/DEF:Std:Semantics:Standard]