Telegram inline keyboard callbacks must NEVER use query.edit_message_text() — it replaces/destroys

Telegram inline keyboard callbacks must NEVER use query.edit_message_text() — it replaces/destroys the original message, breaking conversation flow. Correct pattern: (1) query.edit_message_reply_markup(reply_markup=None) to remove keyboard from original, (2) context.bot.send_message() to send results as NEW message below. Use _send_new() helper pattern. External handlers (e.g., approval callbacks) need context param passed through. Menu options should fetch+display real data via DB queries, not stub “Use /command” text. Applied in /opt/infra/cios-notify/handlers/callbacks.py (full rewrite), mutation_confirm.py, approvals.py.