Files
dzentra_bot/docs/market_intelligence/builds/build-015-6-runtime-dependencies.md

6.3 KiB
Raw Blame History

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