Table of Contents

Class SpamClassificationRun

Namespace
MailFathom.Application.Spam.Runs
Assembly
MailFathom.Application.dll

A whole-mailbox classification run somebody asked for, and how far the account's runs have carried it.

public sealed record SpamClassificationRun : IEquatable<SpamClassificationRun>
Inheritance
SpamClassificationRun
Implements
Inherited Members

Remarks

Durable because it has to survive the process. The run spans as many account runs as its batch budget needs, so a restart in the middle of one must resume at the message nobody has reached rather than at the beginning of a mailbox — and a request that arrived seconds before a shutdown must still be a request afterwards.

One outstanding run per account, which is what makes a second request an answer rather than a second walk over one mailbox. There is no queue behind it: asking twice for the same thing is asking once, and the reply says the run is already under way.

Every field is either MailFathom's own identity for something, a count, or an answer the operator gave when they asked. Nothing derived from a message belongs in a record an operator reads to find out what their instance is doing, which is why the verdicts appear here only as counts and are readable per message from the classification records themselves.

Properties

AccountId

Gets the account whose mail the run walks.

ActedEmailCount

Gets how many occurrences the run asked the mailbox to change, or would have asked for in a dry run.

ClassifiedEmailCount

Gets how many occurrences the run recorded a verdict for.

EndedAt

Gets when the run stopped being outstanding, or null while it still is.

Ending

Gets how the run ended, which is absent for exactly as long as EndedAt is.

IsOutstanding

Gets whether the run is still waiting to be carried further by an account run.

Position

Gets the identity of the last occurrence a batch committed, or null while it has committed none.

Profile

Gets the settings the run is bound to, which are unspecified until the first pass picks the run up.

RequestedAt

Gets when the run was asked for.

SkippedEmailCount

Gets how many occurrences the run passed over because they were already decided under its profile.

SpamEmailCount

Gets how many of the occurrences the run reached carry a spam verdict.

Terms

Gets what the operator asked the run to do, fixed when they asked.

UnclassifiableEmailCount

Gets how many occurrences the run could reach no verdict about.

UndeterminedEmailCount

Gets how many of the occurrences the run reached carry a verdict that concluded nothing either way.