Files
jellybit/docs/conventions/README.md
T
avandClaude Opus 4.8 b524485775 Конвенции: веб-UI на htmx (свопы, поллинг, деградация, ошибки)
Кросс-каттинг правила работы с интерфейсом на htmx: единый партиал =
страница = фрагмент (+инвариант «корень define = элемент с целевым id»),
ветвление обработчика по isHTMX, обязательная деградация без JS,
ошибка на htmx-пути = HTTP 200 + фрагмент, самозавершающийся поллинг
живых обновлений, своп сохраняет контекст / выход = навигация,
различение поверхности полем surface, вендоринг/кэш статики.

Блок «Статус» разделяет уже сделанное (reviewBlockAction, поллинг
progress/seeding) и проектируемое в change htmx-action-swap.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 14:17:54 +03:00

25 lines
1.7 KiB
Markdown

# Конвенции кода
Кросс-каттинг правила того, **как** мы пишем код (логирование, ошибки,
именование) — в отличие от `docs/specs/` и `openspec/specs/`, которые
описывают, **что** система делает.
Конвенции **не** переносятся в OpenSpec: это не capability. Короткие
инварианты дублируются в [CLAUDE.md](../../CLAUDE.md) (агент читает его
всегда) и кратко в `openspec/config.yaml``context` (подмешивается в
генерацию артефактов); детали — здесь. Обоснование «почему» — в `docs/adr/`.
## Записи
- [logging.md](logging.md) — логирование: уровни, поля, что не логируем.
- [config.md](config.md) — конфигурация: TOML, секреты через деплой
(Ansible+Vault), валидация на старте.
- [errors.md](errors.md) — ошибки: stdlib, обёртка `%w`, `errors.Is`/`As`,
трансляция на внешней границе.
- [database.md](database.md) — БД и идентификаторы: TEXT ULID PK через
`internal/ident` (без AUTOINCREMENT), lowercase + нормализация на границах,
естественные ключи у деталей.
- [web-ui.md](web-ui.md) — веб-UI на htmx: единый партиал = страница = фрагмент,
ветвление `isHTMX`, деградация без JS, ошибка = 200 + фрагмент, самозавершающийся
поллинг, вендоринг/кэш статики.