Commit Graph
6 Commits
Author SHA1 Message Date
vasyanskandClaude Sonnet 5.5 c5f1e64873 fix(diff): merge template records sharing name+type into one RRset
Two template rows at the same name and type (e.g. two MX) produced two
diffs with one key; each PATCH replaced the whole provider RRset, so only
the last value survived. Merge values by key before diffing.

docs: add lint/single-test commands and compose files to CLAUDE.md

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 17:26:01 +07:00
vasyansk e675c17123 feat(diff): mark records deliberately kept outside the template 2026-08-19 17:51:19 +07:00
vasyanskandClaude Opus 4.8 0b26923586 feat(apply): per-record selection + deletes-before-updates ordering
RecordDiff.Key() gives a stable normalized identifier ("TYPE name.") for
every diff kind, exposed as recordView.Key. ApplyRequest now takes
Updates/Prunes key lists instead of two booleans, so callers can apply a
subset of records. service.Apply builds the applied set with selected
prunes (Delete) added before selected updates (Add/Update) — an
invariant, not an option — since the provider rejects an Add/Update
whose name still conflicts with an existing record (e.g. a CNAME cannot
be created while an A on the same name still exists).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BwxdSt4reTm7Dj1oxRvpP3
2026-07-05 15:10:01 +07:00
vasyansk c42d242a3b feat(diff): prune-guard Updates()/Prunes() + фиксация семантики dedup 2026-07-03 13:12:10 +07:00
vasyansk cb2f826dc2 test(diff): пустой шаблон — массовый Delete управляемых, NS остаётся ReadOnly 2026-07-03 12:57:36 +07:00
vasyanskandClaude Opus 4.8 bd4f8c5a8c feat(diff): диф-движок шаблон↔зона с Actionable и ReadOnly для NS/SOA
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 12:32:33 +07:00