How cross-context safety signals work
Turtini's platform safety is a *mesh*, not a chain of disconnected surfaces. Every safety surface — image moderation, contraband product-text scan, fraud blocks, code bundle scanner, conduct monitoring, SAM contact risk — publishes a canonical SafetySignal that every other surface can subscribe to.
Why a mesh:
• A bad actor who's been rejected from one shared-space join doesn't get a fresh slate when they try a different space the next day. The same signal stops them.
• Repeated image rejections (≥3 in 90 days) auto-escalate to a strong negative signal — predator detection without manual review of every reject.
• An account merge follows the signals: if a previously-banned uid is absorbed into a fresh-looking account, the signals are rewritten onto the surviving uid. You can't shed your record by merging.
How signals are subject-canonicalized:
• When a signal is published with an email/phone identity (not a uid yet), the system resolves it through the Identity Graph to find the canonical user.
• Then it follows `mergedInto` so any signal for an absorbed uid posts against the surviving uid directly.
Automatic effects of safety signals:
• **Shared space join gate** — the moment a user is added to a shared space, the platform assesses their signal record. Strong predator signals → membership auto-deleted and a record written to `groups/{spaceId}/blockedJoinAttempts/{uid}`. Mid-tier signals → membership kept but flagged `requiresReview: true` so the space owner decides.
• **Cross-space pattern sweep** — nightly, any user who joined ≥3 unrelated shared spaces in ≤7 days raises a `cross_space_pattern` flag for admin review. This is the textbook predator-discovery pattern.
• **Trust score deductions** — penalty-tier signals on subjects who are also org owners deduct from the org's Trust Score.
What signals are NOT:
• Not user-visible. Penalties, fraud signals, and image-rejection patterns are admin-only — they don't appear on the user's account page. Positive signals (verified docs, completed KYB) are shown to the user.
• Not the moderation queue. Signals are the machine-readable coordination layer; moderationQueue is where humans approve/reject content. Signals capture the event; the queue captures the decision.
Privacy: signals are server-only writes, admin-only reads. Org owners can't see another org's safety signals; only platform admins can see the Signal Trail.