{"ok":true,"checkedAt":"2026-07-17T20:52:41.225Z","contractVersion":"moral-trade-net-offset-accounting-v0.1-2026-06","purpose":"Fail-closed net-offset accounting contract for donation-offset and negative-commitment Moral Trade previews, locks, clearing, payment, public metrics, and release gates.","validation":{"status":"pass","validatorName":"moral-trade-net-offset-accounting-contract","validatorVersion":"moral-trade-net-offset-accounting-validator-v0.1","contractVersion":"moral-trade-net-offset-accounting-v0.1-2026-06","checks":[{"id":"first-class-record-table","label":"Contract names net-offset accounting records","status":"pass","evidence":"moral_trade_net_offset_accounting_records"},{"id":"policy-snapshot-subject","label":"Contract names net_offset_accounting policy snapshots","status":"pass","evidence":"net_offset_accounting"},{"id":"subject-coverage","label":"Contract covers offset offers, lock proposals, cleared agreements, negative commitments, and evidence records","status":"pass","evidence":"offset_offer, matched_trade_lock_proposal, cleared_trade_agreement, negative_commitment_scope, evidence_record"},{"id":"baseline-action-coverage","label":"Contract covers donation, abstention, advocacy, purchase, service-use, other, and unknown baselines","status":"pass","evidence":"donation, abstention, advocacy, purchase, service_use, other, unknown"},{"id":"residual-action-policy","label":"Contract distinguishes disclosed, blocking, manual-review, and not-applicable residual action policies","status":"pass","evidence":"allowed_if_disclosed, blocks_clearance, manual_review, not_applicable"},{"id":"transition-coverage","label":"Contract requires accounting for lock, clearing, capture, public metrics, and release promotion","status":"pass","evidence":"draft_preview, match_candidate_generation, matched_trade_lock, clearing_run, payment_capture, public_metric_publication, release_gate_promotion"},{"id":"gross-volume-rule","label":"Gross compromise transfers and sponsor matches cannot count as moral-trade volume","status":"pass","evidence":"Gross compromise donations, sponsor matches, payment evidence, or public matched volume cannot count as moral-trade volume unless the baseline opposed action, matched canceled amount, residual opposed action, substitution-channel state, and evidence standard are recorded under immutable policy."},{"id":"privacy-boundary","label":"Privacy boundary excludes participant identity, private baseline, substitution, evidence, reviewer notes, and participant rows","status":"pass","evidence":"Public surfaces may expose coarse net-offset status and aggregate safe totals, but never participant identity hashes, private baseline details, substitution-channel details, private evidence, reviewer notes, or participant-specific accounting rows."},{"id":"sample-evaluations","label":"Sample evaluations include passing and blocked net-offset accounting paths","status":"pass","evidence":"pass, blocked"},{"id":"contract-tests","label":"Contract advertises net_offset_accounting_test","status":"pass","evidence":"net_offset_accounting_test, net_offset_accounting_contract_validator, net_offset_gross_transfer_not_volume, net_offset_privacy_boundary, net_offset_accounting_route_contract, net_offset_accounting_schema_contract"}],"blockers":[]},"publicContract":{"failClosedRule":"Donation-offset volume is net-of-offset. Missing, stale, mutable, privacy-leaking, challenged, gross-only, substitution-unreviewed, residual-undisclosed, or evidence-missing net-offset accounting records keep a trade preview/manual-review only and block lock, clearing, capture, public metric publication, and release-gate promotion.","privacyBoundary":"Public surfaces may expose coarse net-offset status and aggregate safe totals, but never participant identity hashes, private baseline details, substitution-channel details, private evidence, reviewer notes, or participant-specific accounting rows.","grossVolumeExclusionRule":"Gross compromise donations, sponsor matches, payment evidence, or public matched volume cannot count as moral-trade volume unless the baseline opposed action, matched canceled amount, residual opposed action, substitution-channel state, and evidence standard are recorded under immutable policy.","firstClassRecordTables":["moral_trade_net_offset_accounting_records"],"policySnapshotSubjects":["net_offset_accounting"],"subjectTypes":["offset_offer","matched_trade_lock_proposal","cleared_trade_agreement","negative_commitment_scope","evidence_record"],"baselineOpposedActionTypes":["donation","abstention","advocacy","purchase","service_use","other","unknown"],"residualActionPolicies":["allowed_if_disclosed","blocks_clearance","manual_review","not_applicable"],"substitutionChannelReviewStates":["not_required","under_review","non_blocking","blocked","manual_review","superseded"],"netOffsetStates":["draft","previewed","locked","verified","challenged","blocked","superseded"],"policyStatuses":["resolved_immutable","missing","mutable","stale","superseded"],"transitions":[{"key":"draft_preview","requiresAccounting":false,"requiresNetMetricEligibleState":false,"userFacingBlockerCategory":"Net-offset accounting is preview-only until baseline and canceled-action records are reviewed"},{"key":"match_candidate_generation","requiresAccounting":true,"requiresNetMetricEligibleState":false,"userFacingBlockerCategory":"Match candidates need net-offset accounting before gross transfer amounts can affect matching"},{"key":"matched_trade_lock","requiresAccounting":true,"requiresNetMetricEligibleState":true,"userFacingBlockerCategory":"Lock requires baseline opposed action, matched canceled amount, residual action, and evidence standard"},{"key":"clearing_run","requiresAccounting":true,"requiresNetMetricEligibleState":true,"userFacingBlockerCategory":"Clearing cannot treat compromise transfers or sponsor matches as net canceled opposed action"},{"key":"payment_capture","requiresAccounting":true,"requiresNetMetricEligibleState":true,"userFacingBlockerCategory":"Payment capture waits for non-blocking net-offset accounting"},{"key":"public_metric_publication","requiresAccounting":true,"requiresNetMetricEligibleState":true,"userFacingBlockerCategory":"Public metrics must count net canceled opposed action, not gross compromise transfers"},{"key":"release_gate_promotion","requiresAccounting":true,"requiresNetMetricEligibleState":true,"userFacingBlockerCategory":"Release promotion requires first-class net-offset accounting evidence"}],"netOffsetAccountingSampleEvaluationStatuses":{"matched_trade_lock":"pass","public_metric_publication":"blocked"},"contractTests":["net_offset_accounting_test","net_offset_accounting_contract_validator","net_offset_gross_transfer_not_volume","net_offset_privacy_boundary","net_offset_accounting_route_contract","net_offset_accounting_schema_contract"]},"blockers":[]}