diff --git a/src/ZB.MOM.WW.MxGateway.Tests/Contracts/ProtobufContractRoundTripTests.cs b/src/ZB.MOM.WW.MxGateway.Tests/Contracts/ProtobufContractRoundTripTests.cs
index f35fe70..4eb3061 100644
--- a/src/ZB.MOM.WW.MxGateway.Tests/Contracts/ProtobufContractRoundTripTests.cs
+++ b/src/ZB.MOM.WW.MxGateway.Tests/Contracts/ProtobufContractRoundTripTests.cs
@@ -1332,6 +1332,56 @@ public sealed class ProtobufContractRoundTripTests
Assert.Equal(kind, parsed.Kind);
}
+ ///
+ /// Verifies that an carrying the
+ /// provider_status payload case round-trips and resolves to
+ /// .
+ ///
+ [Fact]
+ public void Feed_RoundTripsProviderStatus()
+ {
+ var since = Timestamp.FromDateTime(new DateTime(2026, 6, 13, 9, 0, 0, DateTimeKind.Utc));
+ var original = new AlarmFeedMessage
+ {
+ ProviderStatus = new AlarmProviderStatus
+ {
+ Mode = AlarmProviderMode.Subtag,
+ Degraded = true,
+ Reason = "wnwrap poll failed 3x (HRESULT 0x80004005)",
+ Since = since,
+ },
+ };
+
+ var parsed = AlarmFeedMessage.Parser.ParseFrom(original.ToByteArray());
+
+ Assert.Equal(original, parsed);
+ Assert.Equal(AlarmFeedMessage.PayloadOneofCase.ProviderStatus, parsed.PayloadCase);
+ Assert.True(parsed.ProviderStatus.Degraded);
+ Assert.Equal(AlarmProviderMode.Subtag, parsed.ProviderStatus.Mode);
+ }
+
+ ///
+ /// Verifies that an carrying the
+ /// new degraded and source_provider provenance fields
+ /// round-trips with their values preserved.
+ ///
+ [Fact]
+ public void Transition_RoundTripsDegradedProvenance()
+ {
+ var t = new OnAlarmTransitionEvent
+ {
+ AlarmFullReference = "Galaxy!Area.Tank01.Level.HiHi",
+ TransitionKind = AlarmTransitionKind.Raise,
+ Degraded = true,
+ SourceProvider = AlarmProviderMode.Subtag,
+ };
+
+ var parsed = OnAlarmTransitionEvent.Parser.ParseFrom(t.ToByteArray());
+
+ Assert.True(parsed.Degraded);
+ Assert.Equal(AlarmProviderMode.Subtag, parsed.SourceProvider);
+ }
+
///
/// Verifies that an with kind
/// and a populated