Skip to content

Meaning and accountability belong at the source

Same name, different meaning

The sales team's active customer has purchased in the last twelve months. The support team's active customer has an open account. Both tables have a column called active_customer, the types match, and the join runs without complaint.

The churn figure it produces is confident, precise and wrong. Nobody decided the two meanings were the same; the schema simply let everyone assume it.

Nobody answers for the assumption

  • When meaning is inferred from a matching name, or from two teams sitting near each other, nobody is accountable when the inference turns out to be wrong.
  • The error surfaces only after a consumer has relied on it, often in a decision that has already been made.
  • Downstream teams repair the gap with their own local conventions, and meaning drifts further from where it was created.

Meaning has an owner, and so does every mapping

Domain owners maintain the meaning and promises of what they publish. Where meaning must be related across bounded contexts, that reconciliation is itself an explicit, accountable decision, never a side effect of schema matching or organisational proximity.

The people and systems closest to where data is created know best what an event, field or state represents. That is where meaning should be declared, and where it should be corrected.

The picture

Silent inference versus a recorded mapping Two bounded contexts each define active customer. Sales: purchased in the last 12 months. Support: has an open account. A dashed line between them, labelled silent inference, same name so same meaning, is crossed out. A solid line below carries a recorded mapping: related, not equivalent; reconciled by the owners of both contexts; basis, definitions compared; date recorded. Sales context Active customer purchased in the last 12 months Support context Active customer has an open account same name, so same meaning? ✕ silent inference RECORDED MAPPING Related, not equivalent Reconciled by: both context owners Basis: definitions compared Recorded: dated and versioned
The same label in two contexts. The mapping between them is recorded, owned and dated, not inferred.

Two kinds of active customer

Illustrative example

A retention analysis needs customers who are "active" in both sales and support terms. Instead of joining on the shared column name, the analyst looks up the recorded mapping between the two contexts. It says the concepts are related, not equivalent, names who reconciled them and when, and points to both definitions.

The analysis now states which meaning it uses. When the sales team later shortens its window to six months, the mapping is reviewed, and every consumer relying on it can see that something changed.

In detail

Record who reconciled, and on what basis

Shared models and cross-domain mappings should record who reconciled a meaning, on what evidence, and when. A consumer relying on a mapped concept can then trace its provenance instead of inheriting an unstated assumption.

Shift left, not shift everything

Declaring meaning at the source does not make producers responsible for every downstream use. Producers make the characteristics and obligations of their data explicit; consumers stay responsible for requirements that belong to their own purpose.

Not this

  • Not one universal enterprise meaning for every concept. The next page argues the opposite.
  • Not a central team defining meaning on behalf of domains.

Unresolved

  • Who has authority to accept or reject a cross-domain mapping when no single domain owns the relationship?

Join the argument

Agree, challenge or add evidence

Architecture improves when its assumptions are challenged. Say which kind of contribution you're making:

  • Challenge I disagree because…
  • Evidence We've seen this too…
  • Question How would this work when…?
  • Alternative Another way to approach this…
  • Extension This also implies…

Please keep clients, employers and colleagues unidentifiable. Strong contributions may be quoted and credited on this site. Read the contribution guidelines and the privacy notice.

Comments are provided by giscus and stored on GitHub. Posting requires a GitHub account.

Next in the argument Make semantic context explicit A concept's meaning is assumed to follow from which domain owns it, so one label becomes one universal definition. Semantic layer