- четыре новые записи: проверить шаг migrations так же, как шаг сверки версий Go; свести шесть расхождений между документами канона; запретить обращаться к Bot API мимо клиента бота; разведка о шагах гейта, теряющих предмет - context-cancel-in-pipeline приведена к правде: дописан перечень сделанного попутно, критерий с оракулом «тест на трёх прерываниях подряд» разбит надвое — проверена была только его узкая половина
63 lines
5.1 KiB
Markdown
63 lines
5.1 KiB
Markdown
# 🧹 Свести шесть расхождений между документами канона
|
||
|
||
- **Тип:** chore
|
||
- **Категория:** Очередь — Находки одной сверки: чинится одним заходом, пока помнится, чем каждое место было найдено.
|
||
- **Зачем:** Сверка 2026-08-13 нашла шесть мест, где два документа отвечают на один вопрос по-разному; четыре из них в architecture.md, и по ним читатель строит решения о выкладке и о периметре.
|
||
|
||
Находки сверки документов агентами `doc-consistency` и `doc-code-drift`,
|
||
прогнанной 2026-08-13 вместе с работой о контексте и токене. К той работе
|
||
расхождения отношения не имеют — они старше, и потому не чинились тем же
|
||
коммитом.
|
||
|
||
Каждое место названо с домом факта, то есть с тем документом, который прав:
|
||
|
||
1. **Панель администратора против Authelia.** `architecture.md`, «Открытые
|
||
вопросы»: «Панель администратора Authelia не закрывает». `security.md`,
|
||
«Периметр»: адрес `/_/` закрывает Authelia на обратном прокси решением от
|
||
2026-08-11. Дом — `security.md`.
|
||
2. **Провайдер OIDC не назван внешней зависимостью.** Работает с 2026-08-12, у
|
||
него два таймаута в `database.md` и нормативная спека `access`, но в таблице
|
||
зависимостей `architecture.md` его нет, а языковая модель числится там
|
||
«пятой зависимостью». Дом — `architecture.md`, править его.
|
||
3. **«Таймаута нет ни у одного обращения наружу»** (`architecture.md`,
|
||
«Эксплуатация») против таймаутов обмена кода у провайдера в `database.md` и
|
||
требования спеки `access`. Верно узкое утверждение: таймаутов нет у Telegram,
|
||
Object Storage и SpeechKit. Дом — `database.md`.
|
||
4. **gin в `README.md`.** Веб-фреймворка нет: HTTP-поверхность — роутер
|
||
встроенной PocketBase, и `logging.md` прямо говорит, что вместе с gin ушёл и
|
||
`sloggin`. Дом стека — `CLAUDE.md`.
|
||
5. **Вид временной метки.** `conventions/database.md`: RFC 3339 с `T`, секундная
|
||
точность. `docs/database.md`: `2006-01-02 15:04:05.000Z`, и вид обязателен
|
||
побайтово — сравнение в SQLite строковое. Дом — `docs/database.md`;
|
||
конвенции нужна строка «*Расхождение:*».
|
||
6. **Дубли текста в `CLAUDE.md`** — подавления `hadolint` и настройка
|
||
`errcheck` пересказаны там дословно, хотя обе преамбулы договорились, что
|
||
дом перечня подавлений — `go-linters.md`.
|
||
|
||
## Затрагивает
|
||
|
||
- `docs/architecture.md` — «Открытые вопросы», таблица внешних зависимостей,
|
||
раздел «Эксплуатация»;
|
||
- `docs/conventions/database.md` — вид временной метки;
|
||
- `docs/security.md` и `docs/database.md` — как дома фактов, если правка
|
||
потребует уточнить формулировку;
|
||
- `README.md` — перечень технологий;
|
||
- `CLAUDE.md` — раздел «Гейт», два места с пересказом.
|
||
|
||
## Критерии приёмки
|
||
|
||
- Ни одно из шести мест не отвечает на свой вопрос двумя способами. Оракул —
|
||
повторный прогон `av-dev-docs:healthcheck`: перечисленные шесть находок не
|
||
возвращаются.
|
||
- Провайдер OIDC стоит в таблице внешних зависимостей со своими четырьмя
|
||
столбцами отказа, и счёт зависимостей в «Открытых вопросах» сходится с
|
||
таблицей. Оракул — чтение таблицы: число строк против числа в тексте.
|
||
- Дрейф раскладки и битые ссылки не заведены. Оракул — `task gate` зелёный
|
||
(шаг `docs`).
|
||
|
||
## Рамки
|
||
|
||
Правится текст документов, а не поведение сервиса: если расхождение окажется
|
||
дефектом кода, оно уезжает своей задачей, а не чинится здесь. Спеки
|
||
`openspec/specs/` не трогаем — у них свой порядок изменения.
|