{"ok":true,"checkedAt":"2026-07-17T20:53:48.368Z","contractVersion":"moral-trade-participant-term-sheet-v0.1-2026-06","purpose":"Fail-closed participant term sheet, counterparty blinding, and staged disclosure contract for donation-offset, pledge-swap, compensated-action, lock, payment, reliance, public metric, and release-gate transitions.","validation":{"status":"pass","validatorName":"moral-trade-participant-term-sheet-contract","validatorVersion":"moral-trade-participant-term-sheet-validator-v0.1","contractVersion":"moral-trade-participant-term-sheet-v0.1-2026-06","checks":[{"id":"versioned-contract","label":"Contract version is pinned","status":"pass","evidence":"moral-trade-participant-term-sheet-v0.1-2026-06"},{"id":"first-class-records","label":"First-class record tables are declared","status":"pass","evidence":"moral_trade_participant_term_sheet_records, moral_trade_counterparty_blinding_policies, moral_trade_staged_counterparty_disclosure_records"},{"id":"policy-snapshot-subjects","label":"Policy snapshot subjects include term sheet, blinding, and staged disclosure","status":"pass","evidence":"participant_term_sheet, counterparty_blinding, staged_counterparty_disclosure"},{"id":"state-coverage","label":"Fail-closed state coverage includes mismatches and over-disclosure","status":"pass","evidence":"draft|participant_confirmed|counterparty_confirmed|mutually_confirmed|mismatch|expired|superseded|blocked, not_disclosed|stage_eligible|redacted_disclosed|mutually_consented|over_disclosed|expired|superseded|blocked, not_disclosed|volume_bucket_only|redacted_counterparty|mutual_consent_ready|mutually_disclosed|expired_stale|blocked_needs_review"},{"id":"transition-coverage","label":"Payment, reliance, public metric, and release transitions require mutual confirmation","status":"pass","evidence":"draft_preview:false, counterparty_preview:false, live_offer_publication:false, matchable_publication:false, matched_trade_lock:true, payment_authorization:true, payment_capture:true, reliance_bearing_transition:true, public_metric_publication:true, release_gate_promotion:true"},{"id":"canonical-participant-facing-term-sheet","label":"Confirmed term sheets require a privacy-safe plain-language render and block raw/internal-only sources","status":"pass","evidence":"plain_language_participant_facing_render_required, privacy_safe_render_hash_required, raw_json_hidden_policy_reviewer_shorthand_blocked, internal_terms_hash_requires_participant_facing_equivalent, final_confirmation_scoped_to_exact_matched_proposal sources=plain_language_render, raw_json, hidden_policy_state, reviewer_shorthand, internal_terms_hash_only"},{"id":"sample-evaluations","label":"Sample evaluations cover pass and fail-closed states","status":"pass","evidence":"draft_preview:pass, live_offer_publication:pass, matched_trade_lock:pass, matched_trade_lock:blocked, payment_authorization:blocked"},{"id":"privacy-boundary","label":"Public boundary excludes term sheets, raw counterparty data, and private constraints","status":"pass","evidence":"Public surfaces may expose table names, status categories, transition rules, counterparty volume buckets, and sample statuses only. They must not expose participant-specific term sheets, raw counterparty identities, contact details, private wishes, exact constraints, hidden match reasoning, source evidence, reviewer notes, payment details, or participant-specific disclosure records."},{"id":"contract-tests","label":"Contract test hooks are named","status":"pass","evidence":"participant_term_sheet_contract_validator, term_sheet_mismatch_blocking_test, counterparty_blinding_policy_test, staged_counterparty_disclosure_privacy_test, mutual_confirmation_before_lock_test, participant_term_sheet_route_health_spec_and_migration_wiring"}],"blockers":[]},"publicContract":{"failClosedRule":"Draft previews can run without records, but live, matchable, payable, reliance-bearing, public-metric, and release-gate transitions require immutable counterparty blinding policy, reviewed participant-facing plain-language term sheet render hashes, safe staged disclosure records, and mutual confirmation before lock, payment, reliance, or public metrics; raw JSON, hidden policy state, reviewer shorthand, internal-only terms hashes, mismatches, free-text side terms, stale records, over-disclosure, or public raw counterparty data block.","privacyBoundary":"Public surfaces may expose table names, status categories, transition rules, counterparty volume buckets, and sample statuses only. They must not expose participant-specific term sheets, raw counterparty identities, contact details, private wishes, exact constraints, hidden match reasoning, source evidence, reviewer notes, payment details, or participant-specific disclosure records.","firstClassRecordTables":["moral_trade_participant_term_sheet_records","moral_trade_counterparty_blinding_policies","moral_trade_staged_counterparty_disclosure_records"],"policySnapshotSubjects":["participant_term_sheet","counterparty_blinding","staged_counterparty_disclosure"],"subjectTypes":["donation_offset","pledge_swap","compensated_moral_action","matched_trade_lock_proposal","cleared_trade_agreement"],"termSheetStates":["draft","participant_confirmed","counterparty_confirmed","mutually_confirmed","mismatch","expired","superseded","blocked"],"disclosureStates":["not_disclosed","stage_eligible","redacted_disclosed","mutually_consented","over_disclosed","expired","superseded","blocked"],"visibleDisclosureStatuses":["not_disclosed","volume_bucket_only","redacted_counterparty","mutual_consent_ready","mutually_disclosed","expired_stale","blocked_needs_review"],"disclosureStages":["none","cohort_count","redacted_counterparty","mutual_consent","post_lock_public_summary"],"policyStatuses":["resolved_immutable","missing","mutable","stale","superseded"],"termSheetSourceKinds":["plain_language_render","raw_json","hidden_policy_state","reviewer_shorthand","internal_terms_hash_only"],"prohibitedTermSheetSourceKinds":["raw_json","hidden_policy_state","reviewer_shorthand","internal_terms_hash_only"],"canonicalTermSheetRules":["plain_language_participant_facing_render_required","privacy_safe_render_hash_required","raw_json_hidden_policy_reviewer_shorthand_blocked","internal_terms_hash_requires_participant_facing_equivalent","final_confirmation_scoped_to_exact_matched_proposal"],"failClosedStatuses":["missing","mutable","stale","superseded","draft","mismatch","expired","blocked","not_disclosed","over_disclosed","expired_stale","blocked_needs_review"],"transitions":[{"key":"draft_preview","requiresBlindingPolicy":false,"requiresParticipantTermSheet":false,"requiresStagedDisclosure":false,"requiresMutualConfirmation":false,"requiresMutualDisclosureConsent":false,"userFacingBlockerCategory":"Participant term sheet is preview-only"},{"key":"counterparty_preview","requiresBlindingPolicy":true,"requiresParticipantTermSheet":false,"requiresStagedDisclosure":false,"requiresMutualConfirmation":false,"requiresMutualDisclosureConsent":false,"userFacingBlockerCategory":"Counterparty preview needs immutable blinding policy"},{"key":"live_offer_publication","requiresBlindingPolicy":true,"requiresParticipantTermSheet":true,"requiresStagedDisclosure":true,"requiresMutualConfirmation":false,"requiresMutualDisclosureConsent":false,"userFacingBlockerCategory":"Offer needs a participant-confirmed term sheet and staged counterparty disclosure policy before it can go live"},{"key":"matchable_publication","requiresBlindingPolicy":true,"requiresParticipantTermSheet":true,"requiresStagedDisclosure":true,"requiresMutualConfirmation":false,"requiresMutualDisclosureConsent":false,"userFacingBlockerCategory":"Matching waits for term-sheet hash alignment and counterparty blinding controls"},{"key":"matched_trade_lock","requiresBlindingPolicy":true,"requiresParticipantTermSheet":true,"requiresStagedDisclosure":true,"requiresMutualConfirmation":true,"requiresMutualDisclosureConsent":true,"userFacingBlockerCategory":"Lock waits for mutual confirmation and consented staged disclosure"},{"key":"payment_authorization","requiresBlindingPolicy":true,"requiresParticipantTermSheet":true,"requiresStagedDisclosure":true,"requiresMutualConfirmation":true,"requiresMutualDisclosureConsent":true,"userFacingBlockerCategory":"Payment authorization waits for mutually confirmed term-sheet and disclosure consent"},{"key":"payment_capture","requiresBlindingPolicy":true,"requiresParticipantTermSheet":true,"requiresStagedDisclosure":true,"requiresMutualConfirmation":true,"requiresMutualDisclosureConsent":true,"userFacingBlockerCategory":"Payment capture waits for mutually confirmed and privacy-safe term-sheet evidence"},{"key":"reliance_bearing_transition","requiresBlindingPolicy":true,"requiresParticipantTermSheet":true,"requiresStagedDisclosure":true,"requiresMutualConfirmation":true,"requiresMutualDisclosureConsent":true,"userFacingBlockerCategory":"Reliance waits for mutual term-sheet confirmation and staged disclosure consent"},{"key":"public_metric_publication","requiresBlindingPolicy":true,"requiresParticipantTermSheet":true,"requiresStagedDisclosure":true,"requiresMutualConfirmation":true,"requiresMutualDisclosureConsent":true,"userFacingBlockerCategory":"Public metrics wait for completed privacy-safe term-sheet evidence"},{"key":"release_gate_promotion","requiresBlindingPolicy":true,"requiresParticipantTermSheet":true,"requiresStagedDisclosure":true,"requiresMutualConfirmation":true,"requiresMutualDisclosureConsent":true,"userFacingBlockerCategory":"Release promotion waits for term-sheet mismatch and disclosure-policy controls"}],"participantTermSheetSampleEvaluationStatuses":{"draft_preview":{"status":"pass","blockers":[],"immutablePolicyCount":0,"passingTermSheetCount":0,"stagedDisclosureCount":0},"live_offer_publication":{"status":"pass","blockers":[],"immutablePolicyCount":1,"passingTermSheetCount":1,"stagedDisclosureCount":1},"matched_trade_lock":{"status":"blocked","blockers":["term_sheet_mismatch:participant-term-sheet:mismatch-demo","mutual_confirmation_missing:participant-term-sheet:mismatch-demo"],"immutablePolicyCount":1,"passingTermSheetCount":0,"stagedDisclosureCount":1},"payment_authorization":{"status":"blocked","blockers":["counterparty_blinding_policy_not_immutable:counterparty-blinding-policy:tier-1-donation-offset:mutable","raw_counterparty_identity_public:staged-counterparty-disclosure:offset-offer-demo"],"immutablePolicyCount":0,"passingTermSheetCount":1,"stagedDisclosureCount":1}},"contractTests":["participant_term_sheet_contract_validator","term_sheet_mismatch_blocking_test","counterparty_blinding_policy_test","staged_counterparty_disclosure_privacy_test","mutual_confirmation_before_lock_test","participant_term_sheet_route_health_spec_and_migration_wiring"]},"blockers":[]}