UsageFlushScheduler was a @Component with @ConditionalOnBean, but ClickHouseUsageTracker is created via @Bean — component scan runs first, so the condition always evaluated false. Events accumulated in the WriteBuffer but flush() was never called. Moved scheduler to @Bean in StorageBeanConfig with the same @ConditionalOnProperty guard as the tracker. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>