---
id: TST-MBR-MEM-244
title: Request replay and idempotency key refusals
kind: api-lifecycle
product_area: membership
module: memberships
revision: 1
status: draft
source_sha:
  services-membership: 5994c270e8a37a30f848e99ba5b5ee6b87c08893
repository: services-membership
files:
  - tests/e2e/idempotency-ledger.e2e.spec.ts
implements: []
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: >-
  The existing suite is registered without inventing a complete scenario
  mapping.
coverage_gap: FND-MBR-MEM-105
evidence:
  - 'services-membership:tests/e2e/idempotency-ledger.e2e.spec.ts'
assertion_anchors: []
---

# Request replay and idempotency key refusals

## Verification Boundary

The suite exercises the in-process API or participant boundary with signed contexts or participant envelopes and PostgreSQL.

## What This Suite Proves

The suite contains executable checks at the boundary described above. Its current assertions do not map to a complete authored scenario, so it receives no invented proof binding.

## What It Does Not Prove

An in-process pass does not qualify deployed network calls, queues, schedules or the member’s full browser journey. Registration records existing code and leaves execution and conformance unverified.

## Real Dependencies and Test Doubles

The public handler or participant boundary, membership database and reservation functions remain real. Signing material, seeded owner rows and partner or transport ports are controlled in-process fixtures.

## 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.
