build 039: complete Quotes Feed migration foundation
This commit is contained in:
@@ -0,0 +1,280 @@
|
||||
# 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
|
||||
|
||||
Создать компонент:
|
||||
|
||||
```text
|
||||
RuntimeValidation
|
||||
```
|
||||
|
||||
который подтверждает готовность Runtime Layer к выполнению анализа.
|
||||
|
||||
---
|
||||
|
||||
# Architecture
|
||||
|
||||
`RuntimeValidation` получает:
|
||||
|
||||
```text
|
||||
RuntimeRegistry
|
||||
```
|
||||
|
||||
и выполняет проверку корректности зарегистрированных Engine.
|
||||
|
||||
Компонент:
|
||||
|
||||
- не создаёт Engine;
|
||||
- не запускает Engine;
|
||||
- не изменяет Registry;
|
||||
- не выполняет анализ рынка;
|
||||
- не строит граф зависимостей самостоятельно.
|
||||
|
||||
Проверка зависимостей делегируется компоненту:
|
||||
|
||||
```text
|
||||
RuntimeDependencies
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Architecture Review
|
||||
|
||||
Подтверждено:
|
||||
|
||||
- RuntimeValidation имеет единственную ответственность;
|
||||
- проверки отделены от Registry и Runner;
|
||||
- RuntimeDependencies используется повторно без дублирования логики;
|
||||
- Coordinator не участвует в проверке Runtime;
|
||||
- архитектурные зависимости соответствуют утверждённой модели Runtime Layer.
|
||||
|
||||
**Статус:** ✅ Passed
|
||||
|
||||
---
|
||||
|
||||
# Architecture Decision (ADR)
|
||||
|
||||
## Решение
|
||||
|
||||
В Runtime Layer вводится новый инфраструктурный компонент:
|
||||
|
||||
```text
|
||||
RuntimeValidation
|
||||
```
|
||||
|
||||
## Статус
|
||||
|
||||
**Accepted**
|
||||
|
||||
## Обоснование
|
||||
|
||||
Runtime должен гарантировать собственную корректность до запуска первого Engine.
|
||||
|
||||
Для этого необходим отдельный компонент, который централизует все проверки конфигурации Runtime.
|
||||
|
||||
Проверка зависимостей выполняется посредством использования уже существующего `RuntimeDependencies`.
|
||||
|
||||
Это сохраняет принцип единственной ответственности и предотвращает дублирование логики.
|
||||
|
||||
---
|
||||
|
||||
# Build Design
|
||||
|
||||
Создан файл:
|
||||
|
||||
```text
|
||||
app/src/trading/market_intelligence/runtime/validation.py
|
||||
```
|
||||
|
||||
Обновлён файл:
|
||||
|
||||
```text
|
||||
app/src/trading/market_intelligence/runtime/exceptions.py
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Implementation
|
||||
|
||||
Реализован класс:
|
||||
|
||||
```text
|
||||
RuntimeValidation
|
||||
```
|
||||
|
||||
Публичный интерфейс:
|
||||
|
||||
```text
|
||||
validate(registry)
|
||||
```
|
||||
|
||||
Во время проверки выполняются следующие этапы:
|
||||
|
||||
```text
|
||||
_validate_registry()
|
||||
_validate_metadata()
|
||||
_validate_duplicates()
|
||||
RuntimeDependencies.resolve()
|
||||
```
|
||||
|
||||
Добавлены новые исключения Runtime Validation:
|
||||
|
||||
```text
|
||||
RuntimeValidationError
|
||||
EmptyRuntimeRegistryError
|
||||
DuplicateEngineRegistrationError
|
||||
InvalidEngineMetadataError
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Compile Check
|
||||
|
||||
Проверка выполнена командой:
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```text
|
||||
Build 015.8
|
||||
|
||||
Runtime Service
|
||||
|
||||
runtime/service.py
|
||||
```
|
||||
Reference in New Issue
Block a user