# Build 015.4 — Runtime Registry **Engineering Build Document** --- # Контроль документа | Свойство | Значение | |----------|-----------| | Build | 015.4 | | Название | Runtime Registry | | Статус | **Accepted** | | Подсистема | Market Intelligence | | Layer | Runtime | | Тип | Architecture + Implementation | | Версия | 1.0 | | Язык | Русский | --- # Причина появления Build После завершения Build: - 015.1 (`RuntimeResult`); - 015.2 (`RuntimeProtocol`); - 015.3 (`EngineRegistration`); Runtime получил все необходимые фундаментальные модели для реализации первого инфраструктурного компонента Runtime Layer. Таким компонентом стал `RuntimeRegistry`. --- # Цель Build Создать каталог зарегистрированных аналитических Engine. Registry является единым источником информации о зарегистрированных Engine и предоставляет минимальный API регистрации. --- # Architecture `RuntimeRegistry` отвечает исключительно за регистрацию аналитических Engine. Registry не выполняет анализ рынка. Registry не создаёт `EngineContext`. Registry не запускает Engine. Registry не агрегирует результаты. Registry не управляет Coordinator. Единственная ответственность Registry — управление зарегистрированными Engine. --- # Architecture Review Проверка подтвердила: - Registry соответствует принципу Single Responsibility; - Registry использует `EngineRegistration`; - Registry не содержит аналитики; - Registry не зависит от Coordinator; - Registry не зависит от AutoTrade; - Registry не создаёт `EngineContext`; - Registry не запускает Engine. Архитектура Build признана корректной. --- # Architecture Decision (ADR) ## Решение Добавить компонент: ```text RuntimeRegistry ``` в Runtime Layer. ## Статус **Accepted** ## Обоснование Runtime должен иметь единый каталог зарегистрированных Engine. Registry хранит записи регистрации и предоставляет к ним доступ другим компонентам Runtime. Для хранения используется модель: ```text EngineRegistration ``` ## Утверждённая модель хранения ```python dict[ EngineName, EngineRegistration, ] ``` ## Публичный API ```text register() unregister() get() contains() list() clear() ``` ## Запрещено Registry не должен содержать: ```text analyze() run() execute() resolve_dependencies() validate() build_graph() sort() ``` ## Последствия После принятия решения: - Runtime получил единый каталог Engine; - Registry остаётся независимым от аналитики; - RuntimeRunner сможет использовать Registry; - DependencyResolver сможет использовать Registry; - добавление новых Engine не требует изменения Runtime. --- # Build Design Создан файл: ```text app/src/trading/market_intelligence/runtime/registry.py ``` Внутренний каталог Registry: ```python self._engines: dict[ EngineName, EngineRegistration, ] ``` При регистрации Registry самостоятельно создаёт: ```text EngineRegistration ``` через: ```python engine_type.get_metadata() ``` Дополнительная фабрика регистрации не используется. --- # Implementation Реализован компонент: ```text RuntimeRegistry ``` Публичный интерфейс: ```text register() unregister() get() contains() list() clear() ``` Registry использует: ```text EngineRegistration ``` как единственную единицу хранения зарегистрированных Engine. --- # Compile Check Проверка выполнена командой: ```bash python -m compileall src/trading/market_intelligence ``` Результат: - успешно скомпилирован `runtime/registry.py`; - синтаксические ошибки отсутствуют; - циклические зависимости отсутствуют. **Статус:** ✅ Passed --- # Domain Review Проверено соответствие предметной области. Подтверждено: - Registry хранит только зарегистрированные Engine; - Registry использует `EngineRegistration`; - Registry не содержит аналитики; - Registry не управляет выполнением Engine; - Registry не создаёт `EngineContext`; - Registry не формирует `RuntimeResult`; - Registry не знает Coordinator; - Registry не зависит от AutoTrade; - Registry не обращается к бирже, БД, Telegram или EventBus. **Статус:** ✅ Passed --- # Documentation В рамках Build должны быть обновлены: - Build History; - Runtime Architecture; - Runtime Contract; - Runtime Layer Documentation. --- # Acceptance Build считается завершённым. Выполнены: - ✅ Architecture - ✅ Architecture Review - ✅ Architecture Decision (ADR) - ✅ Build Design - ✅ Implementation - ✅ Compile Check - ✅ Domain Review - ✅ Documentation - ✅ Acceptance Статус Build: **Accepted** --- # Итоги Build В результате Build 015.4: - Runtime Layer получил первый инфраструктурный компонент; - появился единый каталог зарегистрированных Engine; - Runtime получил единый механизм регистрации аналитических движков; - Registry использует `EngineRegistration` как атомарную запись; - подготовлена основа для реализации Runtime Runner. --- # Архитектурные принципы, закреплённые Build ## Registry отвечает только за регистрацию `RuntimeRegistry` не выполняет анализ и не управляет выполнением Engine. Единственная ответственность Registry — управление каталогом зарегистрированных Engine. --- ## EngineRegistration является единицей хранения Внутри Registry хранится исключительно: ```text EngineRegistration ``` Хранение отдельных `EngineType` или `EngineMetadata` запрещено. --- ## Runtime самостоятельно создаёт регистрацию Во время регистрации Registry самостоятельно получает Metadata: ```python metadata = engine_type.get_metadata() ``` и создаёт: ```text EngineRegistration ``` Отдельная фабрика регистрации не вводится. --- ## Registry не содержит эксплуатационной логики Registry не выполняет: - анализ; - запуск Engine; - сортировку; - разрешение зависимостей; - построение графов; - валидацию. Все перечисленные обязанности относятся к другим компонентам Runtime Layer. --- # Следующий Build ```text Build 015.5 Runtime Runner runtime/runner.py ```