Verify a receipt:v1 line against a payload (canonicalize JSON → hash → verify Ed25519). Client-side only.
Rules
If payload parses as JSON, we sign/verify the canonical JSON with recursively sorted object keys. Otherwise we verify the raw text bytes.