provisioning-platform/crates/ontoref-dns/adrs/adr-002-trait-shape.ncl

26 lines
1.1 KiB
Text
Raw Normal View History

{
id = "adr-002",
title = "DnsProvider trait shape: 8 methods, explicit exclusions",
status = "accepted",
date = "2026-05-11",
context = "
Designing a provider-agnostic trait requires explicit decisions about what is
in-scope vs out-of-scope. Including too much forces every provider to implement
operations that have no tractable shared abstraction.
",
decision = "
The trait has exactly 8 methods: name, add_record, delete_record, update_record,
lookup_record, list_records, list_zones, health_check.
health_check has a default implementation delegating to list_zones.
Explicitly excluded: zone creation/deletion, DNSSEC ops, bulk import/export,
async notifications/webhooks, rate-limit introspection, geo/LB policies, PTR helpers.
",
consequences = [
"Adding any method after v1 is a semver-breaking change.",
"Migration path: DnsProviderV2: DnsProvider supertrait.",
"Providers needing excluded ops expose provider-specific types directly.",
"Conformance suite tests exactly the 8 included operations.",
],
}