A guardrail that fails blocks the turn: it ends with status BLOCKED, naming the guardrail and its reason, and the conversation stays usable. No factory throws: an invalid argument (a negative length, a null pattern) gives a guardrail that the agent's build() refuses with a failed result naming the argument.
Text that contains no word of the built-in word list, compared without regard to case. The list is deliberately minimal: use it as an example of a word filter, not as a production profanity list.
Text that contains no word of the built-in word list, compared without regard to case. The list is deliberately minimal: use it as an example of a word filter, not as a production profanity list.