Wednesday night. Six variants back from the model, gate time.
Write voice_gate(variants, pack) returning a list of
(id, verdict) tuples, one per variant, in order. Checks run in
priority order — first failure wins, later checks don't run:
- Any banned phrase in the lowercased text ->
"KILL (banned: <phrase>)"(first banned phrase in pack order) - Any
"!"->"KILL (exclamation)" - Longest sentence over
pack["max_sentence_words"]->"KILL (long sentence: <n> words)". Sentences: non-empty pieces after splitting on[.!?]+; words: whitespace split. len(text)over the channel's budget inpack["max_chars"]->"KILL (over-limit by <n>)"- Otherwise ->
"SHIP"
Expected output:
V01: SHIP
V02: KILL (banned: unleash)
V03: KILL (exclamation)
V04: KILL (over-limit by 15)
V05: KILL (long sentence: 24 words)
V06: SHIP