8.1 KiB
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)
Решение
Добавить компонент:
RuntimeRegistry
в Runtime Layer.
Статус
Accepted
Обоснование
Runtime должен иметь единый каталог зарегистрированных Engine.
Registry хранит записи регистрации и предоставляет к ним доступ другим компонентам Runtime.
Для хранения используется модель:
EngineRegistration
Утверждённая модель хранения
dict[
EngineName,
EngineRegistration,
]
Публичный API
register()
unregister()
get()
contains()
list()
clear()
Запрещено
Registry не должен содержать:
analyze()
run()
execute()
resolve_dependencies()
validate()
build_graph()
sort()
Последствия
После принятия решения:
- Runtime получил единый каталог Engine;
- Registry остаётся независимым от аналитики;
- RuntimeRunner сможет использовать Registry;
- DependencyResolver сможет использовать Registry;
- добавление новых Engine не требует изменения Runtime.
Build Design
Создан файл:
app/src/trading/market_intelligence/runtime/registry.py
Внутренний каталог Registry:
self._engines: dict[
EngineName,
EngineRegistration,
]
При регистрации Registry самостоятельно создаёт:
EngineRegistration
через:
engine_type.get_metadata()
Дополнительная фабрика регистрации не используется.
Implementation
Реализован компонент:
RuntimeRegistry
Публичный интерфейс:
register()
unregister()
get()
contains()
list()
clear()
Registry использует:
EngineRegistration
как единственную единицу хранения зарегистрированных Engine.
Compile Check
Проверка выполнена командой:
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 хранится исключительно:
EngineRegistration
Хранение отдельных EngineType или EngineMetadata запрещено.
Runtime самостоятельно создаёт регистрацию
Во время регистрации Registry самостоятельно получает Metadata:
metadata = engine_type.get_metadata()
и создаёт:
EngineRegistration
Отдельная фабрика регистрации не вводится.
Registry не содержит эксплуатационной логики
Registry не выполняет:
- анализ;
- запуск Engine;
- сортировку;
- разрешение зависимостей;
- построение графов;
- валидацию.
Все перечисленные обязанности относятся к другим компонентам Runtime Layer.
Следующий Build
Build 015.5
Runtime Runner
runtime/runner.py