# Build 015.5 — Runtime Core

**Build Documentation**

---

# Контроль Build

| Свойство | Значение |
|----------|-----------|
| Build | 015.5 |
| Название | Runtime Core |
| Статус | **Accepted** |
| Подсистема | Market Intelligence |
| Проект | Dzentra |
| Тип | Architecture Build |
| Версия | 1.0 |

---

# Цель Build

Завершить формирование базовой инфраструктуры Runtime Layer, реализовав компоненты, необходимые для регистрации аналитических Engine, их безопасного выполнения и обработки внутренних ошибок Runtime.

Build завершает минимальное ядро Runtime перед переходом к разработке Coordinator Layer.

---

# Архитектурная задача

До начала Build Runtime уже содержал:

- Runtime Protocol;
- Runtime Models;
- Runtime Registry.

Отсутствовали компоненты, отвечающие за непосредственное выполнение зарегистрированного Engine и унифицированную модель внутренних исключений Runtime.

Настоящий Build реализует данные компоненты без изменения существующих Runtime Contract.

---

# Архитектурное решение

В рамках Build реализованы два самостоятельных компонента Runtime Layer.

## Runtime Runner

`RuntimeRunner` отвечает исключительно за выполнение одного зарегистрированного Engine.

Ответственность Runner ограничивается:

- созданием экземпляра Engine;
- передачей Runtime Context;
- получением Engine Result.

Runner не содержит:

- логики анализа рынка;
- управления последовательностью выполнения Engine;
- агрегации результатов;
- обработки зависимостей;
- координации Runtime.

---

## Runtime Exceptions

Создан единый набор специализированных исключений Runtime.

Исключения предназначены исключительно для внутренней инфраструктуры Runtime Layer.

Реализованы:

- RuntimeError;
- EngineNotRegisteredError;
- InvalidRuntimeContextError;
- EngineExecutionError.

Наличие собственного пространства исключений исключает использование необобщённых Exception внутри Runtime.

---

# Реализованные файлы

Добавлены:

```text
runtime/exceptions.py
runtime/runner.py
```

Использован существующий компонент:

```text
runtime/registry.py
```

Изменён:

```text
common/models.py
```

В `EngineTypeProtocol` добавлен метод:

```python
analyze(context) -> EngineResult
```

Данное изменение устраняет расхождение между Runtime Registry и Runtime Runner и обеспечивает корректную статическую типизацию без изменения архитектурного контракта Runtime.

---

# Архитектурные зависимости

Build не изменяет существующую модель зависимостей.

Итоговая структура Runtime Layer:

```text
Runtime Layer

├── protocol.py
├── registry.py
├── runner.py
└── exceptions.py
```

Зависимости остаются однонаправленными.

```text
RuntimeRunner
        │
        ▼
EngineRegistration
        │
        ▼
EngineProtocol
```

Runtime по-прежнему не зависит от Coordinator и не содержит предметной логики.

---

# Runtime Contract

Build не изменяет:

- Runtime Context;
- Engine Result;
- Runtime Status;
- Runtime Events;
- Runtime Models;
- Runtime Contract.

Все существующие Runtime Contract остаются полностью совместимыми.

---

# Engineering Review

## Architecture Review

Passed.

Компоненты имеют единственную область ответственности.

---

## Dependency Review

Passed.

Циклические зависимости отсутствуют.

Направление зависимостей соответствует утверждённой архитектуре.

---

## Runtime Review

Passed.

Runtime остаётся инфраструктурным уровнем.

Runtime не содержит аналитической или торговой логики.

---

## Code Review

Passed.

Код соответствует принципам:

- Single Responsibility Principle;
- One Source of Truth;
- Stable Foundation;
- Architecture First.

Во время проверки обнаружено частичное дублирование контрактов `EngineProtocol` и `EngineTypeProtocol`.

Для обеспечения корректной статической типизации в `EngineTypeProtocol` добавлен метод `analyze()`.

Архитектурное объединение контрактов признано отдельной задачей и не входит в настоящий Build.

---

## Compile Review

Passed.

Проверка выполнена командой:

```bash
python -m compileall src/trading/market_intelligence
```

Ошибок компиляции не обнаружено.

---

# Изменённые документы

Обновление Runtime Contract не потребовалось.

Настоящий Build документирует исключительно развитие Runtime Layer.

---

# Итоговое состояние Runtime

После завершения Build Runtime Layer имеет следующий состав.

```text
runtime/

├── protocol.py
├── registry.py
├── runner.py
├── exceptions.py
```

Runtime Layer полностью готов к реализации Coordinator Layer.

---

# Следующий Build

Следующим этапом развития платформы является:

> **Build 016 — Coordinator Core**

Coordinator станет первым компонентом, использующим Runtime Registry и Runtime Runner для выполнения полного набора зарегистрированных аналитических Engine.

---

# Итог

Build 015.5 полностью завершает формирование базовой инфраструктуры Runtime Layer.

Все поставленные архитектурные задачи выполнены.

Build успешно прошёл:

- Architecture Review;
- Dependency Review;
- Runtime Review;
- Code Review;
- Compile Review.

Build получает статус:

> **Accepted**