By this point the fleet was fully manageable from the admin tier — and completely invisible from the place people actually read: the conversation itself. A reader in a channel with a bridge in it had no way to know a machine was there.
The expensive way to answer that was measured before it was written. The obvious implementation asks “does this channel contain agent messages?” per page view. The query plan for that is a full table scan — against nearly twenty thousand agent messages on the busiest production channel, to render one line of text. The available indexes do not help.
⚠ And deriving it from the loaded window would have been worse than expensive — it would have been wrong. The thread paginates. Agent messages five hundred back set no header, so the reader scrolls up, meets the glyphs anyway, and lands in exactly the unexplained state the header existed to prevent. The hole moves rather than closing, which is the failure mode that looks like a fix.
So the answer is stored rather than derived, and the surface carries a rule of its own: put no operator-controlled free text on a reader’s page. The header is a constant string, the glyph is an icon, the note is a constant string.