Dense per-class counts for failed sync work rows.
by_class always includes exactly these keys, in this order when encoded to
JSON: :transport, :validation, :backend_rejected, :queue_exhausted,
:unknown. Each value is a non-negative integer.
When rollups are computed over a filtered row list, total reflects that
list only — do not compare it to an unfiltered source length without
recomputing counts on the same list you display.
Summary
Types
@type by_class() :: %{ transport: non_neg_integer(), validation: non_neg_integer(), backend_rejected: non_neg_integer(), queue_exhausted: non_neg_integer(), unknown: non_neg_integer() }
Rollup map keyed by every FailedWork.reason_class/0 atom.
@type t() :: %Scrypath.Operator.ReasonClassCounts{ by_class: by_class(), total: non_neg_integer(), version: pos_integer() }