The module registry
The registry is not a separate document and not a database. It is the source tree itself.
modules/
├── microservices/<domain>/ms-<name> a data domain and its API
├── surfaces/<domain>/sf-<name> a screen mounted at runtime
├── workflows/wf-<name> a process for the DAG runtime
├── types/<domain>/ NRPC contracts
└── solutions/ which modules ship together
A module exists because its directory exists. It belongs to a domain because it sits in that domain's folder. It belongs to a solution because names it. There is no fourth place where any of this has to be repeated — which is why the ecosystem page on the site is produced by walking the tree rather than by editing a list.solutions/solutions.json
A module's purpose is taken from its : the first paragraph under README.md (for surfaces, ## Purpose) and the paragraph under the ownership-boundary heading. Those two paragraphs are the module's contract in plain language, and every module owes them.## UI Purpose
A product layer on top of the base — , for instance — is laid out the same way and may drop the domain level: its modules sit directly in club. The build understands both layouts.modules/microservices/ms-<name>