The agent now sets cameleer.exchangeId in MDC (persists across processor executions, unlike Camel's camel.exchangeId which is scoped to MDCUnitOfWork). For ON_COMPLETION exchange copies, the agent uses the parent's exchange ID. Server changes: - ClickHouseLogStore ingestion: extract exchange_id preferring cameleer.exchangeId, falling back to camel.exchangeId - ClickHouseLogStore search: match exchangeId filter against exchange_id column OR cameleer.exchangeId OR camel.exchangeId in MDC - Update CLAUDE.md with log exchange correlation documentation Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>