{"ok":true,"checkedAt":"2026-07-17T20:52:54.856Z","contractVersion":"moral-trade-recipient-acceptance-v0.1-2026-06","purpose":"Fail-closed recipient acceptance and adverse-association contract for recipient listings, donation offsets, pledge swaps, matched-trade locks, payment, payout, public metrics, and release-gate transitions.","validation":{"status":"pass","validatorName":"moral-trade-recipient-acceptance-contract","validatorVersion":"moral-trade-recipient-acceptance-validator-v0.1","contractVersion":"moral-trade-recipient-acceptance-v0.1-2026-06","checks":[{"id":"versioned-contract","label":"Contract version is pinned","status":"pass","evidence":"moral-trade-recipient-acceptance-v0.1-2026-06"},{"id":"first-class-records","label":"First-class recipient acceptance tables are declared","status":"pass","evidence":"moral_trade_recipient_acceptance_policies, moral_trade_recipient_acceptance_records, moral_trade_adverse_association_reviews"},{"id":"policy-snapshot-subjects","label":"Policy snapshot subjects include recipient acceptance and adverse association","status":"pass","evidence":"recipient_acceptance, adverse_association"},{"id":"blocking-status-coverage","label":"Fail-closed statuses cover declined recipient and severe associations","status":"pass","evidence":"not_required_for_stage|pending_recipient|accepted|conditional_acceptance|declined|expired|revoked|superseded|blocked, not_required_for_stage|cleared|mitigated|under_review|disclosed_nonblocking|unresolved|severe|recipient_declined|stale|expired|superseded|blocked, preview_only|recipient_pending|recipient_accepted|accepted_with_conditions|adverse_association_review|declined_or_blocked|expired_stale"},{"id":"transition-coverage","label":"Lock, payment, payout, public metric, and release transitions require acceptance and association review","status":"pass","evidence":"non_money_preview:false, recipient_listing_publication:true, matched_trade_lock:true, payment_authorization:true, payment_capture:true, payout_release:true, public_metric_publication:true, release_gate_promotion:true"},{"id":"sample-evaluations","label":"Sample evaluations cover pass and fail-closed acceptance/adverse-association states","status":"pass","evidence":"non_money_preview:pass, payment_capture:pass, matched_trade_lock:blocked, payment_capture:blocked, public_metric_publication:blocked"},{"id":"privacy-boundary","label":"Public boundary excludes private recipient and adverse-association details","status":"pass","evidence":"Public surfaces may expose table names, status categories, transition rules, risk-class buckets, and sample statuses only. They must not expose recipient private notes, donor private terms, raw adverse-association evidence, expanded recipient identities, reviewer notes, private donor reasons, payment details, raw provider payloads, or participant-specific acceptance records."},{"id":"contract-tests","label":"Contract test hooks are named","status":"pass","evidence":"recipient_acceptance_contract_validator, recipient_acceptance_missing_or_declined_blocking_test, adverse_association_blocking_test, recipient_acceptance_privacy_boundary_test, recipient_acceptance_route_health_spec_and_migration_wiring"}],"blockers":[]},"publicContract":{"failClosedRule":"Non-money previews can run without records, but listings, lock, payment, payout, public metrics, and release promotion require immutable recipient-acceptance policy, current hash-backed recipient acceptance, recipient consent when required, and non-blocking adverse-association review. Missing, pending, declined, revoked, stale, expired, severe, unresolved, or privacy-leaking records block.","privacyBoundary":"Public surfaces may expose table names, status categories, transition rules, risk-class buckets, and sample statuses only. They must not expose recipient private notes, donor private terms, raw adverse-association evidence, expanded recipient identities, reviewer notes, private donor reasons, payment details, raw provider payloads, or participant-specific acceptance records.","firstClassRecordTables":["moral_trade_recipient_acceptance_policies","moral_trade_recipient_acceptance_records","moral_trade_adverse_association_reviews"],"policySnapshotSubjects":["recipient_acceptance","adverse_association"],"subjectTypes":["donation_offset","pledge_swap","compensated_moral_action","matched_trade_lock_proposal","cleared_trade_agreement","common_ground_budget_project"],"acceptanceStatuses":["not_required_for_stage","pending_recipient","accepted","conditional_acceptance","declined","expired","revoked","superseded","blocked"],"adverseAssociationStatuses":["not_required_for_stage","cleared","mitigated","under_review","disclosed_nonblocking","unresolved","severe","recipient_declined","stale","expired","superseded","blocked"],"visibleRecipientStatuses":["preview_only","recipient_pending","recipient_accepted","accepted_with_conditions","adverse_association_review","declined_or_blocked","expired_stale"],"riskClasses":["none","low","medium","high","severe"],"policyStatuses":["resolved_immutable","missing","mutable","stale","superseded"],"failClosedStatuses":["missing","mutable","stale","superseded","pending_recipient","declined","expired","revoked","blocked","under_review","unresolved","severe","recipient_declined","recipient_pending","adverse_association_review","declined_or_blocked","expired_stale"],"transitions":[{"key":"non_money_preview","requiresAcceptancePolicy":false,"requiresAcceptanceRecord":false,"requiresRecipientConsent":false,"requiresAdverseAssociationReview":false,"allowsMitigatedAssociation":true,"userFacingBlockerCategory":"Recipient acceptance is preview-only"},{"key":"recipient_listing_publication","requiresAcceptancePolicy":true,"requiresAcceptanceRecord":true,"requiresRecipientConsent":true,"requiresAdverseAssociationReview":true,"allowsMitigatedAssociation":true,"userFacingBlockerCategory":"Recipient listing needs recipient acceptance and adverse-association review"},{"key":"matched_trade_lock","requiresAcceptancePolicy":true,"requiresAcceptanceRecord":true,"requiresRecipientConsent":true,"requiresAdverseAssociationReview":true,"allowsMitigatedAssociation":true,"userFacingBlockerCategory":"Lock waits for accepted recipient terms and adverse-association review"},{"key":"payment_authorization","requiresAcceptancePolicy":true,"requiresAcceptanceRecord":true,"requiresRecipientConsent":true,"requiresAdverseAssociationReview":true,"allowsMitigatedAssociation":true,"userFacingBlockerCategory":"Payment authorization waits for recipient acceptance and adverse-association review"},{"key":"payment_capture","requiresAcceptancePolicy":true,"requiresAcceptanceRecord":true,"requiresRecipientConsent":true,"requiresAdverseAssociationReview":true,"allowsMitigatedAssociation":true,"userFacingBlockerCategory":"Payment capture waits for accepted recipient terms and non-blocking association review"},{"key":"payout_release","requiresAcceptancePolicy":true,"requiresAcceptanceRecord":true,"requiresRecipientConsent":true,"requiresAdverseAssociationReview":true,"allowsMitigatedAssociation":false,"userFacingBlockerCategory":"Payout release waits for clear recipient acceptance and association review"},{"key":"public_metric_publication","requiresAcceptancePolicy":true,"requiresAcceptanceRecord":true,"requiresRecipientConsent":true,"requiresAdverseAssociationReview":true,"allowsMitigatedAssociation":false,"userFacingBlockerCategory":"Public metrics wait for accepted recipient evidence and cleared association review"},{"key":"release_gate_promotion","requiresAcceptancePolicy":true,"requiresAcceptanceRecord":true,"requiresRecipientConsent":true,"requiresAdverseAssociationReview":true,"allowsMitigatedAssociation":false,"userFacingBlockerCategory":"Release promotion waits for recipient-acceptance and adverse-association controls"}],"recipientAcceptanceSampleEvaluationStatuses":{"non_money_preview":{"status":"pass","blockers":[],"immutablePolicyCount":0,"acceptedRecipientCount":0,"clearedAdverseAssociationCount":0},"payment_capture":{"status":"blocked","blockers":["adverse_association_not_cleared:adverse-association-review:offset-offer-demo:severe","adverse_association_severe:adverse-association-review:offset-offer-demo","adverse_association_visible_status_blocking:adverse-association-review:offset-offer-demo"],"immutablePolicyCount":1,"acceptedRecipientCount":1,"clearedAdverseAssociationCount":0},"matched_trade_lock":{"status":"blocked","blockers":["recipient_acceptance_not_accepted:recipient-acceptance:offset-offer-demo:declined","recipient_acceptance_declined:recipient-acceptance:offset-offer-demo","recipient_consent_missing:recipient-acceptance:offset-offer-demo","recipient_acceptance_visible_status_blocking:recipient-acceptance:offset-offer-demo:declined_or_blocked"],"immutablePolicyCount":1,"acceptedRecipientCount":0,"clearedAdverseAssociationCount":1},"public_metric_publication":{"status":"blocked","blockers":["adverse_association_mitigation_not_sufficient:adverse-association-review:offset-offer-demo"],"immutablePolicyCount":1,"acceptedRecipientCount":1,"clearedAdverseAssociationCount":0}},"contractTests":["recipient_acceptance_contract_validator","recipient_acceptance_missing_or_declined_blocking_test","adverse_association_blocking_test","recipient_acceptance_privacy_boundary_test","recipient_acceptance_route_health_spec_and_migration_wiring"]},"blockers":[]}