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.
Package references prevent moving a classification. Create a package using a type, then try moving the type to another program.
Changing benefits changes current interpretation. Evaluate a covering term with benefits, disable benefits on its type and evaluate again from live settings.
Coverage
Rulegap: FND-MBR-STR-064
Transitioncovered
Validationcovered
Permissioncovered
Edgegap: FND-MBR-STR-064
Failuregap: FND-MBR-STR-064
Boundarycovered
Concurrencygap: FND-MBR-STR-064
Invariantcovered
Interactioncovered
Test Scenarios
8 scenarios proving CAP-MBR-STR-011; 3 bound to an existing test.
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Create a type under a missing program and try moving a package-referenced type elsewhere.
Expected
The relevant program field is reported and existing classifications remain intact.
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 type of a program that does not exist 400 naming program_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 moving a type a package names to another program 400 naming program_id, and leaves it where it was
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 type of a program that does not exist 400 naming program_id
02Type overrides preserve zero and no-benefit choicesinteractionapitest
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Enable flow-down with no target and with a missing target.
Expected
Both cases fail and identify the target field.
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 flow-down enabled without a target type 400 naming flowdown_type_id, and writes no type
services-membership:tests/e2e/database-refusals.e2e.spec.ts#mistakes only the database catches, through the API › DEF-MBR-0264: a flow-down type that does not exist › refuses an unknown flowdown_type_id 400 naming the field and the type, and writes no type
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 flow-down enabled without a target type 400 naming flowdown_type_id, and writes no type
04Flow-down selections deduplicate at their size limitboundaryapiproposed
An isolated workspace contains the records and current versions needed for the case.
Steps
Create a package using a type, then try moving the type to another program.
Expected
The program change fails and both package and type retain their original program relationship.
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 moving a type a package names to another program 400 naming program_id, and leaves it where it was,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
07Changing benefits changes current interpretationinteractionapiproposed
An isolated workspace contains the records and current versions needed for the case.
Steps
Evaluate a covering term with benefits, disable benefits on its type and evaluate again from live settings.
Expected
The same period becomes active without benefits without changing its dates.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:modules/configuration/db/membership-types.table.ts:membershipTypes,services-membership:modules/terms/tests/unit/status.spec.ts#holding status: the rows of §2 › is active without benefits when the covering term’s classification confers none
08Workspace 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