---
id: TST-MBR-MEM-004
title: Renewal planning and durable execution
kind: integration
product_area: membership
module: memberships
revision: 1
status: draft
source_sha:
  services-membership: 5994c270e8a37a30f848e99ba5b5ee6b87c08893
repository: services-membership
files:
  - modules/billing/tests/integration/billing-runs.integration.spec.ts
implements:
  - ATS-MBR-MEM-013-03
  - ATS-MBR-MEM-013-07
  - ATS-MBR-MEM-013-08
  - ATS-MBR-MEM-013-10
  - FAS-MBR-MEM-05-03
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/billing/tests/integration/billing-runs.integration.spec.ts
assertion_anchors:
  - scenario: ATS-MBR-MEM-013-03
    source: >-
      services-membership:modules/billing/tests/integration/billing-runs.integration.spec.ts#leaves
      out the renewed term and the suspended membership
  - scenario: ATS-MBR-MEM-013-07
    source: >-
      services-membership:modules/billing/tests/integration/billing-runs.integration.spec.ts#refuses
      as stale an action whose term changed after planning
  - scenario: ATS-MBR-MEM-013-07
    source: >-
      services-membership:modules/billing/tests/integration/billing-runs.integration.spec.ts#does
      nothing on a second execution
  - scenario: ATS-MBR-MEM-013-08
    source: >-
      services-membership:modules/billing/tests/integration/billing-runs.integration.spec.ts#executes
      on the jobs engine: one order per renewing candidate (Jo’s with both dues
      chapters), a notice and reminder each, one drop per lapsed term
  - scenario: ATS-MBR-MEM-013-10
    source: >-
      services-membership:modules/billing/tests/integration/billing-runs.integration.spec.ts#creates
      and plans one run per occurrence of a recurring run, a redelivered
      occurrence finding it
  - scenario: FAS-MBR-MEM-05-03
    source: >-
      services-membership:modules/billing/tests/integration/billing-runs.integration.spec.ts
---

# Renewal planning and durable execution

## Verification Boundary

Billing candidates, planned actions and durable execution 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 prove deployed job admission, live payment collection or successful external communication delivery. Registration records existing code and leaves execution and conformance unverified.

## Real Dependencies and Test Doubles

Billing persistence and the local jobs engine remain real where the suite invokes them. Commerce placement, communication object storage, clocks and callers use the test fixtures described by the source.

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