Pass the moderation gate
Know what the pre-live gate extracts, how Jev decides, and what blocks do.
Every deploy passes the pre-live gate before it serves anything. A blocked deploy keeps its commit and keeps serving the previous version.
Expect extraction from these sources
- Expect
oxcstring extraction: strings of 2+ copy-like letters; imports, URLs, CSS, comments, and identifiers stay skipped. - Cover
.html,.md, and.txtfiles. - Cover JSON strings under
public/plusmanifest.webmanifest. - Cover SVG text nodes.
- Cover SQL string literals in migrations and seeds.
- Cover prerendered
dist/HTML. - Cover the slug plus app name.
Respect extraction caps and dedup
- Stay under 3000 files, 256 KiB per file, and 8 MiB of text.
- Expect larger inputs to block as
too_large_to_review. - Hash each chunk with sha256 and skip chunks already cleared for the app.
- Treat only new text as reviewable.
Predict the Jev decision
New chunks go to Jev (typesafe/jev-1.14.0):
| Signal | Result |
|---|---|
profanity ≥ 0.5 |
Block as profanity. |
minors > 0.3, phishing > 0.9, or round(severity) == 3 |
Block as harmful, plus admin queue. |
hate ≥ 0.5 |
Record for the admin queue; never blocks. |
Mild words pass. The classifier reads masked spellings, leetspeak, and other languages itself.
Handle blocks and failures
- Read each finding as
{path, line, excerpt, category, signal, score}with auser_message. - Quote the excerpt verbatim (the chunk’s first 100 characters, unmasked).
- Relay
user_messageverbatim to the person. - Fix flagged lines and commit again; a block counts as a code change and never becomes a rollback target.
- Expect brand fragments (
paypal,apple,bank,login, whole or embedded) refused at claim time. - Expect fail-closed
review_unavailablewhen Jev is down; localhost dev without the Cloudflare pair passes with a warning. - Offer no self-serve override; there is no appeal tool. Relay
user_messageverbatim instead of inventing a workaround.
Respect after-live enforcement
- Expect an after-live crawl of rendered pages after each deploy; new chunks re-enter the gate.
- Expect flagged apps to land in the admin moderation queue; an admin can hold or suspend the app, and suspension stops its fleet.
- Relay hold and suspend messages verbatim.
For the person-side walkthrough, see Follow the content rules.