Cross-cutting rules
Overview
Section titled “Overview”Some rules don’t belong to any one entity — they apply uniformly across the system. Rather than repeating them on every entity page, they live here and the entity pages link out.
Each page below catalogues one cross-cutting concern in the same skeleton used elsewhere: what the rule is, when it fires, what the user sees, and where it’s implemented.
The pages
Section titled “The pages”- Unknown and optional fields — the Unknown checkbox: what it means, how it interacts with optional percentages, and how Unknown values appear in read-only views.
- Notes and tags — polymorphic collections that attach to many entity types: where they attach, who can manage them, what’s preserved on edit.
- Concurrent edits — what happens when two users edit the same record at the same time. RowVersion, the 412 response, and how the edit form recovers.
- Permissions and roles — the Admin, User, and API.Access roles. What each role can do, and where in the UI role gating shows up.
- Completeness score — the 0-100 score on every record: how it’s calculated, what feeds into it, when it’s recalculated.
- Units and display — how the system picks which area unit, area basis (net vs gross), and rent format to render. Includes the fallback chain.
- Currency — how amounts are stored, converted to the user’s preferred currency, and what the UI does when conversion data is missing.
- Search matching — how typing in the search box turns into matches: synonyms (st ↔ street), number-word equivalence (3 ↔ three), wildcard expansion, and the operators (
#tag,@note,field:value,+bool,-bool,"phrase").
When to look here vs an entity page
Section titled “When to look here vs an entity page”| Looking for | Try first |
|---|---|
| ”Why can’t I save this Scheme?” | Schemes |
| ”Why is my Investment Event refusing the yield I entered?” | Investment Events |
| ”What does the Unknown checkbox actually mean?” | Unknown and optional fields |
| ”Why did my save just fail with a concurrency error?” | Concurrent edits |
| ”What can a non-Admin user do?” | Permissions and roles |
| ”Why is the area on my detail page showing in sqft when I picked sqm?” | Units and display |
| ”Why does searching for ‘st’ also match ‘street’?” | Search matching |