# 🧹 Разобрать мелочи входа по доверенному заголовку

- **Тип:** chore
- **Категория:** Очередь — Место машинное, конец очереди: мелочи ниже потолка триажа никого не держат и ничего не требуют — берутся, когда дойдут
- **Зачем:** три пункта ниже потолка триажа остались от одной задачи: функция строки старта не вызвана ни одним тестом, форма записи необязательного поля конфига стала неотличима от обязательного, два комментария описывают снятую подкоманду и не то число звеньев цепочки
- **Теги:** review-2026-08-23

Три пункта ниже потолка триажа, оставшиеся от задачи `config-test-headers-login`.
Наблюдаемое поведение сервиса ни один из них не меняет: правится защита от
регрессии, форма записи умолчаний и два неверных комментария.

Нашёл прогон ревью `config-test-headers-login` 2026-08-23.

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

- `internal/controller/http/substitute.go` — функция имён подставляемых
  заголовков и её тест;
- `internal/config/config.go`, `defaultConfig()` — форма записи умолчаний
  необязательного поля;
- `Dockerfile:49-50` — комментарий об исключении `cmd/devtools` из сборки;
- `internal/controller/http/mounts.go:54-56` — комментарий, перечисляющий звенья
  цепочки слоёв приложения.

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

- Функцию имён подставляемых заголовков зовёт тест. **Оракул:**
  `SubstitutedHeaderNames` не вызвана ни одним тестом (`go tool cover -func` →
  0,0 %). Прогон настоящего бинарника печатает `headers=[Remote-User]` — имена,
  не значения: дефекта сегодня нет, нет защиты от регрессии против требования
  спеки «строка старта MUST не нести значений».
- Умолчания необязательных полей заданы в одном месте с прочими. **Оракул:**
  умолчания `Debug` и `TestHeaders` заданы нулём типа, а не в `defaultConfig()`.
  Нарушена `docs/conventions/config.md`, «Структура в коде»: «Умолчания задаются
  в `defaultConfig()`… Новое поле требует правки обоих мест», и там же форма
  обязательного поля — «умолчания нет ни в `defaultConfig()`, ни по нулевому
  значению типа».
- Оба комментария описывают то, что есть. **Оракул:** комментарий
  `Dockerfile:49-50` объясняет исключение `cmd/devtools` словами «оснастка
  разработчика (подставной прокси)», а подкоманды больше нет; приёмочный шаг
  искал следы по строке `devtools proxy` и эту не поймал.
  `internal/controller/http/mounts.go:54-56` перечисляет три звена цепочки, тогда
  как `AppChain` одевает четыре.

## Рамки

Поведение сервиса не меняется ни одним пунктом. Имя ключа конфига не трогается:
правится место, где задано его умолчание, а не сам ключ.
