- check(text, llm_signal) -> SafetyResult: normalisation (ё, homoglyphs, translit, repeats), stem regexes per category, negation window (acute -> possible only), weapon+risk combination, final level = max(lexicon, llm) - crisis_reply(categories, audience) loads config/texts/crisis.yaml (patient/family, domestic violence and harm-to-others variants) - 99-phrase eval set; acute recall 100%, < 5 ms per message Refs #4 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
One Postgres with isolated identity/clinical databases and roles (ADR-003), FastAPI /health, Streamlit placeholder, typed settings with offline defaults. Refs #1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>