Docs · Concepts
Exceptions
A difference that survives a run becomes a thing with an owner and a history.
A run owns numbers. An exception owns what people did about them.
When a difference survives a run it becomes an exception: an object with a status, a severity, a note and a history, keyed on the row rather than on the run. It stays until somebody settles it or the systems agree again.
#Identity — why it is one problem, not many
An exception is identified by the Check and the row, not by the figures.
A store that is out by 3 on Monday and by 3,000 on Friday is one problem getting worse, not two problems. The figures are still tracked, and they decide one thing: whether a decision somebody already made still applies.
#Two kinds
Read from the row, never typed:
- Missing — the row is on one side only.
- Value — both sides have it and a figure disagrees.
#Five statuses
| Status | Meaning |
|---|---|
| Open | Nobody has looked at it |
| Investigating | Somebody is on it |
| Expected | It is understood and will keep happening |
| Resolved | The disagreement went away |
| Ignored | It is still there and nobody is going to act on it |
Resolved and Ignored are kept apart deliberately. One says the problem is gone; the other says it is still there and we have decided to live with it. Collapsing them would lose the distinction that matters at audit time.
Open and Investigating are the two that count as still asking for something.
#Four severities, and untriaged
Critical, High, Medium, Low — and Not triaged, which is the default and is not the same as Medium.
That is deliberate: a default is a claim. "183 untriaged" is a more useful number than "183 medium", and it is the true one.
#What happens across runs
Two questions, in this order:
Has the disagreement moved? If the figures changed, everything settled reopens — Expected, Ignored and Resolved alike. A decision was made about a specific difference; a different difference has not been decided on. Investigating is left alone, because somebody is already there.
Is it back? A Resolved exception seen again with the same figures reopens. Expected and Ignored do not — those mean I know, stop telling me.
A row that could not be read does not become an exception. The run did not read it, so it is not yet a disagreement.
#The queue
The Exceptions screen opens on Still outstanding, with Everything available.
Its tallies: how many are open, how many are being looked at, how many are critical or high, how many are not triaged, and how many are recurring — outstanding and found by more than one run.
Each row shows how many runs found it, and how many times it came back: "Settled, then found again — either it was never fixed, or the difference moved."
Where the aggregation names an impact measure, outstanding exceptions are ranked by the largest absolute discrepancy on it, so the biggest number in money is at the top rather than the most recent.
#Settling one
What happened is the field that matters — the resolution note. The placeholder suggests the shape: "Franchise posts on Mondays…"
It is cleared automatically when an exception reopens, because it described a difference that has since changed.
Comments are a running note beside it. A comment outlives the account that wrote it.
Where Mosaic has seen enough decisions to recognise a pattern, it offers one: "Suggested from previous decisions", with the status, the resolution and how confident it is across how many past decisions. You accept it or you do not.
#Who can do what
Reading is a viewer's. Deciding and commenting is an editor's.
That is a known compromise rather than a design, and the code says so: somebody who triages and closes exceptions all day has no business editing the query that produces them. Until there is a role for that, the wider one is the honest choice.