---
id: ATS-PFM-ELG-016
scope: CAP-PFM-ELG-016
product_area: platform
module: eligibility
revision: 3
status: proposed
approved_by: null
approved_at: null
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
scenarios:
  - id: ATS-PFM-ELG-016-01
    title: Reject invalid kinds together
    level: api
    proves:
      - BR-CAP-PFM-ELG-016-01
    preconditions: Attention manifests represent every invalid declaration shape.
    steps: Submit the manifests.
    expected: >-
      Refusals name kind and path without writes, returning a deployment result rather than an
      uncaught failure.
    negative: true
    data_needs: No fixtures beyond the described setup.
    bound_to:
      - >-
        services-platform:modules/attention/tests/integration/services/registration/register-service-attention.integration.spec.js#refuses
        a class that changes between releases
      - TST-PFM-ELG-400
      - >-
        services-platform:modules/attention/tests/unit/registration-manifest.spec.js#refuses a
        required definition without required_because
      - TST-PFM-ELG-403
      - >-
        services-platform:modules/attention/tests/unit/registration-manifest.spec.js#refuses an
        opportunity with an escalation
      - >-
        services-platform:modules/attention/tests/integration/services/registration/register-service-attention.integration.spec.js#refuses
        a template naming an undeclared fact, naming the template
      - >-
        services-platform:modules/attention/tests/integration/services/registration/register-service-attention.integration.spec.js#refuses
        an action whose operation the application’s API does not have
      - >-
        services-platform:modules/attention/tests/integration/services/registration/register-service-attention.integration.spec.js#refuses
        an about object that is not a registered object of the application
      - >-
        services-platform:modules/attention/tests/integration/services/registration/register-service-attention.integration.spec.js#answers
        a refusal to the deploy as { ok: false, error } rather than failing the invocation
    provenance: test
    source: >-
      services-platform:modules/attention/tests/integration/services/registration/register-service-attention.integration.spec.js#refuses
      a class that changes between releases
    category: validation
    action_evidence:
      provenance: test
      source: >-
        services-platform:modules/attention/tests/integration/services/registration/register-service-attention.integration.spec.js#refuses
        a class that changes between releases
    assertion_evidence:
      provenance: test
      source: >-
        services-platform:modules/attention/tests/integration/services/registration/register-service-attention.integration.spec.js#refuses
        a class that changes between releases
    binding_scope: >-
      The cited tests contribute their reachable assertions; the binding does not establish
      execution or every step of this scenario.
    binding_limitations:
      - FND-PFM-ELG-074
  - id: ATS-PFM-ELG-016-02
    title: Retire declarations without losing settings
    level: api
    proves:
      - BR-CAP-PFM-ELG-016-02
    preconditions: A kind has open occurrences and workspace settings.
    steps: Omit it on registration.
    expected: The kind and its occurrences retire while settings remain.
    negative: false
    data_needs: No fixtures beyond the described setup.
    bound_to:
      - >-
        services-platform:modules/attention/tests/integration/services/registration/register-service-attention.integration.spec.js#retires
        a definition the manifest no longer declares, resolves its open items and keeps its settings
      - TST-PFM-ELG-400
    provenance: test
    source: >-
      services-platform:modules/attention/tests/integration/services/registration/register-service-attention.integration.spec.js#retires
      a definition the manifest no longer declares, resolves its open items and keeps its settings
    category: transition
    action_evidence:
      provenance: test
      source: >-
        services-platform:modules/attention/tests/integration/services/registration/register-service-attention.integration.spec.js#retires
        a definition the manifest no longer declares, resolves its open items and keeps its settings
    assertion_evidence:
      provenance: test
      source: >-
        services-platform:modules/attention/tests/integration/services/registration/register-service-attention.integration.spec.js#retires
        a definition the manifest no longer declares, resolves its open items and keeps its settings
    binding_scope: >-
      The cited tests contribute their reachable assertions; the binding does not establish
      execution or every step of this scenario.
    binding_limitations:
      - FND-PFM-ELG-074
  - id: ATS-PFM-ELG-016-03
    title: Guard provider writes
    level: api
    proves:
      - BR-CAP-PFM-ELG-016-03
      - INV-DOM-PFM-ELG-005-02
    preconditions: An application database role can invoke the attention functions.
    steps: 'Try direct table mutation and foreign-workspace, service, application and retired-kind claims.'
    expected: All are rejected; Platform remains able to publish another application’s computed kind.
    negative: true
    data_needs: No fixtures beyond the described setup.
    bound_to:
      - >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#reaches
        no table directly: a provider cannot write an item but through the functions
      - TST-PFM-ELG-392
      - >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#refuses
        a tenant other than the transaction’s (42501)
      - >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#refuses
        a source service that is not the invoking role’s
      - >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#refuses
        another application’s definition
      - >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#refuses
        a retired definition
      - >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#lets
        Platform’s own role publish another application’s definition, as its evaluator does
    provenance: test
    source: >-
      services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#reaches
      no table directly: a provider cannot write an item but through the functions
    category: permission
    action_evidence:
      provenance: test
      source: >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#reaches
        no table directly: a provider cannot write an item but through the functions
    assertion_evidence:
      provenance: test
      source: >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#reaches
        no table directly: a provider cannot write an item but through the functions
    binding_scope: >-
      The cited tests contribute their reachable assertions; the binding does not establish
      execution or every step of this scenario.
    binding_limitations:
      - FND-PFM-ELG-074
  - id: ATS-PFM-ELG-016-04
    title: Refuse malformed occurrences atomically
    level: api
    proves:
      - BR-CAP-PFM-ELG-016-04
      - INV-DOM-PFM-ELG-005-03
    preconditions: A declared attention kind is available.
    steps: >-
      Supply unknown or mistyped facts, unsupported audiences, eleven audiences, a team and an
      unknown role.
    expected: Each failure reports its code and writes no item.
    negative: true
    data_needs: No fixtures beyond the described setup.
    bound_to:
      - >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#refuses
        a fact the definition does not declare
      - TST-PFM-ELG-392
      - >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#refuses
        a fact of the wrong type
      - >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#refuses
        an audience kind the definition does not address
      - >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#refuses
        more than ten audiences
      - >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#refuses
        a team audience: teams do not exist yet
      - >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#refuses
        a role product key no role carries
      - >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#writes
        nothing when it refuses
    provenance: test
    source: >-
      services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#refuses
      a fact the definition does not declare
    category: validation
    action_evidence:
      provenance: test
      source: >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#refuses
        a fact the definition does not declare
    assertion_evidence:
      provenance: test
      source: >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#refuses
        a fact the definition does not declare
    binding_scope: >-
      The cited tests contribute their reachable assertions; the binding does not establish
      execution or every step of this scenario.
    binding_limitations:
      - FND-PFM-ELG-074
  - id: ATS-PFM-ELG-016-05
    title: Separate refresh from recurrence
    level: api
    proves:
      - BR-CAP-PFM-ELG-016-05
    preconditions: A kind and deduplication key are available.
    steps: 'Publish twice, resolve and publish again.'
    expected: >-
      Refresh retains one occurrence with replaced audiences; recurrence creates the next
      generation.
    negative: false
    data_needs: No fixtures beyond the described setup.
    bound_to:
      - >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#refreshes
        the open item in place on a second publish: one row, new facts
      - TST-PFM-ELG-392
      - >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#replaces
        the audiences of the open item whole
      - >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#opens
        the next generation, a new item, when a resolved condition recurs
    provenance: test
    source: >-
      services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#refreshes
      the open item in place on a second publish: one row, new facts
    category: invariant
    action_evidence:
      provenance: test
      source: >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#refreshes
        the open item in place on a second publish: one row, new facts
    assertion_evidence:
      provenance: test
      source: >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#refreshes
        the open item in place on a second publish: one row, new facts
    binding_scope: >-
      The cited tests contribute their reachable assertions; the binding does not establish
      execution or every step of this scenario.
    binding_limitations:
      - FND-PFM-ELG-074
  - id: ATS-PFM-ELG-016-06
    title: Complete presentation scope
    level: api
    proves:
      - BR-CAP-PFM-ELG-016-06
    preconditions: A console-and-portal declaration is restricted to console.
    steps: Publish a chain without its final workspace scope.
    expected: The stored item uses console only and gains the final organization scope.
    negative: false
    data_needs: No fixtures beyond the described setup.
    bound_to:
      - >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#masks
        the surfaces to the tenant’s: a console-and-portal definition the tenant keeps on the
        console
      - TST-PFM-ELG-392
      - >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#appends
        the tenant to the scope chain
    provenance: test
    source: >-
      services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#masks
      the surfaces to the tenant’s: a console-and-portal definition the tenant keeps on the console
    category: rule
    action_evidence:
      provenance: test
      source: >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#masks
        the surfaces to the tenant’s: a console-and-portal definition the tenant keeps on the
        console
    assertion_evidence:
      provenance: test
      source: >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#masks
        the surfaces to the tenant’s: a console-and-portal definition the tenant keeps on the
        console
    binding_scope: >-
      The cited tests contribute their reachable assertions; the binding does not establish
      execution or every step of this scenario.
    binding_limitations:
      - FND-PFM-ELG-074
  - id: ATS-PFM-ELG-016-07
    title: Resolve only unconfirmed scope matches
    level: api
    proves:
      - BR-CAP-PFM-ELG-016-07
    preconditions: Occurrences were refreshed before and after a cutoff.
    steps: 'Resolve one twice, then clear unconfirmed occurrences within a scope.'
    expected: The repeat returns true then false and only older matching occurrences clear.
    negative: false
    data_needs: No fixtures beyond the described setup.
    bound_to:
      - >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#resolves
        the open item once and answers false the second time
      - TST-PFM-ELG-392
      - >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#resolves
        the open items not confirmed since the instant, in the scope given, and leaves the confirmed
    provenance: test
    source: >-
      services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#resolves
      the open item once and answers false the second time
    category: transition
    action_evidence:
      provenance: test
      source: >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#resolves
        the open item once and answers false the second time
    assertion_evidence:
      provenance: test
      source: >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#resolves
        the open item once and answers false the second time
    binding_scope: >-
      The cited tests contribute their reachable assertions; the binding does not establish
      execution or every step of this scenario.
    binding_limitations:
      - FND-PFM-ELG-074
  - id: ATS-PFM-ELG-016-08
    title: Maintain items in the sweep
    level: api
    proves:
      - BR-CAP-PFM-ELG-016-08
    preconditions: 'Expired, retired-kind and rerank-needed items plus orphan records exist.'
    steps: Run a workspace sweep.
    expected: >-
      Expired work releases its key, retired work clears, rank updates and orphan records are
      removed.
    negative: false
    data_needs: No fixtures beyond the described setup.
    bound_to:
      - >-
        services-platform:modules/attention/tests/integration/services/sweep/sweep-tenant.integration.spec.js#expires
        an item whose expiry has passed, and only that one
      - TST-PFM-ELG-402
      - >-
        services-platform:modules/attention/tests/integration/services/sweep/sweep-tenant.integration.spec.js#frees
        the expired item’s dedupe key, so the condition can open again
      - >-
        services-platform:modules/attention/tests/integration/services/sweep/sweep-tenant.integration.spec.js#resolves
        a retired definition’s open item as definition_retired
      - >-
        services-platform:modules/attention/tests/integration/services/sweep/sweep-tenant.integration.spec.js#deletes
        the audience, state and reminder rows of an item that no longer exists
      - >-
        services-platform:modules/attention/tests/unit/rules.spec.js#never reopens a resolved item
        (a recurrence is a new generation)
      - TST-PFM-ELG-408
    provenance: test
    source: >-
      services-platform:modules/attention/tests/integration/services/sweep/sweep-tenant.integration.spec.js#expires
      an item whose expiry has passed, and only that one
    category: transition
    action_evidence:
      provenance: test
      source: >-
        services-platform:modules/attention/tests/integration/services/sweep/sweep-tenant.integration.spec.js#expires
        an item whose expiry has passed, and only that one
    assertion_evidence:
      provenance: test
      source: >-
        services-platform:modules/attention/tests/integration/services/sweep/sweep-tenant.integration.spec.js#expires
        an item whose expiry has passed, and only that one
    binding_scope: >-
      The cited tests contribute their reachable assertions; the binding does not establish
      execution or every step of this scenario.
    binding_limitations:
      - FND-PFM-ELG-074
  - id: ATS-PFM-ELG-016-09
    title: Bound computed attention
    level: api
    proves:
      - BR-CAP-PFM-ELG-016-09
    preconditions: A dataset-backed kind has configurable matches.
    steps: 'Evaluate, narrow matches, exceed the cap and add an eligibility audience.'
    expected: >-
      Matches publish, removed matches clear, capacity stops without resolution and unsupported
      eligibility fails.
    negative: true
    data_needs: No fixtures beyond the described setup.
    bound_to:
      - >-
        services-platform:modules/attention/tests/integration/services/evaluate/evaluate-definition.integration.spec.js#publishes
        one item per matching record with its facts and the fixed audience, and records the run
      - TST-PFM-ELG-390
      - >-
        services-platform:modules/attention/tests/integration/services/evaluate/evaluate-definition.integration.spec.js#resolves
        the item of a record the next run no longer matches (the tenant’s setting narrowed it)
      - >-
        services-platform:modules/attention/tests/integration/services/evaluate/evaluate-definition.integration.spec.js#stops
        a run past its cap as over_capacity, resolving nothing
      - >-
        services-platform:modules/attention/tests/integration/services/evaluate/evaluate-definition.integration.spec.js#refuses
        an eligibility binding, recording the run as failed
    provenance: test
    source: >-
      services-platform:modules/attention/tests/integration/services/evaluate/evaluate-definition.integration.spec.js#publishes
      one item per matching record with its facts and the fixed audience, and records the run
    category: boundary
    action_evidence:
      provenance: test
      source: >-
        services-platform:modules/attention/tests/integration/services/evaluate/evaluate-definition.integration.spec.js#publishes
        one item per matching record with its facts and the fixed audience, and records the run
    assertion_evidence:
      provenance: test
      source: >-
        services-platform:modules/attention/tests/integration/services/evaluate/evaluate-definition.integration.spec.js#publishes
        one item per matching record with its facts and the fixed audience, and records the run
    binding_scope: >-
      The cited tests contribute their reachable assertions; the binding does not establish
      execution or every step of this scenario.
    binding_limitations:
      - FND-PFM-ELG-074
  - id: ATS-PFM-ELG-016-10
    title: Authorize accountable manual clearance
    level: api
    proves:
      - BR-CAP-PFM-ELG-016-10
    preconditions: An open occurrence exists.
    steps: 'Resolve with and without separate clearance authority, then repeat.'
    expected: 'The authorized reason is audited, unauthorized input fails and closed work returns not found.'
    negative: true
    data_needs: No fixtures beyond the described setup.
    bound_to:
      - >-
        services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#resolves an open item
        with the reason, audited
      - TST-PFM-ELG-388
      - >-
        services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#refuses it without
        resolve-manually, with 403
      - >-
        services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#answers 404 for an item
        that is no longer open
    provenance: test
    source: >-
      services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#resolves an open item with
      the reason, audited
    category: permission
    action_evidence:
      provenance: test
      source: >-
        services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#resolves an open item
        with the reason, audited
    assertion_evidence:
      provenance: test
      source: >-
        services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#resolves an open item
        with the reason, audited
    binding_scope: >-
      The cited tests contribute their reachable assertions; the binding does not establish
      execution or every step of this scenario.
    binding_limitations:
      - FND-PFM-ELG-074
  - id: ATS-PFM-ELG-016-11
    title: Exercise the Accounting-to-Home path
    level: browser
    proves:
      - BR-CAP-PFM-ELG-016-03
      - BR-CAP-PFM-ELG-016-07
      - AS-JNY-PFM-ELG-004-01
      - AS-JNY-PFM-ELG-004-06
    preconditions: Publishing is enabled and Pat holds posting at a unit.
    steps: 'Enter and close a batch in Accounting, inspect Home and post it.'
    expected: The close produces one item and posting removes it.
    negative: false
    data_needs: No fixtures beyond the described setup.
    bound_to:
      - >-
        react-console:acceptance/platform-attention/playwright/journeys/cross-application/RA-ACC-0250.spec.ts#RA-ACC-0250
      - TST-PFM-ELG-375
    provenance: test
    source: >-
      react-console:acceptance/platform-attention/playwright/journeys/cross-application/RA-ACC-0250.spec.ts#RA-ACC-0250
    category: interaction
    action_evidence:
      provenance: test
      source: >-
        react-console:acceptance/platform-attention/playwright/journeys/cross-application/RA-ACC-0250.spec.ts#RA-ACC-0250
    assertion_evidence:
      provenance: test
      source: >-
        react-console:acceptance/platform-attention/playwright/journeys/cross-application/RA-ACC-0250.spec.ts#RA-ACC-0250
    binding_scope: >-
      The cited tests contribute their reachable assertions; the binding does not establish
      execution or every step of this scenario.
    binding_limitations:
      - FND-PFM-ELG-074
  - id: ATS-PFM-ELG-016-12
    title: Redirect merge references
    level: api
    proves:
      - BR-CAP-PFM-ELG-016-12
    preconditions: 'The losing contact has an item, contact audience and personal state.'
    steps: Merge into a surviving contact.
    expected: Supported references move to the survivor and an existing survivor state takes precedence.
    negative: false
    data_needs: No fixtures beyond the described setup.
    bound_to: []
    provenance: proposed
    source: 'services-platform:docs/attention.md#8. The merge participant'
    category: interaction
    action_evidence:
      provenance: proposed
      source: 'services-platform:docs/attention.md#8. The merge participant'
    assertion_evidence:
      provenance: proposed
      source: 'services-platform:docs/attention.md#8. The merge participant'
    binding_scope: This sequence is proposed and has no executable proof binding.
  - id: ATS-PFM-ELG-016-13
    title: Clear gap attention after coverage repair
    category: interaction
    level: api
    proves:
      - BR-CAP-PFM-ELG-015-06
      - BR-CAP-PFM-ELG-016-07
    exercises:
      - CAP-PFM-ELG-016
      - CAP-PFM-ELG-015
    preconditions: An uncovered always-held area has advisory administrator attention.
    steps: >-
      Assign a primary holder, refresh uncovered-area attention and inspect the advisory and gap
      report.
    expected: >-
      Coverage clears the report and resolves its advisory; repeating the refresh creates no new
      occurrence.
    negative: false
    data_needs: Run-owned records and a controlled clock where timing changes the result.
    bound_to: []
    provenance: proposed
    source: >-
      services-platform:modules/attention/tests/integration/services/evaluate/refresh-unassigned-attention.integration.spec.js#resolves
      the item as cleared when the refresh runs after the assignment;
      services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#resolves
      the open items not confirmed since the instant, in the scope given, and leaves the confirmed
    action_evidence:
      provenance: proposed
      source: >-
        services-platform:modules/attention/tests/integration/services/evaluate/refresh-unassigned-attention.integration.spec.js#resolves
        the item as cleared when the refresh runs after the assignment;
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#resolves
        the open items not confirmed since the instant, in the scope given, and leaves the confirmed
    assertion_evidence:
      provenance: proposed
      source: >-
        services-platform:modules/attention/tests/integration/services/evaluate/refresh-unassigned-attention.integration.spec.js#resolves
        the item as cleared when the refresh runs after the assignment;
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#resolves
        the open items not confirmed since the instant, in the scope given, and leaves the confirmed
    binding_scope: This sequence is proposed and has no executable proof binding.
  - id: ATS-PFM-ELG-016-14
    title: Remove resolved conditions from every matching list
    category: interaction
    level: api
    proves:
      - BR-CAP-PFM-ELG-016-07
      - BR-CAP-PFM-ELG-017-02
    exercises:
      - CAP-PFM-ELG-016
      - CAP-PFM-ELG-017
    preconditions: An open condition reaches two staff members through different audiences.
    steps: >-
      Read both lists, resolve the condition at source and read both lists and the stored
      occurrence.
    expected: Both lists lose the condition while the stored occurrence retains its closed history.
    negative: false
    data_needs: Run-owned records and a controlled clock where timing changes the result.
    bound_to: []
    provenance: proposed
    source: >-
      services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#resolves
      the open items not confirmed since the instant, in the scope given, and leaves the confirmed;
      services-platform:modules/attention/tests/integration/services/persistence/items.queries.integration.spec.js#reaches
      a role audience’s holders, and not a user without the role
    action_evidence:
      provenance: proposed
      source: >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#resolves
        the open items not confirmed since the instant, in the scope given, and leaves the
        confirmed;
        services-platform:modules/attention/tests/integration/services/persistence/items.queries.integration.spec.js#reaches
        a role audience’s holders, and not a user without the role
    assertion_evidence:
      provenance: proposed
      source: >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#resolves
        the open items not confirmed since the instant, in the scope given, and leaves the
        confirmed;
        services-platform:modules/attention/tests/integration/services/persistence/items.queries.integration.spec.js#reaches
        a role audience’s holders, and not a user without the role
    binding_scope: This sequence is proposed and has no executable proof binding.
  - id: ATS-PFM-ELG-016-15
    title: Keep escalation through provider refresh
    category: interaction
    level: api
    proves:
      - BR-CAP-PFM-ELG-016-05
      - BR-CAP-PFM-ELG-019-02
    exercises:
      - CAP-PFM-ELG-016
      - CAP-PFM-ELG-019
    preconditions: An overdue occurrence has a configured escalation target.
    steps: >-
      Sweep to escalate, repeat the sweep, refresh the same provider key, then inspect audiences and
      audit.
    expected: The target remains present and there is only one escalation change.
    negative: false
    data_needs: Run-owned records and a controlled clock where timing changes the result.
    bound_to:
      - >-
        services-platform:modules/attention/tests/integration/services/sweep/sweep-tenant.integration.spec.js
      - TST-PFM-ELG-402
    provenance: test
    source: >-
      services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#opens
      the next generation, a new item, when a resolved condition recurs;
      services-platform:modules/attention/tests/integration/services/sweep/sweep-tenant.integration.spec.js#escalates
      an item once: a second sweep stamps, adds and records nothing
    action_evidence:
      provenance: test
      source: >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#opens
        the next generation, a new item, when a resolved condition recurs;
        services-platform:modules/attention/tests/integration/services/sweep/sweep-tenant.integration.spec.js#escalates
        an item once: a second sweep stamps, adds and records nothing
    assertion_evidence:
      provenance: test
      source: >-
        services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#opens
        the next generation, a new item, when a resolved condition recurs;
        services-platform:modules/attention/tests/integration/services/sweep/sweep-tenant.integration.spec.js#escalates
        an item once: a second sweep stamps, adds and records nothing
    binding_scope: >-
      The cited tests contribute their reachable assertions; the binding does not establish
      execution or every step of this scenario.
    binding_limitations:
      - FND-PFM-ELG-074
  - title: Inspect retirement after the repair window
    category: edge
    level: api
    proves:
      - BR-CAP-PFM-ELG-016-02
    preconditions: A retired kind still has an open occurrence after its immediate resolution failed.
    steps: >-
      Advance beyond the recent-retirement window, run the sweep and inspect stored occurrence and
      reader output.
    expected: 'The unresolved occurrence remains stored but unseen, exposing the bounded repair limit.'
    negative: true
    data_needs: 'Run-owned fixtures, separate caller contexts and a controlled clock where required.'
    bound_to: []
    provenance: proposed
    source: >-
      services-platform:modules/attention/services/persistence/items.ts:resolveRetiredDefinitionItems;
      services-platform:modules/attention/services/sweep/sweep-tenant.ts
    id: ATS-PFM-ELG-016-16
    limitations:
      - FND-PFM-ELG-040
    action_evidence:
      provenance: proposed
      source: >-
        services-platform:modules/attention/services/persistence/items.ts:resolveRetiredDefinitionItems;
        services-platform:modules/attention/services/sweep/sweep-tenant.ts
    assertion_evidence:
      provenance: proposed
      source: >-
        services-platform:modules/attention/services/persistence/items.ts:resolveRetiredDefinitionItems;
        services-platform:modules/attention/services/sweep/sweep-tenant.ts
    binding_scope: This sequence is proposed and has no executable proof binding.
evidence:
  - >-
    services-platform: docs/attention.md;
    docs/milestones/PLAT-M15-home-attention-and-responsibilities.md,
    PLAT-M16-attention-follow-up-and-tuning.md, PLAT-M17-attention-on-records-and-events.md,
    PLAT-M18-workspace-defined-attention.md, plans/PLAT-M15-plan.md, plans/PLAT-M16-plan.md;
    docs/proposals/responsibilities-and-attention/16-decisions.md; aws/platform.service.ts
    (ATTENTION_PERMISSIONS); modules/attention/services/registration/** (registration-manifest.ts,
    register-service-attention.ts, api-operation-registry.ts), services/persistence/items.ts,
    services/sweep/**, services/evaluate/**, templates.ts, platform-attention.ts,
    portal-safe-objects.ts, db/attention-definitions.table.ts, attention-items.table.ts,
    attention-item-keys.table.ts, attention-item-audiences.table.ts, attention-sweeps.table.ts,
    attention-evaluation-runs.table.ts, attention-evaluation-jobs.table.ts, _job_steps, _job_events;
    rule-level source and test references
  - >-
    react-console: acceptance/platform-attention/journeys/attention/RA-ACC-0100, 0101, 0104 and
    matching browser specifications.
related_coverage:
  - capability: CAP-PFM-ELG-015
    scenario: ATS-PFM-ELG-016-13
  - capability: CAP-PFM-ELG-017
    scenario: ATS-PFM-ELG-016-14
  - capability: CAP-PFM-ELG-019
    scenario: ATS-PFM-ELG-016-15
coverage:
  rule: 'gap: FND-PFM-ELG-068'
  transition: 'gap: FND-PFM-ELG-068'
  validation: covered
  permission: 'gap: FND-PFM-ELG-068'
  edge: 'gap: FND-PFM-ELG-068'
  failure: 'gap: FND-PFM-ELG-068'
  boundary: covered
  concurrency: 'gap: FND-PFM-ELG-068'
  invariant: 'gap: FND-PFM-ELG-068'
  interaction: covered
invariant_gaps:
  - invariant: INV-DOM-PFM-ELG-005-01
    finding: FND-PFM-ELG-068
    source: >-
      services-platform:modules/attention/db/attention-item-keys.table.ts;
      services-platform:modules/attention/services/persistence/items.ts:deleteOrphans
transition_coverage:
  - model: STATE-PFM-ELG-007
    from: open
    to: open
    trigger: publish_attention_item with an already-open key
    source: 'services-platform:docs/attention.md#2. The write functions'
    scenario: ATS-PFM-ELG-016-05
  - model: STATE-PFM-ELG-007
    from: open
    to: escalated
    trigger: Scheduled attention escalation phase
    source: 'services-platform:modules/attention/services/persistence/items.ts:escalateOverdueItems'
    scenario: ATS-PFM-ELG-019-01
  - model: STATE-PFM-ELG-007
    from: open
    to: resolved
    trigger: resolve_attention_item or scoped resolve_unconfirmed_attention_items
    source: 'services-platform:modules/attention/services/persistence/items.ts:resolveItem'
    scenario: ATS-PFM-ELG-016-07
  - model: STATE-PFM-ELG-007
    from: escalated
    to: resolved
    trigger: 'Provider resolution, scoped unconfirmed resolution or resolveAttentionItem'
    finding: FND-PFM-ELG-068
    source: 'services-platform:modules/attention/rules.ts:ITEM_TRANSITIONS'
  - model: STATE-PFM-ELG-007
    from: open
    to: resolved
    trigger: resolveAttentionItem
    source: 'services-platform:modules/attention/aws/api/attention.routes.ts:resolveAttentionItem'
    scenario: ATS-PFM-ELG-016-10
  - model: STATE-PFM-ELG-007
    from: open
    to: resolved
    trigger: Registration retirement and its bounded sweep repair
    source: >-
      services-platform:modules/attention/services/persistence/items.ts:resolveRetiredDefinitionItems
    scenario: ATS-PFM-ELG-016-02
  - model: STATE-PFM-ELG-007
    from: open
    to: expired
    trigger: Scheduled attention expiry phase
    source: 'services-platform:modules/attention/services/persistence/items.ts:expireItems'
    scenario: ATS-PFM-ELG-016-08
  - model: STATE-PFM-ELG-007
    from: escalated
    to: expired
    trigger: Scheduled attention expiry phase
    finding: FND-PFM-ELG-068
    source: 'services-platform:modules/attention/services/persistence/items.ts:expireItems'
  - model: STATE-PFM-ELG-007
    from: open
    to: dropped
    trigger: Scheduled monthly partition removal
    finding: FND-PFM-ELG-068
    source: 'services-platform:docs/attention.md#1. The tables'
permission_coverage:
  - key: platform.attention.resolve-manually
    finding: FND-PFM-ELG-068
    reason: A capability-level authority scenario does not prove every operation protected by this key.
coverage_notes:
  meaning: >-
    Covered means a detailed scenario exists; it does not mean the scenario ran or every executable
    assertion conforms.
  gaps: >-
    Occurrence retention and recurrence, merge redirection, computed query failure and retirement
    beyond the repair window need explicit proof. Provider refresh and manual resolution races
    remain unverified.
---

# Maintain attention conditions throughout their lifecycle: Capability Test Specification

## Coverage

The scenarios check observable outcomes against the cited contracts. The coverage map retains partial proof and unresolved design boundaries as findings.

| Required Rule | Scenarios |
|---|---|
| `BR-CAP-PFM-ELG-016-01` | `ATS-PFM-ELG-016-01` |
| `BR-CAP-PFM-ELG-016-02` | `ATS-PFM-ELG-016-02`, `ATS-PFM-ELG-016-16` |
| `BR-CAP-PFM-ELG-016-03` | `ATS-PFM-ELG-016-03`, `ATS-PFM-ELG-016-11` |
| `BR-CAP-PFM-ELG-016-04` | `ATS-PFM-ELG-016-04` |
| `BR-CAP-PFM-ELG-016-05` | `ATS-PFM-ELG-016-05`, `ATS-PFM-ELG-016-15` |
| `BR-CAP-PFM-ELG-016-06` | `ATS-PFM-ELG-016-06` |
| `BR-CAP-PFM-ELG-016-07` | `ATS-PFM-ELG-016-07`, `ATS-PFM-ELG-016-11`, `ATS-PFM-ELG-016-13`, `ATS-PFM-ELG-016-14` |
| `BR-CAP-PFM-ELG-016-08` | `ATS-PFM-ELG-016-08` |
| `BR-CAP-PFM-ELG-016-09` | `ATS-PFM-ELG-016-09` |
| `BR-CAP-PFM-ELG-016-10` | `ATS-PFM-ELG-016-10` |
| `BR-CAP-PFM-ELG-016-11` | Gap: `FND-PFM-ELG-068` |
| `BR-CAP-PFM-ELG-016-12` | `ATS-PFM-ELG-016-12` |

## Interactions With Related Capabilities

Clear gap attention after coverage repair. Assign a primary holder, refresh uncovered-area attention and inspect the advisory and gap report.

Remove resolved conditions from every matching list. Read both lists, resolve the condition at source and read both lists and the stored occurrence.

Keep escalation through provider refresh. Sweep to escalate, repeat the sweep, refresh the same provider key, then inspect audiences and audit.
