{
  "version": "v1",
  "description": "Reference test vectors for receiz verification behavior.",
  "vectors": [
    {
      "id": "verify-v2-valid",
      "input": {
        "ts": "2026-01-01 00:00",
        "code": "AB12CD34",
        "pulse": "123456"
      },
      "expected": {
        "apiVerifyShape": {
          "valid": true,
          "version": "v2"
        },
        "notes": "code must be generated from receiz|ts|pulse|v2 with current signing key"
      }
    },
    {
      "id": "verify-invalid-code",
      "input": {
        "ts": "2026-01-01 00:00",
        "code": "ZZZZZZZZ",
        "pulse": "123456"
      },
      "expected": {
        "apiVerifyShape": {
          "valid": false
        }
      }
    },
    {
      "id": "artifact-binding-tamper",
      "input": {
        "operation": "modify_png_pixels_after_mint"
      },
      "expected": {
        "artifactVerifier": {
          "ok": false,
          "errorContains": "Artifact binding mismatch"
        }
      }
    },
    {
      "id": "document-seal-bundle-fallback",
      "input": {
        "operation": "seal_unsupported_format",
        "exampleMime": "application/zip"
      },
      "expected": {
        "documentSeal": {
          "xReceizSealKind": "bundle",
          "contentType": "application/vnd.receiz.bundle+json"
        }
      }
    },
    {
      "id": "document-verify-optional-link-mismatch",
      "input": {
        "operation": "verify_with_noncanonical_optional_link"
      },
      "expected": {
        "documentVerify": {
          "ok": false,
          "errorContains": "Optional link does not match embedded canonical path."
        }
      }
    },
    {
      "id": "document-verify-g16-tamper",
      "input": {
        "operation": "mutate_g16_payload_or_digest_after_seal"
      },
      "expected": {
        "documentVerify": {
          "ok": false,
          "errorContainsOneOf": [
            "Real Groth16 proof digest mismatch.",
            "Groth16 proof verification failed."
          ]
        }
      }
    }
  ]
}
