diff --git a/Directory.Packages.props b/Directory.Packages.props
index 25c51077a..6f8957b14 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -7,7 +7,7 @@
1.5.70
0.7.0
1.17.0
- 0.17.10
+ 0.17.11
3.20.1
5.0.7
10.8.3
diff --git a/src/Netclaw.Actors.Tests/Reminders/ReminderManagerActorTests.cs b/src/Netclaw.Actors.Tests/Reminders/ReminderManagerActorTests.cs
index 5561049f7..2faf0c321 100644
--- a/src/Netclaw.Actors.Tests/Reminders/ReminderManagerActorTests.cs
+++ b/src/Netclaw.Actors.Tests/Reminders/ReminderManagerActorTests.cs
@@ -604,9 +604,18 @@ await manager.Ask(
TimeSpan.FromSeconds(30),
TestContext.Current.CancellationToken);
- Assert.Contains(sink.Alerts, alert =>
- alert.Category == AlertType.ReminderSchemaDropped
- && alert.Summary.Contains(reminderId, StringComparison.Ordinal));
+ // Keep the Ask as the startup barrier (it absorbs dispatcher
+ // scheduling latency under parallel CI load), but poll the sink
+ // instead of trusting a one-shot post-Ask read: the health reply
+ // proves PreStart completed, not that the alert reached the sink.
+ // This test has flaked on CI twice (#1405, #1844) with an empty
+ // sink immediately after a successful Ask reply.
+ await AwaitAssertAsync(() =>
+ {
+ Assert.Contains(sink.Alerts, alert =>
+ alert.Category == AlertType.ReminderSchemaDropped
+ && alert.Summary.Contains(reminderId, StringComparison.Ordinal));
+ }, duration: TimeSpan.FromSeconds(30), cancellationToken: TestContext.Current.CancellationToken);
}
///