Source artifacts
- moral_trade_feature_audit_markdown: hash blocked
- moral_trade_feature_audit_pdf: hash blocked
Core protocol
The core feature now publishes its required proposal fields, review statuses, guardrails, evidence schemas, factor codes, and provenance model as a validator-backed profile.
Document coverage contract
The source Markdown and PDF are hash-checked, and the report testing plan is now mapped as schema, policy, evidence, privacy, fairness, UX, and resilience coverage before any broad completion claim is made.
Document coverage moral-trade-document-coverage-v0.7-2026-05
63 check(s), 2 source document(s), 7 testing-plan layer(s), 28 implementation phrase gate(s).
12 source family mappings connect Ord, product commitments, due diligence, provenance, AI governance, and HCI guidance to code and public routes.
Public readiness matrix
The build instruction lists the required public contract routes. This matrix keeps the user-facing spec aligned with that list so transparency, private-overlap guardrails, privacy, operations, and evaluation evidence are not hidden behind scattered JSON links.
Canonical public contracts
All canonical public contract routes have a visible readiness row.
This matrix is repository validation evidence. It does not claim production liquidity, legal or tax treatment, payment custody, zero security risk, or objective moral endorsement.
Public contract
This mirrors the MPGF validator posture for the core moral-trade workflow: a proposal is not merely prose; it is a record with required fields, review states, explicit rejection rules, and provenance-bearing evidence.
Data model contract
The audit named the core Moral Trade objects explicitly: participants, profiles, offers, source notes, saved searches, privacy grants, evidence records, disputes, payment updates, notifications, and agreement events. This contract makes those entities inspectable and binds them to public privacy and relationship boundaries.
Data model moral-trade-data-model-v0.1.5-2026-06
10 check(s), 0 blocker(s), 27 entity contract(s).
identity
A participant appears publicly only through opted-in profile or offer preview fields.
4 required field(s).
profile
Shows broad previews and chosen visibility only; exact wishes, contact details, private source notes, and sensitive constraints stay out.
5 required field(s).
profile
Never public by default; fields can be summarized only through broad previews or explicit privacy grants.
6 required field(s).
privacy
Publishes only the selected visibility level, not the hidden profile fields behind it.
6 required field(s).
privacy
Stores consent scope, import mode, and manual summaries only; raw private feeds are not ingested or searched.
7 required field(s).
privacy
Only coarse source summaries may be disclosed through a valid purpose-bound grant; raw notes remain private.
6 required field(s).
matching
Search terms, offer browse filters, and notification choices remain viewer-owned; public search returns broad previews only.
9 required field(s).
proposal
A public taxonomy for pledge swaps, donation offsets, paid actions, and public-good commitments.
4 required field(s).
proposal
Public offers expose only reviewed or preview-safe terms and must not imply escrow, legal enforceability, tax treatment, or objective moral endorsement.
12 required field(s).
proposal
The no-trade baseline is reviewable and challengeable; sensitive details can be summarized or redacted.
6 required field(s).
evidence
Claims disclose only scoped summaries and confidence; artifacts and private locators stay behind review controls.
7 required field(s).
evidence
Artifacts require hashes, scope alignment, and redaction levels before any public reasoning summary references them.
7 required field(s).
provenance
External charities, payment providers, registries, or supplier-like records expose only stable redacted identifiers after registry or reviewer confirmation.
8 required field(s).
provenance
What/where/why event records include explicit what happened, who touched it, and when answers for payment, charity-routing, or external-evidence audits; raw artifacts and private provider payloads remain redacted.
14 required field(s).
provenance
Activities link submitted, reviewed, and changed records to agents; public summaries omit raw private wishes, contact details, and source notes.
8 required field(s).
provenance
Participants, counterparties, reviewers, operators, and providers are represented by scoped agent records; public labels require explicit redaction review.
7 required field(s).
provenance
Reliance-bearing status changes require immutable event hashes, agent links, and explicit what happened, who touched it, and when answers; public exposure is limited to redacted status evidence.
10 required field(s).
review
Only a narrow public reasoning summary is exposed when safe; private notes and source notes are redacted.
9 required field(s).
review
Challenges target specific claims, evidence rows, baselines, disclosure decisions, or policy flags.
7 required field(s).
review
Appeals do not reopen unrelated moral disagreements and cannot resolve disputes without human review.
7 required field(s).
review
Dispute status may be public; private evidence and affected-party details remain review-scoped.
6 required field(s).
privacy
Field-level, purpose-bound, stage-bound grants disclose only approved fields and never mutate from public contract reads.
9 required field(s).
matching
Uses broad previews, privacy policy ids, disclosure stages, and factor codes; exact wishes, source notes, and contact details stay hidden until consent.
11 required field(s).
operations
Notification copy remains generic and omits exact wishes, contact details, source notes, and sensitive constraints.
6 required field(s).
payment
Records can reference provider events but do not claim escrow, custody, tax, investment, or legal advice.
7 required field(s).
payment
Status updates are evidence inputs, not automatic reviewed completion or custody guarantees.
6 required field(s).
provenance
Immutable event records support auditability; public summaries are redacted and status-scoped.
7 required field(s).
Policy bundle contract
The audit recommends a strict input bundle for any drafting or reviewer-summary assistance. This contract publishes the policy registry, prohibited-pattern registry, factor-code dictionary, verification-method taxonomy, redaction policy, already submitted evidence metadata boundary, and fixed verification loop used before any draft can be treated as matchable.
Policy bundle moral-trade-policy-bundle-v0.1-2026-05
9 check(s), 0 blocker(s), 5 prohibited pattern code(s).
The copilot review route accepts only redacted metadata for already submitted evidence. Raw artifacts, private notes, contact details, and exact wishes are rejected before they can enter a reviewer-summary packet.
schema_completeness
Blocks matchable status until resolved.
anti_threat
Blocks matchable status until resolved.
baseline_credibility
Blocks matchable status until resolved.
evidence_sufficiency
Blocks matchable status until resolved.
externality_trigger
Routes, explains, or records without granting reliance.
privacy_redaction
Blocks matchable status until resolved.
match_explanation
Routes, explains, or records without granting reliance.
human_review_routing
Routes, explains, or records without granting reliance.
Validator evidence
Explanation layer
The match inbox turns those codes into participant-facing reason labels, trust badges, risk badges, and next safe actions so suggestions can be declined, reported, or moved toward consent without exposing exact wishes.
terms_complete
The action, reciprocal request, duration, exit rule, and verification method are present.
baseline_stated
The no-trade default is explicit enough for counterfactual review.
baseline_credibility
The no-trade default includes prior intent, history, dated support, or another reviewable counterfactual basis.
baseline_challenge_recommended
The baseline is stated but thin enough that reviewers should request prior-intent or past-behavior support before reliance.
evidence_rule_named
The draft names the receipt, log, attestation, provider record, audit, or manual review path.
participant_relative_scores
Importance scores are treated as user-stated thresholds, not platform rankings.
party_relative_benefit
The draft explains why each side is better off than the no-trade baseline using participant-relative priorities.
externality_review_required
The draft may affect unrepresented people, political-adjacent claims, incentives, or vulnerable parties.
privacy_safe_preview
Match explanations can use broad cause areas, format, verification preferences, and redaction notes.
human_review_required
A reviewer must inspect safety, evidence, baseline, externality, or disclosure concerns before reliance.
cause_area_overlap
A redacted match signal found broad cause-area overlap without exposing exact wishes or private text.
cause_area_complementarity
One side's broad offered cause area can satisfy the other side's broad requested cause area without exposing exact wishes.
trade_mode_compatible
Both redacted profiles support at least one compatible trade format.
verification_preference_compatible
Both redacted profiles support at least one compatible evidence or verification preference.
location_constraint_satisfied
Any declared city or region sensitivity is satisfied at a coarse, privacy-safe level.
privacy_stage_compatible
Both sides are still inside the same consent-gated disclosure stage.
stated_exclusions_clear
The redacted match signal did not find a conflict with either side's stated exclusions.
Match signal contract
The matching contract uses only broad cause areas, trade modes, verification preferences, location sensitivity, privacy stage, and stated exclusions. It never infers hidden preferences or authorizes disclosure, contact, reliance, or state changes.
Match signal moral-trade-match-signal-contract-v0.3-2026-06
9 check(s), 0 blocker(s), 9 factor code(s).
POST /api/moral-trade/match-signal/evaluate returns redacted factor codes, blockers, confidence band, participant explanation copy, redacted fields, and humanReviewRequired with stateMutation false.
You are seeing this suggestion because public cause areas, trade mode, and verification preferences are compatible. Exact wishes and contact details are still hidden.
Match invariant
Use only redacted profile fields: cause areas, trade modes, verification preferences, location sensitivity, privacy constraints, and stated exclusions.
Match invariant
Do not infer protected traits, ideology, psychology, hidden preferences, exact private wishes, raw notes, or contact details.
Match invariant
A matchable signal is only a preview and always requires human review before disclosure, contact, reliance, or state changes.
Match invariant
Factor codes must include cause overlap or complementarity, trade-mode compatibility, and verification compatibility before matchable status.
Match invariant
Privacy-safe preview requires compatible privacy stages, an explicit disclosure stage, a privacy policy id, and named redacted fields.
Challenge appeal contract
The challenge lane is now a validator-backed contract. It separates affected-party standing, duplicate proof, coercive baselines, wrong-scope evidence, privacy disclosure errors, externality remedy gaps, reviewer conflicts, and policy flags before any human-controlled state change.
Challenge appeal moral-trade-challenge-appeal-v0.2
9 check(s), 0 blocker(s), 8 trigger(s).
POST /api/moral-trade/challenge-appeal/evaluate returns scoped factor codes, standing checks, required artifacts, privacy actions, provenance activity, and stateMutation false. Requested outcomes are advisory and must match the appeal trigger before reviewers can route them.
Appeal invariant
Appeals target only the specific reviewed claim, evidence row, baseline concern, disclosure decision, externality trigger, completion state, or policy flag.
Appeal invariant
Appeals do not reopen unrelated moral disagreements by default and do not create platform-wide moral rankings.
Appeal invariant
Participant, counterparty, affected-party, reviewer, admin-safety, and external-verifier standing are explicit; affected-party standing needs a privacy-safe summary.
Appeal invariant
Externality remedy appeals must name the remedy gap before reliance, completion badges, or public reputation claims proceed.
Appeal invariant
Requested outcomes are advisory and must be compatible with the appeal trigger before reviewers can route them.
Appeal invariant
Private details, exact wishes, contact data, raw notes, and sensitive constraints are redacted before reviewer routing.
Appeal invariant
Every challenge or appeal packet names a provenance activity, traceability step, reason codes, and human reviewer scope.
Appeal invariant
Safety blocking, matching disclosure, reviewed completion, and dispute resolution remain human-controlled.
Disclosure grant contract
The privacy model is no longer only dashboard prose. Broad previews, exact wishes, source summaries, constraints, verification preferences, and contact details are mapped to explicit access levels, audience stages, redactions, owner approval, and non-mutating evaluation.
Disclosure grants moral-trade-disclosure-grants-v0.1
10 check(s), 0 blocker(s), 9 field boundary(s).
POST /api/moral-trade/disclosure/evaluate returns allowed fields, denied fields, privacy actions, expiry window, ownerApprovalRequired, and stateMutation false.
cause_areas
Broad cause areas and high-level interests only.
registry stage, max broad access.
exact_wish
The exact change someone hopes a counterparty might help with.
consent stage, max specific access.
exact_ask
The concrete ask being considered for this match.
consent stage, max specific access.
capabilities
Resources, skills, or commitments the profile owner says they can offer.
consent stage, max specific access.
constraints
Constraints that could rule out a proposal or require extra care.
consent stage, max specific access.
verification_preferences
Evidence or attestation preferences for a possible agreement.
consent stage, max specific access.
coarse_location
Coarse location only, never precise address or live location.
registry stage, max broad access.
source_summary
Manual source summaries, excluding raw notes and source payloads.
consent stage, max specific access.
contact_email
Contact details for a mutually approved introduction.
introduced stage, max contact access.
Review workflow contract
The report recommends replacing prose-heavy pages with instrumented workflow cards. This contract publishes the card keys, factor-code requirements, next-step rules, and non-ranking invariants used by offer details, worked examples, marketplace listings, and the homepage preview.
Review workflow moral-trade-review-workflow-v0.2-2026-06
8 check(s), 0 blocker(s), 6 card contract(s).
POST /api/moral-trade/review-workflow/evaluate returns deterministic workflow cards and marketplace factors with stateMutation false.
What would you do if this trade did not happen? Be concrete. Mention your current intention, prior behavior, or any evidence that makes your baseline credible.
current_status
Expose whether a record is live, example-only, blocked, or still under review.
action_evidence
Show whether each factual action claim has a named reviewable proof method.
baseline_confidence
Keep factual proof separate from the no-trade baseline and counterfactual trust problem.
externality_review
Name third-party harm, perverse-incentive, and unrepresented-value review before reliance.
participant_relative_scores
Display stated priorities without turning them into an objective platform ranking.
appeal_scope
Limit appeals to the claim, evidence row, baseline concern, disclosure decision, or policy flag under review.
Reasoning packet contract
Public packets are derived from canonical worked examples and expose only structured summaries, cited evidence rows, step-by-step decision gates, uncertainty flags, reviewer scope, factor codes, and the next human-controlled step. The packet route is validator-backed, supports the same public status filters as the Reasoning Center, and does not export live private offers.
Reasoning packets moral-trade-reasoning-packets-v0.3-2026-05
10 check(s), 0 blocker(s), 5 public packet(s).
The packet API accepts the same status facet as the Reasoning Center, for example /api/moral-trade/reasoning/packets?status=needs-evidence.
Packet invariant
Packets expose only structured summaries, cited evidence rows, uncertainty flags, reviewer scope, factor codes, and required next steps.
Packet invariant
Packets publish step-by-step decision gates with pass, needs_input, human_review, or blocked statuses before any public reliance.
Packet invariant
Packets must not expose chain-of-thought, private wish text, contact details, raw source notes, or autonomous outreach fields.
Packet invariant
Packets must preserve no_global_moral_ranking and participant-relative language.
Packet invariant
Packets are derived from canonical worked examples; live private offers are not exported.
Packet invariant
Every packet links to a worked example page and public contract sources.
Copilot contract
The copilot role is limited to drafting, critique, explanation, evidence checklists, and reviewer summaries. It cannot rank moral value, contact counterparties, consume raw private feeds, or change proposal state when output validation fails.
Contract moral-trade-copilot-v0.1.3-2026-06
12 check(s), 0 blocker(s), 8 fixed verification step(s).
validateMoralTradeCopilotOutput rejects matchable output unless every blocking verification step has status pass.
schema_completeness
Blocks matchable status until resolved.
anti_threat
Blocks matchable status until resolved.
baseline_credibility
Blocks matchable status until resolved.
evidence_sufficiency
Blocks matchable status until resolved.
externality_trigger
Routes or explains without changing state.
privacy_redaction
Blocks matchable status until resolved.
match_explanation
Routes or explains without changing state.
human_review_routing
Routes or explains without changing state.
Rollout readiness
Status pass; 4 required signal(s), 2 allowed task(s), 0 blocker(s).
Rollout readiness
Status blocked; 7 required signal(s), 3 allowed task(s), 3 blocker(s).
Rollout readiness
Status blocked; 8 required signal(s), 3 allowed task(s), 3 blocker(s).
Operations contract
The core feature now publishes the operating controls that were previously scattered across code and policy pages: security headers, private-cache rules, abuse throttles, privacy/session controls, email-outbox safety gates, retention lifecycle boundaries, observability metrics, safe fallbacks, and rollout gates.
Operations moral-trade-operations-v0.3-2026-05
8 check(s), 0 blocker(s), 9 operational test hook(s).
deterministic_manual_fallback
If copilot, provider, or evidence tooling fails, keep deterministic validation and manual review available.
invalid_copilot_output_no_state_change
Invalid or timed-out copilot output must not publish, match, disclose, or complete a proposal.
provider_timeout_no_state_change
Provider or payment/evidence timeouts remain pending or manual-review states.
unsafe_email_no_provider_send
Core Moral Trade email outbox rows with contact details, exact offer terms, payment amounts, agreement or payment identifiers, evidence, raw source notes, or private wish markers are marked suppressed before provider send.
replay_safe_state_transitions
State transitions should be idempotent, auditable, and safe to retry.
Performance contract
The report flagged repeated loading states, route failure recovery, and unspecified Web Vitals, API latency, cache, and bundle strategy. This profile turns those into public targets, privacy-safe telemetry boundaries, and release gates.
Performance moral-trade-performance-v0.4-2026-06
8 check(s), 1 blocker(s), 7 metric target(s), cadence weekly internal monthly public aggregate.
Status fail; 11/13 route(s) covered, recovery ratio 0.8462.
instrument_before_optimize
Do not claim performance readiness from design intent alone; publish measurement coverage first.
public_route_resilience
Do not expand public acquisition until core public routes have retry/recovery affordances and build-manifest coverage.
privacy_safe_telemetry
Do not store performance telemetry that includes raw private wishes, source notes, contact details, or unredacted query strings.
Performance non-claim
Moral Trade does not claim verified Core Web Vitals pass status until route-level samples are collected and published in aggregate.
Performance non-claim
Moral Trade does not claim all loading states are optimized; generic fallbacks are tracked as route-resilience debt.
Performance non-claim
Moral Trade does not claim production API latency targets are met without current server-timing or provider metrics.
Performance non-claim
Moral Trade does not claim performance telemetry can include raw private wishes, source notes, contact details, or unredacted query strings.
Security contract
The report flagged encryption details, 2FA, device/session review, key management, and abuse throttling as unspecified. This profile publishes what is implemented, what is a provider boundary, and what must be ready before sensitive scale.
Security moral-trade-security-v0.3-2026-06
7 check(s), 0 blocker(s), 3 scale gate(s).
Public non-claim
Moral Trade does not claim custom field-level encryption for every private Moral Trade table; background-networking sensitive text has a separate versioned keyring control.
Public non-claim
Moral Trade does not claim the app-level MFA/2FA admin gate replaces provider-console MFA, device inventory, session revocation, or key-rotation evidence.
Public non-claim
Moral Trade does not claim a completed key-rotation program until provider rotation records are published.
Public non-claim
Moral Trade does not claim 24/7 staffed security operations or zero incidents; incident summaries stay aggregate and privacy-redacted.
Public non-claim
Moral Trade does not claim zero security risk; public health endpoints expose blockers instead.
Incident response contract
The report flagged incident response as a scale prerequisite. This profile publishes the public incident lane: intake channels, severity SLAs, containment phases, affected-participant notices, aggregate public updates, validator backlog updates, and privacy-safe non-claims.
Incident response moral-trade-incident-response-v0.1-2026-05
9 check(s), 0 blocker(s), 3 readiness gate(s).
affected_participant_notice_required
SEV0 and SEV1 incidents require affected-participant notice unless doing so would increase harm or conflict with law.
public_aggregate_only
Public reporting uses counts, category, severity, status, and remediation class; raw private records stay redacted.
no_private_details_in_public_postmortem
Do not publish private wishes, source notes, exact contact details, payment secrets, hidden reviewer notes, or raw provider payloads.
validator_blockers_linked
If the incident exposed a contract gap, link the public blocker, test, or scale gate that now tracks the fix.
human_review_before_reopening
Affected matching, disclosure, completion, payment, or trust-badge paths reopen only after human review confirms containment.
Incident non-claim
Moral Trade does not claim 24/7 staffed security operations.
Incident non-claim
Moral Trade does not claim zero incidents or zero residual security risk.
Incident non-claim
Moral Trade does not publish raw private wishes, source notes, contact details, payment secrets, or provider payloads in public incident summaries.
Incident non-claim
Moral Trade does not treat incident-response publication as proof that MFA, device/session review, key rotation, or field-level encryption are complete.
Evaluation contract
The report recommends measuring whether protocol and copilot workflows actually help. This profile names the metrics, privacy boundaries, cohort slices, and promotion gates required before assisted workflow changes can scale.
Evaluation moral-trade-evaluation-v0.3-2026-05
7 check(s), 0 blocker(s), 13 metric(s), cadence monthly public aggregate.
Status pass; 20 eligible, 9 surfaced, overall rate 0.45; 2 reviewed deviation(s), 0 unreviewed.
Status pass; current period 2026-05, previous period 2026-04, blockers 0.
The validator includes a sample-audits check so fairness, UX, and workflow quality audit code must execute successfully before the evaluation contract reports pass. Material surfacing parity deviations need a redacted review-log entry before they count as reviewed.
Status pass; blocked precision 0.9167, false match rate 0.15, human overrule rate 0.2222, reason coverage 1.
shadow_mode
Collect metrics while copilot advice is ignored for live decisions.
assist_mode
Allow field prefill and factor-code suggestions only if privacy incidents stay at zero and overrule reasons are reviewed.
guarded_automation
Automate only missing-field detection, explanation rendering, and evidence-checklist drafting after public metrics meet or explain targets.
human_controlled_decisions
Safety blocking, matching disclosure, reviewed completion, and dispute resolution remain human controlled.
Externality contract
Externality review is not a vague warning label. Material triggers require affected-party standing, remediation paths, privacy-safe reporting, human approval, and relevant source standards before reliance.
Externality moral-trade-externality-v0.2-2026-05
7 check(s), 0 blocker(s), 8 trigger code(s).
unrepresented_third_party
Trigger review when a trade materially affects people who are not participants.
vulnerable_party_pressure
Trigger review when a paid action, disclosure, or pledge may pressure a vulnerable person or group.
political_or_campaign_adjacent
Trigger review for political-adjacent proposals and block direct campaign contribution offsets elsewhere.
paid_action_pressure
Trigger review when compensation could distort voluntariness, labor conditions, or baseline incentives.
labor_or_supply_chain
Trigger review when a proposal makes ethical-trade, sourcing, labor, or supplier claims.
recipient_or_destination_risk
Trigger review when money, action, or reputation flows to an organization with contested governance or harm risks.
environment_or_community_impact
Trigger review when a project may affect local communities, pollution, land, animals, or ecosystems.
perverse_incentive
Trigger review when the trade may reward newly escalated or strategically worsened behavior.
AI governance contract
The report says any move beyond deterministic rules must be documented with model cards, dataset datasheets, benchmark slices, fairness audits, and human-control gates. This profile keeps that requirement explicit before any ranking or scoring layer can be promoted.
AI governance moral-trade-ai-governance-v0.2-2026-05
11 check(s), 0 blocker(s), decisioning mode deterministic rules with schema bound copilot, 6 sample documentation packet(s).
schema_bound_drafting
Drafting may normalize user text into approved proposal fields without inventing facts or evidence.
missing_field_detection
Automation may flag missing required fields and ask clarification questions tied to those fields.
factor_code_explanation
Automation may render explanations only from deterministic factor codes and approved redaction rules.
evidence_checklist_drafting
Automation may draft checklists of observable artifacts without deciding that evidence is sufficient.
reviewer_summary_drafting
Automation may summarize records for reviewers while preserving uncertainty and unresolved flags.
API contract
The core Moral Trade API surface is now cataloged with method, auth posture, privacy class, schema names, rate-limit surface, cache behavior, and safe fallback rules.
API moral-trade-api-contract-v0.24-2026-06
29 check(s), 2 blocker(s), 55 route(s), 79 schema definition(s).
Schema registry moral-trade-schema-registry-v0.2-2026-05
9 check(s), 0 blocker(s), 12 public schema document(s), including the core data-model and public offer listing schemas; 8 public payload sample(s) checked, 0 sample failure(s).
Field-level schema
No request body or query contract beyond route path and auth context.
No body fields.
Field-level schema
Public collection query parameters for browsing live offers and worked examples without exposing private/personally scoped state.
Field-level schema
Public validator-backed collection payload for live offers and worked examples, including visible facets, default-tab behavior, non-claims, and public listing items.
Field-level schema
Public offer detail slug path for a live public offer id or worked-example slug.
Field-level schema
Validator-backed public detail payload for one live offer or worked example, with sign-in/consent-gated actions and non-claims.
Field-level schema
Public facet query parameters for the current tab/search scope without pagination.
moral_trade_health
Return ok:false with validator blockers; never silently claim readiness.
moral_trade_api_contract
Return API contract validator blockers, implementation audit, route catalog, schema definitions, privacy classes, and test hooks; never expose private participant records.
public_offers_collection
Return filtered worked-example and live listing payloads, visible facets, validator blockers, and zero-live guidance; never expose private wishes, contact details, raw evidence artifacts, personalized saved-offer state, or global moral ranking.
public_offer_detail
Return a validator-backed public listing detail or 404 blockers; never expose contact details, private wishes, raw evidence artifacts, personalized saved-offer state, or agreement formation claims.
public_offers_facets
Return positive-count public facets, current default-tab behavior, and validator blockers; never expose zero-count private-sensitive facets or personalized browse state.
saved_search_create
Require viewer authentication to store a saved search; unauthenticated requests return a sign-in draft without storage. Never expose private wishes, contact details, raw source notes, personalized saved-offer state, autonomous outreach, or platform moral ranking.
Provenance
This does not prove moral correctness. It does make each claim easier to audit: what artifact was submitted, what activity changed state, and which participant, reviewer, or provider was involved.
proposal_record, offer, agreement, evidence_artifact, external_entity_reference, review_decision, match_explanation, match_signal, traceability_event
draft_created, draft_updated, evidence_submitted, traceability_event_recorded, risk_screened, challenge_window_opened, review_completed
participant, counterparty, operator, external_reviewer, payment_or_evidence_provider
Evidence object contract
The provenance layer uses fixed object schemas so duplicate proof, wrong-scope evidence, stale artifacts, missing agents, external entity dedupe failures, and external payment or charity-routing events without what/where/why links can be caught, while state transitions carry immutable event hashes before any reviewed completion claim is published.
Provenance contract moral-trade-provenance-v0.3
6 check(s), 0 blocker(s), 1 synthetic traceability event(s).
1 artifact, 1 claim, 1 review decision, 3 agents.
9 owner-scoped table(s) persist artifacts, claims, agents, activities, external references, traceability events, and state transitions.
provenance_agent
owner_insert_public_or_owner_read
evidence_artifact
owner_insert_public_or_owner_read
evidence_claim
owner_insert_public_or_owner_read
evidence_claim
owner_insert_public_pair_read
external_entity_reference
owner_insert_public_or_owner_read
review_decision
owner_insert_public_or_owner_read
evidence_artifact
evidence_claim
external_entity_reference
review_decision
match_signal
traceability_event
state_transition_event_record
provenance_activity
provenance_agent