# Build 053 — Удаление неиспользуемого indicators_legacy.py

## Статус

**Завершён**

---

## Цель Build

Удалить подтверждённый мёртвый legacy-файл:

```text
src/trading/market_analysis/indicators_legacy.py
```

Файл больше не импортировался и не использовался ни production-кодом, ни тестами.

Build 053 выполняет только удаление этого файла и не затрагивает compatibility API `ExchangeService.get_klines()` или модели `Kline` и `KlineBatch`.

---

## Исходное состояние

По результатам Build 052 было подтверждено:

```text
grep indicators_legacy → пусто
```

Файл:

```text
src/trading/market_analysis/indicators_legacy.py
```

содержал legacy-реализацию ATR и зависел от:

```text
src.integrations.exchange.models.Kline
```

При этом активный вычислительный код уже использовал:

```text
src/trading/market_analysis/indicators/volatility.py
```

и каноническую модель:

```text
src.market_data.acquisition.models.candle.Candle
```

---

## Объём изменений

В Build 053 удалён только:

```text
src/trading/market_analysis/indicators_legacy.py
```

Добавлена документация:

```text
docs/migrations/build_053.md
```

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

```text
src/integrations/exchange/service.py
src/integrations/exchange/models.py
tests/unit/integrations/exchange/test_service_klines.py
```

Build также не удаляет:

```text
ExchangeService.get_klines()
ExchangeService._kline_from_candle()
Kline
KlineBatch
```

---

## Предварительная проверка потребителей

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

```bash
grep -RIn \
  --exclude-dir="__pycache__" \
  --exclude="*.pyc" \
  "indicators_legacy\|from src\.trading\.market_analysis\.indicators_legacy" \
  src tests
```

Результат:

```text
пусто
```

Это подтвердило отсутствие любых потребителей файла.

---

## Выполненное изменение

Удалён файл:

```text
src/trading/market_analysis/indicators_legacy.py
```

Объём удаления:

```text
67 строк
```

---

## Полный regression suite

После удаления выполнена команда:

```bash
python -m pytest -q
```

Результат:

```text
805 passed in 2.70s
```

Регрессий не обнаружено.

---

## Контроль отсутствия indicators_legacy

Выполнена команда:

```bash
grep -RIn \
  --exclude-dir="__pycache__" \
  --exclude="*.pyc" \
  "indicators_legacy" \
  src tests
```

Результат:

```text
пусто
```

---

## Контроль оставшихся Kline и KlineBatch

Выполнена команда:

```bash
grep -RIn \
  --exclude-dir="__pycache__" \
  --exclude="*.pyc" \
  -E "\bKlineBatch\b|\bKline\b" \
  src tests
```

Результат показывает, что `Kline` и `KlineBatch` остались только в:

```text
src/integrations/exchange/service.py
src/integrations/exchange/models.py
```

Они используются исключительно для compatibility API:

```text
ExchangeService.get_klines()
ExchangeService._kline_from_candle()
```

---

## Проверка форматирования

Выполнена команда:

```bash
git diff --check
```

Вывод отсутствует.

Whitespace-ошибок не обнаружено.

---

## Архитектурный результат

После Build 053 в `Market Analysis` больше не существует legacy-файлов, зависящих от `Kline`.

Активный вычислительный слой использует только:

```text
Candle
```

Оставшийся legacy OHLCV полностью локализован в compatibility-слое `ExchangeService`.

---

## Что намеренно не выполнено

Build 053 намеренно не включает:

- удаление `ExchangeService.get_klines()`;
- удаление `ExchangeService._kline_from_candle()`;
- удаление `tests/unit/integrations/exchange/test_service_klines.py`;
- удаление `Kline`;
- удаление `KlineBatch`;
- изменение Market Analysis;
- изменение Market Data Acquisition;
- изменение торговой логики;
- изменение архитектуры каталогов.

---

## Критерии завершения

Build 053 считается завершённым, поскольку:

- потребители `indicators_legacy.py` отсутствуют;
- файл удалён;
- полный test suite проходит;
- grep по `indicators_legacy` пустой;
- `Kline` и `KlineBatch` остались только в compatibility-слое;
- `git diff --check` чистый.

---

## Итог

**Build 053 завершён успешно.**

Текущее состояние:

```text
indicators_legacy.py — удалён
Full test suite — 805 passed
Legacy Kline/KlineBatch — только compatibility-слой
```

Следующий этап — удаление compatibility API:

```text
ExchangeService.get_klines()
ExchangeService._kline_from_candle()
tests/unit/integrations/exchange/test_service_klines.py
```

без одновременного удаления самих моделей `Kline` и `KlineBatch`.