Binary read of ctx.obscenity_hits (G.0 lexical counter): * detected — obscenity_hits ≥ 1 * none — zero hits Skip below FRUST_VENT_MIN_TYPED_CHARS (30). Confidence hard-capped at 0.5: 0.40 when detected, 0.50 only when cleanly absent over ≥ 200 typed letters, 0.30 otherwise.