{"ok":true,"checkedAt":"2026-07-17T20:54:57.024Z","contractVersion":"moral-trade-cause-bucket-taxonomy-v0.1-2026-06","purpose":"Fail-closed cause-bucket taxonomy and assignment contract for non-public-goods Moral Trade previews, candidate generation, locks, clearing, public metrics, and release gates.","validation":{"status":"pass","validatorName":"moral-trade-cause-bucket-taxonomy-contract","validatorVersion":"moral-trade-cause-bucket-taxonomy-validator-v0.1","contractVersion":"moral-trade-cause-bucket-taxonomy-v0.1-2026-06","checks":[{"id":"first-class-records","label":"Contract names taxonomy and assignment record tables","status":"pass","evidence":"moral_trade_cause_bucket_taxonomies, moral_trade_cause_bucket_assignments"},{"id":"policy-snapshot-subject","label":"Contract names cause_bucket_taxonomy policy snapshots","status":"pass","evidence":"cause_bucket_taxonomy"},{"id":"taxonomy-scope","label":"Contract covers offered, opposed, destination, action, and counterparty bucket taxonomies","status":"pass","evidence":"offered_cause, opposed_cause, compromise_destination, action_bucket, counterparty_bucket, manual_review"},{"id":"assignment-effects","label":"Transitions guard counterparty distinctness, classification, clearing, metrics, and release gates","status":"pass","evidence":"draft_preview, match_candidate_generation, matched_trade_lock, clearing_run, public_metric_publication, release_gate_promotion"},{"id":"privacy-boundary","label":"Privacy boundary excludes private assignment and protected-trait details","status":"pass","evidence":"Public surfaces may show only coarse bucket codes, taxonomy version, public summary hash, and status categories. They must not expose participant identity hashes, raw private cause narratives, protected-trait facts, inferred ideology, inferred psychology, reviewer notes, or participant-specific assignment rows."},{"id":"non-ranking-rule","label":"Non-ranking rule rejects ideology labels and public moral rankings","status":"pass","evidence":"Cause buckets are coordination labels, not moral rankings, ideology labels, reputation scores, cause-price tables, or platform-endorsed moral value judgments."},{"id":"material-change-rule","label":"Material taxonomy changes require renewed preview and confirmation","status":"pass","evidence":"A taxonomy change after preview is material when it can affect counterparty distinctness, trade classification, clearing ratio, clearing eligibility, or eligible counterparties; the trade then needs a renewed preview and participant confirmation before lock, clearing, payment, public metrics, or release promotion."},{"id":"sample-pass-and-block","label":"Sample evaluations include a passing and blocked taxonomy path","status":"pass","evidence":"clearing_run:pass, clearing_run:blocked"},{"id":"release-gate-test","label":"Contract advertises cause_bucket_taxonomy_review_test","status":"pass","evidence":"cause_bucket_taxonomy_review_test, cause_bucket_taxonomy_contract_validator, cause_bucket_taxonomy_fail_closed_for_protected_trait_proxy, cause_bucket_assignment_effect_bearing_review_gate, cause_bucket_taxonomy_route_contract, cause_bucket_taxonomy_schema_contract"}],"blockers":[]},"publicContract":{"failClosedRule":"Cause-bucket taxonomy and assignment records are required before bucket labels affect counterparty distinctness, trade classification, clearing eligibility, clearing ratios, eligible counterparties, public metrics, or release-gate promotion. Missing, stale, disputed, protected-trait-proxy, inferred-ideology, inferred-psychology, mutable, or unreviewed assignments fail closed to preview/manual review.","privacyBoundary":"Public surfaces may show only coarse bucket codes, taxonomy version, public summary hash, and status categories. They must not expose participant identity hashes, raw private cause narratives, protected-trait facts, inferred ideology, inferred psychology, reviewer notes, or participant-specific assignment rows.","nonRankingRule":"Cause buckets are coordination labels, not moral rankings, ideology labels, reputation scores, cause-price tables, or platform-endorsed moral value judgments.","materialChangeRule":"A taxonomy change after preview is material when it can affect counterparty distinctness, trade classification, clearing ratio, clearing eligibility, or eligible counterparties; the trade then needs a renewed preview and participant confirmation before lock, clearing, payment, public metrics, or release promotion.","firstClassRecordTables":["moral_trade_cause_bucket_taxonomies","moral_trade_cause_bucket_assignments"],"policySnapshotSubjects":["cause_bucket_taxonomy"],"taxonomyTypes":["offered_cause","opposed_cause","compromise_destination","action_bucket","counterparty_bucket","manual_review"],"subjectTypes":["offset_offer","pledge_swap_offer","matched_trade_lock_proposal","cleared_trade_agreement","seed_template","worked_example"],"reviewStates":["not_required","under_review","non_blocking","blocked","manual_review","superseded"],"taxonomyStates":["draft","active","deprecated","superseded","blocked"],"assignmentConfidenceStates":["self_attested","reviewer_normalized","disputed","blocked","manual_review","superseded"],"assignmentVisibilityStates":["participant_only","reviewer_only","counterparty_band_only","public_coarse"],"assignmentStates":["draft","previewed","locked","disputed","superseded","blocked"],"transitions":[{"key":"draft_preview","requiresActiveTaxonomy":true,"requiresReviewedAssignmentsWhenEffectBearing":false,"userFacingBlockerCategory":"Cause buckets need a versioned taxonomy before they can shape a preview"},{"key":"match_candidate_generation","requiresActiveTaxonomy":true,"requiresReviewedAssignmentsWhenEffectBearing":true,"userFacingBlockerCategory":"Cause-bucket assignments need review before they affect candidate distinctness"},{"key":"matched_trade_lock","requiresActiveTaxonomy":true,"requiresReviewedAssignmentsWhenEffectBearing":true,"userFacingBlockerCategory":"Cause-bucket assignments need renewed review before lock if they affect classification or counterparties"},{"key":"clearing_run","requiresActiveTaxonomy":true,"requiresReviewedAssignmentsWhenEffectBearing":true,"userFacingBlockerCategory":"Cause-bucket assignments cannot drive clearing under stale, disputed, or inferred labels"},{"key":"public_metric_publication","requiresActiveTaxonomy":true,"requiresReviewedAssignmentsWhenEffectBearing":true,"userFacingBlockerCategory":"Public metrics cannot publish taxonomy-derived rankings or ideology labels"},{"key":"release_gate_promotion","requiresActiveTaxonomy":true,"requiresReviewedAssignmentsWhenEffectBearing":true,"userFacingBlockerCategory":"Release promotion requires cause-bucket taxonomy review evidence"}],"causeBucketSampleEvaluationStatuses":{"clearing_run":"blocked"},"contractTests":["cause_bucket_taxonomy_review_test","cause_bucket_taxonomy_contract_validator","cause_bucket_taxonomy_fail_closed_for_protected_trait_proxy","cause_bucket_assignment_effect_bearing_review_gate","cause_bucket_taxonomy_route_contract","cause_bucket_taxonomy_schema_contract"]},"blockers":[]}