One design that holds a visit, a customer, a resource, an order, a shift and a stock item. If it cannot hold a new entity without a redesign, it is not a surface type — it is a page written twice. It is proved below on the two extremes: a visit, which is almost entirely live and almost entirely money, and a stock item, which is neither.
No scrolling says a long record must be tabbed. Law 2 says nothing important is collapsed, and money in particular is never behind a disclosure. A tab is a disclosure. Those two cannot both be satisfied by one tabbed pane.
So the pane is a permanent column plus a tabbed area. Identity, status, every money figure and every action live in the column, where no tab can hide them. Facts and related sets live in the tabs, where hiding them costs nothing. Reading the money never requires being on the right tab — which is also how two surfaces stop disagreeing about a total.
Live, and almost entirely money. Three seats, a party of three, one bill.
Receivable, not cash. Nothing has entered the till and the cash ledger has no row for this visit yet.
The counter may ask; the owner approves, and you ruled that everything blocks overnight. Asking at 21:04 means this waits until morning.
Every field is traversed, even when it is empty. Not applicable and left empty by Kareem are two different facts, and both are different from a blank. A field nobody saw is not the same as a field somebody decided about.
Not live, and its money is capital rather than a debt. The pane simply has no clock — no empty slot where one used to be.
Capital, not revenue. This is money the business owns sitting on a shelf.
A write-off destroys capital and is the owner's. The gate will state the exact figure leaving the ledger before anything is sent.
A refused request is history too. An action somebody attempted and did not get is exactly what gets asked about the next morning, and a log that only records successes cannot answer it.
The cheapest credibility available. The audit data exists before the viewer does; rendering it is the whole cost.
| # | Rule | Why |
|---|---|---|
H1 | Old value struck through, new value plain. | A diff shows both sides. Money changes are the reason the tab exists — an operator who can see who changed a price trusts the system that shows them. |
H2 | Why, not only what — in the quietest tone on the page. | A count with no reason and a count with "sack split on the shelf" are the same event to a database and completely different events to a shift handover. |
H3 | Where, not only who. | On a floor with two terminals and three roles, the station is half the answer, and it is free. |
H4 | A refused or blocked request is a history row. | It is what someone asks about the next morning. |
H5 | Everyone sees the tab; costs obey the scope rule. | A counter sees that a total moved and who moved it, not what anything cost. |
Nothing below needs a new column, a new tab strip, or a second design.
| Entity | The money block | Tabs | Primary action |
|---|---|---|---|
| Visit | Time and items → owed now · receivable | Facts · Seats · Orders · Party · History | Settle & free the seat |
| Customer | Balance, debt, cashback · receivable | Facts · Visits · Subscription · Payments · History | Start a visit |
| Resource | Hours and revenue today · receivable | Facts · Seatings · Installed titles · History | Seat someone here |
| Order | Lines → total, and cost for the owner | Facts · Lines · The visit it belongs to · History | Mark served |
| Shift | Opening, taken, paid out, counted · cash | Facts · Movements · The count · History | Close the shift |
| Stock item | On hand × unit cost → capital · stock | Facts · Movements · Recipes · History | Receive stock |
| Expense | Amount · cash | Facts · History only — the thin case | Attach a receipt |
An expense has no related set and no live state, which is the thinnest case the pane has to hold — and it still fits, because an empty tab is a state rather than a hole. That is the test this surface had to pass.