Dillweed Registry (Draft Proposal)
The authoritative data layer for the Dillweed Namespace — storing, signing, and serving Capability Records.
A namespace without a registry is a naming convention with nowhere to look things up. The Dillweed Registry is the authoritative source of truth for all Capability Records in the Dillweed Namespace — the layer that makes names resolvable, signatures verifiable, and governance enforceable.
If the namespace standard defines what can exist, and the DillClaw Resolver defines how names are found, the Registry defines what is actually registered, by whom, under what terms, and with what cryptographic proof.
Without a registry, a namespace remains descriptive. Without a resolver, it remains inaccessible. The Registry is the third and foundational layer — the durable store that gives both the namespace and the resolver something real to operate against.
Abstract
The Dillweed Registry is the authoritative persistence layer for the Dillweed Namespace. It stores Capability Records — the structured documents that define what a registered capability is, how it behaves, and how it can be invoked. It signs each record cryptographically at registration time using the DNSO (Dillweed Namespace Stewardship Organization) private key, making every record independently verifiable by any party holding the published DNSO public key. It exposes a governed HTTP API for registration, lookup, revocation, and trust tier management.
This document specifies the Registry's data model, API contract, signing protocol, storage requirements, registration rules, revocation semantics, and integration with the DillClaw Resolver layer. Implementations that conform to this specification are considered Dillweed Registry-compliant.
This is the third core infrastructure document in the Dillweed specification stack. It should be read alongside the Dillweed Namespace Standard v0.4 and the DillClaw Resolver Specification v0.1. Those documents define the naming model and the resolution protocol respectively. This document defines the authoritative data store that makes both operational.
This document specifies the Dillweed Registry layer only. Namespace URI syntax, Capability Record schema interpretation, and trust tier definitions are governed by the Dillweed Namespace Standard. Resolution protocol and query semantics are governed by the DillClaw Resolver Specification. This document defines the authoritative store those systems depend on.
Role in the Stack
The Dillweed Registry occupies the foundational position in the three-layer agentic coordination stack. It is the layer all other layers depend on — without it, neither the namespace nor the resolver has authoritative data to operate against.
Human Gateway Layer
Platform-scale access, identity, and policy. Examples: Meta, Google, Apple, Microsoft. These layers surface agent capabilities to end users and enterprise systems.
Dillweed Namespace Layer
Stable naming, trust accumulation, and governance. Defined in the Dillweed Namespace Standard v0.4.
DillClaw Resolver Layer
Query parsing, trust evaluation, candidate ranking, and invocation routing. Defined in the DillClaw Resolver Specification v0.1.
Dillweed Registry ← this document
Authoritative Capability Record storage, DNSO cryptographic signing, registration governance, and revocation. The durable data foundation all other layers read from.
Capability Layer
Individual tools, agents, APIs, and data sources. Their records live in the Registry; their endpoints are invoked directly by agents after resolution.
The Registry's relationship to the resolver mirrors the relationship between a DNS zone file and a DNS resolver — the resolver handles queries, but the authoritative data lives in the zone. The Registry is the zone. Unlike DNS zone files, Registry records carry cryptographic signatures and structured trust metadata that resolvers evaluate beyond simple presence.
The Registry stores what has been registered, signs it to make it verifiable, and exposes it through a governed API. It does not resolve queries, evaluate trust in context, or route invocations — those responsibilities belong to the DillClaw Resolver. The Registry's contract is narrow: store it durably, sign it honestly, serve it accurately.
Registry Architecture
A conformant Dillweed Registry consists of four functional components. These may be deployed together as a single service or independently — the specification is agnostic to deployment topology provided the external API behavior is conformant.
2.1 Functional Components
| Component | Responsibility |
|---|---|
| Record Store | Durable persistence for Capability Records, both active and revoked. Must support indexed lookup by name, version, and trust tier. Must survive process restart and system reboot without data loss. |
| Signing Authority | Holds the DNSO private key. Signs every Capability Record at registration time using Ed25519. Never exposes the private key through any API surface. |
| API Layer | HTTP service exposing lookup, list, register, revoke, promote, and verify endpoints. Documented in full in §4. |
| Registration Log | Append-only audit trail of all registry actions: registrations, revocations, and tier promotions. Must be queryable for governance review. Never modified or deleted. |
2.2 Deployment Modes
| Mode | Description | Typical Use |
|---|---|---|
| Authoritative | The single source of truth for the Dillweed Namespace. Operated by the DNSO. All resolvers ultimately reference this instance. | DNSO-operated production registry at dillweed.com |
| Local Development | A registry instance running on a local machine or LAN, seeded with test Capability Records. DillClaw resolvers can be pointed at it for development and testing. | Mac Mini, developer workstation |
| Mirror (read-only) | A read-only cache of the authoritative registry, synchronized periodically. Does not accept registrations. Improves resolver availability during registry downtime. | Regional availability, resilience |
The reference implementation described in this document is a local development mode registry. It is fully conformant with this specification and may be promoted to authoritative status by operating it at a stable public endpoint and publishing its DNSO public key at the canonical URL.
Mirror registries carry additional conformance obligations beyond read-only operation. A conformant mirror must expose two fields in its /health response: authoritative_snapshot_timestamp — the ISO 8601 timestamp of the most recent synchronization from the authoritative registry — and authoritative_signature_hash — a hash of the authoritative registry's most recent signed /list payload. These fields allow resolvers to detect stale, split-brain, or tampered mirrors without trusting the mirror itself. Full mirror semantics are specified in §10.3.
Capability Record Schema
The Capability Record (CR) is the atomic unit of the registry. Every registered capability is represented by exactly one CR per version. The schema defined here is the canonical storage schema — a superset of the CR schema defined in the Dillweed Namespace Standard, which defines only the fields relevant to resolution.
3.1 Field Definitions
rest, mcp, a2a, grpc, or custom.experimental, trusted, verified, or canonical. Assigned at registration; updated via the promote endpoint.query, summarize, export, execute.name, forms the unique registry key./list?tag=. Not used in trust evaluation. Examples: search, finance, mcp.3.2 Example Capability Record
{
"name": "research.market.intel.vendors",
"description": "Vendor comparison and analysis capability",
"endpoint": "https://api.marketintel.example.com/vendors",
"protocol": "rest",
"input_schema": { ... },
"output_schema": { ... },
"trust_tier": "verified",
"permissions": ["query", "summarize", "export"],
"version": "1.2.0",
"signature": "dnso_v1_WZ8oHbterECAL0P_D1Rtq...", // DNSO-generated at write time
"registration_date": "2024-09-15",
"last_updated": "2026-03-27",
"tags": ["research", "procurement", "vendor"]
}
3.3 Uniqueness Constraint
A name + version pair must be unique among active (non-revoked) records. Attempting to register a duplicate returns 409 ALREADY_EXISTS. A revoked record's name and version may be re-registered — revocation frees the slot for a corrected submission.
API Reference
The Registry exposes a minimal HTTP API. All endpoints accept and return application/json except /pubkey, which returns PEM text. Write endpoints should be protected by a bearer token in production deployments via the REGISTRY_ADMIN_TOKEN environment variable.
Returns registry health, total active record count, per-tier breakdown, signing algorithm, public key URL, and uptime. Required for all conformant implementations. The DillClaw Resolver uses this endpoint to confirm registry availability before relying on a live connection.
Returns the DNSO Ed25519 public key in PEM format. This is the verification key against which all record signatures are checked. Must be publicly accessible. The canonical URL for the authoritative registry is https://dillweed.com/dnso_public.pem. Agents and resolvers should fetch the key from that URL over TLS rather than from the registry's own endpoint, to prevent a compromised registry from serving a forged key.
Returns all active Capability Records for the given namespace path. An optional ?version= query parameter pins the result to a specific version. Path separators may be dots or forward slashes — both are accepted and normalized to dots internally.
GET /lookup/research.market.intel.vendors
GET /lookup/tools.search.web-retrieval?version=3.1.0
Returns all active Capability Records with optional filtering. Supports ?tier= (filter by trust tier), ?tag= (filter by tag), ?limit= and ?offset= for pagination. Maximum 500 records per response. This is the primary endpoint used by DillClaw Resolvers to warm their local capability cache on startup and refresh it periodically.
GET /list
GET /list?tier=verified
GET /list?tag=search&limit=20&offset=0
Verifies the DNSO cryptographic signature on a stored Capability Record. Returns signature_valid: true/false, the algorithm used, and the public key URL. A valid signature confirms the record was written by the DNSO and has not been altered at rest. Used by agents and auditors who want to verify records independently of the resolver's trust evaluation.
Registers a new Capability Record. The registry validates the record, rejects malformed or duplicate submissions, generates the DNSO signature, stamps last_updated, logs the action, and persists the signed record. Returns the complete signed record. See §7 for required fields and validation rules.
{
"name": "tools.translation.text.en-es",
"description": "English to Spanish translation with confidence scores.",
"endpoint": "https://api.translate.example.com/en-es",
"protocol": "rest",
"trust_tier": "experimental",
"version": "1.0.0"
}
Revokes a Capability Record. Revoked records disappear from all lookups and list results immediately. A version field scopes revocation to a single version; omitting it revokes all active versions. A reason field is required for audit log purposes. See §8 for full revocation semantics.
Updates the trust tier of an existing active record. Accepts name, version, and trust_tier. The action is logged and the updated record returned. Supports both promotion (experimental → trusted) and demotion (verified → trusted) without record revocation.
4.1 Error Response Format
| HTTP | Error Code | Meaning |
|---|---|---|
| 400 | BAD_REQUEST | Malformed request body or invalid JSON. |
| 401 | UNAUTHORIZED | Write endpoint requires Authorization: Bearer <token>. |
| 404 | NOT_FOUND | No active record at the specified path or version. |
| 409 | ALREADY_EXISTS | A record with this name:version is already active. |
| 422 | VALIDATION_FAILED | Record fields fail validation. Includes a structured errors array. |
| 500 | SERVER_FAULT | Internal registry error. Includes a detail field for diagnostics. |
Signing Model
Every Capability Record stored in the Registry carries a DNSO cryptographic signature. The signature is the mechanism that makes records authoritative — it allows any agent or resolver to verify independently that a record was written by the DNSO and has not been altered since registration.
5.1 Algorithm
The Registry uses Ed25519 (Edwards-curve Digital Signature Algorithm, RFC 8032) for all record signing. Ed25519 was chosen for its combination of strong security, compact signatures (~88 base64url characters), fast verification, and wide support across languages and runtimes including Node.js built-ins, Python, Go, Rust, and browser WebCrypto APIs.
5.2 Canonical JSON
Signatures are computed over a deterministic canonical JSON representation of the record, not the full stored document. This ensures the signature is stable regardless of storage format, field ordering, or whitespace. The canonical JSON includes exactly the eight fields below, with keys sorted alphabetically and no whitespace:
{"description":"...","endpoint":"...","last_updated":"...","name":"...","permissions":[...],"protocol":"...","trust_tier":"...","version":"..."}
5.3 Signature Format
Signatures are serialized as a prefixed base64url string: dnso_v1_ followed by the base64url-encoded raw Ed25519 signature bytes (ieee-p1363 encoding). The version prefix enables future algorithm migration without breaking existing parsers.
5.4 Independent Verification Steps
Fetch the DNSO public key
Retrieve the Ed25519 public key in PEM format from https://dillweed.com/dnso_public.pem over TLS. Do not trust a key fetched from the registry's own /pubkey endpoint as the sole source.
Reconstruct canonical JSON
Build the canonical JSON from the record's eight signed fields (§5.2). Keys must be alphabetical, no whitespace, compact JSON.stringify() output.
Decode the signature
Strip the dnso_v1_ prefix and base64url-decode the remaining string to raw bytes.
Verify
Verify the decoded bytes against the canonical JSON payload using the DNSO public key and Ed25519. A successful verification confirms the record is authentic and has not been modified since signing.
5.5 Keypair Custody
The DNSO private key is the root of trust for the entire namespace. It must be stored at file mode 0600, never committed to version control, never transmitted over any network interface, and backed up to at least two encrypted, physically separate media. If the private key is lost, all existing signatures become unverifiable and a keypair reset is required.
A keypair reset is a registry reset event: a new keypair is generated, the public key is republished, and all active records must be re-signed. Resolvers that cached the old public key will need to refresh. The registration log survives intact as a historical record, but the trust chain from old signatures to the new key cannot be automatically reconstructed. Back up the private key with the same care as a certificate authority root.
5.6 Planned Key Rotation
Routine DNSO key rotation — distinct from emergency keypair reset — should be performed periodically to limit the blast radius of undetected key compromise. During planned rotation, the prior public key must be preserved and served alongside the new key for a defined overlap window (recommended minimum: 30 days). This permits staged resolver refresh: resolvers that have cached the old public key continue to verify existing records while they refresh to the new key at their next scheduled update cycle. Records signed under the prior key remain valid during the overlap window. At the close of the overlap window, all active records must be re-signed under the new key and the prior key retired. The overlap window start and end dates must be disclosed publicly and logged to the registration audit trail.
Storage Model
The Registry uses a relational data model. The reference implementation uses SQLite with WAL (Write-Ahead Logging) journal mode, providing ACID guarantees, crash safety, and zero-configuration deployment. Alternative conformant implementations may use any storage system that satisfies the durability and query requirements.
6.1 Core Tables
| Table | Purpose | Key Constraints |
|---|---|---|
| capabilities | Stores all Capability Records, active and revoked. The primary data table. | Unique index on (name, version) where revoked=0. Index on trust_tier for filtered list queries. |
| registration_log | Append-only audit trail of all registry actions: register, revoke, promote. Every action is logged with the caller identity and a timestamp. | Append-only. No rows updated or deleted. Retained indefinitely. |
| meta | Registry-level key-value configuration: schema version, creation date, public key URL. | Read at startup. Updated only during schema migrations, never by the API. |
6.2 Soft-Delete Revocation
Revoked records are not deleted — they are marked with a revoked=1 flag and a revoke_reason. This preserves the audit trail: a revoked record demonstrates that a capability existed, was registered by a real party, and was retired for a documented reason. All API read responses filter on revoked=0 unless explicitly querying history.
6.3 Durability Requirements
- Records must survive process restart and system reboot without loss
- The registration log must be append-only — no rows may be deleted or modified
- WAL journal mode (or equivalent) is required for SQLite deployments to prevent corruption on unclean shutdown
- The DNSO keypair must be stored outside the database, in a file with mode 0600 or equivalent OS-level access control
- A backup of both the database and the keypair must be maintained on a separate physical medium, verified at least monthly
6.4 Schema Migration Philosophy
The meta.schema_version field records the current schema revision of the registry database. Schema migrations must be forward-readable for at least one minor version — a registry running schema version N+1 must remain capable of serving records to a resolver or client built against schema version N without error. This requirement ensures that ecosystem participants can upgrade on independent schedules without coordination failures. Breaking schema changes require a major version increment and must be announced with a minimum 60-day advance notice period.
Registration Requirements
The Registry enforces the following validation rules on all POST /register requests. A submission that fails any rule is rejected with 422 VALIDATION_FAILED and a structured errors array listing every failure simultaneously — callers receive all problems in a single response.
| Field | Validation Rule |
|---|---|
| name | Required. Lowercase ASCII letters, digits, and hyphens only. Minimum two dot-separated components. Each component 2–64 characters. No wildcards. No uppercase letters. |
| description | Required. Non-empty string. |
| endpoint | Required. Must parse as a valid URL. HTTP and HTTPS accepted; custom schemes rejected. |
| protocol | Required. Must be one of: rest, mcp, a2a, grpc, custom. |
| trust_tier | Required. Must be one of: experimental, trusted, verified, canonical. See note on self-assignment below. |
| version | Required. Semver-formatted string (e.g. 1.0.0, 2.3.1-beta). Combined with name, must be unique among active records. |
| permissions | Optional. If provided, must be an array of strings. |
| input_schema / output_schema | Optional. If provided, must be valid JSON objects. |
| tags | Optional. If provided, must be an array of strings. |
| signature | Must NOT be supplied by the registrant. Any submitted value is silently overwritten by the DNSO-generated signature. The registry is the sole signing authority. |
In v0.1, registrants may submit provisional tier declarations up to and including canonical. These declarations are accepted by the registry as provisional claims, subject to resolver-side weighting penalties until DNSO attestation is established. A resolver encountering a self-declared verified or canonical record without a corresponding DNSO promotion audit entry should treat it as trusted for scoring purposes. In v0.2, verified and above will require DNSO identity review before the tier is accepted as attested rather than provisional. The DNSO retains the right to revoke any record whose declared tier is not substantiated, regardless of whether the signature is valid.
Revocation Model
Revocation removes a Capability Record from active resolution immediately and permanently, while preserving it in the database for audit purposes. It is the governance mechanism that makes the trust layer meaningful — a namespace that cannot revoke bad actors cannot be trusted.
8.1 Revocation Semantics
- Immediate effect — A revoked record disappears from
/lookupand/listat the moment of revocation. DillClaw Resolver caches may serve the record until their TTL expires; this is expected behavior, mirroring DNS TTL semantics. - Reason required — All revocations must include a
reasonstring. This is logged to the audit trail and provides the accountability the governance model requires. - Scoped or full — Revocation may target a single
name:versionpair or all active versions of a capability by omitting theversionfield. - Slot freed — After revocation, the
name:versionpair may be re-registered. This allows a capability to be replaced with a corrected version under the same name without breaking the namespace path. - Audit retained — Revoked records remain in the database with
revoked=1, the revocation reason, and a timestamp. They are never deleted.
8.2 Who May Revoke
In v0.1, any caller holding a valid admin token may revoke any record. In v0.2, a registrant identity model will allow registrants to revoke only their own records, while the DNSO retains authority to revoke any record for governance reasons. Until then, the admin token is the sole access control mechanism and should be held exclusively by the DNSO steward.
Trust Tier Governance
Trust tiers are the Registry's current assessment of a capability's reliability and standing. They are assigned at registration and updated through the /promote endpoint as a capability earns or loses standing over time.
| Tier | Meaning | v0.2 Promotion Criteria |
|---|---|---|
| experimental | Limited validation or early-stage capability. Use with explicit acknowledgment of provisional status. Default starting tier. | No criteria — default for new registrations. |
| trusted | Demonstrated reliability and usage history. Endpoint tested and found stable over a meaningful period. | Minimum 3 months continuous registration. Consistent endpoint liveness. No revocation history. |
| verified | Identity confirmed, endpoint tested, DNSO review complete. Suitable for production use by agents without explicit trust override. | DNSO identity verification of registrant. Schema validation passes. 6+ months active registration. |
| canonical | DNSO-designated preferred implementation for its category. Assigned sparingly and only by the DNSO. | DNSO determination only. Signals the reference implementation for a category. |
Tier demotions — from a higher tier to a lower one — are permitted and logged. A capability that was verified but has become unreliable may be demoted to trusted or experimental without revocation, preserving its registration history while accurately reflecting its current standing.
Trust tiers derive legitimacy from the governance process that assigns them, not from the claim itself. A self-assigned verified tier is a claim. A DNSO-reviewed verified tier, backed by a signed record and an audit trail, is infrastructure.
Integration with DillClaw
The DillClaw Resolver connects to the Dillweed Registry as its authoritative data source. The integration is intentionally simple: the resolver polls /list to warm its local cache and queries /lookup on cache miss.
10.1 Connection Model
- Cache warm on startup — On startup, a DillClaw Resolver configured with
DILLCLAW_REGISTRY_URLcalls/listto load all active records into its in-process cache. - Periodic refresh — The resolver re-fetches
/listevery 60 seconds by default. Revocations and tier changes propagate within this window. - Graceful fallback — If the registry is unreachable, the resolver continues from its stale cache, disclosing staleness to callers via
stale: trueandcached_atin the response. - Signature pass-through — The resolver never modifies DNSO signatures. They are returned verbatim to calling agents for independent verification.
10.2 Local Mac Mini Setup
# Terminal 1 — start the registry on port 7475
cd dillweed-registry && ./start.sh
# Terminal 2 — start DillClaw pointing at the live registry
cd dillclaw-resolver
DILLCLAW_REGISTRY_URL=http://localhost:7475 node server.js
# Verify the full stack: namespace URI → registry → resolver → result
curl -s -X POST http://localhost:7474/resolve \
-H "Content-Type: application/json" \
-d '{"query":"dillweed://research.market.intel.vendors"}' | jq .
10.3 Mirror Registry Semantics
Read-only mirror registries may be operated by third parties to improve availability and reduce latency for geographically distributed resolver deployments. Mirror registries must expose two additional fields in their /health response to permit resolver freshness validation:
- authoritative_snapshot_timestamp — the ISO 8601 timestamp of the most recent full synchronization from the authoritative registry. Resolvers use this to detect staleness beyond their acceptable threshold.
- authoritative_signature_hash — a hash of the authoritative registry's most recent
/listresponse payload, as signed by the DNSO. Resolvers may compare this against a fresh fetch from the authoritative registry to confirm the mirror is not serving a divergent record set.
A resolver that cannot confirm mirror freshness within its acceptable staleness window should fall back to the authoritative registry or disclose staleness to callers via the stale: true flag. Mirror registries may not modify DNSO signatures and may not promote or revoke records — all writes are the exclusive authority of the authoritative DNSO registry.
Security Model
The Registry's security model has two scopes: protecting the registry itself from unauthorized writes, and protecting consumers of registry data from tampered or spoofed records.
11.1 Threat Model
| Threat | Mitigation |
|---|---|
| Record tampering at rest | Ed25519 signatures over canonical JSON. Any modification to signed fields invalidates the signature, detectable by any verifier. |
| Unauthorized registration | Bearer token on write endpoints. In v0.2, registrant identity verification will be added. |
| Private key theft | Key stored at mode 0600, outside the database, never exposed via API. Physical security of the host is the final control. |
| Registry impersonation | Consumers should verify the DNSO public key via TLS-protected dillweed.com/dnso_public.pem, not solely from the registry's /pubkey endpoint. |
| Revocation propagation delay | Revocations propagate within the resolver's cache refresh window (default 60s). Callers receiving stale responses are informed via the stale flag. |
| SQL injection | All database queries use parameterized prepared statements compiled once at startup. |
11.2 What the Registry Does Not Secure
- The capability endpoint itself — authentication to the capability is the provider's responsibility
- The content of capability responses — the registry makes no representation about what a capability returns
- Network transit to the registry — TLS is strongly recommended for production deployments but not enforced by this specification in v0.1
11.3 Rate Limiting and Abuse Prevention
Public read endpoints — /list, /lookup, and /verify — should enforce per-IP rate controls to prevent registry scraping and availability degradation. The reference implementation does not enforce rate limits in v0.1, as the primary deployment context is a controlled network. Production deployments serving public internet traffic should place the registry behind a reverse proxy (such as nginx or Caddy) configured with appropriate rate limiting rules. Write endpoints (/register, /revoke, /promote) are protected by bearer token authentication and should additionally be restricted by IP allowlist in production environments where the set of authorized callers is known and fixed.
What Must Be Demonstrated
This specification documents a system that exists as a deployable implementation and is being refined through operation. The following milestones define the transition from local development registry to authoritative public registry — the point at which this document describes operational infrastructure rather than a proposal.
Live Public Endpoint
A publicly accessible registry at a stable URL (registry.dillweed.com or equivalent), returning real Capability Records for at least five registered capabilities across at least three namespace categories.
Published DNSO Public Key
The DNSO Ed25519 public key published at dillweed.com/dnso_public.pem over HTTPS, enabling any party to independently verify record signatures without trusting the registry itself.
Connected DillClaw Resolver
A running DillClaw Resolver pointed at the live registry, demonstrating the complete end-to-end stack: namespace URI → registry lookup → trust evaluation → invocable endpoint returned to a calling agent.
External Registration
At least one Capability Record registered by a party other than the DNSO — a real developer or tool provider using POST /register against the live registry. This demonstrates the namespace is open, not closed.
Documented Revocation
At least one publicly documented revocation operation with a logged reason, demonstrating that the governance mechanism — not just the storage mechanism — is operational and exercised.
Relationship to the Stack
The Dillweed Registry is the third core infrastructure specification in the coordination stack. Each document is necessary; none is sufficient alone.
- Namespace Standard — naming model, URI syntax, trust tier definitions, governance philosophy
- DillClaw Spec — resolution protocol, query language, trust scoring algorithm, API contract
- Registry Spec — data model, signing authority, registration validation, revocation semantics
- Namespace Standard — standalone; defines the foundation others build on
- DillClaw Spec — references the Namespace Standard for URI syntax and trust tier definitions
- Registry Spec — depends on both; defines what the namespace names and the resolver reads
The pattern mirrors every durable infrastructure stack in computing: a naming model, a resolution protocol, and an authoritative data store. HTTP named resources; servers served them; DNS resolved them. Kubernetes named workloads; kubelets ran them; etcd stored their state. The Dillweed stack follows the same structure — and like those predecessors, its durability depends on the registry being operated consistently, not just the protocols being specified clearly.
The resolver defines how it is found.
The registry defines what actually does.
This document is published as a working specification — it documents a system that exists as a deployable reference implementation and is being refined through operation. The reference implementation is available at dillweed.com and forms the basis for the authoritative registry. Feedback, registration inquiries, and technical integration questions may be directed to the Dillweed Namespace Stewardship Office via dillweed.com.