6.3 KiB
Build 015.6 — Runtime Dependencies
Engineering Build Document
Контроль документа
| Свойство | Значение |
|---|---|
| Build | 015.6 |
| Название | Runtime Dependencies |
| Статус | Accepted |
| Подсистема | Market Intelligence |
| Layer | Runtime |
| Тип | Architecture + Implementation |
| Версия | 1.0 |
| Язык | Русский |
Причина появления Build
После реализации RuntimeRegistry и RuntimeRunner Runtime Layer получил возможность хранить и выполнять зарегистрированные Engine.
Однако порядок выполнения Engine должен учитывать зависимости, объявленные в EngineMetadata.
Для этого необходим отдельный компонент Runtime Layer, отвечающий только за разрешение зависимостей.
Цель Build
Создать компонент:
RuntimeDependencies
который определяет корректный порядок выполнения зарегистрированных Engine на основании их обязательных зависимостей.
Architecture
RuntimeDependencies получает:
tuple[EngineRegistration, ...]
и возвращает:
tuple[EngineRegistration, ...]
в порядке выполнения.
Компонент не создаёт Engine, не запускает Engine, не формирует результаты и не зависит от Coordinator.
Architecture Review
Проверка подтвердила:
- Engine остаются независимыми;
- зависимости объявляются через
EngineMetadata; - Runtime не содержит аналитики;
- Runner не смешивается с Dependency Resolver;
- Registry не строит граф зависимостей;
- Coordinator пока не реализуется.
Статус: ✅ Passed
Architecture Decision (ADR)
Решение
В Runtime Layer вводится компонент:
RuntimeDependencies
Статус
Accepted
Обоснование
Engine могут объявлять обязательные зависимости через:
EngineMetadata.required_dependencies
Runtime должен определить порядок выполнения Engine до запуска анализа.
Эта ответственность не относится к Registry, Runner, Coordinator или конкретным Engine.
Build Design
Создан файл:
app/src/trading/market_intelligence/runtime/dependencies.py
Обновлён файл:
app/src/trading/market_intelligence/runtime/exceptions.py
Implementation
Реализован класс:
RuntimeDependencies
Публичный API:
resolve(registrations)
Внутренние этапы:
_build_registration_map()
_build_graph()
_validate_dependencies()
_topological_sort()
_visit()
Добавлены Runtime-исключения:
MissingEngineDependencyError
CircularEngineDependencyError
Compile Check
Проверка выполнена командой:
python -m compileall src/trading/market_intelligence
Результат:
- успешно скомпилирован
runtime/dependencies.py; - успешно скомпилирован
runtime/exceptions.py; - синтаксические ошибки отсутствуют;
- циклические зависимости отсутствуют.
Статус: ✅ Passed
Domain Review
Проверено соответствие предметной области.
RuntimeDependencies:
- работает только с зарегистрированными Engine;
- берёт зависимости исключительно из
EngineMetadata.required_dependencies; - не создаёт экземпляры Engine;
- не запускает Engine;
- не формирует
EngineResultилиRuntimeResult; - не зависит от Coordinator;
- не добавляет аналитической логики.
Статус: ✅ Passed
Code Review / Runtime Review
Проверка пройдена.
Подтверждено:
- компонент имеет одну ответственность;
- отсутствующие обязательные зависимости обрабатываются отдельной ошибкой;
- циклические зависимости обрабатываются отдельной ошибкой;
- топологическая сортировка возвращает корректный порядок выполнения;
- зависимости между слоями не нарушены.
Статус: ✅ Passed
Documentation
В рамках Build должны быть обновлены:
- Build History;
- Runtime Architecture;
- Runtime Layer Documentation.
Runtime Contract не изменяется.
Acceptance
Build считается завершённым.
Выполнены:
- ✅ Architecture
- ✅ Architecture Review
- ✅ Architecture Decision
- ✅ Build Design
- ✅ Implementation
- ✅ Compile Check
- ✅ Domain Review
- ✅ Code Review
- ✅ Runtime Review
- ✅ Documentation
- ✅ Acceptance
Статус Build:
Accepted
Итоги Build
В результате Build 015.6:
- Runtime Layer получил механизм разрешения зависимостей;
- порядок выполнения Engine теперь может быть построен из
EngineMetadata; - Engine остаются независимыми и не обращаются друг к другу напрямую;
- Registry, Runner и Dependency Resolver имеют разные зоны ответственности;
- Runtime Layer стал готов к следующему этапу — Runtime Validation или Coordinator Core.
Следующий Build
Build 015.7
Runtime Validation
runtime/validation.py