DNS & Domain Inventory Verification Protocol

DNS & Domain Inventory Verification Protocol

Rule ID: DNS-VERIFY-001
Effective Date: 2026-04-20
Owner: FlowForge (DevOps)
Applies To: All agents adding domains to hosting platforms or inventory docs


Rule Statement

Every domain added to hosting platforms or ALAI inventory MUST pass DNS + RDAP registry verification BEFORE deployment or documentation.

This rule prevents typos, phantom domains, and inventory errors from propagating through systems.


When This Rule Applies

BEFORE any of these actions:

  1. Adding domain to hosting platform (Vercel, Cloudflare Pages, GCP, Azure)
  2. Updating alai-hosting-inventory.md with new domain
  3. Creating DNS records (A, CNAME, NS)
  4. Documenting client domains in BookStack
  5. Writing domain into specs, blueprints, or task descriptions

Triggers:


Verification Steps

1. DNS Resolution Check

Command:

dig +short {DOMAIN} A

Expected output:

2. RDAP Registry Check (PRIMARY VALIDATION)

Purpose: Verify domain is actually registered in TLD registry (catches typos)

Command:

curl -sS "https://rdap.nic.{TLD}/domain/{DOMAIN}" | jq -r '.handle // .ldhName // "NOT_FOUND"'

TLD-specific RDAP servers:

TLDRDAP Base URL
.nohttps://rdap.norid.no/domain/
.comhttps://rdap.verisign.com/com/v1/domain/
.iohttps://rdap.nic.io/domain/
.prohttps://rdap.nic.pro/domain/
.ba(no public RDAP, use WHOIS)
.rs(no public RDAP, use WHOIS)

Expected output:

3. WHOIS Fallback (for TLDs without RDAP)

Command:

whois {DOMAIN} | grep -i "domain name\|status\|registrar"

4. Registrar Identification

Command (via RDAP):

curl -sS "https://rdap.nic.{TLD}/domain/{DOMAIN}" | jq -r '.entities[] | select(.roles[] == "registrar") | .vcardArray[1][] | select(.[0] == "fn") | .[3]'

Purpose: Replace generic "Third Party" with actual registrar name

5. Expiry Date Check

Command (via RDAP):

curl -sS "https://rdap.nic.{TLD}/domain/{DOMAIN}" | jq -r '.events[] | select(.eventAction == "expiration") | .eventDate'

Failure Actions

If domain fails RDAP check (404 error):

DO NOT:

INSTEAD:

  1. Verify spelling with client/team
  2. Check if domain is registered
  3. Flag as TYPO_OR_MISSING status
  4. Update requester

Inventory Standards

Required fields for every domain entry:

DomainRegistrarNS ProviderHostingRepoStackExpiryStatus
example.comNamecheapCloudflareCF Pages~/pathNext.js2027-01-15✅ LIVE

Field validation:


Incident: kenyhot.pro Typo (2026-04-20)

What happened:

Why this rule prevents it:

Prevention checklist:


Exceptions

This rule does NOT apply to:

  1. Internal-only domains (localhost, *.local, *.internal)
  2. Development subdomains on verified parent domain
  3. IP-based access (e.g., Azure VM via IP)

Partial verification for:


Compliance

Enforcement:

Audit frequency:


References:


Created by: ALAI, 2026
Last synced: 2026-04-20
Source: /Users/makinja/system/rules/dns-inventory-verification.md


Revision #2
Created 2026-04-20 19:10:19 UTC by John
Updated 2026-05-31 20:06:20 UTC by John