A document describing this codebase’s conventions, read by a tool and by people, kept in the repository.
# Conventions
## Money
Always minor units in an integer. Never a float.
`Money` is a value object; a bare int at a boundary is
acceptable and must be named `*MinorUnits`.
## Persistence
Repositories, not models. `Order` is a domain object.
There is no `Order::find()`.
## Errors
A typed exception per failure. No `Result` objects.
No nullable returns for failure.
The file is the single most effective thing we have done about model-generated code being idiomatic-but-wrong, and it is also the onboarding document — which is the property that keeps it current. A document with one audience rots and a document that two audiences read gets corrected.