0083. Names for the new constructs: the name-clash table is accepted
0083. Names for the new constructs: the name-clash table is accepted
Status
Accepted. Row: DOM-29. The handler words (DOM-05) are in ADR-0079. No row is open.
Date
2026-10-11
Deciders
operator (Saulo Vallory), 2026-10-11.
Context
The new constructs reuse words that already mean something: policy, service, event, app. The rule is obvious names: the word a user would guess, one word per meaning.
Decision
The study’s name-clash table (section 5) is accepted for the port, with the words that rulings changed:
| Word | Resolution |
|---|---|
| policy | Authorization only. The study’s react is publish plus a listener; a read-model handler is apply, a command runner process (ADR-0079) |
| repository | A pattern; no construct (ADR-0080) |
| app | The file kind is surface (ADR-0077); “application” stays the user’s program |
| service | A domain service as Vernon defines it (ADR-0078); the dependency keyword is uses |
| command | A serialised request to run a write action (ADR-0079) |
| event and change | A change is a row write; an event is a declared domain event |
| aggregate | DDD’s; Ash’s aggregates are rollups |
| context | The action context; write “bounded context” in full |
| domain | One bounded context’s model |
| adapter and port | Name nothing “port” |
| step | The do step; no step files (ADR-0082); the workflow word is decided with workflows |
| on | on=:create and on:load only; no on for reactions |
| check | Mesh validation and named checks; Hyper’s checks map to checks, policies and named checks |
| value | concept (ADR-0080) |
Options considered
Keep the DDD names, rename to avoid every clash, or accept a clash where the shared word is accurate (chosen, per row).
Trade-off analysis
Users guess one word per idea; where DDD’s word clashes with Mesh’s own older word, Mesh’s own word stays, and the new word takes the obvious name of the new thing.
Consequences
The vocabulary mapping needs the clash table for Ash users once the constructs ship. No existing record is superseded.
Action items
- Add the aggregate, concept and service rows to the vocabulary mapping when built.