---
id: ADR-MBR-MEM-003
title: Commit Local Term Effects Together
product_area: membership
module: memberships
revision: 1
status: proposed
design_intent: proposed
source_sha:
  services-membership: 5994c270e8a37a30f848e99ba5b5ee6b87c08893
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
decision: >-
  A supported term write takes the membership lock and commits its local
  dependent effects in the same transaction.
constrains:
  - DOM-MBR-MEM-001
  - DOM-MBR-MEM-002
  - SVC-MBR-MEM-memberships
  - WF-MBR-MEM-001
  - WF-MBR-MEM-002
  - WF-MBR-MEM-003
  - WF-MBR-MEM-004
origin: 'none: the consistency model the term-write steps embody'
alternatives:
  - option: 'Write the term, then fan out asynchronously'
    why_not: >-
      Post-commit fan-out would expose partial coverage and require repair of
      each dependent record.
  - option: Lock the owner for every term write
    why_not: >-
      Owner-wide locking would protect cross-program conflicts but also
      serialize otherwise independent holdings.
consequences:
  - Local failure rolls back the complete dependent write.
  - >-
    Membership locking leaves the known cross-program exclusivity race for
    concurrent additions.
  - Large organizational derivations lengthen the writer’s transaction.
supersedes: []
evidence:
  - >-
    services-membership at 5994c270:
    modules/memberships/services/operations/term-writes.ts, staff-operations.ts;
    services/persistence/memberships.ts:lockMembership, lockOwner
---

# Commit Local Term Effects Together

## Context

Coverage changes also affect chapter connections, grants, organizational people, events and attention. The local write paths group those effects under holding locks.

## Decision

A supported term write takes the membership lock and commits its local dependent effects in the same transaction.

## Alternatives Considered

Write the term, then fan out asynchronously: Post-commit fan-out would expose partial coverage and require repair of each dependent record.

Lock the owner for every term write: Owner-wide locking would protect cross-program conflicts but also serialize otherwise independent holdings.

## Consequences

Local failure rolls back the complete dependent write. Membership locking leaves the known cross-program exclusivity race for concurrent additions. Large organizational derivations lengthen the writer’s transaction.
