QA re-tested the previous batch and rejected warn-but-still-process for 11 bugs
(021, 023-027, 035, 040, 041). The tools kept returning a confident answer — a
tone for "123456789", 100% plagiarism for "@#$%", a paragraph invented from
{"name":"John"} — with the caution alongside it.
The line QA drew: warning is fine where the output is a transformation the user
can judge (paraphrase, summarize — both marked Solved), but not where the tool
emits a verdict or invented content. Those now return 422 with an actionable
message instead of a result:
- tone: refuses digits/emoji-only and JSON/code
- plagiarism: refuses when either field has no words
- grammar: refuses code and JSON, whose "corrections" corrupt the input
- co-writer: refuses digits/emoji/symbols-only and JSON
Paraphrase and summarize keep the advisory unchanged.