Everything that happened in the business, in one list, with who did it and who it was about on every row. This is not a screen beside the money position — it is the money position with the filter cleared. A figure that is the total of a set is that set at zero filters, and it must be clickable into it.
Nothing above is a separate dashboard. Every figure on this screen is one of these sets, unfiltered.
Stock was last touched at 18:40, so net is only as fresh as its oldest input. It is a position, not a result — nothing here knows what anything cost to earn.
A number beside a value is exactly what clicking it returns — the count runs the same predicate the filter applies. Sara has left and her rows still attribute to her.
Every total is worked out twice: once as an aggregate over the whole set, once as the sum of the rows on screen.
41 rows, and the ledger aggregate says the same. The total is shown.
The rows on screen add to 7,204.00. The ledger says 7,384.00. This day does not add up, so no total is shown — a money figure that disagrees with the ledger is a defect, not a rounding difference.
Too many rows to load, so the two could not be compared. It says so rather than claiming agreement it did not test.
Three states, not two. Agree, disagree, and not checked. Collapsing the third into the first is how a truncated set quietly starts reporting a total nobody verified.
Net needs stock at cost, so it is withheld too. Nothing above is a partial number — one input is missing, not shaved.
| # | Rule | Why |
|---|---|---|
M1 | One row shape for every kind: when, what, about, attributed to, issued by, amount, balance after. | A kind with no amount leaves those columns empty rather than inventing a zero. |
M2 | Attributed-to and issued-by are different columns and often different people. | A movement nobody can be asked about is a movement that failed. |
M3 | A departed employee still attributes. | The lookup ignores the soft-delete filter on purpose. Sara left; her rows are still hers. |
M4 | A correction is a new row. The original stays, struck through, and drops out of totals. | Editing history is how a ledger stops being one. |
M5 | Kind and state are two enums, never one merged status. | A reversed payment is still a payment. |
M6 | Every total is computed twice and withheld when they disagree. | Three states — agree, disagree, not checked. Never two. |
M7 | A facet count is the predicate it filters by. | So the number beside a value is exactly what clicking it returns. |
M8 | Every figure names its ledger and its as-of, and net says which input is oldest. | A figure with no source and no as-of gets cached and shown as live. |
M9 | The word is "net position", never "profit". | Nothing here knows what anything cost to earn. Calling it profit would be the confident lie the laws exist to kill. |
M10 | A capped set states both numbers, in that order. | A count that shows only what is loaded is how two screens disagree about one set. |