Dillweed Registry  ·  Specification  ·  Draft v0.2

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.

Version0.2
PublishedMarch 2026
Namespace RefNS Standard v0.4
Resolver RefDillClaw Spec v0.1
StatusDraft for Comment

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.

Scope of This Document

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.

§ 01

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.

L1

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.

L2

Dillweed Namespace Layer

Stable naming, trust accumulation, and governance. Defined in the Dillweed Namespace Standard v0.4.

L3

DillClaw Resolver Layer

Query parsing, trust evaluation, candidate ranking, and invocation routing. Defined in the DillClaw Resolver Specification v0.1.

L4

Dillweed Registry  ← this document

Authoritative Capability Record storage, DNSO cryptographic signing, registration governance, and revocation. The durable data foundation all other layers read from.

L5

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 Contract

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.

§ 02

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

ComponentResponsibility
Record StoreDurable 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 AuthorityHolds the DNSO private key. Signs every Capability Record at registration time using Ed25519. Never exposes the private key through any API surface.
API LayerHTTP service exposing lookup, list, register, revoke, promote, and verify endpoints. Documented in full in §4.
Registration LogAppend-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

ModeDescriptionTypical Use
AuthoritativeThe 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 DevelopmentA 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 Freshness Requirements

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.

§ 03

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

name
string · required
Fully qualified Dillweed namespace path. Lowercase, dot-separated, 2+ components. Unique per version among active records.
description
string · required
Human-readable summary of the capability's purpose and behavior. Used by resolvers to provide context to agents.
endpoint
string · required
Base URL for capability invocation. Must be a valid URL at registration time.
protocol
string · required
Invocation protocol: rest, mcp, a2a, grpc, or custom.
input_schema
object · optional
JSON Schema describing accepted inputs. Returned to resolvers and agents for request validation without documentation lookup.
output_schema
object · optional
JSON Schema describing returned outputs. Enables agents to validate responses structurally.
trust_tier
string · required
Trust classification: experimental, trusted, verified, or canonical. Assigned at registration; updated via the promote endpoint.
permissions
array · optional
Enumerated allowed actions for consuming agents. Examples: query, summarize, export, execute.
version
string · required
Semver string for the capability implementation. Combined with name, forms the unique registry key.
signature
string · generated
DNSO Ed25519 signature over canonical record fields. Generated by the registry at write time. Never supplied by the registrant — any submitted value is overwritten.
registration_date
string · optional
ISO 8601 date of first registration. Used in trust score history calculation by resolvers. Defaults to the date of registration if not supplied.
last_updated
string · generated
ISO 8601 date of the most recent update. Set by the registry at write time. Included in the signed payload.
tags
array · optional
Free-form classification strings for filtering via /list?tag=. Not used in trust evaluation. Examples: search, finance, mcp.

3.2 Example Capability Record

JSON — full Capability Record as stored and served
{ "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.

§ 04

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.

GET/health

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.

GET/pubkey

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.

GET/lookup/<name>

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.

Examples
GET /lookup/research.market.intel.vendors GET /lookup/tools.search.web-retrieval?version=3.1.0
GET/list

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.

Examples
GET /list GET /list?tier=verified GET /list?tag=search&limit=20&offset=0
GET/verify/<name>

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.

POST/register

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.

Minimal registration request body
{ "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" }
POST/revoke

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.

POST/promote

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

HTTPError CodeMeaning
400BAD_REQUESTMalformed request body or invalid JSON.
401UNAUTHORIZEDWrite endpoint requires Authorization: Bearer <token>.
404NOT_FOUNDNo active record at the specified path or version.
409ALREADY_EXISTSA record with this name:version is already active.
422VALIDATION_FAILEDRecord fields fail validation. Includes a structured errors array.
500SERVER_FAULTInternal registry error. Includes a detail field for diagnostics.
§ 05

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:

Fields included in signature — alphabetical order, 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

1

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.

2

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.

3

Decode the signature

Strip the dnso_v1_ prefix and base64url-decode the remaining string to raw bytes.

4

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.

On Keypair Loss

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.

§ 06

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

TablePurposeKey Constraints
capabilitiesStores 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_logAppend-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.
metaRegistry-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.

§ 07

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.

FieldValidation Rule
nameRequired. Lowercase ASCII letters, digits, and hyphens only. Minimum two dot-separated components. Each component 2–64 characters. No wildcards. No uppercase letters.
descriptionRequired. Non-empty string.
endpointRequired. Must parse as a valid URL. HTTP and HTTPS accepted; custom schemes rejected.
protocolRequired. Must be one of: rest, mcp, a2a, grpc, custom.
trust_tierRequired. Must be one of: experimental, trusted, verified, canonical. See note on self-assignment below.
versionRequired. Semver-formatted string (e.g. 1.0.0, 2.3.1-beta). Combined with name, must be unique among active records.
permissionsOptional. If provided, must be an array of strings.
input_schema / output_schemaOptional. If provided, must be valid JSON objects.
tagsOptional. If provided, must be an array of strings.
signatureMust NOT be supplied by the registrant. Any submitted value is silently overwritten by the DNSO-generated signature. The registry is the sole signing authority.
On Trust Tier Self-Assignment (v0.1)

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.

§ 08

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 /lookup and /list at 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 reason string. This is logged to the audit trail and provides the accountability the governance model requires.
  • Scoped or full — Revocation may target a single name:version pair or all active versions of a capability by omitting the version field.
  • Slot freed — After revocation, the name:version pair 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.

§ 09

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.

TierMeaningv0.2 Promotion Criteria
experimentalLimited validation or early-stage capability. Use with explicit acknowledgment of provisional status. Default starting tier.No criteria — default for new registrations.
trustedDemonstrated reliability and usage history. Endpoint tested and found stable over a meaningful period.Minimum 3 months continuous registration. Consistent endpoint liveness. No revocation history.
verifiedIdentity 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.
canonicalDNSO-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.

Governance Principle

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.

§ 10

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_URL calls /list to load all active records into its in-process cache.
  • Periodic refresh — The resolver re-fetches /list every 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: true and cached_at in 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

Running registry and resolver together on a Mac Mini
# 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 /list response 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.

§ 11

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

ThreatMitigation
Record tampering at restEd25519 signatures over canonical JSON. Any modification to signed fields invalidates the signature, detectable by any verifier.
Unauthorized registrationBearer token on write endpoints. In v0.2, registrant identity verification will be added.
Private key theftKey stored at mode 0600, outside the database, never exposed via API. Physical security of the host is the final control.
Registry impersonationConsumers should verify the DNSO public key via TLS-protected dillweed.com/dnso_public.pem, not solely from the registry's /pubkey endpoint.
Revocation propagation delayRevocations propagate within the resolver's cache refresh window (default 60s). Callers receiving stale responses are informed via the stale flag.
SQL injectionAll 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.

§ 12

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.

01

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.

02

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.

03

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.

04

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.

05

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.

§ 13

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.

What each document defines
  • 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
What each document depends on
  • 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 namespace defines what can exist.
The resolver defines how it is found.
The registry defines what actually does.
Publication Note

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.