{
  "tool_id": "art-284-did-webvh-log-verifier",
  "note": "golden_hash empty until first `node golden-parity.test.mjs --update`.",
  "vectors": [
    {
      "name": "happy-path-two-entry-log",
      "policy_parameters": {
        "did": "did:webvh:{SCID}:example.com:agents:alpha",
        "did_log": [
          {
            "versionId": "1-e42e4191001ee7d68d48609c2f30b141bd0a38da21496378a29108720c435a56",
            "versionTime": "2026-01-01T00:00:00Z",
            "parameters": {
              "method": "did:webvh:1.0",
              "scid": "QmScidPlaceholder1234567890abcdef1234567890abcdef1234567890",
              "updateKeys": [
                "did:key:z6MkfJpX7dP5KqfxbK9nN3ttWptKBjRGrCqJaW28zqBUnRjX"
              ],
              "portable": false
            },
            "state": {
              "id": "did:webvh:{SCID}:example.com:agents:alpha",
              "verificationMethod": [
                {
                  "id": "did:webvh:{SCID}:example.com:agents:alpha#key-1",
                  "type": "Ed25519VerificationKey2020",
                  "controller": "did:webvh:{SCID}:example.com:agents:alpha",
                  "publicKeyMultibase": "z6MkfJpX7dP5KqfxbK9nN3ttWptKBjRGrCqJaW28zqBUnRjX"
                }
              ]
            },
            "proof": [
              {
                "type": "DataIntegrityProof",
                "cryptosuite": "eddsa-jcs-2022",
                "verificationMethod": "did:key:z6MkfJpX7dP5KqfxbK9nN3ttWptKBjRGrCqJaW28zqBUnRjX",
                "proofPurpose": "assertionMethod",
                "proofValue": "1Ha0QDlQmx8Ch0H+ARATa1UU6jnghtm2LpqpV11m//W+42YnRwc9Bl8sx43JLmEskTzcSlngUcQdgFgrLK6lBg=="
              }
            ]
          },
          {
            "versionId": "2-81ead391846f6088ddab084e2119b8304224a671b6c3f4b598605661ccd91196",
            "versionTime": "2026-02-01T00:00:00Z",
            "parameters": {
              "updateKeys": [
                "did:key:z6MknN3rKuzKRmKyRQheSZ2n8yBKCwsTfZprYj1HBmF48bp2"
              ]
            },
            "state": {
              "id": "did:webvh:{SCID}:example.com:agents:alpha",
              "verificationMethod": [
                {
                  "id": "did:webvh:{SCID}:example.com:agents:alpha#key-1",
                  "type": "Ed25519VerificationKey2020",
                  "controller": "did:webvh:{SCID}:example.com:agents:alpha",
                  "publicKeyMultibase": "z6MkfJpX7dP5KqfxbK9nN3ttWptKBjRGrCqJaW28zqBUnRjX"
                }
              ],
              "service": [
                {
                  "id": "did:webvh:{SCID}:example.com:agents:alpha#agent-endpoint",
                  "type": "AgentEndpoint",
                  "serviceEndpoint": "https://example.com/agents/alpha"
                }
              ]
            },
            "proof": [
              {
                "type": "DataIntegrityProof",
                "cryptosuite": "eddsa-jcs-2022",
                "verificationMethod": "did:key:z6MkfJpX7dP5KqfxbK9nN3ttWptKBjRGrCqJaW28zqBUnRjX",
                "proofPurpose": "assertionMethod",
                "proofValue": "PUj6zxdMWvEQeQhhfCHShlQzgagicFXph2tFcQK9e3RGF6/8yHNr3ASsUTiHySBhfOWv1A7J3PnoVy4qEBVrCg=="
              }
            ]
          }
        ]
      },
      "output_payload": {
        "did": "did:webvh:{SCID}:example.com:agents:alpha",
        "valid": true,
        "entries_checked": 2,
        "current_version_id": "2-81ead391846f6088ddab084e2119b8304224a671b6c3f4b598605661ccd91196",
        "deactivated": false,
        "failures": []
      },
      "golden_hash": "949984477e28336f68cb28056c50e88f666e7b8eecb96b590cb26808cb0b1bde"
    },
    {
      "name": "broken-hash-chain",
      "policy_parameters": {
        "did": "did:webvh:{SCID}:example.com:agents:alpha",
        "did_log": [
          {
            "versionId": "1-e42e4191001ee7d68d48609c2f30b141bd0a38da21496378a29108720c435a56",
            "versionTime": "2026-01-01T00:00:00Z",
            "parameters": {
              "method": "did:webvh:1.0",
              "scid": "QmScidPlaceholder1234567890abcdef1234567890abcdef1234567890",
              "updateKeys": [
                "did:key:z6MkfJpX7dP5KqfxbK9nN3ttWptKBjRGrCqJaW28zqBUnRjX"
              ],
              "portable": false
            },
            "state": {
              "id": "did:webvh:{SCID}:example.com:agents:alpha",
              "verificationMethod": [
                {
                  "id": "did:webvh:{SCID}:example.com:agents:alpha#key-1",
                  "type": "Ed25519VerificationKey2020",
                  "controller": "did:webvh:{SCID}:example.com:agents:alpha",
                  "publicKeyMultibase": "z6MkfJpX7dP5KqfxbK9nN3ttWptKBjRGrCqJaW28zqBUnRjX"
                }
              ]
            },
            "proof": [
              {
                "type": "DataIntegrityProof",
                "cryptosuite": "eddsa-jcs-2022",
                "verificationMethod": "did:key:z6MkfJpX7dP5KqfxbK9nN3ttWptKBjRGrCqJaW28zqBUnRjX",
                "proofPurpose": "assertionMethod",
                "proofValue": "1Ha0QDlQmx8Ch0H+ARATa1UU6jnghtm2LpqpV11m//W+42YnRwc9Bl8sx43JLmEskTzcSlngUcQdgFgrLK6lBg=="
              }
            ]
          },
          {
            "versionId": "2-81ead391846f6088ddab084e2119b8304224a671b6c3f4b598605661ccd91196",
            "versionTime": "2026-02-01T00:00:00Z",
            "parameters": {
              "updateKeys": [
                "did:key:z6MknN3rKuzKRmKyRQheSZ2n8yBKCwsTfZprYj1HBmF48bp2"
              ]
            },
            "state": {
              "id": "did:webvh:{SCID}:example.com:agents:alpha",
              "verificationMethod": [
                {
                  "id": "did:webvh:{SCID}:example.com:agents:alpha#key-1",
                  "type": "Ed25519VerificationKey2020",
                  "controller": "did:webvh:{SCID}:example.com:agents:alpha",
                  "publicKeyMultibase": "z6MkfJpX7dP5KqfxbK9nN3ttWptKBjRGrCqJaW28zqBUnRjX"
                }
              ],
              "service": [
                {
                  "id": "did:webvh:{SCID}:example.com:agents:alpha#agent-endpoint",
                  "type": "AgentEndpoint",
                  "serviceEndpoint": "https://example.com/agents/alpha"
                }
              ],
              "tampered": true
            },
            "proof": [
              {
                "type": "DataIntegrityProof",
                "cryptosuite": "eddsa-jcs-2022",
                "verificationMethod": "did:key:z6MkfJpX7dP5KqfxbK9nN3ttWptKBjRGrCqJaW28zqBUnRjX",
                "proofPurpose": "assertionMethod",
                "proofValue": "PUj6zxdMWvEQeQhhfCHShlQzgagicFXph2tFcQK9e3RGF6/8yHNr3ASsUTiHySBhfOWv1A7J3PnoVy4qEBVrCg=="
              }
            ]
          }
        ]
      },
      "output_payload": {
        "did": "did:webvh:{SCID}:example.com:agents:alpha",
        "valid": false,
        "entries_checked": 2,
        "current_version_id": "2-81ead391846f6088ddab084e2119b8304224a671b6c3f4b598605661ccd91196",
        "deactivated": false,
        "failures": [
          {
            "entry_index": 1,
            "code": "ENTRY_HASH_MISMATCH",
            "detail": "expected 81ead391846f6088ddab084e2119b8304224a671b6c3f4b598605661ccd91196, computed 9021349e0b6d01c72d2e1238c17774109fde71c13f94e29c879545ad0ba52ecd"
          },
          {
            "entry_index": 1,
            "code": "UNAUTHORIZED_OR_INVALID_SIGNATURE",
            "detail": "no proof from an active updateKey verified"
          }
        ]
      },
      "golden_hash": "f1e9181b22d621869fca108992ff1029d0f9f9554ce573fe419d6039facd6db4"
    },
    {
      "name": "wrong-key-signature",
      "policy_parameters": {
        "did": "did:webvh:{SCID}:example.com:agents:alpha",
        "did_log": [
          {
            "versionId": "1-e42e4191001ee7d68d48609c2f30b141bd0a38da21496378a29108720c435a56",
            "versionTime": "2026-01-01T00:00:00Z",
            "parameters": {
              "method": "did:webvh:1.0",
              "scid": "QmScidPlaceholder1234567890abcdef1234567890abcdef1234567890",
              "updateKeys": [
                "did:key:z6MkfJpX7dP5KqfxbK9nN3ttWptKBjRGrCqJaW28zqBUnRjX"
              ],
              "portable": false
            },
            "state": {
              "id": "did:webvh:{SCID}:example.com:agents:alpha",
              "verificationMethod": [
                {
                  "id": "did:webvh:{SCID}:example.com:agents:alpha#key-1",
                  "type": "Ed25519VerificationKey2020",
                  "controller": "did:webvh:{SCID}:example.com:agents:alpha",
                  "publicKeyMultibase": "z6MkfJpX7dP5KqfxbK9nN3ttWptKBjRGrCqJaW28zqBUnRjX"
                }
              ]
            },
            "proof": [
              {
                "type": "DataIntegrityProof",
                "cryptosuite": "eddsa-jcs-2022",
                "verificationMethod": "did:key:z6MkfJpX7dP5KqfxbK9nN3ttWptKBjRGrCqJaW28zqBUnRjX",
                "proofPurpose": "assertionMethod",
                "proofValue": "1Ha0QDlQmx8Ch0H+ARATa1UU6jnghtm2LpqpV11m//W+42YnRwc9Bl8sx43JLmEskTzcSlngUcQdgFgrLK6lBg=="
              }
            ]
          },
          {
            "versionId": "2-81ead391846f6088ddab084e2119b8304224a671b6c3f4b598605661ccd91196",
            "versionTime": "2026-02-01T00:00:00Z",
            "parameters": {
              "updateKeys": [
                "did:key:z6MknN3rKuzKRmKyRQheSZ2n8yBKCwsTfZprYj1HBmF48bp2"
              ]
            },
            "state": {
              "id": "did:webvh:{SCID}:example.com:agents:alpha",
              "verificationMethod": [
                {
                  "id": "did:webvh:{SCID}:example.com:agents:alpha#key-1",
                  "type": "Ed25519VerificationKey2020",
                  "controller": "did:webvh:{SCID}:example.com:agents:alpha",
                  "publicKeyMultibase": "z6MkfJpX7dP5KqfxbK9nN3ttWptKBjRGrCqJaW28zqBUnRjX"
                }
              ],
              "service": [
                {
                  "id": "did:webvh:{SCID}:example.com:agents:alpha#agent-endpoint",
                  "type": "AgentEndpoint",
                  "serviceEndpoint": "https://example.com/agents/alpha"
                }
              ]
            },
            "proof": [
              {
                "type": "DataIntegrityProof",
                "cryptosuite": "eddsa-jcs-2022",
                "verificationMethod": "did:key:z6Mkf5PDC6oAWwsXxTYMVzpGeBicbuPt3VcqpNqUaU8bkPtW",
                "proofPurpose": "assertionMethod",
                "proofValue": "dgrG0RRdfbiNDbh2kmuUtG4zgfDRgbouDeGZh5x6Ij4BVfSCBgdyylECyG3FT9RfiVTj/tjoYlcUSkkHlt10Cg=="
              }
            ]
          }
        ]
      },
      "output_payload": {
        "did": "did:webvh:{SCID}:example.com:agents:alpha",
        "valid": false,
        "entries_checked": 2,
        "current_version_id": "2-81ead391846f6088ddab084e2119b8304224a671b6c3f4b598605661ccd91196",
        "deactivated": false,
        "failures": [
          {
            "entry_index": 1,
            "code": "UNAUTHORIZED_OR_INVALID_SIGNATURE",
            "detail": "no proof from an active updateKey verified"
          }
        ]
      },
      "golden_hash": "0a474f661c34ef7d821c8f2756424567b60d9b49f508bdf10e0af06dce941421"
    },
    {
      "name": "deactivated-log-continued",
      "policy_parameters": {
        "did": "did:webvh:{SCID}:example.com:agents:alpha",
        "did_log": [
          {
            "versionId": "1-e42e4191001ee7d68d48609c2f30b141bd0a38da21496378a29108720c435a56",
            "versionTime": "2026-01-01T00:00:00Z",
            "parameters": {
              "method": "did:webvh:1.0",
              "scid": "QmScidPlaceholder1234567890abcdef1234567890abcdef1234567890",
              "updateKeys": [
                "did:key:z6MkfJpX7dP5KqfxbK9nN3ttWptKBjRGrCqJaW28zqBUnRjX"
              ],
              "portable": false
            },
            "state": {
              "id": "did:webvh:{SCID}:example.com:agents:alpha",
              "verificationMethod": [
                {
                  "id": "did:webvh:{SCID}:example.com:agents:alpha#key-1",
                  "type": "Ed25519VerificationKey2020",
                  "controller": "did:webvh:{SCID}:example.com:agents:alpha",
                  "publicKeyMultibase": "z6MkfJpX7dP5KqfxbK9nN3ttWptKBjRGrCqJaW28zqBUnRjX"
                }
              ]
            },
            "proof": [
              {
                "type": "DataIntegrityProof",
                "cryptosuite": "eddsa-jcs-2022",
                "verificationMethod": "did:key:z6MkfJpX7dP5KqfxbK9nN3ttWptKBjRGrCqJaW28zqBUnRjX",
                "proofPurpose": "assertionMethod",
                "proofValue": "1Ha0QDlQmx8Ch0H+ARATa1UU6jnghtm2LpqpV11m//W+42YnRwc9Bl8sx43JLmEskTzcSlngUcQdgFgrLK6lBg=="
              }
            ]
          },
          {
            "versionId": "2-81ead391846f6088ddab084e2119b8304224a671b6c3f4b598605661ccd91196",
            "versionTime": "2026-02-01T00:00:00Z",
            "parameters": {
              "updateKeys": [
                "did:key:z6MknN3rKuzKRmKyRQheSZ2n8yBKCwsTfZprYj1HBmF48bp2"
              ]
            },
            "state": {
              "id": "did:webvh:{SCID}:example.com:agents:alpha",
              "verificationMethod": [
                {
                  "id": "did:webvh:{SCID}:example.com:agents:alpha#key-1",
                  "type": "Ed25519VerificationKey2020",
                  "controller": "did:webvh:{SCID}:example.com:agents:alpha",
                  "publicKeyMultibase": "z6MkfJpX7dP5KqfxbK9nN3ttWptKBjRGrCqJaW28zqBUnRjX"
                }
              ],
              "service": [
                {
                  "id": "did:webvh:{SCID}:example.com:agents:alpha#agent-endpoint",
                  "type": "AgentEndpoint",
                  "serviceEndpoint": "https://example.com/agents/alpha"
                }
              ]
            },
            "proof": [
              {
                "type": "DataIntegrityProof",
                "cryptosuite": "eddsa-jcs-2022",
                "verificationMethod": "did:key:z6MkfJpX7dP5KqfxbK9nN3ttWptKBjRGrCqJaW28zqBUnRjX",
                "proofPurpose": "assertionMethod",
                "proofValue": "PUj6zxdMWvEQeQhhfCHShlQzgagicFXph2tFcQK9e3RGF6/8yHNr3ASsUTiHySBhfOWv1A7J3PnoVy4qEBVrCg=="
              }
            ]
          },
          {
            "versionId": "3-764d849c55e855697a3e763cf929c2208b4fe921d902341cbaf7ad7c933cc289",
            "versionTime": "2026-03-01T00:00:00Z",
            "parameters": {
              "deactivate": true
            },
            "state": null,
            "proof": [
              {
                "type": "DataIntegrityProof",
                "cryptosuite": "eddsa-jcs-2022",
                "verificationMethod": "did:key:z6MknN3rKuzKRmKyRQheSZ2n8yBKCwsTfZprYj1HBmF48bp2",
                "proofPurpose": "assertionMethod",
                "proofValue": "4WchXVTwWrAwYw3Neh061r54Xg4Chn/bmJMLWghLScUvKb72UpW41taBVq00wa6YeU05yhjXWhLca5yRyl+XDQ=="
              }
            ]
          },
          {
            "versionId": "4-6798c129b31c8dbdf77dc19f78295d2f6e975a6b6fc09da311c7b89f6494a680",
            "versionTime": "2026-04-01T00:00:00Z",
            "parameters": {},
            "state": null,
            "proof": [
              {
                "type": "DataIntegrityProof",
                "cryptosuite": "eddsa-jcs-2022",
                "verificationMethod": "did:key:z6MknN3rKuzKRmKyRQheSZ2n8yBKCwsTfZprYj1HBmF48bp2",
                "proofPurpose": "assertionMethod",
                "proofValue": "AWEa/4Xj6N0CHgPIPPQAQKU+CjWgwUTFf2s6FDzqADbcAnJiqORFMki3Zs4W4Ht3UnZp119+3cptZPstgzCTCA=="
              }
            ]
          }
        ]
      },
      "output_payload": {
        "did": "did:webvh:{SCID}:example.com:agents:alpha",
        "valid": false,
        "entries_checked": 3,
        "current_version_id": "3-764d849c55e855697a3e763cf929c2208b4fe921d902341cbaf7ad7c933cc289",
        "deactivated": true,
        "failures": [
          {
            "entry_index": 3,
            "code": "DEACTIVATED_LOG_CONTINUED",
            "detail": "entries present after deactivation"
          }
        ]
      },
      "golden_hash": "5cf9fab61cae2b2f60a36fda00714256ada46c349d8c30dcef8ad1d310c6e46e"
    },
    {
      "name": "max-entries-bound-hit",
      "policy_parameters": {
        "did": "did:webvh:{SCID}:example.com:agents:alpha",
        "did_log": [
          {
            "versionId": "1-e42e4191001ee7d68d48609c2f30b141bd0a38da21496378a29108720c435a56",
            "versionTime": "2026-01-01T00:00:00Z",
            "parameters": {
              "method": "did:webvh:1.0",
              "scid": "QmScidPlaceholder1234567890abcdef1234567890abcdef1234567890",
              "updateKeys": [
                "did:key:z6MkfJpX7dP5KqfxbK9nN3ttWptKBjRGrCqJaW28zqBUnRjX"
              ],
              "portable": false
            },
            "state": {
              "id": "did:webvh:{SCID}:example.com:agents:alpha",
              "verificationMethod": [
                {
                  "id": "did:webvh:{SCID}:example.com:agents:alpha#key-1",
                  "type": "Ed25519VerificationKey2020",
                  "controller": "did:webvh:{SCID}:example.com:agents:alpha",
                  "publicKeyMultibase": "z6MkfJpX7dP5KqfxbK9nN3ttWptKBjRGrCqJaW28zqBUnRjX"
                }
              ]
            },
            "proof": [
              {
                "type": "DataIntegrityProof",
                "cryptosuite": "eddsa-jcs-2022",
                "verificationMethod": "did:key:z6MkfJpX7dP5KqfxbK9nN3ttWptKBjRGrCqJaW28zqBUnRjX",
                "proofPurpose": "assertionMethod",
                "proofValue": "1Ha0QDlQmx8Ch0H+ARATa1UU6jnghtm2LpqpV11m//W+42YnRwc9Bl8sx43JLmEskTzcSlngUcQdgFgrLK6lBg=="
              }
            ]
          },
          {
            "versionId": "2-81ead391846f6088ddab084e2119b8304224a671b6c3f4b598605661ccd91196",
            "versionTime": "2026-02-01T00:00:00Z",
            "parameters": {
              "updateKeys": [
                "did:key:z6MknN3rKuzKRmKyRQheSZ2n8yBKCwsTfZprYj1HBmF48bp2"
              ]
            },
            "state": {
              "id": "did:webvh:{SCID}:example.com:agents:alpha",
              "verificationMethod": [
                {
                  "id": "did:webvh:{SCID}:example.com:agents:alpha#key-1",
                  "type": "Ed25519VerificationKey2020",
                  "controller": "did:webvh:{SCID}:example.com:agents:alpha",
                  "publicKeyMultibase": "z6MkfJpX7dP5KqfxbK9nN3ttWptKBjRGrCqJaW28zqBUnRjX"
                }
              ],
              "service": [
                {
                  "id": "did:webvh:{SCID}:example.com:agents:alpha#agent-endpoint",
                  "type": "AgentEndpoint",
                  "serviceEndpoint": "https://example.com/agents/alpha"
                }
              ]
            },
            "proof": [
              {
                "type": "DataIntegrityProof",
                "cryptosuite": "eddsa-jcs-2022",
                "verificationMethod": "did:key:z6MkfJpX7dP5KqfxbK9nN3ttWptKBjRGrCqJaW28zqBUnRjX",
                "proofPurpose": "assertionMethod",
                "proofValue": "PUj6zxdMWvEQeQhhfCHShlQzgagicFXph2tFcQK9e3RGF6/8yHNr3ASsUTiHySBhfOWv1A7J3PnoVy4qEBVrCg=="
              }
            ]
          },
          {
            "versionId": "3-764d849c55e855697a3e763cf929c2208b4fe921d902341cbaf7ad7c933cc289",
            "versionTime": "2026-03-01T00:00:00Z",
            "parameters": {
              "deactivate": true
            },
            "state": null,
            "proof": [
              {
                "type": "DataIntegrityProof",
                "cryptosuite": "eddsa-jcs-2022",
                "verificationMethod": "did:key:z6MknN3rKuzKRmKyRQheSZ2n8yBKCwsTfZprYj1HBmF48bp2",
                "proofPurpose": "assertionMethod",
                "proofValue": "4WchXVTwWrAwYw3Neh061r54Xg4Chn/bmJMLWghLScUvKb72UpW41taBVq00wa6YeU05yhjXWhLca5yRyl+XDQ=="
              }
            ]
          }
        ],
        "max_entries": 2
      },
      "output_payload": {
        "did": "did:webvh:{SCID}:example.com:agents:alpha",
        "valid": false,
        "entries_checked": 2,
        "current_version_id": "2-81ead391846f6088ddab084e2119b8304224a671b6c3f4b598605661ccd91196",
        "deactivated": false,
        "failures": [
          {
            "entry_index": 2,
            "code": "MAX_ENTRIES_EXCEEDED",
            "detail": "log has 3 entries, bound is 2"
          }
        ]
      },
      "golden_hash": "b787555e376890f4e612b892ac861388bb1d99f34d9b5df47bd0095bff05f825"
    }
  ]
}
