---
id: ATS-CRM-DQ-007
scope: CAP-CRM-DQ-007
product_area: crm
module: data-quality
revision: 1
status: proposed
source_sha:
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
scenarios:
  - id: ATS-CRM-DQ-007-01
    title: Oversize connections identify their bound
    level: unit
    proves:
      - BR-CAP-CRM-DQ-007-01
    preconditions: Connect eleven records in a chain.
    steps: Build the duplicate grouping.
    expected: A displayed group contains ten records and reports that it is bounded.
    negative: false
    data_needs: The existing scenario setup supplies the required records.
    bound_to:
      - >-
        services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#holds
        at most ten records, so a group can always be merged as it is
      - >-
        services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#says
        the group it cut short is bounded, so a reader knows there may be more
        of it
    provenance: test
    source: >-
      services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#holds
      at most ten records, so a group can always be merged as it is
    category: boundary
    execution_sources:
      - >-
        services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#holds
        at most ten records, so a group can always be merged as it is
      - >-
        services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#says
        the group it cut short is bounded, so a reader knows there may be more
        of it
    binding_note: >-
      The exact unit-test references remain bound as engineering evidence; unit
      files are not executable suite artifacts.
  - id: ATS-CRM-DQ-007-02
    title: Group identities survive structural changes
    level: unit
    proves:
      - BR-CAP-CRM-DQ-007-02
    preconditions: Start with a two-record group.
    steps: 'Grow, split, join and reduce its connected records.'
    expected: >-
      Growth keeps identity, the largest split and join contribution retain it
      and an isolated record removes the group.
    negative: false
    data_needs: The existing scenario setup supplies the required records.
    bound_to:
      - >-
        services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#KEEPS
        the id the group already had, so the console is still looking at the
        same group
      - >-
        services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#keeps
        the id for the part holding MORE of the group’s records, the other part
        being a new group
      - >-
        services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#keeps
        the id of the group that contributed the MOST records, which is the one
        most reviewers were looking at
      - >-
        services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#is
        no group at all: a group holds at least two records
    provenance: test
    source: >-
      services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#KEEPS
      the id the group already had, so the console is still looking at the same
      group
    category: transition
    execution_sources:
      - >-
        services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#KEEPS
        the id the group already had, so the console is still looking at the
        same group
      - >-
        services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#keeps
        the id for the part holding MORE of the group’s records, the other part
        being a new group
      - >-
        services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#keeps
        the id of the group that contributed the MOST records, which is the one
        most reviewers were looking at
      - >-
        services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#is
        no group at all: a group holds at least two records
    binding_note: >-
      The exact unit-test references remain bound as engineering evidence; unit
      files are not executable suite artifacts.
  - id: ATS-CRM-DQ-007-03
    title: Pair and group writes share their commit
    level: api
    proves:
      - BR-CAP-CRM-DQ-007-03
    preconditions: Prepare a batch that creates candidates.
    steps: Execute detection.
    expected: Stored pairs point to existing groups produced in the same transaction.
    negative: false
    data_needs: The existing scenario setup supplies the required records.
    bound_to:
      - TST-CRM-DQ-180
    provenance: test
    source: >-
      services-crm:modules/duplicates/tests/integration/services/detection/duplicate-detection.integration.spec.js#grouped
      every pair it stored, the groups of a batch being written in the pass’s
      own transaction (§14)
    category: invariant
    execution_sources:
      - >-
        services-crm:modules/duplicates/tests/integration/services/detection/duplicate-detection.integration.spec.js#grouped
        every pair it stored, the groups of a batch being written in the pass’s
        own transaction (§14)
  - id: ATS-CRM-DQ-007-04
    title: Confirmed decisions leave the grouped queue
    level: api
    proves:
      - BR-CAP-CRM-DQ-007-04
    preconditions: Manually confirm a pair.
    steps: Recalculate groups.
    expected: The confirmed pair has no group reference.
    negative: false
    data_needs: The existing scenario setup supplies the required records.
    bound_to:
      - TST-CRM-DQ-180
    provenance: test
    source: >-
      services-crm:modules/duplicates/tests/integration/services/persistence/duplicate-groups.integration.spec.js#belongs
      to no group: a confirmed pair is a decision, not a question the queue asks
    category: edge
    execution_sources:
      - >-
        services-crm:modules/duplicates/tests/integration/services/persistence/duplicate-groups.integration.spec.js#belongs
        to no group: a confirmed pair is a decision, not a question the queue
        asks
  - id: ATS-CRM-DQ-007-05
    title: Queue parameters reject unsupported requests
    level: api
    proves:
      - BR-CAP-CRM-DQ-007-05
      - BR-CAP-CRM-DQ-007-06
    preconditions: Prepare several groups.
    steps: >-
      Filter and page them, then change sort with an old cursor and supply
      unknown evidence.
    expected: >-
      Supported filters return matching pages; the incompatible cursor and
      unknown evidence are refused.
    negative: true
    data_needs: The existing scenario setup supplies the required records.
    bound_to:
      - TST-CRM-DQ-182
    provenance: test
    source: >-
      services-crm:modules/duplicates/tests/e2e/duplicate-groups.e2e.spec.js#answers
      only the groups of the band asked for or above it
    category: validation
    execution_sources:
      - >-
        services-crm:modules/duplicates/tests/e2e/duplicate-groups.e2e.spec.js#answers
        only the groups of the band asked for or above it
      - >-
        services-crm:modules/duplicates/tests/e2e/duplicate-groups.e2e.spec.js#answers
        only the groups holding a pair that carries the evidence asked for
      - >-
        services-crm:modules/duplicates/tests/e2e/duplicate-groups.e2e.spec.js#refuses
        a cursor answered for another order, rather than paging in the wrong one
      - >-
        services-crm:modules/duplicates/tests/e2e/duplicate-groups.e2e.spec.js#refuses
        an evidence code no pair can carry, naming it rather than answering an
        empty page
  - id: ATS-CRM-DQ-007-06
    title: Prefix search narrows groups
    level: api
    proves:
      - BR-CAP-CRM-DQ-007-07
    preconditions: Create groups with recognizable record names.
    steps: Search a valid prefix and an unmatched prefix.
    expected: Only the first search returns its matching groups.
    negative: false
    data_needs: The existing scenario setup supplies the required records.
    bound_to:
      - TST-CRM-DQ-182
    provenance: test
    source: >-
      services-crm:modules/duplicates/tests/e2e/duplicate-groups.e2e.spec.js#answers
      only the groups the records of a typed prefix are in, which is the search
      box
    category: rule
    execution_sources:
      - >-
        services-crm:modules/duplicates/tests/e2e/duplicate-groups.e2e.spec.js#answers
        only the groups the records of a typed prefix are in, which is the
        search box
      - >-
        services-crm:modules/duplicates/tests/e2e/duplicate-groups.e2e.spec.js#answers
        nothing for a prefix no record of the tenant begins with
  - id: ATS-CRM-DQ-007-07
    title: Queue access respects authority and existence
    level: api
    proves:
      - BR-CAP-CRM-DQ-007-09
    preconditions: Use anonymous and permissionless callers and an absent group identity.
    steps: List groups and open that group.
    expected: Unauthorized reads fail and the absent group is not found.
    negative: true
    data_needs: The existing scenario setup supplies the required records.
    bound_to:
      - TST-CRM-DQ-182
    provenance: test
    source: >-
      services-crm:modules/duplicates/tests/e2e/duplicate-groups.e2e.spec.js#refuses
      the anonymous call, the queue being the tenant’s own
    category: permission
    execution_sources:
      - >-
        services-crm:modules/duplicates/tests/e2e/duplicate-groups.e2e.spec.js#refuses
        the anonymous call, the queue being the tenant’s own
      - >-
        services-crm:modules/duplicates/tests/e2e/duplicate-groups.e2e.spec.js#refuses
        a caller without the duplicates read permission
      - >-
        services-crm:modules/duplicates/tests/e2e/duplicate-groups.e2e.spec.js#answers
        404 for a group this tenant does not have
  - id: ATS-CRM-DQ-007-08
    title: A shared review address restores the location
    level: browser
    proves:
      - BR-CAP-CRM-DQ-007-01
      - BR-CAP-CRM-DQ-007-02
      - BR-CAP-CRM-DQ-007-05
      - BR-CAP-CRM-DQ-007-06
      - BR-CAP-CRM-DQ-007-07
    preconditions: Prepare several duplicate groups.
    steps: >-
      Sort, search surname prefixes and numbers, filter evidence, page and share
      an opened group.
    expected: The recipient opens the same selected group.
    negative: false
    data_needs: The existing scenario setup supplies the required records.
    bound_to:
      - TST-CRM-DQ-176
    provenance: test
    source: >-
      react-console:acceptance/crm/playwright/journeys/merging/CRM-ACC-0233.spec.ts#CRM-ACC-0233
    category: interaction
    execution_sources:
      - >-
        react-console:acceptance/crm/playwright/journeys/merging/CRM-ACC-0233.spec.ts#CRM-ACC-0233
      - >-
        react-console:acceptance/crm/playwright/journeys/merging/CRM-ACC-0273.spec.ts#CRM-ACC-0273
      - >-
        react-console:acceptance/crm/playwright/journeys/merging/CRM-ACC-0275.spec.ts#CRM-ACC-0275
  - id: ATS-CRM-DQ-007-09
    title: >-
      Observe none becoming open group after at least two records become
      connected by open comparisons
    category: transition
    level: api
    proves:
      - BR-CAP-CRM-DQ-007-01
      - BR-CAP-CRM-DQ-007-03
    transition:
      model: STATE-CRM-DQ-002
      index: 1
      from: none
      to: open group
      guard: The component must contain two or more records.
      side_effects:
        - 'store counts, strength and timing'
        - attach the grouped pairs
        - invoke the held attention seam
    preconditions: >-
      Arrange none standing with the transition guard satisfied: The component
      must contain two or more records.
    steps: At least two records become connected by open comparisons.
    expected: >-
      Read the open group standing and inspect the associated changes: store
      counts, strength and timing; attach the grouped pairs; invoke the held
      attention seam.
    negative: false
    data_needs: >-
      Fixtures for none, the guard and the affected records; a fixed clock for
      time-dependent changes.
    source: >-
      services-crm:modules/duplicates/tests/integration/services/detection/duplicate-detection.integration.spec.js#grouped
      every pair it stored, the groups of a batch being written in the pass’s
      own transaction (§14)
    design_sources:
      - STATE-CRM-DQ-002
    note: >-
      The design supplies this transition obligation. A runtime binding requires
      assertions for its guard, destination and associated writes in one
      sequence.
    bound_to: []
    provenance: proposed
    execution_sources: []
  - id: ATS-CRM-DQ-007-10
    title: >-
      Observe open group becoming open group after comparison changes resize,
      join or rescore a component
    category: transition
    level: api
    proves:
      - BR-CAP-CRM-DQ-007-02
    transition:
      model: STATE-CRM-DQ-002
      index: 2
      from: open group
      to: open group
      guard: At least two connected records remain.
      side_effects:
        - choose the prior identity with the largest contribution
        - recompute counts
        - flag traversal truncated by the ten-record limit
    preconditions: >-
      Arrange open group standing with the transition guard satisfied: At least
      two connected records remain.
    steps: 'Comparison changes resize, join or rescore a component.'
    expected: >-
      Read the open group standing and inspect the associated changes: choose
      the prior identity with the largest contribution; recompute counts; flag
      traversal truncated by the ten-record limit.
    negative: false
    data_needs: >-
      Fixtures for open group, the guard and the affected records; a fixed clock
      for time-dependent changes.
    source: >-
      services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#keeps
      the id for the part holding MORE of the group’s records, the other part
      being a new group
    design_sources:
      - STATE-CRM-DQ-002
    note: >-
      The design supplies this transition obligation. A runtime binding requires
      assertions for its guard, destination and associated writes in one
      sequence.
    bound_to: []
    provenance: proposed
    execution_sources: []
  - id: ATS-CRM-DQ-007-11
    title: >-
      Observe open group becoming none after pair changes or record removal
      leave no component of two records
    category: transition
    level: api
    proves:
      - BR-CAP-CRM-DQ-007-02
    transition:
      model: STATE-CRM-DQ-002
      index: 5
      from: open group
      to: none
      guard: No additional permission check occurs during regrouping.
      side_effects:
        - delete the empty or undersized group
        - invoke the held attention resolution
    preconditions: >-
      Arrange open group standing with the transition guard satisfied: No
      additional permission check occurs during regrouping.
    steps: Pair changes or record removal leave no component of two records.
    expected: >-
      Read the none standing and inspect the associated changes: delete the
      empty or undersized group; invoke the held attention resolution.
    negative: false
    data_needs: >-
      Fixtures for open group, the guard and the affected records; a fixed clock
      for time-dependent changes.
    source: 'services-crm:modules/duplicates/services/groups/group-components.ts'
    design_sources:
      - STATE-CRM-DQ-002
    note: >-
      The design supplies this transition obligation. A runtime binding requires
      assertions for its guard, destination and associated writes in one
      sequence.
    bound_to: []
    provenance: proposed
    execution_sources: []
  - id: ATS-CRM-DQ-007-12
    title: >-
      Observe dismissed group becoming none after the dismissed component loses
      its final connected pair
    category: transition
    level: api
    proves:
      - BR-CAP-CRM-DQ-007-02
    transition:
      model: STATE-CRM-DQ-002
      index: 6
      from: dismissed group
      to: none
      guard: No additional guard applies during regrouping.
      side_effects:
        - remove the dismissed group
    preconditions: >-
      Arrange dismissed group standing with the transition guard satisfied: No
      additional guard applies during regrouping.
    steps: The dismissed component loses its final connected pair.
    expected: >-
      Read the none standing and inspect the associated changes: remove the
      dismissed group.
    negative: false
    data_needs: >-
      Fixtures for dismissed group, the guard and the affected records; a fixed
      clock for time-dependent changes.
    source: 'services-crm:modules/duplicates/services/groups/group-components.ts'
    design_sources:
      - STATE-CRM-DQ-002
    note: >-
      The design supplies this transition obligation. A runtime binding requires
      assertions for its guard, destination and associated writes in one
      sequence.
    bound_to: []
    provenance: proposed
    execution_sources: []
  - id: ATS-CRM-DQ-007-13
    title: A detection batch publishes its groups with its pairs
    category: invariant
    level: api
    proves:
      - INV-DOM-CRM-DQ-001-07
    preconditions: Two contacts created together in a detection batch.
    steps: Detect the batch and read each stored comparison and its group assignment.
    expected: >-
      Every stored pair has the expected group membership at the same committed
      boundary.
    negative: false
    data_needs: >-
      Records, versions and caller contexts owned by the run; transaction
      failure injection when the invariant concerns rollback.
    bound_to:
      - TST-CRM-DQ-180
    source: >-
      services-crm:modules/duplicates/tests/integration/services/detection/duplicate-detection.integration.spec.js#grouped
      every pair it stored, the groups of a batch being written in the pass’s
      own transaction (§14)
    design_sources:
      - DOM-CRM-DQ-001
    execution_sources:
      - >-
        services-crm:modules/duplicates/tests/integration/services/detection/duplicate-detection.integration.spec.js#grouped
        every pair it stored, the groups of a batch being written in the pass’s
        own transaction (§14)
    provenance: test
  - id: ATS-CRM-DQ-007-14
    title: A bounded group reports the connections it omits
    category: invariant
    level: unit
    proves:
      - INV-DOM-CRM-DQ-001-08
    preconditions: A connected chain containing eleven records.
    steps: Build the group components and inspect the cut component.
    expected: >-
      The component has no more than ten members and reports its bounded
      traversal.
    negative: false
    data_needs: >-
      Records, versions and caller contexts owned by the run; transaction
      failure injection when the invariant concerns rollback.
    bound_to:
      - >-
        services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#says
        the group it cut short is bounded, so a reader knows there may be more
        of it
    source: >-
      services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#says
      the group it cut short is bounded, so a reader knows there may be more of
      it
    design_sources:
      - DOM-CRM-DQ-001
    execution_sources:
      - >-
        services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#says
        the group it cut short is bounded, so a reader knows there may be more
        of it
    provenance: test
    binding_note: >-
      The exact unit-test references remain bound as engineering evidence; unit
      files are not executable suite artifacts.
  - id: ATS-CRM-DQ-007-15
    title: Queue decisions and launch use the returned group
    category: interaction
    level: api
    proves:
      - BR-CAP-CRM-DQ-007-01
      - BR-CAP-CRM-DQ-007-02
      - BR-CAP-CRM-DQ-007-03
      - BR-CAP-CRM-DQ-007-04
      - BR-CAP-CRM-DQ-007-05
      - BR-CAP-CRM-DQ-007-06
      - BR-CAP-CRM-DQ-007-07
      - BR-CAP-CRM-DQ-007-09
    exercises:
      - CAP-CRM-DQ-007
      - CAP-CRM-DQ-008
      - CAP-CRM-DQ-012
    workflow_sources:
      - WF-CRM-DQ-001
      - WF-CRM-DQ-004
    preconditions: >-
      Run-owned contact and organization records, the relevant staff permissions
      and the related state described by the sequence.
    steps: >-
      Open a group, dismiss and restore it, follow each returned group identity,
      then launch its selected records into a merge preview.
    expected: >-
      The selected location follows the server response and the preview contains
      the reviewed records.
    negative: false
    data_needs: >-
      An isolated workspace with related records and fixed timestamps; owned
      participant failure injection where requested.
    source: >-
      CAP-CRM-DQ-007; CAP-CRM-DQ-008; CAP-CRM-DQ-012; WF-CRM-DQ-001;
      WF-CRM-DQ-004
    note: >-
      This cumulative seam scenario remains proposed until one executable
      sequence establishes all of its outcomes.
    bound_to: []
    provenance: proposed
    workflow_coverage_note: >-
      The workflows identify the handoffs under review. Separate assertions
      leave recovery and failure ordering unproved; the capability coverage
      finding records that limit.
    execution_sources: []
evidence:
  - repository: services-crm
    source_sha: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
    paths:
      - modules/duplicates/tests/e2e/duplicate-groups.e2e.spec.js
      - >-
        modules/duplicates/tests/integration/services/detection/duplicate-detection.integration.spec.js
      - >-
        modules/duplicates/tests/integration/services/persistence/duplicate-groups.integration.spec.js
      - modules/duplicates/tests/unit/services/groups/group-components.spec.js
    note: >-
      Bindings identify authored proof; empty bindings remain proposed and
      findings record known limitations.
  - repository: react-console
    source_sha: baf6dae382d6f41dce976c7f848667ccc37e076f
    paths:
      - acceptance/crm/playwright/journeys/merging/CRM-ACC-0233.spec.ts
      - acceptance/crm/playwright/journeys/merging/CRM-ACC-0273.spec.ts
      - acceptance/crm/playwright/journeys/merging/CRM-ACC-0275.spec.ts
    note: >-
      Bindings identify authored proof; empty bindings remain proposed and
      findings record known limitations.
coverage:
  rule: covered
  transition: covered
  validation: covered
  permission: covered
  edge: covered
  failure: 'gap: FND-CRM-DQ-058'
  boundary: covered
  concurrency: 'gap: FND-CRM-DQ-058'
  invariant: covered
  interaction: covered
coverage_notes:
  failure: >-
    No complete scenario currently isolates this category; the finding lists the
    remaining proof obligation.
  concurrency: >-
    No complete scenario currently isolates this category; the finding lists the
    remaining proof obligation.
permission_coverage:
  - key: crm.duplicates.read
    scenario_ids:
      - ATS-CRM-DQ-007-07
    finding: FND-CRM-DQ-058
proof_matrix:
  - rule: BR-CAP-CRM-DQ-007-01
    scenarios:
      - ATS-CRM-DQ-007-01
      - ATS-CRM-DQ-007-08
      - ATS-CRM-DQ-007-09
      - ATS-CRM-DQ-007-15
  - rule: BR-CAP-CRM-DQ-007-02
    scenarios:
      - ATS-CRM-DQ-007-02
      - ATS-CRM-DQ-007-08
      - ATS-CRM-DQ-007-10
      - ATS-CRM-DQ-007-11
      - ATS-CRM-DQ-007-12
      - ATS-CRM-DQ-007-15
  - rule: BR-CAP-CRM-DQ-007-03
    scenarios:
      - ATS-CRM-DQ-007-03
      - ATS-CRM-DQ-007-09
      - ATS-CRM-DQ-007-15
  - rule: BR-CAP-CRM-DQ-007-04
    scenarios:
      - ATS-CRM-DQ-007-04
      - ATS-CRM-DQ-007-15
  - rule: BR-CAP-CRM-DQ-007-05
    scenarios:
      - ATS-CRM-DQ-007-05
      - ATS-CRM-DQ-007-08
      - ATS-CRM-DQ-007-15
  - rule: BR-CAP-CRM-DQ-007-06
    scenarios:
      - ATS-CRM-DQ-007-05
      - ATS-CRM-DQ-007-08
      - ATS-CRM-DQ-007-15
  - rule: BR-CAP-CRM-DQ-007-07
    scenarios:
      - ATS-CRM-DQ-007-06
      - ATS-CRM-DQ-007-08
      - ATS-CRM-DQ-007-15
  - rule: BR-CAP-CRM-DQ-007-09
    scenarios:
      - ATS-CRM-DQ-007-07
      - ATS-CRM-DQ-007-15
interaction_coverage:
  related:
    - CAP-CRM-DQ-008
    - CAP-CRM-DQ-012
  workflow_sources:
    - WF-CRM-DQ-001
    - WF-CRM-DQ-004
  scenarios:
    - ATS-CRM-DQ-007-08
    - ATS-CRM-DQ-007-15
---

# Review duplicate groups in a shared queue: Capability Test Specification

## Coverage

The rule matrix names the authored checks. A covered category means that a scenario exists; it does not report a passing execution. The coverage notes and findings identify missing checks, while execution sources retain the exact assertions inspected.

| Required Rule | Scenarios |
|---|---|
| `BR-CAP-CRM-DQ-007-01` | `ATS-CRM-DQ-007-01`, `ATS-CRM-DQ-007-08`, `ATS-CRM-DQ-007-09`, `ATS-CRM-DQ-007-15` |
| `BR-CAP-CRM-DQ-007-02` | `ATS-CRM-DQ-007-02`, `ATS-CRM-DQ-007-08`, `ATS-CRM-DQ-007-10`, `ATS-CRM-DQ-007-11`, `ATS-CRM-DQ-007-12`, `ATS-CRM-DQ-007-15` |
| `BR-CAP-CRM-DQ-007-03` | `ATS-CRM-DQ-007-03`, `ATS-CRM-DQ-007-09`, `ATS-CRM-DQ-007-15` |
| `BR-CAP-CRM-DQ-007-04` | `ATS-CRM-DQ-007-04`, `ATS-CRM-DQ-007-15` |
| `BR-CAP-CRM-DQ-007-05` | `ATS-CRM-DQ-007-05`, `ATS-CRM-DQ-007-08`, `ATS-CRM-DQ-007-15` |
| `BR-CAP-CRM-DQ-007-06` | `ATS-CRM-DQ-007-05`, `ATS-CRM-DQ-007-08`, `ATS-CRM-DQ-007-15` |
| `BR-CAP-CRM-DQ-007-07` | `ATS-CRM-DQ-007-06`, `ATS-CRM-DQ-007-08`, `ATS-CRM-DQ-007-15` |
| `BR-CAP-CRM-DQ-007-09` | `ATS-CRM-DQ-007-07`, `ATS-CRM-DQ-007-15` |

## Interactions With Related Capabilities

Sort, search surname prefixes and numbers, filter evidence, page and share an opened group. Open a group, dismiss and restore it, follow each returned group identity, then launch its selected records into a merge preview.

These sequences test the handoffs named in the interaction coverage record. A proposed sequence remains unbound until an executable run checks its combined outcome; component assertions alone leave that obligation open.
