build 039: complete Quotes Feed migration foundation

This commit is contained in:
2026-07-14 09:58:16 +03:00
parent 26deb861bc
commit 7b62873832
443 changed files with 80452 additions and 1335 deletions

View File

@@ -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
```