---
id: SVC-MBR-MEM-snapshots
title: Membership Snapshots Service Module
product_area: membership
module: memberships
repository: services-membership
source_module: modules/snapshots
revision: 1
status: draft
design_intent: proposed
implementation_evidence: partially-observed
inference: []
source_sha:
  services-membership: 5994c270e8a37a30f848e99ba5b5ee6b87c08893
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
owns: []
does_not_own:
  - >-
    History owns the broad concept; this service implements settings, monthly
    rows and execution records.
  - >-
    The shared snapshot platform owns run ledger, scheduling and rerun
    contracts.
  - CRM owns source contact characteristics selected for capture.
operations:
  - operation_id: getSnapshotsHealth
    intent: Return snapshot deployment health and build information.
    access: public
    permission: 'none: the shared module health route'
    realises: []
    published_to_submissions: 'not published: deployment health exposes no submission capture'
  - operation_id: getSnapshotDimensionSettings
    intent: Read the ordered reporting characteristics and their capture basis.
    access: console
    permission: membership.configuration.read
    realises:
      - CAP-MBR-MEM-019
    published_to_submissions: 'not published: reporting settings and reads expose no capture contract'
  - operation_id: replaceSnapshotDimensionSettings
    intent: >-
      Replace the ordered characteristic settings and deactivate omitted entries
      for later runs.
    access: console
    permission: membership.configuration.manage
    realises:
      - CAP-MBR-MEM-019
    published_to_submissions: 'not published: reporting settings and reads expose no capture contract'
  - operation_id: membership snapshot query datasets
    intent: >-
      Expose the current published monthly member, unit, characteristic and
      count datasets.
    access: internal
    permission: >-
      membership.membership-snapshot-members.query,
      membership.membership-snapshot-affiliations.query,
      membership.membership-snapshot-dimensions.query,
      membership.membership-snapshot-counts.query
    realises:
      - CAP-MBR-MEM-019
    published_to_submissions: >-
      not published: an internal service, partner or query contract; no intake
      route is registered
events: []
jobs:
  - name: snapshot planner
    kind: schedule
    when: >-
      A fifteen-minute schedule plans due monthly work with reserved concurrency
      one.
    standard: The shared snapshot planning contract maintains due ledger runs.
  - name: snapshot dispatcher
    kind: schedule
    when: Minute passes and nudges admit work under the run cap.
    standard: The shared snapshot dispatcher uses ledger claims.
  - name: snapshot run job
    kind: durable job
    when: >-
      An admitted attempt generates and checks a month; retry back-off precedes
      final failure and alarm.
    standard: Shared durable jobs execute the snapshot run contract.
  - name: snapshot purge
    kind: lifecycle participant
    when: Workspace deletion invokes batched removal of snapshot rows.
    standard: The workspace lifecycle participant validates deletion state.
integrations:
  - system: Platform query layer
    direction: outbound
    contract: >-
      Register published datasets and the snapshot type with the shared query
      and snapshot platform.
consistency:
  - rule: >-
      One generation transaction writes, validates and publishes the monthly
      dataset.
    kind: transactional
    compensation: On failure retain the prior publication and follow ledger retries.
  - rule: >-
      Scheduled reconstruction uses the exclusive month-end instant; later-known
      reruns can publish revised facts.
    kind: eventual
    compensation: Keep previous versions while a successful rerun becomes current.
evidence:
  - >-
    services-membership at 5994c270:
    modules/snapshots/aws/api/snapshots.routes.ts, aws/snapshots.module.ts,
    aws/logic/*.ts; services/**; queries/membership-snapshots.query.ts;
    metadata/membership-snapshots.objects.ts.
controls: [TC-AVL-002, TC-AVL-003, TC-AVL-004, TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-AZ-005, TC-AZ-006, TC-CHG-001, TC-CHG-002, TC-CHG-003, TC-CHG-004, TC-CRY-001, TC-CRY-002, TC-CRY-003, TC-DAT-001, TC-DAT-002, TC-DAT-003, TC-DAT-007, TC-IAM-001, TC-IAM-002, TC-IAM-004, TC-IAM-005, TC-IAM-006, TC-LOG-002, TC-LOG-003, TC-LOG-004, TC-LOG-005, TC-MON-001, TC-MON-002, TC-MON-003, TC-MON-004, TC-PI-001, TC-PI-002, TC-PI-003, TC-PI-004, TC-PI-005, TC-PRV-001, TC-PRV-002, TC-SEC-001, TC-SEC-004, TC-TEN-001, TC-TEN-002, TC-TEN-003]
---

# Membership Snapshots Service Module

## What This Service Is For

Snapshots preserve complete published months for membership reporting. Each publication combines member standing, dated units and ancestry, chosen characteristics and movement counts.

## Boundary

The service implements the reporting facet of history: characteristic settings, generated rows and execution jobs. The shared snapshot platform supplies ledger and scheduling contracts, and the query layer serves current publications.

## Operations in Words

Administrators read and replace reporting characteristics. Dataset readers select published monthly data through distinct query permissions. Generation and publication are scheduled internal work.

## Events and Jobs

A periodic planner schedules due months and a dispatcher admits runs under the cap. Durable generation validates before publication and delegates retry to the ledger. Workspace deletion invokes bounded purge work.

## Consistency Guarantees

Generation, checks and publication commit as one unit, preserving the prior current version on failure. Later-known reruns can publish corrections as another version. Existing findings cover blank captures, migrated history and transaction scale.
