Domain Terminology

Every OSBR project maintains a ubiquitous-language dictionary: one authoritative word per domain concept, agreed with the domain experts and mirrored everywhere the concept appears β€” code, schema, docs, tests, logs, and error messages. This page is the per-project discipline for building and holding that dictionary.

It is distinct from the org-wide Technical Glossary. The Technical Glossary defines cross-project technical vocabulary (DI, IaC, Clean Architecture) so everyone at OSBR reads code the same way. This discipline is per-project and domain-facing: the nouns and verbs of this product's business β€” Booking, Invoice, Ledger, settle, void β€” the words a domain expert would recognise. One is a shared reference book; the other is a living project artifact you grow and defend as the model evolves.

The words themselves are not invented at the keyboard. They are the language we first hear in Market Research and pin down while Requirements Modeling β€” the domain expert's own terms, carried into the code unchanged. This page is where that discipline meets the Development Guide's Planning & Shaping: naming is shaped with the model, not bolted on after.

1. Goal

A codebase where the same concept has exactly one name, and that name means exactly one thing β€” end to end. A new engineer, a domain expert, or an AI agent reading any layer (a Postgres column, a Go struct, a log line, an error string) encounters the same word for the same idea, and can therefore reason about the system without a translation table in their head.

This directly serves the OSBR human⇄AI principle: one word per concept keeps the codebase self-explanatory to humans and AI alike. An AI agent editing our code has no hallway to ask "is a client the same as a customer?" β€” it infers meaning from names. Synonyms and drift are, for an agent, silent corruption of the model; for a human, a 3am bug.

This is Ubiquitous Language in the Domain-Driven Design sense (Eric Evans): the language of the model, spoken by developers and domain experts, embedded rigorously in the software. The dictionary is where we write that language down.

2. Responsibility

3. Practices

3-1. One word per concept β€” maintain the dictionary

3-2. Search before you coin

3-3. No synonyms, no modifier-laden names

3-4. Identifiers mirror the ubiquitous language

3-5. Renaming is an atomic, whole-system change

When a concept is renamed β€” because the domain expert corrected us, or the model sharpened β€” you MUST update every affected surface in the same change:

A rename that lands in the code but not the logs, or in the schema but not the error text, re-creates the two-names-one-concept problem it was meant to kill β€” and leaves a landmine for whoever (human or agent) next greps for the old word. If a full atomic rename is genuinely too large for one PR, apply an expand/migrate/contract discipline: introduce the new word, migrate every surface across explicit steps, then remove the old β€” never leave both live indefinitely.

3-6. Contradictions are findings, not footnotes

A dictionary earns its keep by surfacing the two shapes of naming trouble, and each marks a real boundary in the domain:

When you hit either, you MUST raise it as a finding β€” a note in the dictionary or an issue β€” not paper over it. A contradiction between two names is the model telling you where a boundary actually runs; naming it right sharpens the domain, not just the code.

4. Pinning subtle terms by example

When a term is subtle, pin it down with a concrete example, not a longer abstract definition β€” Gojko Adzic's specification by example. A Booking is void once the guest no-shows past the cutoff teaches the word better than a paragraph, and doubles as a test name. Examples in the dictionary keep humans and AI reading the same meaning, and tie the vocabulary straight back to the scenarios captured during Requirements Modeling.

5. Quick Checklist

Before merging, the author and reviewer confirm:

6. OSBR Values in Practice

One word per concept is how we keep the codebase self-explanatory to humans and to the AI agents that read and write it beside us β€” no glossary lookup, no guessing, no drift.

References

Related OSBR standards