Class MailboxMutationTelemetry
- Namespace
- MailFathom.Infrastructure.Observability
- Assembly
- MailFathom.Infrastructure.dll
Reports a mailbox mutation as the one operation somebody asked for, on all three channels at once.
public sealed class MailboxMutationTelemetry
- Inheritance
-
MailboxMutationTelemetry
- Inherited Members
Remarks
The three channels are here together because the rule they enforce is about their agreement rather than about any
one of them. A relocation carried by RFC 6851 MOVE and a relocation carried by copy, flag, and expunge are
the same operation, so they produce the same log message, the same span name, and the same counter dimension.
Splitting the emission across three call sites is how they would drift, and the drift has a shape worth naming: a
fallback that announces a copy and a delete turns a missing server extension into something an operator has to
interpret, and the support question it produces is about mail that was copied and deleted instead of moved — asked
about an operation that did exactly what was asked of it.
Which path carried the change, and each command the fallback issued, are recorded at Debug and nowhere else. That is not secrecy: a genuinely broken fallback is diagnosed from which of the three commands was reached, so the detail has to be complete where somebody is looking for it, and absent where somebody is only reading what happened.
Nothing recorded here is mail. The account alias, the folder alias, the mutation name, and an IMAP command name are MailFathom's own configured or protocol-registered names; no subject, address, body, remote folder path, UID, or credential reaches a log, a span, or an exporter.
Constructors
- MailboxMutationTelemetry(ILogger<MailboxMutationTelemetry>, TimeProvider)
Initializes the instruments every mailbox mutation reports through.