# Build 008 — Common Checks Layer

**Build ID:** 008

**Component:** `common/checks.py`

**Stage:** Stage 08.2 — Common Foundation

**Status:** **ACCEPTED**

---

# Цель Build

Создать единый слой инженерных проверок (**Checks Layer**) для аналитических движков подсистемы Market Intelligence.

Checks Layer предназначен для фиксации прохождения отдельных этапов обработки Engine и формирования единого инженерного отчёта о ходе выполнения анализа.

Данный слой не выполняет проверку корректности моделей и не анализирует состояние рынка.

---

# Контекст

К началу Build уже существовали:

- единые перечисления (`enums.py`);
- общие типы (`types.py`);
- архитектурные константы (`constants.py`);
- единый словарь причин (`reasons.py`);
- модели оценок (`scores.py`);
- Runtime-модели (`models.py`);
- Validation Layer (`validation.py`).

Следующим этапом стало создание отдельного слоя инженерных проверок выполнения Engine.

---

# Реализовано

Создан файл:

```text
app/src/trading/market_intelligence/common/checks.py
```

Добавлены модели:

- EngineCheck
- EngineCheckReport

Добавлены функции:

- build_check()
- build_check_report()

---

# Назначение Checks Layer

Checks Layer используется для фиксации результатов внутренних этапов обработки аналитического движка.

Он позволяет:

- описывать прохождение отдельных этапов Runtime;
- объединять проверки в единый отчёт;
- отделить инженерные проверки выполнения от проверки архитектурного контракта.

Checks Layer не анализирует рынок и не проверяет корректность входных данных.

---

# Архитектурные решения

Во время Build были подтверждены следующие решения.

## Checks Layer не заменяет Validation Layer

Validation Layer и Checks Layer имеют разные области ответственности.

Validation Layer отвечает на вопрос:

> **Корректен ли Runtime Contract?**

Checks Layer отвечает на вопрос:

> **Какие этапы обработки выполнил Engine?**

Таким образом оба слоя взаимно дополняют друг друга, не дублируя функциональность.

---

## Проверка выполняется по этапам обработки

Каждая проверка относится к одному значению `ProcessingStage`.

Например:

- INPUT
- CALCULATION
- VALIDATION
- PAYLOAD
- SNAPSHOT
- RESULT
- EVENT

Это позволяет анализировать работу Engine поэтапно.

---

## Отчёт агрегирует независимые проверки

Engine может сформировать несколько отдельных проверок.

Они объединяются в объект:

```text
EngineCheckReport
```

Отчёт определяет общий инженерный статус выполнения без повторной проверки отдельных этапов.

---

## Checks Layer не содержит предметной логики

Checks Layer не знает:

- что такое тренд;
- что такое волна;
- что такое ликвидность;
- что такое фаза рынка.

Он работает исключительно с инженерными этапами выполнения Runtime.

---

## Checks Layer не зависит от конкретных Engine

Файл не содержит ссылок на:

- Trend Engine;
- Wave Engine;
- Liquidity Engine;
- Coordinator;
- Strategy;
- Execution.

Любой аналитический движок может использовать данный слой без изменений.

---

# Compile Check

Статус:

**PASSED**

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

```bash
python -m compileall src/trading/market_intelligence/common/checks.py
```

Компиляция завершилась успешно.

---

# Architecture Review

Статус:

**PASSED**

Подтверждено:

- отсутствие циклических зависимостей;
- корректное разделение Validation Layer и Checks Layer;
- соблюдение Layer Isolation;
- повторное использование моделей Common;
- масштабируемость архитектуры.

Обязательные замечания отсутствуют.

---

# Domain Review

Статус:

**PASSED**

Подтверждено:

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

---

# Engineering Review

После завершения Build №008 фундамент Common Layer получил два независимых уровня контроля качества:

```text
Runtime Contract
        ↓
Validation Layer
        ↓
Checks Layer
```

Validation Layer отвечает за корректность архитектурного контракта.

Checks Layer отвечает за фиксацию прохождения этапов обработки.

Такое разделение обеспечивает независимое развитие обоих компонентов и предотвращает смешивание архитектурных обязанностей.

---

# Рекомендации

В дальнейшем допускается развитие Checks Layer следующими возможностями:

- группировка проверок по Engine;
- сохранение времени выполнения отдельных этапов;
- интеграция с Runtime Review;
- автоматическое формирование инженерных отчётов.

Данные возможности не входят в текущий Build.

---

# Итог

Build №008 завершает создание базового Checks Layer подсистемы Market Intelligence.

Компонент полностью соответствует:

- Development Process v2.0;
- Architecture Principles;
- Runtime Contract.

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

**ACCEPTED**