The shape objection

Marked below, on the exact line where it differs.
The most common reason a dead-letter queue fills overnight is a producer that changed a field: a number that became a string, an object that became null. Marshall compares the shape of every message he reads and points at the ones that disagree.
What it says
When most messages agree and some do not, the verdict bar objects with the specifics:
totalCentsis a string in 2 of 14, a number in the other 12.
Select one of the outliers and the field is marked on the exact line of its payload.
It needs no schema, no model and no network. The disagreement is in the data, and Marshall only counts it.
When it refuses
The objection has refusals, each its own sentence:
| Refuses when | Why |
|---|---|
| Fewer than 4 messages could be read | Too few to call a majority |
| There is no majority shape | Nobody to disagree with |
| Nothing comparable | Payloads that are not structured data, such as binary |
A refusal is not "all good". It means Marshall cannot tell, and says so.
Avro topics
On a topic decoded through a Schema Registry, the shape compared is the one the schema declares, not the one read off each message's values. A nullable field is one optional field, so a topic under one schema is consistent, and two schemas on one topic show up as the field the new one added.