7.6 KiB
Build 015.7 — Runtime Validation
Engineering Build Document
Контроль документа
| Свойство | Значение |
|---|---|
| Build | 015.7 |
| Название | Runtime Validation |
| Статус | Accepted |
| Подсистема | Market Intelligence |
| Layer | Runtime |
| Тип | Architecture + Implementation |
| Версия | 1.0 |
| Язык | Русский |
Причина появления Build
После реализации компонентов:
- Runtime Registry;
- Runtime Runner;
- Runtime Dependencies;
Runtime Layer получил возможность хранить зарегистрированные Engine, определять порядок их выполнения и запускать анализ.
Однако отсутствовала единая точка проверки корректности Runtime перед началом выполнения.
Проверка конфигурации Runtime должна выполняться централизованно и до запуска любого Engine.
Цель Build
Создать компонент:
RuntimeValidation
который подтверждает готовность Runtime Layer к выполнению анализа.
Architecture
RuntimeValidation получает:
RuntimeRegistry
и выполняет проверку корректности зарегистрированных Engine.
Компонент:
- не создаёт Engine;
- не запускает Engine;
- не изменяет Registry;
- не выполняет анализ рынка;
- не строит граф зависимостей самостоятельно.
Проверка зависимостей делегируется компоненту:
RuntimeDependencies
Architecture Review
Подтверждено:
- RuntimeValidation имеет единственную ответственность;
- проверки отделены от Registry и Runner;
- RuntimeDependencies используется повторно без дублирования логики;
- Coordinator не участвует в проверке Runtime;
- архитектурные зависимости соответствуют утверждённой модели Runtime Layer.
Статус: ✅ Passed
Architecture Decision (ADR)
Решение
В Runtime Layer вводится новый инфраструктурный компонент:
RuntimeValidation
Статус
Accepted
Обоснование
Runtime должен гарантировать собственную корректность до запуска первого Engine.
Для этого необходим отдельный компонент, который централизует все проверки конфигурации Runtime.
Проверка зависимостей выполняется посредством использования уже существующего RuntimeDependencies.
Это сохраняет принцип единственной ответственности и предотвращает дублирование логики.
Build Design
Создан файл:
app/src/trading/market_intelligence/runtime/validation.py
Обновлён файл:
app/src/trading/market_intelligence/runtime/exceptions.py
Implementation
Реализован класс:
RuntimeValidation
Публичный интерфейс:
validate(registry)
Во время проверки выполняются следующие этапы:
_validate_registry()
_validate_metadata()
_validate_duplicates()
RuntimeDependencies.resolve()
Добавлены новые исключения Runtime Validation:
RuntimeValidationError
EmptyRuntimeRegistryError
DuplicateEngineRegistrationError
InvalidEngineMetadataError
Compile Check
Проверка выполнена командой:
python -m compileall src/trading/market_intelligence
Результат:
- успешно скомпилирован
runtime/validation.py; - успешно обновлён
runtime/exceptions.py; - синтаксические ошибки отсутствуют.
Статус: ✅ Passed
Domain Review
Проверено соответствие предметной области.
Подтверждено:
- RuntimeValidation проверяет только готовность Runtime;
- Engine не создаются;
- Engine не запускаются;
- Registry не изменяется;
- RuntimeResult не формируется;
- аналитическая логика отсутствует;
- проверка зависимостей делегирована RuntimeDependencies.
Статус: ✅ Passed
Code Review / Runtime Review
Проверка успешно завершена.
Подтверждено:
- компонент имеет единственную ответственность;
- отсутствует дублирование проверки зависимостей;
- используется существующий RuntimeDependencies;
- корректно проверяются обязательные поля Metadata;
- иерархия Runtime-исключений расширена без нарушения существующей структуры.
Во время Code Review также подтверждено, что проверка повторной регистрации Engine в текущей реализации практически недостижима из-за использования словаря в RuntimeRegistry. Тем не менее данная проверка сохранена как часть публичного контракта RuntimeValidation, что обеспечивает устойчивость архитектуры при возможном изменении внутренней реализации Registry.
Статус: ✅ Passed
Documentation
В рамках Build должны быть обновлены:
- Build History;
- Runtime Architecture;
- Runtime Layer Documentation.
Runtime Contract не изменяется.
Acceptance
Build считается завершённым.
Выполнены:
- ✅ Development Strategy
- ✅ Architecture Design
- ✅ Architecture Review
- ✅ Architecture Decision
- ✅ Build Design
- ✅ Implementation
- ✅ Compile Check
- ✅ Domain Review
- ✅ Code Review
- ✅ Runtime Review
- ✅ Documentation
- ✅ Acceptance
Статус Build:
Accepted
Итоги Build
В результате Build 015.7 Runtime Layer получил централизованный механизм проверки собственной корректности.
Теперь Runtime способен:
- проверять наличие зарегистрированных Engine;
- проверять обязательные поля Metadata;
- использовать RuntimeDependencies для проверки зависимостей;
- подтверждать готовность Runtime до начала выполнения анализа.
После завершения Build 015.7 базовая инфраструктура Runtime Layer сформирована полностью.
Следующий Build
Build 015.8
Runtime Service
runtime/service.py