The coverage map distinguishes specified examples from missing proof. A covered category means an expected case is specified; executable bindings and their run results remain separate evidence. Each required rule has a proof link or an explicit coverage finding in the structured rule ledger.
Invalid grants roll back the package aggregate. Create a package with a valid primary program and a grant paired with another program’s type.
Package references protect stored change policies. Save a policy set, reference it from a package and try deleting the policy set at its current version.
A partial offering edit validates the complete term rule. Save an annual anniversary package, change only its basis to calendar without the required month and then submit a valid combined correction.
Accounting activity changes both kinds of extension reads. Prepare package and dues extensions, retire their underlying products and read each extension.
Coverage
Rulegap: FND-MBR-STR-065
Transitioncovered
Validationcovered
Permissioncovered
Edgecovered
Failuregap: FND-MBR-STR-065
Boundarycovered
Concurrencygap: FND-MBR-STR-065
Invariantcovered
Interactioncovered
Test Scenarios
15 scenarios proving CAP-MBR-STR-012; 7 bound to an existing test.
01Invalid product identities leave no packagevalidationapinegativetest
services-membership:tests/acceptance/configuration/MBR-ACC-0099.acceptance.ts#MBR-ACC-0099: A package is created as the extension of a product Accounting already holds: no id, an unknown product, a product of another type and the product's own fields are each refused, and the created package answers the product's name, status, visibility and audiences
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Submit one program with another program’s classification.
Expected
The classification field is named in the refusal and no package is retained.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Bound to
services-membership:tests/e2e/database-refusals.e2e.spec.ts#mistakes only the database catches, through the API › DEF-MBR-0086: a configuration write a check, a foreign key or an integer column refuses › refuses a package of a type of another program 400 naming membership_type_id, and writes no package nor unit rule
services-membership:tests/e2e/database-refusals.e2e.spec.ts#mistakes only the database catches, through the API › DEF-MBR-0086: a configuration write a check, a foreign key or an integer column refuses › refuses a package of a type of another program 400 naming membership_type_id, and writes no package nor unit rule
06Renewal targets cannot be self or cross-programvalidationapinegativetest
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Compare renewal targets pointing to the package itself and to a different program’s package.
Expected
Both cases report an invalid renewal target.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Bound to
services-membership:tests/e2e/database-refusals.e2e.spec.ts#mistakes only the database catches, through the API › DEF-MBR-0086: a configuration write a check, a foreign key or an integer column refuses › refuses a package renewing into itself 400 naming renews_into_package_id
services-membership:tests/e2e/database-refusals.e2e.spec.ts#mistakes only the database catches, through the API › DEF-MBR-0086: a configuration write a check, a foreign key or an integer column refuses › refuses a package renewing into another program’s package 400 naming renews_into_package_id
services-membership:tests/e2e/database-refusals.e2e.spec.ts#mistakes only the database catches, through the API › DEF-MBR-0086: a configuration write a check, a foreign key or an integer column refuses › refuses a package renewing into itself 400 naming renews_into_package_id
07Policy-set references require an existing setvalidationapinegativetest
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Create an otherwise valid package with an absent policy set.
Expected
The response names the policy-set field and rejects creation.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Bound to
services-membership:tests/e2e/database-refusals.e2e.spec.ts#mistakes only the database catches, through the API › DEF-MBR-0086: a configuration write a check, a foreign key or an integer column refuses › refuses a change policy set that does not exist 400 naming change_policy_set_id
services-membership:tests/e2e/database-refusals.e2e.spec.ts#mistakes only the database catches, through the API › DEF-MBR-0086: a configuration write a check, a foreign key or an integer column refuses › refuses a change policy set that does not exist 400 naming change_policy_set_id
08Removing an unused extension preserves its producttransitionapiproposed
An isolated workspace contains the records and current versions needed for the case.
Steps
Create a package with a valid primary program and a grant paired with another program’s type.
Expected
The refusal names the grant classification and leaves no package or child rows.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:tests/e2e/database-refusals.e2e.spec.ts#mistakes only the database catches, through the API › DEF-MBR-0086: a configuration write a check, a foreign key or an integer column refuses › refuses a package of a type of another program 400 naming membership_type_id, and writes no package nor unit rule,services-membership:tests/e2e/database-refusals.e2e.spec.ts#mistakes only the database catches, through the API › DEF-MBR-0086: a configuration write a check, a foreign key or an integer column refuses › refuses a grant whose type is not of the granted program 400 naming grants: membership_type_id, and writes no package
An isolated workspace contains the records and current versions needed for the case.
Steps
Save a policy set, reference it from a package and try deleting the policy set at its current version.
Expected
The package remains readable and the referenced policy set cannot be removed.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:tests/e2e/database-refusals.e2e.spec.ts#mistakes only the database catches, through the API › DEF-MBR-0086: a configuration write a check, a foreign key or an integer column refuses › refuses a change policy set that does not exist 400 naming change_policy_set_id,services-membership:modules/configuration/services/configuration/configuration-records.ts:policySetResource
13A partial offering edit validates the complete term ruleinteractionapiproposed
An isolated workspace contains the records and current versions needed for the case.
Steps
Save an annual anniversary package, change only its basis to calendar without the required month and then submit a valid combined correction.
Expected
The incomplete combined rule fails without altering the package; the valid correction saves and computes the sample dates.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:tests/e2e/packages-as-products.e2e.spec.ts#packages as products, through the API › refuses a package whose product Accounting does not have, 400,services-membership:modules/configuration/services/configuration/configuration-records.ts:packageResource
14Accounting activity changes both kinds of extension readsinteractionapiproposed
An isolated workspace contains the records and current versions needed for the case.
Steps
Prepare package and dues extensions, retire their underlying products and read each extension.
Expected
Both answers reflect Accounting activity without copying product state into Membership configuration.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:tests/e2e/packages-as-products.e2e.spec.ts#packages as products, through the API › refuses the common fields a package no longer carries of its own (they are the product’s),services-membership:modules/structure/tests/unit/accounting-products.spec.ts#the Accounting products port › answers a product Accounting no longer has as its id, inactive, hidden, with no product status
15Workspace authority gates this capabilitypermissionapinegativeproposed
An isolated workspace contains the records and current versions needed for the case.
Steps
Exercise the capability’s exposed operations with its read-only and management callers, then repeat with application access removed, an unlicensed workspace and an unavailable workspace.
Expected
Each named operation requires its declared authority; admission failures occur before any record or calculated result is exposed.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:tests/unit/route-authorization.spec.ts#route authorization: every Membership operation names its permission › requires membership.structure.read of every structure read and membership.structure.manage of every change,services-membership:modules/configuration/aws/api/configuration.routes.ts:configurationModuleRoutes,services-membership:tests/e2e/terms-api.e2e.spec.ts#the terms API, end to end in process › refuses a caller who holds no key in the tenant