---
id: FAS-MBR-STR-04
title: 'Membership Offerings: Feature Acceptance Suite'
feature: FEAT-MBR-STR-04
product_area: membership
module: structure
revision: 1
status: proposed
product_intent: proposed
source_sha:
  services-membership: 5994c270e8a37a30f848e99ba5b5ee6b87c08893
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
capabilities:
  - CAP-MBR-STR-012
  - CAP-MBR-STR-013
  - CAP-MBR-STR-014
scenarios:
  - id: FAS-MBR-STR-04-01
    title: Prepare an offering with grants and stored change choices
    kind: behaviour
    exercises:
      - CAP-MBR-STR-012
      - CAP-MBR-STR-013
      - CAP-MBR-STR-014
    relies_on:
      - ATS-MBR-STR-012-01
      - ATS-MBR-STR-013-02
      - ATS-MBR-STR-014-02
    preconditions: Accounting products and separate primary and grant programs with types exist.
    steps:
      - do: >-
          Save a policy set, create a package referencing it and add an independently dated grant and
          unit requirements; read the aggregate.
        expect: >-
          The offering returns the shared product identity, its primary context, its accepted child lists
          and the stored policy-set reference.
        provenance: proposed
        source:
          - CAP-MBR-STR-012
          - CAP-MBR-STR-013
          - CAP-MBR-STR-014
    expected: >-
      The offering returns the shared product identity, its primary context, its accepted child lists and
      the stored policy-set reference.
    negative: false
    data_needs: >-
      Dedicated workspace fixtures, current record versions and distinct callers for the accepted and
      refused actions.
    bound_to: []
    provenance: proposed
    source:
      - CAP-MBR-STR-012
      - CAP-MBR-STR-013
      - CAP-MBR-STR-014
  - id: FAS-MBR-STR-04-02
    title: A failed grant rejects the complete offering
    kind: interaction
    exercises:
      - CAP-MBR-STR-012
      - CAP-MBR-STR-013
      - CAP-MBR-STR-014
    relies_on:
      - ATS-MBR-STR-012-07
      - ATS-MBR-STR-013-02
      - ATS-MBR-STR-014-02
    preconditions: 'A valid policy set and product exist, but the proposed grant type belongs to a different program.'
    steps:
      - do: >-
          Submit the otherwise valid package with that grant, then inspect the proposed package identity,
          child rows and policy set.
        expect: >-
          The package and children are absent; the separately saved policy set remains available for a
          corrected retry.
        provenance: proposed
        source:
          - CAP-MBR-STR-012
          - CAP-MBR-STR-013
          - CAP-MBR-STR-014
    expected: >-
      The package and children are absent; the separately saved policy set remains available for a
      corrected retry.
    negative: false
    data_needs: >-
      Dedicated workspace fixtures, current record versions and distinct callers for the accepted and
      refused actions.
    bound_to: []
    provenance: proposed
    source:
      - CAP-MBR-STR-012
      - CAP-MBR-STR-013
      - CAP-MBR-STR-014
  - id: FAS-MBR-STR-04-03
    title: Removing an unused package releases its local aggregate
    kind: lifecycle
    exercises:
      - CAP-MBR-STR-012
      - CAP-MBR-STR-013
      - CAP-MBR-STR-014
      - CAP-MBR-STR-018
    relies_on:
      - ATS-MBR-STR-018-05
      - ATS-MBR-STR-013-05
    preconditions: 'An unreferenced offering has grants, unit requirements and a policy-set reference.'
    steps:
      - do: >-
          Delete the extension at the current version, inspect its owned lists and product, then remove
          the now-unreferenced policy set.
        expect: >-
          The extension and owned lists disappear while the Accounting product remains; the released
          policy set can then be removed.
        provenance: proposed
        source:
          - CAP-MBR-STR-012
          - CAP-MBR-STR-013
          - CAP-MBR-STR-014
          - CAP-MBR-STR-018
    expected: >-
      The extension and owned lists disappear while the Accounting product remains; the released policy
      set can then be removed.
    negative: false
    data_needs: >-
      Dedicated workspace fixtures, current record versions and distinct callers for the accepted and
      refused actions.
    bound_to: []
    provenance: proposed
    source:
      - CAP-MBR-STR-012
      - CAP-MBR-STR-013
      - CAP-MBR-STR-014
      - CAP-MBR-STR-018
  - id: FAS-MBR-STR-04-04
    title: Offering setup uses configuration management
    kind: permission
    exercises:
      - CAP-MBR-STR-012
      - CAP-MBR-STR-013
      - CAP-MBR-STR-014
    relies_on:
      - ATS-MBR-STR-019-02
      - ATS-MBR-STR-019-03
    preconditions: Configuration manager and read-only staff callers share a workspace.
    steps:
      - do: >-
          Read the offering and policy set, then attempt extension, grant and policy changes with each
          caller.
        expect: The reader inspects available setup but only configuration management authorizes mutations.
        provenance: proposed
        source:
          - CAP-MBR-STR-012
          - CAP-MBR-STR-013
          - CAP-MBR-STR-014
    expected: The reader inspects available setup but only configuration management authorizes mutations.
    negative: true
    data_needs: >-
      Dedicated workspace fixtures, current record versions and distinct callers for the accepted and
      refused actions.
    bound_to: []
    provenance: proposed
    source:
      - CAP-MBR-STR-012
      - CAP-MBR-STR-013
      - CAP-MBR-STR-014
  - id: FAS-MBR-STR-04-05
    title: A program change does not silently certify retained grants
    kind: regression
    exercises:
      - CAP-MBR-STR-012
      - CAP-MBR-STR-013
      - CAP-MBR-STR-018
    relies_on:
      - ATS-MBR-STR-013-02
      - ATS-MBR-STR-018-04
    preconditions: A package grants membership in another program and its grant list is omitted from an update.
    steps:
      - do: >-
          Change the package’s primary program to the retained grant program, then inspect the saved
          grant and report its compatibility.
        expect: >-
          The retained grant is not revalidated by the submitted-grant check; the case exposes the
          unresolved compatibility defect for review.
        provenance: proposed
        source:
          - CAP-MBR-STR-012
          - CAP-MBR-STR-013
          - CAP-MBR-STR-018
    expected: >-
      The retained grant is not revalidated by the submitted-grant check; the case exposes the unresolved
      compatibility defect for review.
    negative: true
    data_needs: >-
      Dedicated workspace fixtures, current record versions and distinct callers for the accepted and
      refused actions.
    bound_to: []
    provenance: proposed
    source:
      - CAP-MBR-STR-012
      - CAP-MBR-STR-013
      - CAP-MBR-STR-018
evidence:
  - CAP-MBR-STR-012
  - CAP-MBR-STR-013
  - CAP-MBR-STR-014
  - CAP-MBR-STR-012
  - CAP-MBR-STR-013
  - CAP-MBR-STR-014
  - CAP-MBR-STR-012
  - CAP-MBR-STR-013
  - CAP-MBR-STR-014
  - CAP-MBR-STR-018
  - CAP-MBR-STR-012
  - CAP-MBR-STR-013
  - CAP-MBR-STR-014
  - CAP-MBR-STR-012
  - CAP-MBR-STR-013
  - CAP-MBR-STR-018
regression_record:
  - revision: 1
    change: initial
    scenarios:
      - FAS-MBR-STR-04-01
      - FAS-MBR-STR-04-02
      - FAS-MBR-STR-04-03
      - FAS-MBR-STR-04-04
      - FAS-MBR-STR-04-05
    reason: Initial cumulative feature coverage from the landed planning and design contracts.
    provenance: documented
    source: specs/CONVENTIONS.md#5.3 Feature Acceptance Suite (FAS)
narrative_sources:
  - section: What the Feature Must Do as a Whole
    provenance: proposed
    source: FEAT-MBR-STR-04
  - section: Interactions Between Capabilities
    provenance: proposed
    source:
      - FAS-MBR-STR-04-02
  - section: Regression Record
    provenance: documented
    source: specs/CONVENTIONS.md#5.3 Feature Acceptance Suite (FAS)
---

# Membership Offerings: Feature Acceptance Suite

## What the Feature Must Do as a Whole

The suite follows an offering across its product extension, grants and stored change choices. Each scenario combines outcomes that staff need to trust together and identifies the capability examples it relies on.

## Interactions Between Capabilities

Submit the otherwise valid package with that grant, then inspect the proposed package identity, child rows and policy set. The package and children are absent; the separately saved policy set remains available for a corrected retry.

A complete feature run also revisits the accepted and refused outcomes when referenced configuration changes. Proposed cases require executable proof before they establish delivery qualification.

## Regression Record

| Revision | Change | Scenario | Why |
|---|---|---|---|
| 1 | initial | all | Establish cumulative feature coverage from the landed planning and design contracts. |
