Packages

development-driven-specs — the dds toolchain (protocol 2) as a Mix task. A thin shim over the bundled instruments (Python, stdlib); never a port.

Current section

Files

Jump to
dds priv toolchain canon docs domain-README.md
Raw

priv/toolchain/canon/docs/domain-README.md

# Domain
Facts about the business the system models — definitions, business
policy, vocabulary that goals and ADRs lean on.
Format and authority specified in
[`../conventions.md` §3](../conventions.md#3-domain-documents-docsdomain);
meta-rules in [`../principles.md`](../principles.md). The headline
rule:
> **Code is the source of truth for the schema, lifecycle, and
> relationships. Domain documents exist for the *why* — the business
> policy that shapes the concept.**
Schema/lifecycle/relationship listings are **forbidden** in domain
documents — those are codified by the implementation; a reader who
needs the field list reads the code.
## Start here
[`what-the-product-is.md`](what-the-product-is.md) is the **purpose
root**: a best-effort description of what the product is and what it is
for, stated as current-state and carrying no source because it appeals
to no authority. The realization arguments (what the product holds, can
do, mints) and every protection ADR ultimately lean on it for the
premise that makes them load-bearing — the classification of the data,
and therefore the whole protection posture, is an *entailment of what
the product is*, not a control choice. Read it first; the rest of this
directory hangs off it.
[`../risks/`](../risks/README.md) is the **spine**: the set of risks for
which the product must hold a strategy (one file per risk). Each risk
resolves to the ADR(s) that are its strategy, and an external register
(see [`../registers.md`](../registers.md)), where one exists, projects
onto it to compute coverage. Derive risks bottom-up from the code; do
not adopt a generic checklist.
## Authority
Product + relevant domain experts (legal, clinical, financial, etc.)
via `.github/CODEOWNERS`.
## Adding a domain document
1. Confirm the concept is a *business* fact, not a code fact.
2. Create `docs/domain/<concept>.md` following
[`../conventions.md` §3](../conventions.md#3-domain-documents-docsdomain).
3. Carry only the Definition, business-policy sections, and
Authorization scope at the *concept* level. The `Codified-by:`
trailer points at the implementation.