docs: custom records and import-as-sync invariants

Document the two Task 1-9 features in CLAUDE.md invariants and README
features. Also closes two review gaps: a Go test proving importResponse
marshals created/removed as [] (never null) on a no-op import, and a
frontend test-race fix in DomainsPage.test.tsx where the import button
was clicked before its disabled state cleared.
This commit is contained in:
2026-08-19 18:45:52 +07:00
parent d6d91f8826
commit 58a57ff4d0
4 changed files with 40 additions and 0 deletions
+7
View File
@@ -23,6 +23,13 @@
**перед** обновлениями — иначе провайдер отвергает конфликт (например
`CNAME` на имени, где ещё жива `A`-запись). При ошибке показывается
реальный ответ провайдера, а не generic-текст.
- **Custom-записи**: запись можно пометить как намеренно оставленную вне
шаблона — она уходит из Prunes, не считается drift и не может быть
применена, пока пометка не снята; как только шаблон начинает описывать
этот ключ сам, пометка автоматически перестаёт действовать.
- **Импорт зон — синхронизация**: повторный импорт аккаунта провайдера не
только заводит домены новых зон, но и удаляет домены зон, исчезнувших у
провайдера; пустой ответ провайдера ничего не удаляет.
- **Расписание проверок**: планировщик периодически гоняет read-only
check+notify (без Apply), пишет историю проверок и статус drift.
- **Уведомления**: каналы Telegram и Webhook, per-channel статус доставки.