---
id: TST-MBR-MEM-024
title: Dated chapter connection persistence
kind: integration
product_area: membership
module: memberships
revision: 1
status: draft
source_sha:
  services-membership: 5994c270e8a37a30f848e99ba5b5ee6b87c08893
repository: services-membership
files:
  - >-
    modules/memberships/tests/integration/services/affiliations.integration.spec.ts
implements:
  - ATS-MBR-MEM-003-03
  - ATS-MBR-MEM-005-09
  - ATS-MBR-MEM-007-02
  - ATS-MBR-MEM-007-03
  - ATS-MBR-MEM-007-05
  - ATS-MBR-MEM-007-06
  - ATS-MBR-MEM-007-07
  - ATS-MBR-MEM-007-09
  - ATS-MBR-MEM-007-10
  - ATS-MBR-MEM-008-01
  - ATS-MBR-MEM-008-02
  - ATS-MBR-MEM-019-01
environment: local
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 3
isolation: >-
  A suite-owned workspace and test identifiers; suites that use shared seed data
  require the source’s serial execution and cleanup policy.
verification_notes: >-
  Bindings describe the assertions reviewed at the pinned commit; the suite is
  not executed by this documentation job.
coverage_gap: null
evidence:
  - >-
    services-membership:modules/memberships/tests/integration/services/affiliations.integration.spec.ts
assertion_anchors:
  - scenario: ATS-MBR-MEM-003-03
    source: >-
      services-membership:modules/memberships/tests/integration/services/affiliations.integration.spec.ts#moves
      a term’s affiliations with a corrected start
  - scenario: ATS-MBR-MEM-005-09
    source: >-
      services-membership:modules/memberships/tests/integration/services/affiliations.integration.spec.ts#lists
      a member of two chapters once under their zone and region, and under each
      chapter
  - scenario: ATS-MBR-MEM-007-02
    source: >-
      services-membership:modules/memberships/tests/integration/services/affiliations.integration.spec.ts#refuses
      a unit whose type takes no member affiliation (a region)
  - scenario: ATS-MBR-MEM-007-03
    source: >-
      services-membership:modules/memberships/tests/integration/services/affiliations.integration.spec.ts#refuses
      a Regular term with no chapter: the package needs one (unit_minimum)
  - scenario: ATS-MBR-MEM-007-03
    source: >-
      services-membership:modules/memberships/tests/integration/services/affiliations.integration.spec.ts#refuses
      a second chapter on a Student term: the package allows one (unit_maximum)
  - scenario: ATS-MBR-MEM-007-03
    source: >-
      services-membership:modules/memberships/tests/integration/services/affiliations.integration.spec.ts#refuses
      to end a Regular term’s only chapter (unit_minimum), and ends one of two
  - scenario: ATS-MBR-MEM-007-05
    source: >-
      services-membership:modules/memberships/tests/integration/services/affiliations.integration.spec.ts#refuses
      the same unit twice on a day of a term (affiliation_overlap)
  - scenario: ATS-MBR-MEM-007-06
    source: >-
      services-membership:modules/memberships/tests/integration/services/affiliations.integration.spec.ts#refuses
      to add a chapter that sells dues for the package, naming the Commerce
      amendment (requires_amendment)
  - scenario: ATS-MBR-MEM-007-06
    source: >-
      services-membership:modules/memberships/tests/integration/services/affiliations.integration.spec.ts#adds
      a chapter that sells no dues from today, not primary beside the term’s
      primary
  - scenario: ATS-MBR-MEM-007-07
    source: >-
      services-membership:modules/memberships/tests/integration/services/affiliations.integration.spec.ts#writes
      a staff term’s chapters from its first day, the first of the type the
      primary
  - scenario: ATS-MBR-MEM-007-07
    source: >-
      services-membership:modules/memberships/tests/integration/services/affiliations.integration.spec.ts#carries
      the previous term’s chapters into a staff renewal that names none, as
      inherited
  - scenario: ATS-MBR-MEM-007-09
    source: >-
      services-membership:modules/memberships/tests/integration/services/affiliations.integration.spec.ts#makes
      an affiliation the primary of its type and the other one no longer
  - scenario: ATS-MBR-MEM-007-10
    source: >-
      services-membership:modules/memberships/tests/integration/services/affiliations.integration.spec.ts#refuses
      an affiliation change read at an older version (version_mismatch)
  - scenario: ATS-MBR-MEM-008-01
    source: >-
      services-membership:modules/memberships/tests/integration/services/affiliations.integration.spec.ts#transfers
      to a chapter that sells no dues: the old row ends the day before, the new
      one continues it as primary
  - scenario: ATS-MBR-MEM-008-02
    source: >-
      services-membership:modules/memberships/tests/integration/services/affiliations.integration.spec.ts#refuses
      to transfer to a chapter that sells dues for the package
      (requires_amendment)
  - scenario: ATS-MBR-MEM-019-01
    source: >-
      services-membership:modules/memberships/tests/integration/services/affiliations.integration.spec.ts#answers
      the dataset’s views as the application role: the primary unit today, every
      unit with its ancestors once
---

# Dated chapter connection persistence

## Verification Boundary

Membership writes, dated reads, affiliations, standing and officer scope run against the prepared database.

## What This Suite Proves

The structured bindings identify the capability and feature cases whose reviewed assertions this suite executes. Source anchors preserve the evidence for each binding.

## What It Does Not Prove

A local pass does not qualify deployed scheduling, browser administration or successful production partner calls. Registration records existing code and leaves execution and conformance unverified.

## Real Dependencies and Test Doubles

The database constraints and workspace-scoped persistence exercised by this suite remain real; manual clocks, supplied callers and neighbor fixtures define the local boundary.

## Must Not Be Doubled

Keep the prepared database, workspace boundary, exercised owner constraints and the business operation under test real. A partner double cannot substitute for the Membership write this suite claims to exercise.
