# R2PQ verification result contract v2 API: verifyReceiptV2; identifier r2pq-verification-result/2. Receipt and leaf formats remain unchanged. The legacy verifyReceipt/overallState API remains for historical contract/vector compatibility and is not used by the public UI. Its CRYPTOGRAPHICALLY_VERIFIED result must never be presented publicly. Every layer reports PASS, FAIL, NOT PROVIDED, NOT EVALUATED, or UNSUPPORTED. Layers: format, payload correspondence, root reconstruction, supplied inclusion proofs, timestamp binding, token signature, certificate/TSA trust, operator provenance. PASS means only the named implemented check passed. Missing material never passes. Malformed supplied material fails. Unsupported profiles cannot be judged valid or invalid. Trust and provenance cannot be supplied as verdicts by untrusted input. Summary: CHECKS FAILED if any layer fails; otherwise AVAILABLE CHECKS PASSED if at least one layer passes; otherwise NO CHECKS PASSED. This is not a completeness grade. Always display the passed, failed, and unavailable counts and all eight layers adjacent to the summary. No assessment-wide verification statement. Token signature includes the CMS signed-message digest. Timestamp binding is independent of signature and does not establish trusted TSA identity or scan time. Browser payload encoding is not evaluated. Receipt IDs and generated_at_ms are display metadata, not authenticated assertions. Explicitly missing metadata is not tampering. Root mutation is a failed relationship, not proof of motive. Historical receipts and committed vectors are not changed or regenerated. New results name their contract version; a new result does not rewrite an old artifact.