# 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 Создать компонент: ```text RuntimeDependencies ``` который определяет корректный порядок выполнения зарегистрированных Engine на основании их обязательных зависимостей. --- # Architecture `RuntimeDependencies` получает: ```text tuple[EngineRegistration, ...] ``` и возвращает: ```text tuple[EngineRegistration, ...] ``` в порядке выполнения. Компонент не создаёт Engine, не запускает Engine, не формирует результаты и не зависит от Coordinator. --- # Architecture Review Проверка подтвердила: - Engine остаются независимыми; - зависимости объявляются через `EngineMetadata`; - Runtime не содержит аналитики; - Runner не смешивается с Dependency Resolver; - Registry не строит граф зависимостей; - Coordinator пока не реализуется. **Статус:** ✅ Passed --- # Architecture Decision (ADR) ## Решение В Runtime Layer вводится компонент: ```text RuntimeDependencies ``` ## Статус **Accepted** ## Обоснование Engine могут объявлять обязательные зависимости через: ```text EngineMetadata.required_dependencies ``` Runtime должен определить порядок выполнения Engine до запуска анализа. Эта ответственность не относится к Registry, Runner, Coordinator или конкретным Engine. --- # Build Design Создан файл: ```text app/src/trading/market_intelligence/runtime/dependencies.py ``` Обновлён файл: ```text app/src/trading/market_intelligence/runtime/exceptions.py ``` --- # Implementation Реализован класс: ```text RuntimeDependencies ``` Публичный API: ```text resolve(registrations) ``` Внутренние этапы: ```text _build_registration_map() _build_graph() _validate_dependencies() _topological_sort() _visit() ``` Добавлены Runtime-исключения: ```text MissingEngineDependencyError CircularEngineDependencyError ``` --- # Compile Check Проверка выполнена командой: ```bash 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 ```text Build 015.7 Runtime Validation runtime/validation.py ```