Administration
Entities, patterns and cost centres
The scaffolding everything else hangs off, and the four changes that restate figures without moving a stored value.
Four pieces of structure sit underneath the people records. None of them is interesting on its own; all of them decide what other numbers mean.
Legal entities
One per company that actually employs people. An entity carries its country, its currency and its standard working day, and it is what a payroll run is scoped to — which is why somebody holding two engagements at two entities appears in two runs.
The standard working day is the load-bearing field
Entitlements are stored in minutes and rendered as days against it. Changing it from eight hours to seven and a half restates every balance expressed in days across that entity — without a single stored minute moving. The form warns on change and the audit entry records both values, because somebody will eventually ask why a balance reads differently.
Working patterns
Which days somebody works and for how long. A pattern is what gives a person scheduled hours, and therefore capacity, working-days leave arithmetic and a cost figure. Somebody with none has no scheduled hours at all — which is why deleting a pattern any engagement still uses is refused, rather than silently leaving everybody on it unscheduled at once.
A pattern with no working days in it is refused for the same reason.
Holiday calendars
These compose rather than compete, which is the opposite of how every other jurisdiction rule here resolves. A US worker in Colorado observes federal days and Colorado days and any company closure — the union of whatever matches their work jurisdiction, deduplicated by date. See Public holidays.
- Deleting a calendar that holds past dates is refused: absences were costed around them, and under calendar-day counting those days were deducted from somebody's balance.
- Two holidays on one date is refused — a day off counted twice double-charges an absence.
- A national calendar with no country is rejected, because scope decides which bucket a calendar joins rather than which one beats another.
Cost centres
What work is billed to internally. An engagement names one, and cost reporting rolls up through the hierarchy. Two guards apply: a centre people still bill to cannot be deleted — the link would simply null, dropping those people out of cost reporting with nothing to show for it — and a parent cannot be set so as to form a loop, because roll-up would recurse forever and surface as a timeout somewhere unrelated.
Positions
A named job an engagement can point at. Its value is that credential requirements attach to it rather than to a person — so a requirement added to *forklift driver* applies to everybody holding that position, including whoever fills it next year. Requiring a class the credential type does not list is refused: it would be a requirement nobody can ever satisfy.
Editing structure never rewrites history
Every one of these editors answers the same question before it saves: what already happened under the old rules? Where the answer is *something that must stay explicable*, the change is refused or the old row is closed rather than replaced. See Settings.