HSTS, CSP, and browser security headers
implementedSecurity headers are configured at the app edge; CSP is currently report-only.
Safety
Moral Trade should make serious cooperation easier without rewarding coercion, harassment, manipulation, or unsafe background networking.
Safety review starts with the no-trade baseline: what would each participant do absent the trade? Proposals involving threat creation, newly escalated harmful behavior, or coercive compensation requests should be rejected or sent to challenge review.
Read anti-threat baseline rulesThe platform should reject or review proposals involving violence, illegal acts, fraud, extortion, doxxing, harassment, exploitation, or pressure on vulnerable people.
Public health endpoints expose whether the security, disclosure, challenge-appeal, incident-response, performance, and AI-governance contracts pass their current validators. Safety claims should stay tied to these checks rather than implying hidden automation, escrow, or unrestricted reviewer authority.
Security posture contract
The security profile names browser headers, private cache rules, Supabase session boundaries, provider encryption assumptions, admin-scale gates, key-rotation gates, abuse throttles, and incident reporting. It also says what the pilot does not yet claim.
Security headers are configured at the app edge; CSP is currently report-only.
Authenticated and sensitive routes, including private match rooms and saved-user surfaces, should not be cached as public pages.
Authentication is cookie-backed through Supabase.
Encryption-at-rest is a provider-boundary control unless a field-level encryption control is explicitly published.
Provider encryption, RLS, redaction, cache, and consent controls still protect non-background private tables unless a table-specific field-encryption control is published.
Background-networking exact wishes, sensitive constraints, private source notes, connector consent notes, and deterministic synthesis summaries use app-level field encryption with versioned key ids and rotation support.
Secrets must stay in deployment/provider secret stores and never be copied into public docs or client bundles.
Operator consoles and review mutations require an allowlisted admin account with an active authenticator MFA session.
Participants can inspect the current background-networking session window and revoke other active Supabase sessions from the dashboard.
Contact-level introductions require an explicit disclosure stage and MFA step-up before contact details can be released.
Sensitive admin scale requires provider-level device inventory and anomalous-session review evidence in addition to participant session revocation.
Paid-action or trust-badge scale requires provider secret/key rotation records and rollback notes; background field encryption exposes its own versioned keyring boundary.
Abuse-prone surfaces are rate-limited and must fail safely.
Incident intake, response phases, public aggregate disclosure rules, and non-claims are validator-backed; this does not complete MFA, key rotation, device/session review, or field-level encryption.
Operations contract
The operations profile names the platform controls that were previously unspecified in public materials: HTTP security headers, private no-store routes, rate-limit surfaces, session/privacy controls, retention lifecycles, observability metrics, and safe fallback behavior.
Operational telemetry is framed as counts, route health, latency, Web Vitals, privacy incidents, fallbacks, and review SLAs rather than raw wishes or source notes.
25 surfaces, including public contract read (240/1 minute), signup (5/15 minutes), login (8/15 minutes), offer create (8/15 minutes), privacy access request (12/1 day), match concierge request (10/1 day), offer comment (12/15 minutes), offer collection read (120/1 minute).
account profile lifecycle, private wish source lifecycle, evidence provenance lifecycle, payment donation reference lifecycle, analytics attribution lifecycle, notification delivery lifecycle, data right request lifecycle.
Expansion is blocked unless the named controls are implemented or consciously held at a provider boundary. This keeps sensitive admin, paid-action, and trust-badge scale from outrunning the current security evidence.
Do not expand sensitive admin access until MFA, device/session review, key rotation, and incident-response evidence are ready.
Requires two factor admin gate, device session review gate, key rotation gate, incident response reporting.
Do not expand paid-action volume until provider/security boundaries, key rotation, incident response, and abuse throttles are documented.
Requires platform abuse throttling, provider encryption at rest, server only secret management, key rotation gate, incident response reporting.
Do not expand public trust badges unless private cache, authenticated session, abuse throttling, and incident reporting remain verifiable.
Requires private no store cache, supabase auth cookies, contact disclosure mfa step up, platform abuse throttling, incident response reporting.
The current prototype does not run autonomous AI outreach, mass profile ingestion, or private-feed search. Matching is limited to explicit fields, broad previews, saved searches, and manual source notes so the first version stays legible enough to audit.
No surprise exposure. No autonomous outreach. No private-feed mining.
The safety problem is not solved by either full openness or total opacity. Broad previews, review queues, match reports, and risk signals try to preserve enough oversight to investigate suspicious activity without exposing every participant's exact wishes to the public by default.
Participants can record verification evidence, counterproposals, cancellation requests, and disputes on agreements. These records make review possible but do not replace professional legal or financial advice.
Reports, payment-review requests, failed notifications, and blocked wish profiles are routed to an admin console so operators can inspect problems before they become public or affect counterparties.
Match suggestions should reveal broad reasons first. Exact asks, identities, and contact details should be shared only after both sides consent.