---
id: ATS-CRM-DQ-015
scope: CAP-CRM-DQ-015
product_area: crm
module: data-quality
revision: 1
status: proposed
source_sha:
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
scenarios:
  - id: ATS-CRM-DQ-015-01
    title: Schema coverage requires a policy for each reference
    level: api
    proves:
      - BR-CAP-CRM-DQ-015-01
    preconditions: Prepare the migrated schema.
    steps: Run coverage checks and add a temporary probe reference.
    expected: >-
      All real references have current policies and the probe identifies the
      missing coverage and remedy.
    negative: false
    data_needs: The existing scenario setup supplies the required records.
    bound_to:
      - TST-CRM-DQ-184
    provenance: test
    source: >-
      services-crm:tests/integration/db/merge-coverage.integration.spec.ts#declares
      a policy for every column the catalog holds
    category: invariant
    execution_sources:
      - >-
        services-crm:tests/integration/db/merge-coverage.integration.spec.ts#declares
        a policy for every column the catalog holds
      - >-
        services-crm:tests/integration/db/merge-coverage.integration.spec.ts#declares
        no policy for a column the schema no longer has
      - >-
        services-crm:tests/integration/db/merge-coverage.integration.spec.ts#says
        what the column holds and what to do about it
  - id: ATS-CRM-DQ-015-02
    title: Unknown references prevent planning
    level: unit
    proves:
      - BR-CAP-CRM-DQ-015-02
    preconditions: Provide undeclared registry and live-catalog references.
    steps: Compute their plans.
    expected: The blocker identifies unknown references and the affected counts.
    negative: true
    data_needs: The existing scenario setup supplies the required records.
    bound_to:
      - >-
        services-crm:modules/merges/tests/unit/services/planning/merge-decisions.spec.js#blocks
        the merge for a column the registry declares no policy for
      - >-
        services-crm:modules/merges/tests/unit/services/planning/merge-decisions.spec.js#blocks
        the merge for a column the live catalog holds that nothing answers for
    provenance: test
    source: >-
      services-crm:modules/merges/tests/unit/services/planning/merge-decisions.spec.js#blocks
      the merge for a column the registry declares no policy for
    category: validation
    execution_sources:
      - >-
        services-crm:modules/merges/tests/unit/services/planning/merge-decisions.spec.js#blocks
        the merge for a column the registry declares no policy for
      - >-
        services-crm:modules/merges/tests/unit/services/planning/merge-decisions.spec.js#blocks
        the merge for a column the live catalog holds that nothing answers for
    binding_note: >-
      The exact unit-test references remain bound as engineering evidence; unit
      files are not executable suite artifacts.
  - id: ATS-CRM-DQ-015-03
    title: Duplicate activity connections collapse correctly
    level: api
    proves:
      - BR-CAP-CRM-DQ-015-03
    preconditions: One activity links both participants.
    steps: Execute the merge.
    expected: One primary-preserving link remains and the outcome describes Activities.
    negative: false
    data_needs: The existing scenario setup supplies the required records.
    bound_to:
      - TST-CRM-DQ-181
    provenance: test
    source: >-
      services-crm:modules/merges/tests/integration/services/merges/activity-links-merge.integration.spec.js#collapses
      a link the survivor already had into the survivor’s own, carrying the
      primary flag to it
    category: transition
    execution_sources:
      - >-
        services-crm:modules/merges/tests/integration/services/merges/activity-links-merge.integration.spec.js#collapses
        a link the survivor already had into the survivor’s own, carrying the
        primary flag to it
      - >-
        services-crm:modules/merges/tests/integration/services/merges/activity-links-merge.integration.spec.js#reports
        the links among the relationships it moved, under the label Activities
  - id: ATS-CRM-DQ-015-04
    title: Historical references keep their original identity
    level: browser
    proves:
      - BR-CAP-CRM-DQ-015-04
    preconditions: >-
      An absorbed record owns revisions, import receipts and copied-from
      provenance.
    steps: Merge and read those records.
    expected: >-
      Historical identities remain while the integration crosswalk resolves the
      survivor.
    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-0272.spec.ts#CRM-ACC-0272
    category: invariant
    execution_sources:
      - >-
        react-console:acceptance/crm/playwright/journeys/merging/CRM-ACC-0272.spec.ts#CRM-ACC-0272
  - id: ATS-CRM-DQ-015-05
    title: Participants either join the transaction or prevent it
    level: api
    proves:
      - BR-CAP-CRM-DQ-015-05
    preconditions: Revoke Platform participant access and prepare a refusing participant.
    steps: Plan the inaccessible case and execute the refusal case.
    expected: >-
      Unavailable participation blocks planning; refusal leaves the whole merge
      unapplied.
    negative: true
    data_needs: The existing scenario setup supplies the required records.
    bound_to:
      - TST-CRM-DQ-181
    provenance: test
    source: >-
      services-crm:modules/merges/tests/integration/services/merges/required-participants.integration.spec.js#blocks
      it as a participant that is missing, naming the functions it could not
      call
    category: failure
    execution_sources:
      - >-
        services-crm:modules/merges/tests/integration/services/merges/required-participants.integration.spec.js#blocks
        it as a participant that is missing, naming the functions it could not
        call
      - >-
        services-crm:modules/merges/tests/integration/services/merges/required-participants.integration.spec.js#refuses
        the execution request for that plan as not ready
      - >-
        services-crm:modules/merges/tests/integration/services/merges/toy-participant.integration.spec.js#gives
        it the code ParticipantFailed
      - >-
        services-crm:modules/merges/tests/integration/services/merges/toy-participant.integration.spec.js#leaves
        both contacts byte for byte as they were
  - id: ATS-CRM-DQ-015-06
    title: Portal login cardinality controls the preview
    level: unit
    proves:
      - BR-CAP-CRM-DQ-015-06
    preconditions: Prepare one-login and two-login participant snapshots.
    steps: Compute both plans.
    expected: One login produces a relink action and two produce a blocker.
    negative: false
    data_needs: The existing scenario setup supplies the required records.
    bound_to:
      - >-
        services-crm:modules/merges/tests/unit/services/planning/merge-decisions.spec.js#carries
        the relink of the one login a participant holds
      - >-
        services-crm:modules/merges/tests/unit/services/planning/merge-decisions.spec.js#is
        blocked when Platform answers that two participants hold logins
    provenance: test
    source: >-
      services-crm:modules/merges/tests/unit/services/planning/merge-decisions.spec.js#carries
      the relink of the one login a participant holds
    category: edge
    execution_sources:
      - >-
        services-crm:modules/merges/tests/unit/services/planning/merge-decisions.spec.js#carries
        the relink of the one login a participant holds
      - >-
        services-crm:modules/merges/tests/unit/services/planning/merge-decisions.spec.js#is
        blocked when Platform answers that two participants hold logins
    binding_note: >-
      The exact unit-test references remain bound as engineering evidence; unit
      files are not executable suite artifacts.
  - id: ATS-CRM-DQ-015-07
    title: Outside dismissals transfer without overriding survivor decisions
    level: api
    proves:
      - BR-CAP-CRM-DQ-015-07
    preconditions: >-
      Prepare outside dismissals, internal dismissals and an existing survivor
      decision.
    steps: Carry the decisions during merging.
    expected: >-
      Outside pairs retain attribution and evidence, survivor decisions prevail
      and internal pairs disappear.
    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-candidates.integration.spec.js#carries
      the dismissals about records outside the merge and nothing else
    category: transition
    execution_sources:
      - >-
        services-crm:modules/duplicates/tests/integration/services/persistence/duplicate-candidates.integration.spec.js#carries
        the dismissals about records outside the merge and nothing else
      - >-
        services-crm:modules/duplicates/tests/integration/services/persistence/duplicate-candidates.integration.spec.js#leaves
        the decision itself as it was: who dismissed it, when, the note and the
        evidence they saw
      - >-
        services-crm:modules/duplicates/tests/integration/services/persistence/duplicate-candidates.integration.spec.js#keeps
        the survivor’s own dismissal and drops the merged-away one, which
        cascades with its record
      - >-
        services-crm:modules/duplicates/tests/unit/services/candidates/dismissal-carry.spec.js#carries
        the later decision, which is the most recent thing anyone said about
        that person
  - id: ATS-CRM-DQ-015-08
    title: Absorption removes detection data and refreshes grouping
    level: api
    proves:
      - BR-CAP-CRM-DQ-015-08
    preconditions: A three-record group contains two merging participants.
    steps: Execute their merge.
    expected: >-
      The absorbed record's pair is removed and grouping reflects the remaining
      records.
    negative: false
    data_needs: The existing scenario setup supplies the required records.
    bound_to:
      - TST-CRM-DQ-181
    provenance: test
    source: >-
      services-crm:modules/merges/tests/integration/services/merges/duplicate-groups-after-merge.integration.spec.js#takes
      the pair with the record it deleted, the pair being about a record that is
      gone
    category: transition
    execution_sources:
      - >-
        services-crm:modules/merges/tests/integration/services/merges/duplicate-groups-after-merge.integration.spec.js#takes
        the pair with the record it deleted, the pair being about a record that
        is gone
      - >-
        services-crm:modules/merges/tests/integration/services/merges/duplicate-groups-after-merge.integration.spec.js#leaves
        the group holding the two records that are left, counted as it now
        stands
  - id: ATS-CRM-DQ-015-09
    title: Related work follows the survivor through the full journey
    level: browser
    proves:
      - BR-CAP-CRM-DQ-015-03
      - BR-CAP-CRM-DQ-015-07
    preconditions: >-
      An absorbed contact has tasks, activities and a dismissal against an
      outsider.
    steps: Merge through the journey.
    expected: >-
      Related work and the dismissal follow the survivor, while the old timeline
      reports the merge destination.
    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-0258.spec.ts#CRM-ACC-0258
    category: interaction
    execution_sources:
      - >-
        react-console:acceptance/crm/playwright/journeys/merging/CRM-ACC-0258.spec.ts#CRM-ACC-0258
      - >-
        react-console:acceptance/crm/playwright/journeys/merging/CRM-ACC-0237.spec.ts#CRM-ACC-0237
  - id: ATS-CRM-DQ-015-10
    title: >-
      Observe open becoming absent after record deletion or merging removes an
      open pair’s participant
    category: transition
    level: api
    proves:
      - BR-CAP-CRM-DQ-015-08
      - INV-DOM-CRM-DQ-001-06
    transition:
      model: STATE-CRM-DQ-001
      index: 11
      from: open
      to: absent
      guard: Record foreign keys cascade the pair.
      side_effects:
        - remove the pair and record keys
        - carry applicable outside dismissals before merge deletion
        - refresh surviving groups
    preconditions: >-
      Arrange open standing with the transition guard satisfied: Record foreign
      keys cascade the pair.
    steps: Record deletion or merging removes an open pair’s participant.
    expected: >-
      Read the absent standing and inspect the associated changes: remove the
      pair and record keys; carry applicable outside dismissals before merge
      deletion; refresh surviving groups.
    negative: false
    data_needs: >-
      Fixtures for open, the guard and the affected records; a fixed clock for
      time-dependent changes.
    source: >-
      services-crm:modules/merges/tests/integration/services/merges/duplicate-groups-after-merge.integration.spec.js#leaves
      the group holding the two records that are left, counted as it now stands
    design_sources:
      - STATE-CRM-DQ-001
    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-015-11
    title: >-
      Observe dismissed becoming absent after record deletion or merging removes
      a dismissed pair’s participant
    category: transition
    level: api
    proves:
      - BR-CAP-CRM-DQ-015-07
      - INV-DOM-CRM-DQ-001-06
    transition:
      model: STATE-CRM-DQ-001
      index: 12
      from: dismissed
      to: absent
      guard: Merging first carries eligible outside decisions to the survivor.
      side_effects:
        - carry outside decisions or end internal ones
        - remove the absorbed pair
    preconditions: >-
      Arrange dismissed standing with the transition guard satisfied: Merging
      first carries eligible outside decisions to the survivor.
    steps: Record deletion or merging removes a dismissed pair’s participant.
    expected: >-
      Read the absent standing and inspect the associated changes: carry outside
      decisions or end internal ones; remove the absorbed pair.
    negative: false
    data_needs: >-
      Fixtures for dismissed, the guard and the affected records; a fixed clock
      for time-dependent changes.
    source: >-
      services-crm:modules/duplicates/tests/integration/services/persistence/duplicate-candidates.integration.spec.js#carries
      the dismissals about records outside the merge and nothing else
    design_sources:
      - STATE-CRM-DQ-001
    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-015-12
    title: >-
      Observe confirmed becoming absent after deletion or successful merging
      removes a confirmed participant
    category: transition
    level: api
    proves:
      - BR-CAP-CRM-DQ-015-08
      - INV-DOM-CRM-DQ-001-06
    transition:
      model: STATE-CRM-DQ-001
      index: 13
      from: confirmed
      to: absent
      guard: Record deletion cascades the comparison.
      side_effects:
        - remove the pair with its participant
    preconditions: >-
      Arrange confirmed standing with the transition guard satisfied: Record
      deletion cascades the comparison.
    steps: Deletion or successful merging removes a confirmed participant.
    expected: >-
      Read the absent standing and inspect the associated changes: remove the
      pair with its participant.
    negative: false
    data_needs: >-
      Fixtures for confirmed, the guard and the affected records; a fixed clock
      for time-dependent changes.
    source: >-
      services-crm:modules/merges/tests/integration/services/merges/duplicate-groups-after-merge.integration.spec.js#leaves
      the group holding the two records that are left, counted as it now stands
    design_sources:
      - STATE-CRM-DQ-001
    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-015-13
    title: Absorption removes comparisons naming the deleted participant
    category: invariant
    level: api
    proves:
      - INV-DOM-CRM-DQ-001-06
    preconditions: >-
      A three-record group with an open pair involving the contact being
      absorbed.
    steps: Execute the merge and read the remaining pair and group.
    expected: >-
      No pair names the absorbed contact and the remaining group counts its two
      live records.
    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-181
    source: >-
      services-crm:modules/merges/tests/integration/services/merges/duplicate-groups-after-merge.integration.spec.js#leaves
      the group holding the two records that are left, counted as it now stands
    design_sources:
      - DOM-CRM-DQ-001
    execution_sources:
      - >-
        services-crm:modules/merges/tests/integration/services/merges/duplicate-groups-after-merge.integration.spec.js#leaves
        the group holding the two records that are left, counted as it now
        stands
    provenance: test
  - id: ATS-CRM-DQ-015-14
    title: An unclassified reference blocks preparation
    category: invariant
    level: unit
    proves:
      - INV-DOM-CRM-DQ-003-11
    preconditions: >-
      A participant with an inbound reference not declared by the merge
      registry.
    steps: Compute its preview.
    expected: The preview includes a non-overridable unknown-reference blocker.
    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/merges/tests/unit/services/planning/merge-decisions.spec.js#blocks
        the merge for a column the registry declares no policy for
    source: >-
      services-crm:modules/merges/tests/unit/services/planning/merge-decisions.spec.js#blocks
      the merge for a column the registry declares no policy for
    design_sources:
      - DOM-CRM-DQ-003
    execution_sources:
      - >-
        services-crm:modules/merges/tests/unit/services/planning/merge-decisions.spec.js#blocks
        the merge for a column the registry declares no policy for
    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-015-15
    title: Absorption carries review decisions only with a committed merge
    category: interaction
    level: api
    proves:
      - BR-CAP-CRM-DQ-015-01
      - BR-CAP-CRM-DQ-015-02
      - BR-CAP-CRM-DQ-015-03
      - BR-CAP-CRM-DQ-015-04
      - BR-CAP-CRM-DQ-015-05
      - BR-CAP-CRM-DQ-015-06
      - BR-CAP-CRM-DQ-015-07
      - BR-CAP-CRM-DQ-015-08
    exercises:
      - CAP-CRM-DQ-015
      - CAP-CRM-DQ-008
      - CAP-CRM-DQ-016
    workflow_sources:
      - WF-CRM-DQ-005
      - WF-CRM-DQ-006
    preconditions: >-
      Run-owned contact and organization records, the relevant staff permissions
      and the related state described by the sequence.
    steps: >-
      Dismiss an outside comparison, execute a merge with related tasks and
      activity links, then repeat with a refusing application participant.
    expected: >-
      Committed relationships and carried decisions follow the survivor; the
      refusing attempt leaves prior records intact.
    negative: false
    data_needs: >-
      An isolated workspace with related records and fixed timestamps; owned
      participant failure injection where requested.
    source: >-
      CAP-CRM-DQ-015; CAP-CRM-DQ-008; CAP-CRM-DQ-016; WF-CRM-DQ-005;
      WF-CRM-DQ-006
    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/integration/services/persistence/duplicate-candidates.integration.spec.js
      - >-
        modules/duplicates/tests/unit/services/candidates/dismissal-carry.spec.js
      - >-
        modules/merges/tests/integration/services/merges/activity-links-merge.integration.spec.js
      - >-
        modules/merges/tests/integration/services/merges/duplicate-groups-after-merge.integration.spec.js
      - >-
        modules/merges/tests/integration/services/merges/required-participants.integration.spec.js
      - >-
        modules/merges/tests/integration/services/merges/toy-participant.integration.spec.js
      - modules/merges/tests/unit/services/planning/merge-decisions.spec.js
      - tests/integration/db/merge-coverage.integration.spec.ts
    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-0237.spec.ts
      - acceptance/crm/playwright/journeys/merging/CRM-ACC-0258.spec.ts
      - acceptance/crm/playwright/journeys/merging/CRM-ACC-0272.spec.ts
    note: >-
      Bindings identify authored proof; empty bindings remain proposed and
      findings record known limitations.
coverage:
  rule: 'gap: FND-CRM-DQ-066'
  transition: covered
  validation: covered
  permission: 'gap: FND-CRM-DQ-066'
  edge: covered
  failure: covered
  boundary: 'gap: FND-CRM-DQ-066'
  concurrency: 'gap: FND-CRM-DQ-066'
  invariant: covered
  interaction: covered
coverage_notes:
  rule: >-
    No complete scenario currently isolates this category; the finding lists the
    remaining proof obligation.
  permission: >-
    No complete scenario currently isolates this category; the finding lists the
    remaining proof obligation.
  boundary: >-
    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.contacts.merge
    scenario_ids: []
    finding: FND-CRM-DQ-066
  - key: crm.organizations.merge
    scenario_ids: []
    finding: FND-CRM-DQ-066
proof_matrix:
  - rule: BR-CAP-CRM-DQ-015-01
    scenarios:
      - ATS-CRM-DQ-015-01
      - ATS-CRM-DQ-015-15
  - rule: BR-CAP-CRM-DQ-015-02
    scenarios:
      - ATS-CRM-DQ-015-02
      - ATS-CRM-DQ-015-15
  - rule: BR-CAP-CRM-DQ-015-03
    scenarios:
      - ATS-CRM-DQ-015-03
      - ATS-CRM-DQ-015-09
      - ATS-CRM-DQ-015-15
  - rule: BR-CAP-CRM-DQ-015-04
    scenarios:
      - ATS-CRM-DQ-015-04
      - ATS-CRM-DQ-015-15
  - rule: BR-CAP-CRM-DQ-015-05
    scenarios:
      - ATS-CRM-DQ-015-05
      - ATS-CRM-DQ-015-15
  - rule: BR-CAP-CRM-DQ-015-06
    scenarios:
      - ATS-CRM-DQ-015-06
      - ATS-CRM-DQ-015-15
  - rule: BR-CAP-CRM-DQ-015-07
    scenarios:
      - ATS-CRM-DQ-015-07
      - ATS-CRM-DQ-015-09
      - ATS-CRM-DQ-015-11
      - ATS-CRM-DQ-015-15
  - rule: BR-CAP-CRM-DQ-015-08
    scenarios:
      - ATS-CRM-DQ-015-08
      - ATS-CRM-DQ-015-10
      - ATS-CRM-DQ-015-12
      - ATS-CRM-DQ-015-15
interaction_coverage:
  related:
    - CAP-CRM-DQ-008
    - CAP-CRM-DQ-016
  workflow_sources:
    - WF-CRM-DQ-005
    - WF-CRM-DQ-006
  scenarios:
    - ATS-CRM-DQ-015-09
    - ATS-CRM-DQ-015-15
---

# Keep related records consistent through a merge: 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-015-01` | `ATS-CRM-DQ-015-01`, `ATS-CRM-DQ-015-15` |
| `BR-CAP-CRM-DQ-015-02` | `ATS-CRM-DQ-015-02`, `ATS-CRM-DQ-015-15` |
| `BR-CAP-CRM-DQ-015-03` | `ATS-CRM-DQ-015-03`, `ATS-CRM-DQ-015-09`, `ATS-CRM-DQ-015-15` |
| `BR-CAP-CRM-DQ-015-04` | `ATS-CRM-DQ-015-04`, `ATS-CRM-DQ-015-15` |
| `BR-CAP-CRM-DQ-015-05` | `ATS-CRM-DQ-015-05`, `ATS-CRM-DQ-015-15` |
| `BR-CAP-CRM-DQ-015-06` | `ATS-CRM-DQ-015-06`, `ATS-CRM-DQ-015-15` |
| `BR-CAP-CRM-DQ-015-07` | `ATS-CRM-DQ-015-07`, `ATS-CRM-DQ-015-09`, `ATS-CRM-DQ-015-11`, `ATS-CRM-DQ-015-15` |
| `BR-CAP-CRM-DQ-015-08` | `ATS-CRM-DQ-015-08`, `ATS-CRM-DQ-015-10`, `ATS-CRM-DQ-015-12`, `ATS-CRM-DQ-015-15` |

## Interactions With Related Capabilities

Merge through the journey. Dismiss an outside comparison, execute a merge with related tasks and activity links, then repeat with a refusing application participant.

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.
