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.
Merge children obey the same placement choices as moves. Prepare a source child whose kind disallows the survivor’s kind and attempt both a direct move and a source merge.
A move changes current reads while retaining dated reads. Read a branch, move its chapter on a later date and repeat both current and earlier-date reads.
Detail replacement cannot undo a move. Move a chapter, then replace its local contact details while submitting its former parent in the body.
Coverage
Rulecovered
Transitiongap: FND-MBR-STR-055
Validationcovered
Permissioncovered
Edgecovered
Failuregap: FND-MBR-STR-055
Boundarycovered
Concurrencycovered
Invariantcovered
Interactioncovered
Test Scenarios
16 scenarios proving CAP-MBR-STR-002; 12 bound to an existing test.
01Placement checks also guard direct writesvalidationapinegativetest
An isolated workspace contains the records and current versions needed for the case.
Steps
Prepare a source child whose kind disallows the survivor’s kind and attempt both a direct move and a source merge.
Expected
Both requests refuse the placement and the merge changes no child, source standing or affiliation.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:tests/e2e/structure-api.e2e.spec.ts#the structure API, end to end in process › refuses a parent of a type not allowed, 409 parent_type_not_allowed,services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational units in the database › merge › moves the children under the survivor, marks the unit merged and lists what it left
14A move changes current reads while retaining dated readsinteractionapitest
services-membership:modules/structure/services/persistence/organizational-units.ts:recordParentChange,services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational units in the database › the parent history and the as-of tree › answers the descendants as of 2027-06-30 equal to the tree recorded that day,services-membership:tests/e2e/s09-restructuring.e2e.spec.ts#still holds Atlanta among the Eastern Region’s descendants as of the period end
15Detail replacement cannot undo a moveinteractionapiproposed
An isolated workspace contains the records and current versions needed for the case.
Steps
Move a chapter, then replace its local contact details while submitting its former parent in the body.
Expected
The local details change while the chapter retains the accepted placement and depth.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:modules/structure/tests/unit/services/tree-edits.spec.ts#the tree edits › move › locks, validates against the current closure, changes the parent, records history, rebuilds, updates depths and checks the cap, in that order,services-membership:modules/structure/services/persistence/organizational-units.ts:updateOrganizationalUnit
16Workspace 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