{"ok":true,"checkedAt":"2026-07-17T20:54:02.440Z","contractVersion":"moral-trade-sensitive-evidence-attestations-v0.1-2026-06","purpose":"Fail-closed sensitive-evidence attestation governance for privacy-preserving verification results before counterparties, locks, money movement, reliance, public metrics, challenges, or release gates can depend on private artifacts.","validation":{"status":"pass","validatorName":"moral-trade-sensitive-evidence-attestation-contract","validatorVersion":"moral-trade-sensitive-evidence-attestation-validator-v0.1","contractVersion":"moral-trade-sensitive-evidence-attestations-v0.1-2026-06","checks":[{"id":"first-class-record-table","label":"Contract names sensitive-evidence attestation records","status":"pass","evidence":"moral_trade_sensitive_evidence_attestations"},{"id":"policy-snapshot-subject","label":"Contract names sensitive_evidence_attestation policy snapshots","status":"pass","evidence":"sensitive_evidence_attestation"},{"id":"claim-type-coverage","label":"Contract covers payment, destination, eligibility, baseline, completion, impact, safety, confidentiality, uncertainty, and manual-review claims","status":"pass","evidence":"payment_receipt_verified, destination_verified, eligibility_verified, baseline_scope_verified, completion_evidence_verified, impact_evidence_verified, safety_review_non_blocking, confidentiality_review_non_blocking, uncertainty_present, manual_review"},{"id":"privacy-rule","label":"Contract requires claim-typed attestation results, uncertainty, scope, and challenge routes instead of raw artifacts","status":"pass","evidence":"Counterparties receive claim-typed attestation results, uncertainty, scope, and challenge routes rather than raw private artifacts. Public contract responses expose only static rules, table names, enums, validation blockers, and sample pass/block states."},{"id":"raw-artifact-disclosure-rule","label":"Raw-artifact disclosure requires current privacy grant and passed confidentiality review","status":"pass","evidence":"Raw private artifacts cannot be sent to counterparties unless disclosure mode is privacy_grant_broader_disclosure, the privacy grant is current, and confidentiality review has passed. Public raw artifact disclosure is always blocked."},{"id":"transition-coverage","label":"Contract gates counterparty preview, lock, capture, payout, reliance, public metrics, challenges, and release promotion","status":"pass","evidence":"evidence_review, counterparty_preview, matched_trade_lock, payment_capture, payout_release, reliance, public_metric_publication, challenge_response, release_gate_promotion"},{"id":"sample-evaluation-coverage","label":"Contract includes passing and blocked sample evaluations","status":"pass","evidence":"counterparty_preview:pass, matched_trade_lock:blocked"},{"id":"contract-test-coverage","label":"Contract lists validator, privacy-preserving, raw-disclosure, route, and schema tests","status":"pass","evidence":"sensitive_evidence_attestation_contract_validator, sensitive_evidence_privacy_preserving_attestation_test, sensitive_evidence_raw_artifact_disclosure_blocks, sensitive_evidence_attestation_route_contract, sensitive_evidence_attestation_schema_contract"}],"blockers":[]},"publicContract":{"privacyRule":"Counterparties receive claim-typed attestation results, uncertainty, scope, and challenge routes rather than raw private artifacts. Public contract responses expose only static rules, table names, enums, validation blockers, and sample pass/block states.","failClosedRule":"Missing attestation records, mutable policy, missing raw-artifact reference hashes, missing attestation result hashes, missing uncertainty, missing scope, missing challenge route, non-attested results, stale records, or raw private artifact disclosure without an explicit current privacy grant and passed confidentiality review block lock, capture, payout, reliance, public metrics, challenge response, and release promotion.","attestationResultRule":"Sensitive evidence paths must produce claim-typed attestation results with uncertainty and scope statements before counterparties can rely on them.","rawArtifactDisclosureRule":"Raw private artifacts cannot be sent to counterparties unless disclosure mode is privacy_grant_broader_disclosure, the privacy grant is current, and confidentiality review has passed. Public raw artifact disclosure is always blocked.","challengeRule":"Every counterparty-facing attestation names a scoped challenge route under /api/moral-trade/challenge-appeal so the recipient can dispute the claim type, uncertainty, or scope without receiving raw artifacts.","firstClassRecordTables":["moral_trade_sensitive_evidence_attestations"],"policySnapshotSubjects":["sensitive_evidence_attestation"],"subjectTypes":["evidence_record","impact_claim","matched_trade_lock_proposal","payout_milestone","recipient_destination","noncompensable_blocker_assessment","appeal_case","disclosure_decision"],"evidencePathTypes":["private_receipt","identity_artifact","legal_capacity_artifact","payment_destination_artifact","source_note","private_message","protected_trait_evidence","safety_report","reviewer_note","provider_record","raw_private_artifact"],"claimTypes":["payment_receipt_verified","destination_verified","eligibility_verified","baseline_scope_verified","completion_evidence_verified","impact_evidence_verified","safety_review_non_blocking","confidentiality_review_non_blocking","uncertainty_present","manual_review"],"disclosureModes":["attestation_only","counterparty_claim_typed_summary","reviewer_raw_artifact","privacy_grant_broader_disclosure","public_suppressed"],"privacyGrantStatuses":["not_required","granted_current","missing","expired","revoked","scope_mismatch"],"confidentialityReviewStatuses":["passed","not_required_for_stage","missing","under_review","failed","stale","superseded"],"resultStates":["draft","attested","insufficient","challenged","under_review","blocked","superseded"],"policyStatuses":["resolved_immutable","missing","mutable","stale","superseded"],"transitions":[{"key":"evidence_review","requiresAttestation":true,"requiresPrivacyPreservingCounterpartyResult":false,"userFacingBlockerCategory":"Sensitive evidence review records claim-typed attestation results instead of raw artifacts"},{"key":"counterparty_preview","requiresAttestation":true,"requiresPrivacyPreservingCounterpartyResult":true,"userFacingBlockerCategory":"Counterparties receive claim-typed attestation results, uncertainty, scope, and challenge routes rather than raw private artifacts"},{"key":"matched_trade_lock","requiresAttestation":true,"requiresPrivacyPreservingCounterpartyResult":true,"userFacingBlockerCategory":"Lock waits for privacy-preserving attestations or explicit privacy grant plus confidentiality review"},{"key":"payment_capture","requiresAttestation":true,"requiresPrivacyPreservingCounterpartyResult":true,"userFacingBlockerCategory":"Payment capture cannot expose private receipts, provider records, or destination artifacts to counterparties without a valid grant and confidentiality review"},{"key":"payout_release","requiresAttestation":true,"requiresPrivacyPreservingCounterpartyResult":true,"userFacingBlockerCategory":"Payout release uses claim-typed attestation and challenge routes instead of raw private evidence disclosure"},{"key":"reliance","requiresAttestation":true,"requiresPrivacyPreservingCounterpartyResult":true,"userFacingBlockerCategory":"Reliance-bearing states require attested claim result, uncertainty, scope, and challenge route"},{"key":"public_metric_publication","requiresAttestation":true,"requiresPrivacyPreservingCounterpartyResult":true,"userFacingBlockerCategory":"Public metrics may rely on attestation state and uncertainty, not raw private artifacts"},{"key":"challenge_response","requiresAttestation":true,"requiresPrivacyPreservingCounterpartyResult":true,"userFacingBlockerCategory":"Challenges route through scoped appeal paths with redacted evidence summaries"},{"key":"release_gate_promotion","requiresAttestation":true,"requiresPrivacyPreservingCounterpartyResult":true,"userFacingBlockerCategory":"Release promotion requires sensitive-evidence attestation evidence and raw-artifact suppression counters"}],"sensitiveEvidenceAttestationSampleEvaluationStatuses":{"counterparty_preview":"pass","matched_trade_lock":"blocked"},"rawArtifactDisclosureBlockerCounts":{"counterparty_preview":0,"matched_trade_lock":1},"contractTests":["sensitive_evidence_attestation_contract_validator","sensitive_evidence_privacy_preserving_attestation_test","sensitive_evidence_raw_artifact_disclosure_blocks","sensitive_evidence_attestation_route_contract","sensitive_evidence_attestation_schema_contract"]},"blockers":[]}