The Slack Block Kit payload dump and the nested-attachment text budget are both fed to the agent, and trajectory_compressor's summarizer input becomes training data; all three still used the imitable bare "... [truncated]" idiom. Route them through elide()/elide_middle() with module-level imports and extend the no-idiom invariant to scan plugins/platforms/slack and trajectory_compressor.py. Co-authored-by: salch-cred <salch-cred@users.noreply.github.com>