Files
dzentra_bot/docs/market_intelligence/builds/build-015-4-runtime-registry.md

8.1 KiB
Raw Blame History

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