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.
Program binding controls accepted requirement lists. Change an unused program from affiliation binding to no binding, attempt a populated requirement replacement and then an empty replacement.
A zero type override changes live grace interpretation. Set program grace to 60 and type grace to zero, evaluate an ended holding, then clear the type override and evaluate again.
Changing program grace changes an existing holding answer. Evaluate an ended holding with 60 grace days, narrow the live program allowance and evaluate the same date again.
Coverage
Rulecovered
Transitiongap: FND-MBR-STR-062
Validationcovered
Permissioncovered
Edgegap: FND-MBR-STR-062
Failuregap: FND-MBR-STR-062
Boundarycovered
Concurrencygap: FND-MBR-STR-062
Invariantgap: FND-MBR-STR-062
Interactioncovered
Test Scenarios
10 scenarios proving CAP-MBR-STR-009; 3 bound to an existing test.
01Identity-bound programs need a categoryvalidationapinegativetest
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Attempt identity-bound program creation without its identifying unit category.
Expected
The request fails with the identifying-category field reported.
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 an identity-bound program without its identity unit type 400 naming identity_unit_type_id
services-membership:tests/acceptance/configuration/MBR-ACC-0120.acceptance.ts#MBR-ACC-0120: Scenario 11 through the route: an identity-bound Chapter Membership program names its chapter unit type and its owning unit, refuses the wrong structure references in plain words and the missing identity type raw, and Kim holds a National and an Atlanta membership side by side
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 an identity-bound program without its identity unit type 400 naming identity_unit_type_id
02Program structural references are verified togethervalidationapinegativetest
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Submit an absent identity category and an absent owning unit.
Expected
One refusal names both references and no program is created.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Bound to
services-membership:tests/acceptance/configuration/MBR-ACC-0120.acceptance.ts#MBR-ACC-0120: Scenario 11 through the route: an identity-bound Chapter Membership program names its chapter unit type and its owning unit, refuses the wrong structure references in plain words and the missing identity type raw, and Kim holds a National and an Atlanta membership side by side
services-membership:tests/acceptance/configuration/MBR-ACC-0120.acceptance.ts#MBR-ACC-0120: Scenario 11 through the route: an identity-bound Chapter Membership program names its chapter unit type and its owning unit, refuses the wrong structure references in plain words and the missing identity type raw, and Kim holds a National and an Atlanta membership side by side
03Changed grace settings are read liveinteractionapinegativetest
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Attempt an oversized grace allowance, then change a valid allowance and evaluate an existing member.
Expected
The excessive value fails and the existing holding uses the new valid grace.
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 grace period of 2^31 days 400 naming grace_days, beyond what the column stores
services-membership:tests/acceptance/configuration/MBR-ACC-0119.acceptance.ts#MBR-ACC-0119: Scenario 4 in configuration terms: Sam's grace, lapse, drop and rejoin follow the program's 60-day grace and 60-day continuity gap and the package's 180-day reinstatement, and widening the continuity gap afterwards merges his two episodes into one
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 grace period of 2^31 days 400 naming grace_days, beyond what the column stores
04Exclusivity changes affect later enrolmentsinteractionapiproposed
An isolated workspace contains the records and current versions needed for the case.
Steps
Establish two overlapping holdings, put their programs in one exclusivity group and attempt another overlapping enrolment; then clear the group and retry.
Expected
Earlier holdings stay intact; the grouped attempt fails and the cleared-group attempt succeeds.
Data
Separate fixture records for the accepted and refused operations.
An isolated workspace contains the records and current versions needed for the case.
Steps
Change an unused program from affiliation binding to no binding, attempt a populated requirement replacement and then an empty replacement.
Expected
The populated list fails and the empty list saves at the current program version.
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 an identity-bound program without its identity unit type 400 naming identity_unit_type_id,services-membership:modules/configuration/services/configuration/configuration-records.ts:replaceProgramUnitTypesOf
08A zero type override changes live grace interpretationinteractionapiproposed
An isolated workspace contains the records and current versions needed for the case.
Steps
Set program grace to 60 and type grace to zero, evaluate an ended holding, then clear the type override and evaluate again.
Expected
The first answer is lapsed and the second uses program grace.
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 grace period of 2^31 days 400 naming grace_days, beyond what the column stores,services-membership:modules/configuration/db/membership-types.table.ts:membershipTypes
09Changing program grace changes an existing holding answerinteractionapiproposed
An isolated workspace contains the records and current versions needed for the case.
Steps
Evaluate an ended holding with 60 grace days, narrow the live program allowance and evaluate the same date again.
Expected
The retained term is unchanged while its standing changes from grace to lapsed.
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 grace period of 2^31 days 400 naming grace_days, beyond what the column stores,services-membership:modules/terms/tests/unit/status.spec.ts#holding status: the rows of §2 › is in grace on the last day of grace (D = E + grace_days)
10Workspace 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