diff --git a/src/ScadaLink.AuditLog/Site/Telemetry/CachedCallLifecycleBridge.cs b/src/ScadaLink.AuditLog/Site/Telemetry/CachedCallLifecycleBridge.cs index d61c3fb..cc6a975 100644 --- a/src/ScadaLink.AuditLog/Site/Telemetry/CachedCallLifecycleBridge.cs +++ b/src/ScadaLink.AuditLog/Site/Telemetry/CachedCallLifecycleBridge.cs @@ -75,16 +75,13 @@ public sealed class CachedCallLifecycleBridge : ICachedCallLifecycleObserver private async Task EmitAttemptedAsync(CachedCallAttemptContext context, CancellationToken ct) { - // Per-attempt row: kind discriminates channel, status carries the - // per-attempt result. + // Per-attempt row: kind discriminates channel; status is always + // Attempted regardless of outcome (success vs. failure is captured + // by the companion HttpStatus / ErrorMessage fields, NOT by flipping + // the status — CachedResolve carries the terminal Status). Per the + // M3 brief and alog.md §4. var kind = ChannelToAttemptKind(context.Channel); - var status = context.Outcome == CachedCallAttemptOutcome.Delivered - ? AuditStatus.Attempted - : AuditStatus.Attempted; - // (Note: per the M3 brief and alog.md §4 the per-attempt row always - // carries Status=Attempted; success vs. failure is captured by the - // companion HttpStatus / ErrorMessage fields, NOT by flipping the - // status. CachedResolve carries the terminal Status.) + var status = AuditStatus.Attempted; var packet = BuildPacket( context,