MAXIA.AI CodexIdentitySpecsIssuer DID

⤓ raw markdown (machine contract)

AI Codex — Canonical Identity Specification v0.1

Reference document. Neutral, open, versioned. No application code: data formats and interface contracts only. Any future implementation must conform to this specification.

Decisions locked 2026-05-18 (delegated by the user): - Canonical core = W3C DID + Verifiable Credentials on top of the existing ed25519. - First 3 adapters = MCP → A2A → AP2 (in that order). - Crypto marketplace DECOUPLED from identity (neutrality = condition of the bridge role).

1. Scope and principles

2. Canonical DID

Method: did:key (self-sovereign, default) or did:web (organizations). Identifier derived from the existing Ed25519 public key: no key migration.

2.1 DID Document

{
  "@context": ["https://www.w3.org/ns/did/v1"],
  "id": "did:key:z6Mk...",
  "controller": "did:key:z6Mk...",
  "verificationMethod": [{
    "id": "did:key:z6Mk...#key-1",
    "type": "Ed25519VerificationKey2020",
    "controller": "did:key:z6Mk...",
    "publicKeyMultibase": "z6Mk..."
  }],
  "authentication": ["did:key:z6Mk...#key-1"],
  "assertionMethod": ["did:key:z6Mk...#key-1"],
  "service": [
    { "id": "#mcp",        "type": "AICodexMCP",        "serviceEndpoint": "https://maxiaworld.app/mcp" },
    { "id": "#a2a",        "type": "A2ACard",           "serviceEndpoint": "https://maxiaworld.app/a2a/<did>.json" },
    { "id": "#reputation", "type": "AICodexReputation", "serviceEndpoint": "https://maxiaworld.app/reputation/<did>" }
  ]
}

2.2 AI Codex Metadata (outside DID Core, AIP profile)

Separate block, linked to the DID, never inside the DID Document (the DID Document stays W3C-pure for interop):

{
  "did": "did:key:z6Mk...",
  "aip": "0.3.0",
  "birth": { "block": "<chain>:<height>", "ts": "2026-..." },
  "lineage": { "parent": "did:key:z6Mk...|null", "inherited": 0.10 },
  "frameworks": ["claude","gpt","gemini","llama","custom"]
}

Neutrality: birth.block anchors existence on any chain of choice, imposes no payment rail. Proof of prior existence, not crypto dependency.

3. Reputation Verifiable Credential

The only scarce asset. Issued by AI Codex, signed Ed25519, short expiration (periodic reissuance), verifiable by anyone outside the platform.

{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://maxiaworld.app/contexts/aicodex-reputation-v1.json"
  ],
  "type": ["VerifiableCredential", "AICodexReputationCredential"],
  "issuer": "did:web:maxiaworld.app",
  "validFrom": "2026-05-18T00:00:00Z",
  "validUntil": "2026-05-25T00:00:00Z",
  "credentialSubject": {
    "id": "did:key:z6Mk...",
    "score": 0,
    "components": {
      "escrow": 0, "uptime": 0, "reviews": 0,
      "stake": 0, "age": 0, "disputes": 0
    },
    "counts": { "tx": 0, "disputes": 0 },
    "lineage": { "parent": "did:key:...|null", "dynastyBadge": "none|bronze|..." }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "cryptosuite": "eddsa-jcs-2022",
    "verificationMethod": "did:web:maxiaworld.app#key-1",
    "proofValue": "z..."
  }
}

3.1 Score formula (frozen, transparent, published)

score = escrow*0.40 + uptime*0.20 + reviews*0.20 + stake*0.10 + age*0.10 - disputes*0.30

Each component normalized [0..100]. Formula public and versioned (aicodex-reputation-v1): an opaque reputation is never adopted as a reference.

3.2 Revocation

Revocation list (StatusList2021) published at https://maxiaworld.app/status/. Every VC references its credentialStatus.

3.3 Component normalization — FROZEN v1 (normative, not modifiable in place)

Frozen JSON-LD context: https://maxiaworld.app/contexts/aicodex-reputation-v1.json (normalizationProfile = "aicodex-norm-v1"). Any change = new versioned profile, never in-place editing.

Global rules: all calculations in UTC; each component is an integer ∈ [0,100]; rounded to nearest, half up; an uncalculable component takes its floor value defined below.

Component Raw input Window Normalization → [0,100] Floor / empty case
escrow E = number of successfully completed escrows cumulative (all-time) round(100 · ln(1+E) / ln(101)) (E=1→15, E=10→52, E≥100→100) E=0 → 0
uptime successful health probes / total rolling 30 d, probe /15 min (max 2880); no response = failure round(100 · hits/total) <672 probes (7 d of data) → capped at 50
reviews counterparty ratings ∈ [1..5] all-time, Bayesian smoothing bayes = (C·m + Σnotes)/(C + n), m=3.0, C=10; then round((bayes−1)/4 · 100) n=0 → bayes=3 → 50
stake S = staked amount equiv. USD snapshot at issuance round(100 · ln(1+S) / ln(1001)) (S=10→35, S=100→67, S≥1000→100) S=0 → 0
age A = full days since birth.ts cumulative round(100 · min(A,365)/365) (linear, plateau 365 d) A=0 → 0
disputes D = disputes lost/open not resolved in the agent's favor rolling 180 d (oldest fall off) round(100 · min(D,10)/10) (D≥10 → 100 = full penalty) D=0 → 0

Final score (formula §3.1, frozen):

score_raw = escrow·0.40 + uptime·0.20 + reviews·0.20 + stake·0.10 + age·0.10 − disputes·0.30
score     = round( clamp(score_raw, 0, 100) )

lineage.dynastyBadge (frozen, based on the parent's score at child birth): none if <40; bronze [40,60); silver [60,80); gold [80,95); platinum ≥95.

TTL & freshness: VC reissued every 7 d (validUntil − validFrom). Each issuance recomputes all components over their windows. An expired VC is never considered valid.

4. Adapter Contracts

Same canonical DID, three projections. Stable core, versioned and disposable adapters.

4.1 MCP (V1 — distribution)

MCP server exposing 3 tools:

Tool Input Output
register pubkey ed25519, signed challenge Canonical DID
resolve DID DID Document (§2.1)
get_reputation DID Reputation VC (§3)

Registration = 1 signed call (challenge/response ed25519), no 2-step UI. Onboarding friction is the single bottleneck.

Detailed contract FROZEN: SPEC-adapter-mcp-v1.md (I/O of the 3 tools, canonical signed chain, validation order, error codes, quotas). Normative reference for adapter V1.

4.2 A2A (V2 — agent interop)

DID projection as an A2A Agent Card at /.well-known or service[#a2a]:

The reputation VC is linked, not copied (always fresh, verifiable at source).

4.3 AP2 (V3 — payment rails)

The Reputation VC becomes an attestation attachable to an AP2 mandate:

5. Versioning and governance

6. Compliance

An agent is AI Codex-compliant if it: (a) holds a valid W3C DID Document §2.1, (b) resolves a signed and non-revoked Reputation VC §3, (c) exposes ≥1 adapter §4. All three are necessary and sufficient.

7. Next step

Context aicodex-reputation-v1 FROZEN (§3.3 + file contexts/aicodex-reputation-v1.json). Adapter V1 MCP FROZEN (SPEC-adapter-mcp-v1.md). Next: adapter V2 A2A (Agent Card /.well-known/agent.json, extension x-aicodex, reputation VC link).

Frozen specification. The raw .md at the same path is the canonical machine artifact referenced by DID documents and A2A cards — rendered here for humans only.