The domain-grouping premise is testable, so it was tested before drawing a list. Co-change across the full history of the module catalogue, current modules only, platform namespace excluded. Nine commits in ten touch exactly one module, and 50 of 89 modules have never been edited alongside anything. Two clusters exist above that floor. Reachability holds up: proxy, resolver, firewall and VPN genuinely move together under one intent, three times in recent history. That is the shape ADR 0017 describes and the only place the measurement finds it. The provider cluster does not, and this is the finding worth having. Every multi-provider commit is a cross-cutting manifest change applied N times — feature detection, hook conventions, volume binds, network scoping. None is a change to what a database is. Merging them would not have prevented one of those commits, and the history already shows the fix that worked: verify by shape in the SDK rather than copying a script into every module. Move the concern into the machinery, do not merge the modules carrying it. ADR 0017 keeps its principle and gains a pointer to this narrowing.
61 lines
2.8 KiB
Markdown
61 lines
2.8 KiB
Markdown
---
|
|
status: active
|
|
initiated: 2026-08-23
|
|
touches:
|
|
- 02-DECISIONS/0017-modules-outside-the-core-are-grouped-by-domain.md
|
|
- 03-DESIGN/00-as-is/10-module-catalogue.md
|
|
- 03-DESIGN/00-as-is/02-modules-and-manifests.md
|
|
became: []
|
|
---
|
|
|
|
# 005 — Which domains the catalogue groups into
|
|
|
|
[ADR 0017](../../02-DECISIONS/0017-modules-outside-the-core-are-grouped-by-domain.md) settles
|
|
that modules outside the platform core are grouped by domain rather than by single function,
|
|
and deliberately does not settle the list. This effort settles the list — and, first, tests
|
|
whether the premise survives measurement.
|
|
|
|
## What is being investigated
|
|
|
|
Eighty-nine modules sit outside the platform core. The question is which of them belong
|
|
together, and the method is evidence rather than intuition: **which modules actually change
|
|
together**, measured across the full history of the code repository.
|
|
|
|
## Why
|
|
|
|
The argument in ADR 0017 is that the catalogue's shape records what was installed rather than
|
|
what anything is for — that four modules constituting "how a node is reachable" have no
|
|
relationship the mesh can see, so a change to connectivity is made four times.
|
|
|
|
That argument is testable. If those modules genuinely change together, the grouping is
|
|
justified by more than tidiness. If they do not, the premise needs revising before a list is
|
|
drawn from it.
|
|
|
|
## What it touches
|
|
|
|
The catalogue's shape, the manifest, and — for one candidate grouping — the provisioning
|
|
reference itself, since a requirement names a provider **module**. Grouping providers would
|
|
change what a consumer names.
|
|
|
|
## Status
|
|
|
|
Measurement is done and is in [`analysis.md`](analysis.md). It **partly contradicts the
|
|
premise**, in a way that narrows the effort usefully:
|
|
|
|
- Non-platform modules overwhelmingly change **alone** — 10% of commits touch more than one,
|
|
and 50 of 89 never co-change with anything.
|
|
- Two clusters do exist. One of them, reachability, holds up as a domain.
|
|
- The other, the provisioned infrastructure providers, co-changes for a reason that argues
|
|
**against** grouping rather than for it.
|
|
|
|
The remaining work is the list itself, for the modules where grouping is justified, plus the
|
|
open questions below.
|
|
|
|
## Open questions
|
|
|
|
| Question | Why it is open |
|
|
|---|---|
|
|
| Whether provider modules group at all, and if so what a consumer's requirement names instead of a module. | The provisioning reference is load-bearing; getting it wrong is expensive. Opinion and evidence in the analysis; not yet decided. |
|
|
| Whether applications group into domains now and leave the monorepo later as a unit, or leave first. | Decided in principle — group first, then split — but the migration order has real cost either way. |
|
|
| What to do with the ~50 modules that co-change with nothing. | The evidence gives no grouping signal for them at all. That may mean they are correctly sized already. |
|