fix(dns plugin): shorten machine-written names in the default table - #109
Merged
Merged
Conversation
This was referenced Aug 26, 2026
scotwells
force-pushed
the
feat/exclude-managed-records
branch
from
August 26, 2026 01:54
c5bcb28 to
4202cbe
Compare
Excluding the records Datum manages fixed one zone's width but not the general case: any system that writes into DNS puts an encoded identifier in the owner name, and Datum does not label a third party's records as managed. Names split cleanly into two populations. The ones people write are conventions with fixed shapes — @, www, _dmarc, _acme-challenge, a DKIM selector — and run to about twenty characters. The ones machines write carry an identifier and start around thirty-two: a hex digest at 32, a UUID at 36, or the 52 characters a base32-encoded 256-bit key costs. 40 sits in the gap, so a hand-written name is shown whole and an encoded one is cut. Cutting a name costs more than cutting a value, because a name is an argument: `record describe` and `record delete` take one. The footer now counts names separately from values and points at the output that carries them in full, and `-o name` — which exists to turn a row back into something you can pass to those commands — is never shortened. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
scotwells
force-pushed
the
feat/truncate-long-names
branch
from
August 26, 2026 01:55
b3b9016 to
92aa9b4
Compare
JoseSzycho
approved these changes
Aug 26, 2026
kevwilliams
approved these changes
Aug 26, 2026
This was referenced Aug 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Excluding the records Datum manages fixed one zone's width but not the general case: any system that writes into DNS puts an encoded identifier in the owner name, and Datum does not label a third party's records as managed. In
prism, 1093 of the long names come from external-dns and count as your own.Names split cleanly into two populations:
@,www,_dmarc,_acme-challenge,selector1._domainkey40 sits in the gap, so a hand-written name is shown whole and an encoded one is cut. Measured against real zones, every hand-authored name in
datum-staging.netfits — median 11, longest exactly 40.Names cost more to cut than values
A name is an argument —
record describeandrecord deleteboth take one — so shortening it can leave a row you cannot act on. Three things keep that honest:-o wideand-o jsoncarry names in full-o nameis never shortened, since it exists precisely to turn a row back into something you can pass todescribeordeleteEffect
Both zones now render at 151 columns, down from 180 and 166, and the width no longer depends on what a connector happened to name a record.
Worth noting for later: the widest remaining contributor is now STATUS, where a provenance marker like
Programmed (managed by AI Edge)is 32 characters.Related
Three readability fixes for
datumctl dns record list, reviewed and merged bottom-up:main)--no-managedto hide records another system writesAll three follow #102, which added the plugin, and are UX fixes found while using it against real staging zones. The plugin ships from #106's release plumbing and is installed via datum-cloud/datumctl-plugins#22.
Written after #108 proved insufficient for
prism, where 1093 long names come from external-dns and count as your own.