---
id: ATS-CRM-ACT-015
scope: CAP-CRM-ACT-015
product_area: crm
module: activities-tasks
revision: 3
status: proposed
approved_by: null
approved_at: null
source_sha:
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  rhythm-v2-docs: 18a49edf30ee6bda18b159b65a2b91e093ea713d
scenarios:
- id: ATS-CRM-ACT-015-01
  title: Begin overdue attention after the due day
  level: api
  proves:
  - BR-CAP-CRM-ACT-015-01
  preconditions: Tasks are due yesterday and today with publishing enabled.
  steps: Create both and inspect their emitted items.
  expected: Only yesterday’s work qualifies and its attention due instant is the end of that day.
  negative: true
  data_needs: Each run creates and isolates the records it needs.
  bound_to:
  - services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#publishes
    nothing for a task due today, which is not overdue until the day ends
  - services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#publishes
    the overdue task as it is created, addressed to its assignee, due at the end of its day in the tenant’s
    zone
  - services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.queries.integration.spec.js#answers
    the open tasks due before today, by due date then id, and no other
  - TST-CRM-ACT-018
  - TST-CRM-ACT-019
  provenance: test
  source: services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#publishes
    nothing for a task due today, which is not overdue until the day ends
  category: boundary
  binding_scope: Each registered suite contributes the assertions named by the retained file bindings;
    a compound scenario can require several suites. Conformance remains unverified.
- id: ATS-CRM-ACT-015-02
  title: Select the holder or shared audience
  level: api
  proves:
  - BR-CAP-CRM-ACT-015-02
  preconditions: Overdue fixtures are held, unassigned in a queue and unassigned outside queues.
  steps: Publish each item.
  expected: Audience selection matches holder, queue responsibility or administrators.
  negative: true
  data_needs: Each run creates and isolates the records it needs.
  bound_to:
  - services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#publishes
    the overdue task as it is created, addressed to its assignee, due at the end of its day in the tenant’s
    zone
  - services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#addresses
    a queued task nobody holds to the task queue responsibility at its queue
  - services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#addresses
    a task nobody holds, in no queue, to the tenant administrators
  - TST-CRM-ACT-018
  provenance: test
  source: services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#publishes
    the overdue task as it is created, addressed to its assignee, due at the end of its day in the tenant’s
    zone
  category: rule
  binding_scope: Each registered suite contributes the assertions named by the retained file bindings;
    a compound scenario can require several suites. Conformance remains unverified.
- id: ATS-CRM-ACT-015-03
  title: Update attention when assignment changes
  level: api
  proves:
  - BR-CAP-CRM-ACT-015-03
  preconditions: An overdue task belongs to a user.
  steps: Reassign it to another user.
  expected: Its attention audience changes with the task write.
  negative: false
  data_needs: Each run creates and isolates the records it needs.
  bound_to:
  - services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#moves
    the item to the new holder when an overdue task is assigned, in the same generation
  - TST-CRM-ACT-018
  provenance: test
  source: services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#moves
    the item to the new holder when an overdue task is assigned, in the same generation
  category: transition
  binding_scope: Each registered suite contributes the assertions named by the retained file bindings;
    a compound scenario can require several suites. Conformance remains unverified.
- id: ATS-CRM-ACT-015-04
  title: Resolve attention with the task’s outcome
  level: api
  proves:
  - BR-CAP-CRM-ACT-015-04
  preconditions: Separate overdue tasks can close, move their date or be deleted.
  steps: Complete, cancel, reschedule and delete them.
  expected: Resolution records the corresponding outcome for each item.
  negative: false
  data_needs: Each run creates and isolates the records it needs.
  bound_to:
  - services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#resolves
    the item completed when the overdue task is completed
  - services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#resolves
    the item cancelled when the overdue task is cancelled
  - services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#resolves
    the item rescheduled when the overdue task is given a later due date
  - services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#resolves
    the item deleted when the overdue task is deleted
  - TST-CRM-ACT-018
  provenance: test
  source: services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#resolves
    the item completed when the overdue task is completed
  category: transition
  binding_scope: Each registered suite contributes the assertions named by the retained file bindings;
    a compound scenario can require several suites. Conformance remains unverified.
- id: ATS-CRM-ACT-015-05
  title: Catch overdue work through the daily pass
  level: api
  proves:
  - BR-CAP-CRM-ACT-015-05
  preconditions: An overdue task lacks an item and another item is stale.
  steps: Execute the sweep.
  expected: The overdue task is published and the stale item is resolved.
  negative: false
  data_needs: Each run creates and isolates the records it needs.
  bound_to:
  - services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#publishes
    the overdue task no write had published, with no contact
  - services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#resolves
    the item of the task that is no longer overdue, which the pass did not republish
  - services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#stamps
    the sweep with what it published and resolved
  - TST-CRM-ACT-018
  provenance: test
  source: services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#publishes
    the overdue task no write had published, with no contact
  category: transition
  binding_scope: Each registered suite contributes the assertions named by the retained file bindings;
    a compound scenario can require several suites. Conformance remains unverified.
- id: ATS-CRM-ACT-015-06
  title: Keep publishing and sweeping silent when disabled
  level: unit
  proves:
  - BR-CAP-CRM-ACT-015-08
  preconditions: Attention execution uses the disabled switch.
  steps: Write overdue work and invoke its sweep.
  expected: The integration performs no attention reads or sends.
  negative: false
  data_needs: Each run creates and isolates the records it needs.
  bound_to:
  - services-crm:tests/unit/attention-switch.spec.ts#publishes and resolves without one statement
  - services-crm:tests/unit/attention-switch.spec.ts#answers a sweep skipped, reading nothing
  provenance: test
  source: services-crm:docs/attention.md#3. The switch
  category: rule
- id: ATS-CRM-ACT-015-07
  title: Task changes update attention without granting list access
  category: interaction
  level: api
  proves:
  - BR-CAP-CRM-ACT-015-03
  - BR-CAP-CRM-ACT-015-04
  - BR-CAP-CRM-ACT-014-01
  preconditions: Publishing is enabled and a holder has overdue work.
  steps: Reassign, inspect the audience, complete the task, then try a general task query without query
    authority.
  expected: The item follows the holder and then resolves; item addressing alone does not authorize a
    task query.
  negative: false
  data_needs: Run-owned records in an isolated workspace; fixed clock for calendar checks.
  bound_to: []
  provenance: proposed
  source: services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#moves
    the item to the new holder when an overdue task is assigned, in the same generation; services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#resolves
    the item completed when the overdue task is completed; services-crm:modules/tasks/aws/api/tasks.routes.ts:tasksRoutes
  exercises:
  - CAP-CRM-ACT-015
  - CAP-CRM-ACT-014
  - CAP-CRM-ACT-012
  - CAP-CRM-ACT-011
  related:
  - CAP-CRM-ACT-014
  - CAP-CRM-ACT-012
  - CAP-CRM-ACT-011
- id: ATS-CRM-ACT-015-08
  title: Persist overdue standing from Not overdue to Overdue published
  category: transition
  level: api
  proves:
  - INV-DOM-CRM-ACT-003-10
  preconditions: Run-owned overdue standing has Not overdue standing. The function has attention publishing
    enabled.
  steps: A persistence write leaves unfinished work past its due day. Read the resulting record and affected
    projections after commit.
  expected: The resulting overdue standing has Overdue published standing. Publish title, due day, priority
    and available contact context inside the task transaction.
  negative: false
  data_needs: Run-owned records in an isolated workspace; fixed clock for calendar checks.
  bound_to: []
  provenance: proposed
  source: services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#moves
    the item to the new holder when an overdue task is assigned, in the same generation
  state_model: STATE-CRM-ACT-004
  transition:
    from: not_overdue
    to: overdue_published
    trigger: A persistence write leaves unfinished work past its due day.
- id: ATS-CRM-ACT-015-09
  title: Persist overdue standing from Not overdue to Overdue unpublished
  category: transition
  level: api
  proves:
  - INV-DOM-CRM-ACT-003-10
  preconditions: Run-owned overdue standing has Not overdue standing. Elapsed calendar time requires no
    write guard.
  steps: The due day ends without a task write. Read the resulting record and affected projections after
    commit.
  expected: 'The resulting overdue standing has Overdue unpublished standing. '
  negative: false
  data_needs: Run-owned records in an isolated workspace; fixed clock for calendar checks.
  bound_to: []
  provenance: proposed
  source: services-crm:docs/attention.md#5. The sweeps
  state_model: STATE-CRM-ACT-004
  transition:
    from: not_overdue
    to: overdue_unpublished
    trigger: The due day ends without a task write.
- id: ATS-CRM-ACT-015-10
  title: Persist overdue standing from Overdue unpublished to Overdue published
  category: transition
  level: api
  proves:
  - INV-DOM-CRM-ACT-003-10
  preconditions: Run-owned overdue standing has Overdue unpublished standing. Publishing is enabled; reconciliation
    must reach the workspace before stopping between workspaces.
  steps: A reconciliation pass or later persistence write reaches overdue work. Read the resulting record
    and affected projections after commit.
  expected: The resulting overdue standing has Overdue published standing. Publish qualifying work; reconciliation
    processes pages from separately read task data.
  negative: false
  data_needs: Run-owned records in an isolated workspace; fixed clock for calendar checks.
  bound_to: []
  provenance: proposed
  source: services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#publishes
    the overdue task no write had published, with no contact
  state_model: STATE-CRM-ACT-004
  transition:
    from: overdue_unpublished
    to: overdue_published
    trigger: A reconciliation pass or later persistence write reaches overdue work.
- id: ATS-CRM-ACT-015-11
  title: Persist overdue standing from Overdue published to Overdue published
  category: transition
  level: api
  proves:
  - INV-DOM-CRM-ACT-003-10
  preconditions: Run-owned overdue standing has Overdue published standing. Publishing is enabled.
  steps: A persistence write changes the routing or details of overdue work. Read the resulting record
    and affected projections after commit.
  expected: The resulting overdue standing has Overdue published standing. Refresh audience and item details
    within the task transaction.
  negative: false
  data_needs: Run-owned records in an isolated workspace; fixed clock for calendar checks.
  bound_to: []
  provenance: proposed
  source: services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#moves
    the item to the new holder when an overdue task is assigned, in the same generation
  state_model: STATE-CRM-ACT-004
  transition:
    from: overdue_published
    to: overdue_published
    trigger: A persistence write changes the routing or details of overdue work.
- id: ATS-CRM-ACT-015-12
  title: Persist overdue standing from Overdue published to Not overdue
  category: transition
  level: api
  proves:
  - INV-DOM-CRM-ACT-003-10
  preconditions: Run-owned overdue standing has Overdue published standing. Publishing is enabled.
  steps: A task is closed, deleted or changed so it no longer qualifies as overdue. Read the resulting
    record and affected projections after commit.
  expected: The resulting overdue standing has Not overdue standing. Resolve the item within the task
    transaction with the corresponding closure, deletion or date-change reason.
  negative: false
  data_needs: Run-owned records in an isolated workspace; fixed clock for calendar checks.
  bound_to: []
  provenance: proposed
  source: services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#resolves
    the item completed when the overdue task is completed
  state_model: STATE-CRM-ACT-004
  transition:
    from: overdue_published
    to: not_overdue
    trigger: A task is closed, deleted or changed so it no longer qualifies as overdue.
- id: ATS-CRM-ACT-015-13
  title: Persist overdue standing from Overdue published to Not overdue
  category: transition
  level: api
  proves:
  - INV-DOM-CRM-ACT-003-10
  preconditions: Run-owned overdue standing has Overdue published standing. Publishing is enabled and
    that workspace pass reaches its resolving step.
  steps: Reconciliation ends with an older open item outside its current generation. Read the resulting
    record and affected projections after commit.
  expected: The resulting overdue standing has Not overdue standing. Resolve unseen items as no longer
    overdue; concurrent changes can still defeat the apparent repair.
  negative: false
  data_needs: Run-owned records in an isolated workspace; fixed clock for calendar checks.
  bound_to: []
  provenance: proposed
  source: services-crm:modules/tasks/services/persistence/task-attention-items.ts:sweepOverdueTasks
  state_model: STATE-CRM-ACT-004
  transition:
    from: overdue_published
    to: not_overdue
    trigger: Reconciliation ends with an older open item outside its current generation.
- id: ATS-CRM-ACT-015-14
  title: Roll back task and attention together
  category: invariant
  level: api
  proves:
  - BR-CAP-CRM-ACT-015-06
  - INV-DOM-CRM-ACT-003-10
  preconditions: Attention publishing is enabled in the isolated local fixture.
  steps: Write an overdue task inside a transaction that deliberately throws; inspect task and stand-in
    item storage.
  expected: Neither task nor attention item remains.
  negative: true
  data_needs: Run-owned records in an isolated workspace; fixed clock for calendar checks.
  bound_to:
  - services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#leaves
    no item behind a task write that rolled back
  - TST-CRM-ACT-018
  provenance: test
  source: services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#leaves
    no item behind a task write that rolled back
  binding_scope: Each registered suite contributes the assertions named by the retained file bindings;
    a compound scenario can require several suites. Conformance remains unverified.
evidence:
- 'services-crm at a8d1364f1dd44b723bb5f9acba12f983e9ec8d69: scenario sources, executable assertions and
  local dependency boundaries are inspected.'
- 'react-console at baf6dae382d6f41dce976c7f848667ccc37e076f: scoped component tests and browser journey
  assertions are inspected.'
coverage:
  rule: covered
  transition: covered
  validation: 'gap: FND-CRM-ACT-061'
  permission: 'gap: FND-CRM-ACT-061'
  edge: 'gap: FND-CRM-ACT-061'
  failure: 'gap: FND-CRM-ACT-061'
  boundary: covered
  concurrency: 'gap: FND-CRM-ACT-061'
  invariant: covered
  interaction: covered
coverage_obligations:
  finding: FND-CRM-ACT-061
  unproved_rules: []
  permission_matrix:
    keys: []
    remaining: Complete allow/refuse combinations, including each console guard and each API operation.
  execution_note: Covered means a scenario is specified; it does not mean that scenario has executed or
    every variant has an executable binding.
related_coverage:
- capability: CAP-CRM-ACT-014
  scenarios:
  - ATS-CRM-ACT-015-07
  finding: FND-CRM-ACT-061
permission_coverage: []
---

# Route overdue work to the people responsible for it: Capability Test Specification

## Coverage

Category coverage counts specified proof. Unbound cases remain proposed; registered assertions do not establish a passing run.

| Rule | Proof Scenario Or Finding |
|---|---|
| `BR-CAP-CRM-ACT-015-01` | `ATS-CRM-ACT-015-01` |
| `BR-CAP-CRM-ACT-015-02` | `ATS-CRM-ACT-015-02` |
| `BR-CAP-CRM-ACT-015-03` | `ATS-CRM-ACT-015-03`, `ATS-CRM-ACT-015-07` |
| `BR-CAP-CRM-ACT-015-04` | `ATS-CRM-ACT-015-04`, `ATS-CRM-ACT-015-07` |
| `BR-CAP-CRM-ACT-015-05` | `ATS-CRM-ACT-015-05` |
| `BR-CAP-CRM-ACT-015-06` | `ATS-CRM-ACT-015-14` |
| `BR-CAP-CRM-ACT-015-08` | `ATS-CRM-ACT-015-06` |

## Interactions With Related Capabilities

Publishing is enabled and a holder has overdue work. Reassign, inspect the audience, complete the task, then try a general task query without query authority.

The interaction scenario names the capabilities and rules it exercises. The coverage finding retains incomplete permission combinations and failure variants.
