1d7e2a0f8b
Validate AddComment up-front (IsNullOrWhiteSpace guard + Warning log) so a blank-comment command is cleanly rejected before reaching the engine rather than faulting inside ApplyAddComment and being silently swallowed by the outer catch. Mirrors the existing TimedShelve missing-UnshelveAtUtc pattern. Also fix two stale inline comments: the "async void crash" note on TimedShelve now correctly says "fault escaping async Task → supervision restart", and the ownership-filter now documents the benign race with a concurrent LoadAsync clearing the loaded set. Tests: AlarmCommand_add_comment_empty_text_is_rejected_not_driven (Theory — empty string + whitespace) and AlarmCommand_add_comment_nonempty_drives_engine (positive path, asserts CommentAdded transition on alerts topic).