---
id: ATS-MBR-STR-005
scope: CAP-MBR-STR-005
product_area: membership
module: structure
revision: 2
status: proposed
approved_by: null
approved_at: null
source_sha:
  services-membership: 5994c270e8a37a30f848e99ba5b5ee6b87c08893
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
scenarios:
  - id: ATS-MBR-STR-005-01
    title: Ancestry reads begin with the requested unit
    level: api
    proves:
      - BR-CAP-MBR-STR-005-01
    preconditions: >-
      An isolated Membership-licensed workspace contains the relevant records, with caller permissions
      selected for the case.
    steps: Read Eastern’s descendants and Atlanta’s ancestors.
    expected: Both answers begin at distance zero and continue in distance and code order.
    negative: false
    data_needs: The FAA example records or equivalent records prepared within the isolated workspace.
    bound_to:
      - >-
        services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational
        units in the database › the closure › answers the descendants of a unit from the closure, nearest
        first
      - >-
        services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational
        units in the database › the closure › answers the ancestors of a unit from the closure, nearest
        first
      - >-
        services-membership:tests/e2e/structure-api.e2e.spec.ts#the structure API, end to end in process
        › answers today’s descendants from the closure
      - TST-MBR-STR-006
      - TST-MBR-STR-100
    provenance: test
    source: >-
      services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational
      units in the database › the closure › answers the descendants of a unit from the closure, nearest
      first
    category: rule
  - id: ATS-MBR-STR-005-02
    title: Historical placement uses effective and knowledge dates
    level: api
    proves:
      - BR-CAP-MBR-STR-005-02
      - AS-JNY-MBR-STR-002-02
    preconditions: >-
      An isolated Membership-licensed workspace contains the relevant records, with caller permissions
      selected for the case.
    steps: Read the former region around two placement changes and before their recorded knowledge.
    expected: 'The returned branch matches each requested period, with no rows before the known history.'
    negative: false
    data_needs: The FAA example records or equivalent records prepared within the isolated workspace.
    bound_to:
      - >-
        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
        2026-06-30 equal to the tree recorded that day
      - >-
        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: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-12-31 equal to the tree recorded that day
      - >-
        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 nothing for a known_at
        before the moves were recorded, beyond the tree as it was then known
      - >-
        services-membership:tests/e2e/structure-api.e2e.spec.ts#the structure API, end to end in process
        › answers an as-of date’s descendants from the parent history
      - >-
        services-membership:modules/structure/tests/unit/services/tree-statements.spec.ts#the tree
        statements › the as-of tree › reads the parent history’s versions known at the instant and
        effective on the date, with plain comparisons
      - >-
        services-membership:tests/acceptance/structure/MBR-ACC-0013.acceptance.ts#MBR-ACC-0013 a
        backdated move and a same-day correction
      - TST-MBR-STR-006
      - TST-MBR-STR-100
      - TST-MBR-STR-011
      - TST-MBR-STR-072
    provenance: test
    source: >-
      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
      2026-06-30 equal to the tree recorded that day
    category: rule
  - id: ATS-MBR-STR-005-03
    title: Paged lists reject invalid request shapes
    level: api
    proves:
      - BR-CAP-MBR-STR-005-06
    preconditions: >-
      An isolated Membership-licensed workspace contains the relevant records, with caller permissions
      selected for the case.
    steps: 'Follow a unit-list cursor, request 501 rows and submit a malformed cursor.'
    expected: Valid continuation follows code order; the oversized and malformed requests fail.
    negative: true
    data_needs: The FAA example records or equivalent records prepared within the isolated workspace.
    bound_to:
      - >-
        services-membership:tests/e2e/structure-api.e2e.spec.ts#the structure API, end to end in process
        › pages the flat list by code with a cursor
      - >-
        services-membership:tests/acceptance/structure/MBR-ACC-0009.acceptance.ts#MBR-ACC-0009 browsing a
        120-unit structure
      - TST-MBR-STR-100
      - TST-MBR-STR-068
    provenance: test
    source: >-
      services-membership:tests/e2e/structure-api.e2e.spec.ts#the structure API, end to end in process ›
      pages the flat list by code with a cursor
    category: boundary
  - id: ATS-MBR-STR-005-04
    title: Published functions honor the caller’s workspace
    level: api
    proves:
      - BR-CAP-MBR-STR-005-09
      - INV-DOM-MBR-STR-001-06
    preconditions: >-
      An isolated Membership-licensed workspace contains the relevant records, with caller permissions
      selected for the case.
    steps: Invoke ancestor and descendant functions as the table reader under two workspace contexts.
    expected: The owning workspace returns its branch and the other context returns none of those rows.
    negative: true
    data_needs: The FAA example records or equivalent records prepared within the isolated workspace.
    bound_to:
      - >-
        services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational
        units in the database › the published functions › answers membership.unit_descendants to
        rhythm_table_reader in its tenant
      - >-
        services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational
        units in the database › the published functions › answers membership.unit_ancestors to
        rhythm_table_reader in its tenant
      - >-
        services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational
        units in the database › the published functions › answers nothing of a tenant other than the
        reader’s own
      - >-
        services-membership:tests/acceptance/structure/MBR-ACC-0026.acceptance.ts#MBR-ACC-0026 another
        association's structure does not exist
      - TST-MBR-STR-006
      - TST-MBR-STR-085
    provenance: test
    source: >-
      services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational
      units in the database › the published functions › answers membership.unit_descendants to
      rhythm_table_reader in its tenant
    category: boundary
  - id: ATS-MBR-STR-005-05
    title: Foreign workspace unit identity remains hidden
    level: api
    proves:
      - BR-CAP-MBR-STR-005-11
    preconditions: >-
      An isolated Membership-licensed workspace contains the relevant records, with caller permissions
      selected for the case.
    steps: Request another workspace’s unit reference and list under the caller’s workspace.
    expected: The reference is missing and list rows belong only to the caller’s workspace.
    negative: true
    data_needs: The FAA example records or equivalent records prepared within the isolated workspace.
    bound_to:
      - >-
        services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational
        units in the database › row-level security › reads nothing of another tenant’s unit by id
      - >-
        services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational
        units in the database › row-level security › shows another tenant none of the units
      - >-
        services-membership:tests/acceptance/structure/MBR-ACC-0026.acceptance.ts#MBR-ACC-0026 another
        association's structure does not exist
      - TST-MBR-STR-006
      - TST-MBR-STR-085
    provenance: test
    source: >-
      services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational
      units in the database › row-level security › reads nothing of another tenant’s unit by id
    category: permission
  - id: ATS-MBR-STR-005-06
    title: Historical structure uses the unit’s present label
    category: interaction
    level: api
    proves:
      - BR-CAP-MBR-STR-005-03
    preconditions: An isolated workspace contains the records and current versions needed for the case.
    steps: 'Move a chapter in June, rename it in July and read the May branch.'
    expected: The May placement contains the July name and code; a unit first created in June is absent.
    negative: false
    data_needs: Separate fixture records for the accepted and refused operations.
    bound_to: []
    provenance: proposed
    source:
      - >-
        services-membership:modules/structure/services/persistence/organizational-units.ts:descendantsAsOf
  - id: ATS-MBR-STR-005-07
    title: The first tree page follows breadth ordering
    category: rule
    level: api
    proves:
      - BR-CAP-MBR-STR-005-04
    preconditions: An isolated workspace contains the records and current versions needed for the case.
    steps: Read the national branch with a page size of three in the prepared association structure.
    expected: >-
      The first page contains the national root, eastern region and western region in that order and
      supplies a continuation cursor.
    negative: false
    data_needs: Separate fixture records for the accepted and refused operations.
    bound_to:
      - >-
        services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#pages
        the tree breadth first with each unit’s parent
      - TST-MBR-STR-006
    provenance: test
    source:
      - >-
        services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#pages
        the tree breadth first with each unit’s parent
      - >-
        services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational
        units in the database › the closure › pages the tree breadth first with each unit’s parent
    coverage_limit: >-
      This test asserts the first page’s ordering and cursor, not returned parent fields or all
      branch-filter variants.
  - id: ATS-MBR-STR-005-08
    title: Search literals do not act as wildcards
    category: validation
    level: api
    proves:
      - BR-CAP-MBR-STR-005-05
    preconditions: An isolated workspace contains the records and current versions needed for the case.
    steps: >-
      Create codes and names containing distinguishable fragments; search mixed case, a literal percent,
      a literal underscore and blank text.
    expected: >-
      Mixed case finds the intended fragment; wildcard-shaped text finds only literal matches; blank text
      is refused.
    negative: true
    data_needs: Separate fixture records for the accepted and refused operations.
    bound_to: []
    provenance: proposed
    source:
      - >-
        services-membership:modules/structure/services/persistence/organizational-units.ts:listOrganizationalUnits
  - id: ATS-MBR-STR-005-09
    title: Parent history retains the explanation sequence
    category: rule
    level: api
    proves:
      - BR-CAP-MBR-STR-005-07
    preconditions: An isolated workspace contains the records and current versions needed for the case.
    steps: >-
      Place a chapter, move it twice on distinct dates with different actors and reasons, then read its
      parent history.
    expected: The three periods appear oldest first with the supplied actor and reason for each change.
    negative: false
    data_needs: Separate fixture records for the accepted and refused operations.
    bound_to: []
    provenance: proposed
    source:
      - >-
        services-membership:modules/structure/services/persistence/organizational-units.ts:listParentHistory
  - id: ATS-MBR-STR-005-10
    title: Reader access preserves the workspace boundary
    category: interaction
    level: api
    proves:
      - BR-CAP-MBR-STR-005-11
      - BR-CAP-MBR-STR-019-01
    preconditions: An isolated workspace contains the records and current versions needed for the case.
    steps: 'As a structure reader request own and foreign unit identities, then attempt a mutation.'
    expected: 'Own reads succeed, foreign rows stay hidden and management is refused.'
    negative: false
    data_needs: Separate fixture records for the accepted and refused operations.
    bound_to: []
    provenance: proposed
    source:
      - >-
        services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational
        units in the database › row-level security › reads nothing of another tenant’s unit by id
      - >-
        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
    exercises:
      - CAP-MBR-STR-005
      - CAP-MBR-STR-019
evidence:
  - >-
    services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts
  - 'services-membership:modules/structure/tests/unit/services/tree-statements.spec.ts'
  - 'services-membership:tests/acceptance/structure/MBR-ACC-0009.acceptance.ts'
  - 'services-membership:tests/acceptance/structure/MBR-ACC-0013.acceptance.ts'
  - 'services-membership:tests/acceptance/structure/MBR-ACC-0026.acceptance.ts'
  - 'services-membership:tests/e2e/structure-api.e2e.spec.ts'
  - >-
    services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational
    units in the database › the closure › answers the descendants of a unit from the closure, nearest
    first
  - >-
    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:modules/structure/services/persistence/organizational-units.ts:descendantsAsOf'
  - >-
    services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational
    units in the database › the closure › pages the tree breadth first with each unit’s parent
  - >-
    services-membership:modules/structure/services/persistence/organizational-units.ts:listOrganizationalUnits
  - 'services-membership:modules/structure/aws/api/structure.routes.ts:structureRoutes'
  - 'services-membership:modules/structure/services/persistence/organizational-units.ts:listParentHistory'
  - >-
    services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational
    units in the database › the published functions › answers nothing of a tenant other than the reader’s
    own
  - >-
    services-membership:tests/unit/metadata-registration.spec.ts#Membership’s registration manifests ›
    reads the units’ dataset under membership.structure.read, with custom field values and the ancestors
    over the closure
  - >-
    services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational
    units in the database › row-level security › reads nothing of another tenant’s unit by id
  - >-
    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
    2026-06-30 equal to the tree recorded that day
  - >-
    services-membership:tests/e2e/structure-api.e2e.spec.ts#the structure API, end to end in process ›
    pages the flat list by code with a cursor
  - >-
    services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational
    units in the database › the published functions › answers membership.unit_descendants to
    rhythm_table_reader in its tenant
  - >-
    services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#pages
    the tree breadth first with each unit’s parent
  - >-
    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
coverage:
  rule: covered
  transition: not-applicable
  validation: covered
  permission: covered
  edge: 'gap: FND-MBR-STR-058'
  failure: 'gap: FND-MBR-STR-058'
  boundary: covered
  concurrency: 'gap: FND-MBR-STR-058'
  invariant: 'gap: FND-MBR-STR-058'
  interaction: covered
coverage_notes:
  transition: >-
    This capability reads or changes facets without owning a standing transition; the owning lifecycle
    specification carries those transitions.
  edge: >-
    No dedicated scenario establishes this category across the capability’s declared operations and
    design obligations.
  failure: >-
    No dedicated scenario establishes this category across the capability’s declared operations and
    design obligations.
  concurrency: >-
    No dedicated scenario establishes this category across the capability’s declared operations and
    design obligations.
  invariant: >-
    No dedicated scenario establishes this category across the capability’s declared operations and
    design obligations.
unproved_rules: []
coverage_obligations:
  permissions:
    - key: membership.structure.read
      scenario_ids:
        - ATS-MBR-STR-019-01
      local_scenario_ids: []
      coverage: partial
      gap: FND-MBR-STR-058
      provenance: unknown
      source: FND-MBR-STR-058
      note: >-
        These cases establish declared authority or representative admission; exhaustive operation and
        caller combinations remain open.
    - key: membership.application.access
      scenario_ids:
        - ATS-MBR-STR-019-04
      local_scenario_ids: []
      coverage: partial
      gap: FND-MBR-STR-058
      provenance: unknown
      source: FND-MBR-STR-058
      note: >-
        These cases establish declared authority or representative admission; exhaustive operation and
        caller combinations remain open.
  state_models: []
  related:
    - capability: CAP-MBR-STR-019
      scenario: ATS-MBR-STR-005-10
      provenance: proposed
  invariants:
    - id: INV-DOM-MBR-STR-001-01
      scenario_ids: []
      coverage: gap
      gap: FND-MBR-STR-058
      provenance: unknown
      source: FND-MBR-STR-058
    - id: INV-DOM-MBR-STR-001-02
      scenario_ids: []
      coverage: gap
      gap: FND-MBR-STR-058
      provenance: unknown
      source: FND-MBR-STR-058
    - id: INV-DOM-MBR-STR-001-03
      scenario_ids: []
      coverage: gap
      gap: FND-MBR-STR-058
      provenance: unknown
      source: FND-MBR-STR-058
    - id: INV-DOM-MBR-STR-001-04
      scenario_ids: []
      coverage: gap
      gap: FND-MBR-STR-058
      provenance: unknown
      source: FND-MBR-STR-058
    - id: INV-DOM-MBR-STR-001-05
      scenario_ids: []
      coverage: gap
      gap: FND-MBR-STR-058
      provenance: unknown
      source: FND-MBR-STR-058
    - id: INV-DOM-MBR-STR-001-06
      scenario_ids:
        - ATS-MBR-STR-005-04
      coverage: specified
      gap: null
      provenance: documented
      source:
        - >-
          services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational
          units in the database › the published functions › answers membership.unit_descendants to
          rhythm_table_reader in its tenant
    - id: INV-DOM-MBR-STR-001-07
      scenario_ids: []
      coverage: gap
      gap: FND-MBR-STR-058
      provenance: unknown
      source: FND-MBR-STR-058
    - id: INV-DOM-MBR-STR-002-01
      scenario_ids: []
      coverage: gap
      gap: FND-MBR-STR-058
      provenance: unknown
      source: FND-MBR-STR-058
    - id: INV-DOM-MBR-STR-002-02
      scenario_ids: []
      coverage: gap
      gap: FND-MBR-STR-058
      provenance: unknown
      source: FND-MBR-STR-058
    - id: INV-DOM-MBR-STR-002-03
      scenario_ids: []
      coverage: gap
      gap: FND-MBR-STR-058
      provenance: unknown
      source: FND-MBR-STR-058
    - id: INV-DOM-MBR-STR-002-04
      scenario_ids: []
      coverage: gap
      gap: FND-MBR-STR-058
      provenance: unknown
      source: FND-MBR-STR-058
    - id: INV-DOM-MBR-STR-002-05
      scenario_ids: []
      coverage: gap
      gap: FND-MBR-STR-058
      provenance: unknown
      source: FND-MBR-STR-058
    - id: INV-DOM-MBR-STR-002-06
      scenario_ids: []
      coverage: gap
      gap: FND-MBR-STR-058
      provenance: unknown
      source: FND-MBR-STR-058
    - id: INV-DOM-MBR-STR-002-07
      scenario_ids: []
      coverage: gap
      gap: FND-MBR-STR-058
      provenance: unknown
      source: FND-MBR-STR-058
    - id: INV-DOM-MBR-STR-002-08
      scenario_ids: []
      coverage: gap
      gap: FND-MBR-STR-058
      provenance: unknown
      source: FND-MBR-STR-058
    - id: INV-DOM-MBR-STR-002-09
      scenario_ids: []
      coverage: gap
      gap: FND-MBR-STR-058
      provenance: unknown
      source: FND-MBR-STR-058
  workflows: []
  workflow_interactions: []
rule_coverage:
  - rule: BR-CAP-MBR-STR-005-01
    scenarios:
      - ATS-MBR-STR-005-01
    gap: null
    provenance: documented
    source:
      - >-
        services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational
        units in the database › the closure › answers the descendants of a unit from the closure, nearest
        first
  - rule: BR-CAP-MBR-STR-005-02
    scenarios:
      - ATS-MBR-STR-005-02
    gap: null
    provenance: documented
    source:
      - >-
        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
        2026-06-30 equal to the tree recorded that day
  - rule: BR-CAP-MBR-STR-005-03
    scenarios:
      - ATS-MBR-STR-005-06
    gap: null
    provenance: documented
    source:
      - >-
        services-membership:modules/structure/services/persistence/organizational-units.ts:descendantsAsOf
  - rule: BR-CAP-MBR-STR-005-04
    scenarios:
      - ATS-MBR-STR-005-07
    gap: null
    provenance: documented
    source:
      - >-
        services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#pages
        the tree breadth first with each unit’s parent
      - >-
        services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational
        units in the database › the closure › pages the tree breadth first with each unit’s parent
  - rule: BR-CAP-MBR-STR-005-05
    scenarios:
      - ATS-MBR-STR-005-08
    gap: null
    provenance: documented
    source:
      - >-
        services-membership:modules/structure/services/persistence/organizational-units.ts:listOrganizationalUnits
  - rule: BR-CAP-MBR-STR-005-06
    scenarios:
      - ATS-MBR-STR-005-03
    gap: null
    provenance: documented
    source:
      - >-
        services-membership:tests/e2e/structure-api.e2e.spec.ts#the structure API, end to end in process
        › pages the flat list by code with a cursor
  - rule: BR-CAP-MBR-STR-005-07
    scenarios:
      - ATS-MBR-STR-005-09
    gap: null
    provenance: documented
    source:
      - >-
        services-membership:modules/structure/services/persistence/organizational-units.ts:listParentHistory
  - rule: BR-CAP-MBR-STR-005-09
    scenarios:
      - ATS-MBR-STR-005-04
    gap: null
    provenance: documented
    source:
      - >-
        services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational
        units in the database › the published functions › answers membership.unit_descendants to
        rhythm_table_reader in its tenant
  - rule: BR-CAP-MBR-STR-005-11
    scenarios:
      - ATS-MBR-STR-005-05
      - ATS-MBR-STR-005-10
    gap: null
    provenance: documented
    source:
      - >-
        services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational
        units in the database › row-level security › reads nothing of another tenant’s unit by id
      - >-
        services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational
        units in the database › row-level security › reads nothing of another tenant’s unit by id
      - >-
        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
coverage_limits:
  - category: rule
    rule: BR-CAP-MBR-STR-005-04
    covered_by: ATS-MBR-STR-005-07
    remaining: 'Parent fields, continuation ordering and non-root branch variants require separate assertions.'
    gap: FND-MBR-STR-058
    provenance: unknown
    source: FND-MBR-STR-058
narrative_sources:
  - section: Coverage
    provenance: documented
    source:
      - CAP-MBR-STR-005
      - FND-MBR-STR-058
  - section: Interactions With Related Capabilities
    provenance: proposed
    source:
      - ATS-MBR-STR-005-06
      - ATS-MBR-STR-005-10
---

# Find units and inspect current or historical structure: Capability Test Specification

## Coverage

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.

| Required Rule | Scenario or Finding |
|---|---|
| `BR-CAP-MBR-STR-005-01` | `ATS-MBR-STR-005-01` |
| `BR-CAP-MBR-STR-005-02` | `ATS-MBR-STR-005-02` |
| `BR-CAP-MBR-STR-005-03` | `ATS-MBR-STR-005-06` |
| `BR-CAP-MBR-STR-005-04` | `ATS-MBR-STR-005-07` |
| `BR-CAP-MBR-STR-005-05` | `ATS-MBR-STR-005-08` |
| `BR-CAP-MBR-STR-005-06` | `ATS-MBR-STR-005-03` |
| `BR-CAP-MBR-STR-005-07` | `ATS-MBR-STR-005-09` |
| `BR-CAP-MBR-STR-005-09` | `ATS-MBR-STR-005-04` |
| `BR-CAP-MBR-STR-005-11` | `ATS-MBR-STR-005-05`, `ATS-MBR-STR-005-10` |

## Interactions With Related Capabilities

Reader access preserves the workspace boundary. As a structure reader request own and foreign unit identities, then attempt a mutation.
