A bridge created by mistake was permanent, and so was its account binding. It was found by doing rather than by reading — during an unrelated smoke, not in any review.
The bridge holds a unique channel edge, so that channel could never be bridged again. A fence correctly refuses to delete or suspend the bound bot user. And nothing could unbind them, because the rebind route only ever moves a binding it cannot remove. Every piece is correct in isolation — the deadlock exists only in composition, which is exactly why no single-file review ever found it.
⭐ The first framing of the fix was wrong, and the operator caught it. It read “no route deletes an agent” and proposed inventing retirement. Archive already existed — the status enum has carried it since the schema was written, the service revokes every active key atomically inside a transaction, and the supervisor already skips any non-active agent, so an archived bridge really does stop on the next poll.
So this phase built no new mechanism. Archive is simply bridge-unaware. It releases what every agent has and nothing of what only a bridge has: the channel edge, the bot-user binding, the gate port, the on-disk key. That is a far smaller and more precise phase than the one nearly written — and a standing reminder to look for the existing verb before inventing one.
⚠ Two amendments to its own summary, made during verification rather than left to stand: “it does the hard part correctly” is true of the transaction and not of the record, because it wrote no audit row at all; and “builds no new mechanism” survives for the database work and not for the filesystem, since releasing an on-disk key is a different machine’s job rather than a different step.