{
  "schema_version": "1",
  "portal_version": "1.0.0-foundation",
  "updated_at": "2026-07-20",
  "source": "marco.public_portal",
  "provenance": "canonical_registry",
  "data": {
    "protocol_handle_policy": {
      "format": "@[a-z0-9_]{2,32}",
      "unique": true,
      "case_sensitive": false,
      "transferable": true,
      "reservation": [
        "@marco",
        "@melega",
        "@kiri",
        "@treasury",
        "@space",
        "@radar",
        "@smartdrop",
        "@labs",
        "@passport",
        "@verifier"
      ],
      "conflict_resolution": "First-claim wins. Reserved handles are held by MARCO authority and never auto-issued. Impersonation is grounds for suspension.",
      "history": "All transfers are recorded as handle.transferred events."
    },
    "engine": {
      "engine": "marco.passport.core.handle_registry",
      "version": "1.0.0",
      "status": "CONCEPT_PREVIEW",
      "updated_at": "2026-07-21",
      "protocol_version": "1.0.0",
      "policy": {
        "engine": "marco.passport.core.handle_registry",
        "version": "1.0.0",
        "status": "CONCEPT_PREVIEW",
        "protocol_version": "1.0.0",
        "min_length": 3,
        "max_length": 30,
        "allowed_characters": "a-z 0-9 . _ -",
        "regex_source": "^[a-z0-9](?:[a-z0-9._-]{1,28}[a-z0-9])?$",
        "case": "lowercase-ascii",
        "display_prefix": "@",
        "canonical_route_template": "/@{handle}",
        "passport_fallback_route_template": "/passport/p/{public_passport_id}",
        "rules": [
          "Must begin with a letter or number.",
          "Must end with a letter or number.",
          "Only a-z, 0-9, underscore, hyphen, and period are permitted.",
          "No uppercase in canonical storage (input is lowercased).",
          "No spaces, control characters, or unsupported Unicode.",
          "No consecutive periods.",
          "No consecutive separators of the same type.",
          "No leading @ in stored value (display form may prefix @).",
          "Wallet addresses, transaction hashes, and Passport Numbers are not handles."
        ],
        "reserved_count": 54,
        "blocked_count": 7,
        "states": [
          "AVAILABLE",
          "RESERVED",
          "BLOCKED",
          "PENDING_CLAIM",
          "ACTIVE",
          "PENDING_CHANGE",
          "RELEASED",
          "REDIRECTING",
          "SUSPENDED",
          "DISPUTED",
          "REVOKED",
          "EXPIRED_HOLD"
        ],
        "events": [
          "HANDLE_AVAILABILITY_CHECKED",
          "HANDLE_CLAIM_REQUESTED",
          "HANDLE_CLAIMED",
          "HANDLE_CHANGE_REQUESTED",
          "HANDLE_CHANGED",
          "HANDLE_RELEASE_REQUESTED",
          "HANDLE_RELEASED",
          "HANDLE_REDIRECT_CREATED",
          "HANDLE_REDIRECT_EXPIRED",
          "HANDLE_SUSPENDED",
          "HANDLE_RESTORED",
          "HANDLE_DISPUTED",
          "HANDLE_REVOKED",
          "HANDLE_RESERVED",
          "HANDLE_BLOCKED"
        ],
        "redirect_states": [
          "ACTIVE_REDIRECT",
          "EXPIRED_REDIRECT",
          "NO_REDIRECT",
          "SUSPENDED_REDIRECT"
        ],
        "claim_rules": [
          "Only an authenticated Passport controller may claim a handle.",
          "One active handle per Passport; one active Passport per handle.",
          "Claims require explicit consent (consent_version).",
          "Reserved handles require authorized assignment.",
          "Blocked handles cannot be claimed.",
          "Handle history is immutable; revoked handles are never silently reassigned.",
          "Handle change never changes the Passport ID or Passport Number."
        ],
        "authority_boundary": "Global claim availability requires the Passport Core runtime. This engine performs deterministic normalization, registry, and risk checks only.",
        "runtime_dependencies": [
          "Passport Core runtime (planned)",
          "Civilization Event Fabric (planned)",
          "Authenticated Passport ownership layer (planned)"
        ],
        "internationalized_handles": "RESEARCH"
      },
      "states": [
        {
          "id": "AVAILABLE",
          "label": "Available",
          "intent": "Free to claim (subject to runtime persistence).",
          "terminal": false
        },
        {
          "id": "RESERVED",
          "label": "Reserved",
          "intent": "Protected for MARCO / Melega / organ use.",
          "terminal": false
        },
        {
          "id": "BLOCKED",
          "label": "Blocked",
          "intent": "Cannot be claimed for safety / abuse reasons.",
          "terminal": false
        },
        {
          "id": "PENDING_CLAIM",
          "label": "Pending claim",
          "intent": "Claim requested, awaiting confirmation.",
          "terminal": false
        },
        {
          "id": "ACTIVE",
          "label": "Active",
          "intent": "Currently the primary handle of a Passport.",
          "terminal": false
        },
        {
          "id": "PENDING_CHANGE",
          "label": "Pending change",
          "intent": "Handle change requested, awaiting confirmation.",
          "terminal": false
        },
        {
          "id": "RELEASED",
          "label": "Released",
          "intent": "Voluntarily released. May be in hold.",
          "terminal": false
        },
        {
          "id": "REDIRECTING",
          "label": "Redirecting",
          "intent": "Historical handle actively redirecting.",
          "terminal": false
        },
        {
          "id": "SUSPENDED",
          "label": "Suspended",
          "intent": "Temporarily withheld (safety / dispute).",
          "terminal": false
        },
        {
          "id": "DISPUTED",
          "label": "Disputed",
          "intent": "Ownership under review.",
          "terminal": false
        },
        {
          "id": "REVOKED",
          "label": "Revoked",
          "intent": "Removed by authority; never silently reassigned.",
          "terminal": true
        },
        {
          "id": "EXPIRED_HOLD",
          "label": "Expired hold",
          "intent": "Post-release cooldown before re-availability.",
          "terminal": false
        }
      ],
      "events": [
        "HANDLE_AVAILABILITY_CHECKED",
        "HANDLE_CLAIM_REQUESTED",
        "HANDLE_CLAIMED",
        "HANDLE_CHANGE_REQUESTED",
        "HANDLE_CHANGED",
        "HANDLE_RELEASE_REQUESTED",
        "HANDLE_RELEASED",
        "HANDLE_REDIRECT_CREATED",
        "HANDLE_REDIRECT_EXPIRED",
        "HANDLE_SUSPENDED",
        "HANDLE_RESTORED",
        "HANDLE_DISPUTED",
        "HANDLE_REVOKED",
        "HANDLE_RESERVED",
        "HANDLE_BLOCKED"
      ],
      "redirect_states": [
        "ACTIVE_REDIRECT",
        "EXPIRED_REDIRECT",
        "NO_REDIRECT",
        "SUSPENDED_REDIRECT"
      ],
      "reserved": [
        {
          "handle": "marco",
          "reason": "Institutional ecosystem identity — never assignable to a subject.",
          "owner_scope": "MARCO",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "melega",
          "reason": "Institutional ecosystem identity — never assignable to a subject.",
          "owner_scope": "MARCO",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "kiri",
          "reason": "Institutional ecosystem identity — never assignable to a subject.",
          "owner_scope": "MARCO",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "build",
          "reason": "Reserved for current or future Melega organs.",
          "owner_scope": "ORGAN",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "space",
          "reason": "Reserved for current or future Melega organs.",
          "owner_scope": "ORGAN",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "radar",
          "reason": "Reserved for current or future Melega organs.",
          "owner_scope": "ORGAN",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "smartdrop",
          "reason": "Reserved for current or future Melega organs.",
          "owner_scope": "ORGAN",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "labs",
          "reason": "Reserved for current or future Melega organs.",
          "owner_scope": "ORGAN",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "dex",
          "reason": "Reserved for current or future Melega organs.",
          "owner_scope": "ORGAN",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "treasury",
          "reason": "Reserved for current or future Melega organs.",
          "owner_scope": "ORGAN",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "passport",
          "reason": "Reserved for current or future Melega organs.",
          "owner_scope": "ORGAN",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "market",
          "reason": "Reserved for current or future Melega organs.",
          "owner_scope": "ORGAN",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "marketplace",
          "reason": "Reserved for current or future Melega organs.",
          "owner_scope": "ORGAN",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "events",
          "reason": "Reserved for current or future Melega organs.",
          "owner_scope": "ORGAN",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "mission",
          "reason": "Reserved for current or future Melega organs.",
          "owner_scope": "ORGAN",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "credentials",
          "reason": "Reserved for current or future Melega organs.",
          "owner_scope": "ORGAN",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "verifier",
          "reason": "Reserved for current or future Melega organs.",
          "owner_scope": "ORGAN",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "presentation",
          "reason": "Reserved for current or future Melega organs.",
          "owner_scope": "ORGAN",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "support",
          "reason": "System, safety, or platform-integrity namespace.",
          "owner_scope": "SYSTEM",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "help",
          "reason": "System, safety, or platform-integrity namespace.",
          "owner_scope": "SYSTEM",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "admin",
          "reason": "System, safety, or platform-integrity namespace.",
          "owner_scope": "SYSTEM",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "api",
          "reason": "System, safety, or platform-integrity namespace.",
          "owner_scope": "SYSTEM",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "system",
          "reason": "System, safety, or platform-integrity namespace.",
          "owner_scope": "SYSTEM",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "status",
          "reason": "System, safety, or platform-integrity namespace.",
          "owner_scope": "SYSTEM",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "security",
          "reason": "System, safety, or platform-integrity namespace.",
          "owner_scope": "SYSTEM",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "verify",
          "reason": "System, safety, or platform-integrity namespace.",
          "owner_scope": "SYSTEM",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "verification",
          "reason": "System, safety, or platform-integrity namespace.",
          "owner_scope": "SYSTEM",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "root",
          "reason": "System, safety, or platform-integrity namespace.",
          "owner_scope": "SYSTEM",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "null",
          "reason": "System, safety, or platform-integrity namespace.",
          "owner_scope": "SYSTEM",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "undefined",
          "reason": "System, safety, or platform-integrity namespace.",
          "owner_scope": "SYSTEM",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "www",
          "reason": "System, safety, or platform-integrity namespace.",
          "owner_scope": "SYSTEM",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "mail",
          "reason": "System, safety, or platform-integrity namespace.",
          "owner_scope": "SYSTEM",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "no-reply",
          "reason": "System, safety, or platform-integrity namespace.",
          "owner_scope": "SYSTEM",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "noreply",
          "reason": "System, safety, or platform-integrity namespace.",
          "owner_scope": "SYSTEM",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "official",
          "reason": "Represents authority; requires authorized assignment.",
          "owner_scope": "OFFICIAL",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "governance",
          "reason": "Represents authority; requires authorized assignment.",
          "owner_scope": "OFFICIAL",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "foundation",
          "reason": "Represents authority; requires authorized assignment.",
          "owner_scope": "OFFICIAL",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "team",
          "reason": "Represents authority; requires authorized assignment.",
          "owner_scope": "OFFICIAL",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "founder",
          "reason": "Represents authority; requires authorized assignment.",
          "owner_scope": "OFFICIAL",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "moderator",
          "reason": "Represents authority; requires authorized assignment.",
          "owner_scope": "OFFICIAL",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "mod",
          "reason": "Represents authority; requires authorized assignment.",
          "owner_scope": "OFFICIAL",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "protocol",
          "reason": "Reserved to prevent collision with canonical portal routes.",
          "owner_scope": "ROUTE",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "wallet",
          "reason": "Reserved to prevent collision with canonical portal routes.",
          "owner_scope": "ROUTE",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "wallets",
          "reason": "Reserved to prevent collision with canonical portal routes.",
          "owner_scope": "ROUTE",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "experience",
          "reason": "Reserved to prevent collision with canonical portal routes.",
          "owner_scope": "ROUTE",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "design-system",
          "reason": "Reserved to prevent collision with canonical portal routes.",
          "owner_scope": "ROUTE",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "developers",
          "reason": "Reserved to prevent collision with canonical portal routes.",
          "owner_scope": "ROUTE",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "ecosystem",
          "reason": "Reserved to prevent collision with canonical portal routes.",
          "owner_scope": "ROUTE",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "whitepaper",
          "reason": "Reserved to prevent collision with canonical portal routes.",
          "owner_scope": "ROUTE",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "handbook",
          "reason": "Reserved to prevent collision with canonical portal routes.",
          "owner_scope": "ROUTE",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "token",
          "reason": "Reserved to prevent collision with canonical portal routes.",
          "owner_scope": "ROUTE",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "utility",
          "reason": "Reserved to prevent collision with canonical portal routes.",
          "owner_scope": "ROUTE",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "about",
          "reason": "Reserved to prevent collision with canonical portal routes.",
          "owner_scope": "ROUTE",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        },
        {
          "handle": "qr-test",
          "reason": "Reserved to prevent collision with canonical portal routes.",
          "owner_scope": "ROUTE",
          "status": "RESERVED",
          "source": "canonical_registry",
          "effective_from": "2026-07-21",
          "updated_at": "2026-07-21"
        }
      ],
      "blocked": [
        {
          "id": "wallet-address-solana-like",
          "match": "pattern",
          "value": "^[1-9a-hj-np-z]{32,44}$",
          "category": "WALLET_ADDRESS_LIKE",
          "reason": "Resembles a Solana wallet address; wallets are not identities."
        },
        {
          "id": "wallet-address-evm-like",
          "match": "pattern",
          "value": "^0x[a-f0-9]{40}$",
          "category": "WALLET_ADDRESS_LIKE",
          "reason": "Resembles an EVM wallet address."
        },
        {
          "id": "tx-hash-like",
          "match": "pattern",
          "value": "^0x[a-f0-9]{64}$",
          "category": "TX_HASH_LIKE",
          "reason": "Resembles a transaction hash."
        },
        {
          "id": "passport-number-like",
          "match": "pattern",
          "value": "^mc-?[0-9]{6,12}$",
          "category": "PASSPORT_NUMBER_LIKE",
          "reason": "Resembles a MARCO Passport Number (MC-#########)."
        },
        {
          "id": "auth-misrep-marco-official",
          "match": "pattern",
          "value": "^(marco[-._]?official|official[-._]?marco)$",
          "category": "AUTHORITY_MISREPRESENTATION",
          "reason": "Impersonates MARCO official authority."
        },
        {
          "id": "phishing-support-scam",
          "match": "pattern",
          "value": "^(support[-._]?(marco|melega)|(marco|melega)[-._]?support)$",
          "category": "PHISHING",
          "reason": "Common support-impersonation pattern."
        },
        {
          "id": "security-admin-impersonation",
          "match": "pattern",
          "value": "^(admin|root|system)[-._]?(marco|melega|kiri)$",
          "category": "IMPERSONATION",
          "reason": "Impersonates system authority."
        }
      ],
      "samples": {
        "label": "NON_PERSISTENT_VALIDATION_SAMPLE",
        "values": [
          {
            "input": "marco.explorer",
            "note": "Valid syntax; not a real claim."
          },
          {
            "input": "  Ada_Lovelace ",
            "note": "Whitespace + uppercase; normalized."
          },
          {
            "input": "@short",
            "note": "Leading @ stripped."
          },
          {
            "input": "..bad",
            "note": "Leading + consecutive separators — invalid."
          },
          {
            "input": "marco",
            "note": "Reserved."
          },
          {
            "input": "0xabcdefabcdefabcdefabcdefabcdefabcdefabcd",
            "note": "EVM address — blocked."
          }
        ]
      }
    },
    "policy": {
      "engine": "marco.passport.core.handle_registry",
      "version": "1.0.0",
      "status": "CONCEPT_PREVIEW",
      "protocol_version": "1.0.0",
      "min_length": 3,
      "max_length": 30,
      "allowed_characters": "a-z 0-9 . _ -",
      "regex_source": "^[a-z0-9](?:[a-z0-9._-]{1,28}[a-z0-9])?$",
      "case": "lowercase-ascii",
      "display_prefix": "@",
      "canonical_route_template": "/@{handle}",
      "passport_fallback_route_template": "/passport/p/{public_passport_id}",
      "rules": [
        "Must begin with a letter or number.",
        "Must end with a letter or number.",
        "Only a-z, 0-9, underscore, hyphen, and period are permitted.",
        "No uppercase in canonical storage (input is lowercased).",
        "No spaces, control characters, or unsupported Unicode.",
        "No consecutive periods.",
        "No consecutive separators of the same type.",
        "No leading @ in stored value (display form may prefix @).",
        "Wallet addresses, transaction hashes, and Passport Numbers are not handles."
      ],
      "reserved_count": 54,
      "blocked_count": 7,
      "states": [
        "AVAILABLE",
        "RESERVED",
        "BLOCKED",
        "PENDING_CLAIM",
        "ACTIVE",
        "PENDING_CHANGE",
        "RELEASED",
        "REDIRECTING",
        "SUSPENDED",
        "DISPUTED",
        "REVOKED",
        "EXPIRED_HOLD"
      ],
      "events": [
        "HANDLE_AVAILABILITY_CHECKED",
        "HANDLE_CLAIM_REQUESTED",
        "HANDLE_CLAIMED",
        "HANDLE_CHANGE_REQUESTED",
        "HANDLE_CHANGED",
        "HANDLE_RELEASE_REQUESTED",
        "HANDLE_RELEASED",
        "HANDLE_REDIRECT_CREATED",
        "HANDLE_REDIRECT_EXPIRED",
        "HANDLE_SUSPENDED",
        "HANDLE_RESTORED",
        "HANDLE_DISPUTED",
        "HANDLE_REVOKED",
        "HANDLE_RESERVED",
        "HANDLE_BLOCKED"
      ],
      "redirect_states": [
        "ACTIVE_REDIRECT",
        "EXPIRED_REDIRECT",
        "NO_REDIRECT",
        "SUSPENDED_REDIRECT"
      ],
      "claim_rules": [
        "Only an authenticated Passport controller may claim a handle.",
        "One active handle per Passport; one active Passport per handle.",
        "Claims require explicit consent (consent_version).",
        "Reserved handles require authorized assignment.",
        "Blocked handles cannot be claimed.",
        "Handle history is immutable; revoked handles are never silently reassigned.",
        "Handle change never changes the Passport ID or Passport Number."
      ],
      "authority_boundary": "Global claim availability requires the Passport Core runtime. This engine performs deterministic normalization, registry, and risk checks only.",
      "runtime_dependencies": [
        "Passport Core runtime (planned)",
        "Civilization Event Fabric (planned)",
        "Authenticated Passport ownership layer (planned)"
      ],
      "internationalized_handles": "RESEARCH"
    },
    "endpoints": [
      "/api/public/passport-core/handles/policy",
      "/api/public/passport-core/handles/states",
      "/api/public/passport-core/handles/events",
      "/api/public/passport-core/handles/reserved",
      "/api/public/passport-core/handles/blocked",
      "/api/public/passport-core/handles/check?handle={candidate}",
      "/api/public/passport-core/handles/history/{handle}",
      "/api/public/passport-core/handles/claim",
      "/api/public/passport-core/handles/change",
      "/api/public/passport-core/handles/release"
    ]
  },
  "registry_version": "1.0.0",
  "canonical_url": "/api/public/passport-core/handles"
}