{
  "tool_id": "art-604-erc8004-registry-entry-verifier",
  "note": "golden_hash filled by `node golden-parity.test.mjs --update`.",
  "vectors": [
    {
      "name": "malformed-missing-fields",
      "policy_parameters": {},
      "output_payload": {
        "overall_determination": "INDETERMINATE",
        "findings": [
          {
            "check": "input_validation",
            "verdict": "INDETERMINATE",
            "detail": "registry_type is required and must be one of: identity, reputation, validation; claimed_entry is required and must be a non-empty object; onchain_record is required and must be a non-empty object (independently read by the caller from the registry contract -- this tool never fetches it)"
          }
        ],
        "registry_type": null,
        "chain_id": null,
        "registry_address": null,
        "field_comparison": [],
        "address_checksum_findings": [],
        "agent_id_handling": "agent_id (any key matching /agent[_-]?id/i) is compared as an opaque literal string only -- never parsed as a number, never resolved against an Agent Card, A2A endpoint, or any other registry, and never cached. This tool makes no identity-resolution claim (ERC8004-VERIFY-1 fence).",
        "not_proven": [
          {
            "item": "Current on-chain state",
            "detail": "The on-chain_record is caller-supplied, not fetched by this tool. It may be stale relative to the registry contract's current state at verification time."
          },
          {
            "item": "Agent identity resolution",
            "detail": "agent_id is compared as an opaque literal only. This tool never resolves it against an Agent Card, A2A endpoint, or any other registry, and performs no cross-registry identity linking."
          },
          {
            "item": "Agent trustworthiness / reputation validity",
            "detail": "A consistent registry entry says nothing about whether the agent behaves honestly, whether reputation feedback is truthful, or whether a validation response is correct."
          },
          {
            "item": "Registry contract correctness",
            "detail": "This tool does not audit or attest to the ERC-8004 registry contract's own implementation; it only compares two caller-supplied records."
          }
        ],
        "scope_note": "Checks whether a caller-supplied claimed registry entry and a caller-supplied on-chain record (independently read by the caller from the ERC-8004 registry contract) agree field-by-field, and separately whether any address-shaped field in the on-chain record is EIP-55 checksum-valid. Zero network calls -- this tool never queries a registry contract itself and makes no claim about the CURRENT on-chain state (the supplied on-chain record may be stale by the time it is read), agent trustworthiness, reputation validity, or validation-response correctness. Generic schema only: no per-registry-type or per-deployment adapter code, since the Identity/Reputation/Validation registries' exact field layouts are an external surface this tool does not control."
      },
      "golden_hash": "bccf111a21dbb694dec901ecd95be76fa01fd7fcfbae98f1c22fdb1e256e443a"
    },
    {
      "name": "consistent-with-checksum-valid-address",
      "policy_parameters": {
        "registry_type": "identity",
        "chain_id": "1",
        "registry_address": "0x5FbDB2315678afecb367f032d93F642f64180aa",
        "claimed_entry": {
          "agentId": "42",
          "agentDomain": "agent.example.com",
          "agentAddress": "0x5B38Da6a701c568545dCfcB03FcB875f56beddC4"
        },
        "onchain_record": {
          "agentId": "42",
          "agentDomain": "agent.example.com",
          "agentAddress": "0x5B38Da6a701c568545dCfcB03FcB875f56beddC4"
        }
      },
      "output_payload": {
        "overall_determination": "CONSISTENT",
        "findings": [
          {
            "check": "entry_field_consistency",
            "verdict": "CONSISTENT",
            "detail": "3 field(s) compared, all match between claimed_entry and onchain_record."
          },
          {
            "check": "address_checksum_validity",
            "verdict": "CONSISTENT",
            "detail": "agentAddress:VALID"
          }
        ],
        "registry_type": "identity",
        "chain_id": "1",
        "registry_address": "0x5FbDB2315678afecb367f032d93F642f64180aa",
        "field_comparison": [
          {
            "field": "agentAddress",
            "claimed": "0x5B38Da6a701c568545dCfcB03FcB875f56beddC4",
            "onchain": "0x5B38Da6a701c568545dCfcB03FcB875f56beddC4",
            "present_in_claimed": true,
            "present_in_onchain": true,
            "match": true,
            "opaque_identifier": false
          },
          {
            "field": "agentDomain",
            "claimed": "agent.example.com",
            "onchain": "agent.example.com",
            "present_in_claimed": true,
            "present_in_onchain": true,
            "match": true,
            "opaque_identifier": false
          },
          {
            "field": "agentId",
            "claimed": "42",
            "onchain": "42",
            "present_in_claimed": true,
            "present_in_onchain": true,
            "match": true,
            "opaque_identifier": true
          }
        ],
        "address_checksum_findings": [
          {
            "field": "agentAddress",
            "value": "0x5B38Da6a701c568545dCfcB03FcB875f56beddC4",
            "expected_checksum": "0x5B38Da6a701c568545dCfcB03FcB875f56beddC4",
            "checksum_verdict": "VALID",
            "detail": "Mixed-case address matches its EIP-55 checksum encoding."
          }
        ],
        "agent_id_handling": "agent_id (any key matching /agent[_-]?id/i) is compared as an opaque literal string only -- never parsed as a number, never resolved against an Agent Card, A2A endpoint, or any other registry, and never cached. This tool makes no identity-resolution claim (ERC8004-VERIFY-1 fence).",
        "not_proven": [
          {
            "item": "Current on-chain state",
            "detail": "The on-chain_record is caller-supplied, not fetched by this tool. It may be stale relative to the registry contract's current state at verification time."
          },
          {
            "item": "Agent identity resolution",
            "detail": "agent_id is compared as an opaque literal only. This tool never resolves it against an Agent Card, A2A endpoint, or any other registry, and performs no cross-registry identity linking."
          },
          {
            "item": "Agent trustworthiness / reputation validity",
            "detail": "A consistent registry entry says nothing about whether the agent behaves honestly, whether reputation feedback is truthful, or whether a validation response is correct."
          },
          {
            "item": "Registry contract correctness",
            "detail": "This tool does not audit or attest to the ERC-8004 registry contract's own implementation; it only compares two caller-supplied records."
          }
        ],
        "scope_note": "Checks whether a caller-supplied claimed registry entry and a caller-supplied on-chain record (independently read by the caller from the ERC-8004 registry contract) agree field-by-field, and separately whether any address-shaped field in the on-chain record is EIP-55 checksum-valid. Zero network calls -- this tool never queries a registry contract itself and makes no claim about the CURRENT on-chain state (the supplied on-chain record may be stale by the time it is read), agent trustworthiness, reputation validity, or validation-response correctness. Generic schema only: no per-registry-type or per-deployment adapter code, since the Identity/Reputation/Validation registries' exact field layouts are an external surface this tool does not control."
      },
      "golden_hash": "435003e0855c06a58c99693a8c6640c41a341f12416f371cede64b18487ce963"
    },
    {
      "name": "inconsistent-mismatch-and-bad-checksum",
      "policy_parameters": {
        "registry_type": "reputation",
        "claimed_entry": {
          "agentId": "7",
          "clientAddress": "0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2",
          "score": "95"
        },
        "onchain_record": {
          "agentId": "9",
          "clientAddress": "0xaB8483f64D9C6d1EcF9B849AE677Dd3315835Cb2",
          "score": "95"
        }
      },
      "output_payload": {
        "overall_determination": "INCONSISTENT",
        "findings": [
          {
            "check": "entry_field_consistency",
            "verdict": "INCONSISTENT",
            "detail": "1 of 3 compared field(s) do NOT match: agentId."
          },
          {
            "check": "address_checksum_validity",
            "verdict": "INCONSISTENT",
            "detail": "clientAddress:INVALID"
          }
        ],
        "registry_type": "reputation",
        "chain_id": null,
        "registry_address": null,
        "field_comparison": [
          {
            "field": "agentId",
            "claimed": "7",
            "onchain": "9",
            "present_in_claimed": true,
            "present_in_onchain": true,
            "match": false,
            "opaque_identifier": true
          },
          {
            "field": "clientAddress",
            "claimed": "0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2",
            "onchain": "0xaB8483f64D9C6d1EcF9B849AE677Dd3315835Cb2",
            "present_in_claimed": true,
            "present_in_onchain": true,
            "match": true,
            "opaque_identifier": false
          },
          {
            "field": "score",
            "claimed": "95",
            "onchain": "95",
            "present_in_claimed": true,
            "present_in_onchain": true,
            "match": true,
            "opaque_identifier": false
          }
        ],
        "address_checksum_findings": [
          {
            "field": "clientAddress",
            "value": "0xaB8483f64D9C6d1EcF9B849AE677Dd3315835Cb2",
            "expected_checksum": "0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2",
            "checksum_verdict": "INVALID",
            "detail": "Mixed-case address does NOT match its EIP-55 checksum encoding -- possible transcription error."
          }
        ],
        "agent_id_handling": "agent_id (any key matching /agent[_-]?id/i) is compared as an opaque literal string only -- never parsed as a number, never resolved against an Agent Card, A2A endpoint, or any other registry, and never cached. This tool makes no identity-resolution claim (ERC8004-VERIFY-1 fence).",
        "not_proven": [
          {
            "item": "Current on-chain state",
            "detail": "The on-chain_record is caller-supplied, not fetched by this tool. It may be stale relative to the registry contract's current state at verification time."
          },
          {
            "item": "Agent identity resolution",
            "detail": "agent_id is compared as an opaque literal only. This tool never resolves it against an Agent Card, A2A endpoint, or any other registry, and performs no cross-registry identity linking."
          },
          {
            "item": "Agent trustworthiness / reputation validity",
            "detail": "A consistent registry entry says nothing about whether the agent behaves honestly, whether reputation feedback is truthful, or whether a validation response is correct."
          },
          {
            "item": "Registry contract correctness",
            "detail": "This tool does not audit or attest to the ERC-8004 registry contract's own implementation; it only compares two caller-supplied records."
          }
        ],
        "scope_note": "Checks whether a caller-supplied claimed registry entry and a caller-supplied on-chain record (independently read by the caller from the ERC-8004 registry contract) agree field-by-field, and separately whether any address-shaped field in the on-chain record is EIP-55 checksum-valid. Zero network calls -- this tool never queries a registry contract itself and makes no claim about the CURRENT on-chain state (the supplied on-chain record may be stale by the time it is read), agent trustworthiness, reputation validity, or validation-response correctness. Generic schema only: no per-registry-type or per-deployment adapter code, since the Identity/Reputation/Validation registries' exact field layouts are an external surface this tool does not control."
      },
      "golden_hash": "a2922aa545496e068b7ca718c774bb9acc0fae102ab9f4b63b1d76537424607d"
    }
  ]
}
