---
id: ADR-MBR-MEM-001
title: Separate Configuration From Member Holdings
product_area: membership
module: memberships
revision: 1
status: proposed
design_intent: proposed
source_sha:
  services-membership: 5994c270e8a37a30f848e99ba5b5ee6b87c08893
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
decision: >-
  Memberships owns holdings, periods, connections, requests, renewal work and
  evidence, while Structure supplies referenced configuration and the period
  engine.
constrains:
  - DOM-MBR-MEM-001
  - DOM-MBR-MEM-002
  - DOM-MBR-MEM-003
  - SVC-MBR-MEM-memberships
  - RESP-MBR
origin: >-
  The Membership product area's module split in the product-area registry (the
  structure module and this module), and D-45 of 2026-10-17 on the term engine's
  extraction
alternatives:
  - option: One Membership module owning structure and holdings
    why_not: >-
      Combining the boundaries would mix reusable offer configuration with each
      member’s changing coverage.
  - option: Copy program and package settings onto each term
    why_not: >-
      Duplicated settings would require reconciliation whenever the
      authoritative configuration changes.
consequences:
  - Membership writers read the current configuration through its owning module.
  - >-
    Structural operations call the holdings owner when they must move member
    connections.
  - >-
    A pure period engine can be extracted for another domain without moving
    member ownership.
supersedes: []
evidence:
  - >-
    services-membership at 5994c270: README.md (layout, the term engine, D-45);
    modules/terms/tests/unit/isolation.spec.ts;
    modules/memberships/services/affiliations/unit-merge.ts
---

# Separate Configuration From Member Holdings

## Context

The product-area split separates association structure and offers from high-volume member records. Both modules share the deployment and schema, so ownership is an in-process boundary.

## Decision

Memberships owns holdings, periods, connections, requests, renewal work and evidence, while Structure supplies referenced configuration and the period engine.

## Alternatives Considered

One Membership module owning structure and holdings: Combining the boundaries would mix reusable offer configuration with each member’s changing coverage.

Copy program and package settings onto each term: Duplicated settings would require reconciliation whenever the authoritative configuration changes.

## Consequences

Membership writers read the current configuration through its owning module. Structural operations call the holdings owner when they must move member connections. A pure period engine can be extracted for another domain without moving member ownership.
