# 🧹 Механизировать правило «internal/config не знает транспорта»

- **Тип:** chore
- **Категория:** Очередь — Оба правят проверки, которым потом верят: правило направления зависимостей встаёт рядом с покрытием оснастки, до задач, что опираются на зелёный гейт
- **Зачем:** правило записано конвенцией, а сканера у него нет; проект его уже нарушает — go test ./internal/config линкует всю поверхность HTTP, и будущая надобность конфига в транспорте даст цикл импорта на уровне проверок
- **Теги:** review-2026-08-23

Направление зависимостей в проекте держат тесты-сканеры `internal/archrules`, а
не договорённость. У правила «`internal/config` не знает транспорта» сканера нет,
и проект его уже нарушает — файлом проверок, а не рабочим кодом.

Нашёл прогон ревью `config-test-headers-login` 2026-08-23: норма записана в
`docs/conventions/config.md`, а `grep -n "config" internal/archrules/arch_test.go`
не даёт ни одного совпадения. Нарушает её сегодня файл проверок —
`internal/config/test_headers_test.go` объявлен `package config` и импортирует
`internal/controller/http`. В рабочем бинарнике этого ребра нет, но
`go test ./internal/config` линкует всю поверхность HTTP.

## Затрагивает

- `internal/config/test_headers_test.go` — перевод во внешний пакет
  `package config_test`;
- `internal/archrules/arch_test.go` — новое правило;
- `docs/conventions/config.md` — источник нормы, которую правило механизирует.

## Критерии приёмки

- Правило существует и зелёное. **Оракул:** `internal/archrules/arch_test.go`
  содержит правило «`internal/config` не знает транспорта», и
  `go test ./internal/archrules` зелёный.
- Файл проверок объявлен `package config_test`. **Оракул:**
  `head -1 internal/config/test_headers_test.go` даёт `package config_test`,
  `go test ./internal/config` зелёный.
- Импорта `internal/controller/http` в пакете `config` нет. **Оракул:**
  `go list -deps ./internal/config` не содержит `internal/controller/http`, и то
  же говорит новое правило `internal/archrules`.

## Рамки

Внутренний порядок задан: сначала перенос файла во внешний пакет, потом правило,
— иначе правило по всем файлам уронит гейт. Норма не пересматривается: правится
то, чем она проверяется, а не она сама.
