---
id: CAP-PFM-ELG-016
title: Maintain attention conditions throughout their lifecycle
feature: FEAT-PFM-ELG-05
product_area: platform
module: eligibility
revision: 1
status: draft
product_intent: confirmed
implementation_evidence: observed
supersedes:
  - RA-ACC-0104
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
intent_sources:
  - >-
    services-platform:docs/proposals/responsibilities-and-attention/16-decisions.md#D-03
  - >-
    services-platform:docs/proposals/responsibilities-and-attention/16-decisions.md#D-05
  - >-
    services-platform:docs/proposals/responsibilities-and-attention/16-decisions.md#D-06
  - >-
    services-platform:docs/proposals/responsibilities-and-attention/16-decisions.md#D-10
  - >-
    services-platform:docs/proposals/responsibilities-and-attention/16-decisions.md#D-12
  - >-
    services-platform:docs/proposals/responsibilities-and-attention/16-decisions.md#D-13
  - 'services-platform:docs/milestones/plans/PLAT-M15-plan.md#2. Scope'
purpose: >-
  Attention needs an accountable lifecycle tied to the application condition.
  Providers publish and clear occurrences while Platform maintains the shared
  projection.
outcomes:
  - Application conditions create attention and remove it on completion.
  - >-
    Transactional publication prevents committing invalid attention alongside
    the business update.
concepts:
  - CON-PFM-ELG-005
actors:
  - ACT-PFM-024
  - ACT-PFM-026
  - ACT-PFM-007
surfaces:
  - api
  - job
preconditions: []
postconditions: []
permissions:
  - key: platform.attention.resolve-manually
    where_checked: api
    scope: tenant
rules:
  - id: BR-CAP-PFM-ELG-016-01
    proved_by: [ATS-PFM-ELG-016-01, TST-PFM-ELG-400, TST-PFM-ELG-403]
    statement: >-
      Application attention declarations are validated together, rejecting
      foreign keys, changed classes, unexplained required classes, escalating
      opportunities, incompatible audiences, invalid templates, unavailable
      actions or permissions and foreign about-objects.
    kind: validation
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-platform:modules/attention/tests/integration/services/registration/register-service-attention.integration.spec.js#refuses
      a class that changes between releases
    origin: >-
      services-platform:docs/proposals/responsibilities-and-attention/16-decisions.md#D-06
  - id: BR-CAP-PFM-ELG-016-02
    proved_by: [ATS-PFM-ELG-016-02, ATS-PFM-ELG-016-16, TST-PFM-ELG-400]
    statement: >-
      Removing a declared kind retires it and resolves its open workspace items
      while retaining workspace settings.
    kind: lifecycle
    enforced_at:
      - service
    must_prove: true
    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
    origin: none
  - id: BR-CAP-PFM-ELG-016-03
    proved_by: [ATS-PFM-ELG-016-03, ATS-PFM-ELG-016-11, TST-PFM-ELG-375, TST-PFM-ELG-392]
    statement: >-
      Applications publish and resolve attention within their transaction
      through four restricted database functions, rejecting foreign workspace or
      service claims and unavailable kinds, while Platform can evaluate any
      application’s computed kinds.
    kind: permission
    enforced_at:
      - database
    must_prove: true
    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
    origin: >-
      services-platform:docs/proposals/responsibilities-and-attention/16-decisions.md#D-13
  - id: BR-CAP-PFM-ELG-016-04
    proved_by: [ATS-PFM-ELG-016-04, TST-PFM-ELG-392]
    statement: >-
      Item publication rejects invalid facts, scope chains over ten or an
      organization scope placed before the end, unsupported or excessive
      audiences, missing responsibility targets, teams, unknown product roles
      and non-Platform eligibility audiences, rolling back refused writes.
    kind: validation
    enforced_at:
      - database
    must_prove: true
    provenance: test
    source: >-
      services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#writes
      nothing when it refuses
    origin: none
  - id: BR-CAP-PFM-ELG-016-05
    proved_by: [ATS-PFM-ELG-016-05, ATS-PFM-ELG-016-15, ATS-PFM-ELG-019-07, TST-PFM-ELG-392, TST-PFM-ELG-402]
    statement: >-
      Each kind and deduplication key has one open occurrence, refreshed in
      place with replacement audiences while retaining escalations; recurrence
      after resolution creates a new generation.
    kind: invariant
    enforced_at:
      - database
    must_prove: true
    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
    origin: none
  - id: BR-CAP-PFM-ELG-016-06
    proved_by: [ATS-PFM-ELG-016-06, TST-PFM-ELG-392]
    statement: >-
      Published surfaces reflect the kind’s and workspace’s choices, and scope
      chains end at the workspace after application-provided resource ancestry.
    kind: calculation
    enforced_at:
      - database
    must_prove: true
    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
    origin: >-
      services-platform:docs/proposals/responsibilities-and-attention/16-decisions.md#D-05
  - id: BR-CAP-PFM-ELG-016-07
    proved_by: [ATS-PFM-ELG-015-09, ATS-PFM-ELG-016-07, ATS-PFM-ELG-016-11, ATS-PFM-ELG-016-13, ATS-PFM-ELG-016-14, ATS-PFM-ELG-017-17, TST-PFM-ELG-375, TST-PFM-ELG-392]
    statement: >-
      Resolution reports whether it closed an open occurrence and safely
      repeats; unconfirmed resolution clears matching occurrences not refreshed
      since a given instant, optionally within a scope.
    kind: lifecycle
    enforced_at:
      - database
    must_prove: true
    provenance: test
    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
    origin: none
  - id: BR-CAP-PFM-ELG-016-08
    proved_by: [ATS-PFM-ELG-016-08, TST-PFM-ELG-402, TST-PFM-ELG-408]
    statement: >-
      Closed occurrences do not reopen; a 15-minute sweep expires overdue expiry
      dates, releases their deduplication keys, clears recently retired kinds,
      refreshes rank and removes orphaned supporting records.
    kind: lifecycle
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      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
    origin: none
  - id: BR-CAP-PFM-ELG-016-09
    proved_by: [ATS-PFM-ELG-016-09, TST-PFM-ELG-390]
    statement: >-
      Scheduled computed attention uses reporting data to publish matching
      records and clear missing matches, stopping above 100,000 without clearing
      items and rejecting eligibility audiences until customer authoring exists.
    kind: policy
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-platform:modules/attention/tests/integration/services/evaluate/evaluate-definition.integration.spec.js#stops
      a run past its cap as over_capacity, resolving nothing
    origin: none
  - id: BR-CAP-PFM-ELG-016-10
    proved_by: [ATS-PFM-ELG-016-10, TST-PFM-ELG-388]
    statement: >-
      Manual resolution requires its separate permission and an audited reason,
      returning not found for an occurrence already closed.
    kind: permission
    enforced_at:
      - api
    must_prove: true
    provenance: test
    source: >-
      services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#resolves
      an open item with the reason, audited
    origin: none
  - id: BR-CAP-PFM-ELG-016-11
    proved_by: []
    statement: >-
      Monthly attention storage retains 13 months, dropping remaining open
      occurrences with their partition for providers to recreate on a subsequent
      sweep.
    kind: lifecycle
    enforced_at:
      - database
    must_prove: true
    provenance: test
    source: >-
      services-platform:modules/attention/tests/integration/db/attention-items.table.integration.spec.js#partitions
      the items by month on opened_at, registered for the maintenance with
      thirteen months kept
    origin: none
  - id: BR-CAP-PFM-ELG-016-12
    proved_by: [ATS-PFM-ELG-016-12]
    statement: >-
      Contact and organization merges redirect attention references and
      audiences to the survivor, including a merged contact’s personal state.
    kind: lifecycle
    enforced_at:
      - database
    must_prove: true
    provenance: documented
    source: 'services-platform:docs/attention.md#8. The merge participant'
    origin: none
  - id: BR-CAP-PFM-ELG-016-13
    proved_by: []
    statement: >-
      Attention does not automatically create tasks or messages and currently
      emits no business lifecycle events.
    kind: policy
    enforced_at:
      - service
    must_prove: false
    provenance: documented
    source: 'services-platform:docs/attention.md#9. What is not built'
    origin: >-
      services-platform:docs/proposals/responsibilities-and-attention/16-decisions.md#D-10
scenarios:
  - id: SC-CAP-PFM-ELG-016-01
    given: Publishing is enabled and Pat holds unit posting.
    when: A batch closes within that unit.
    then: The same save publishes the waiting-posting item and posting resolves it.
    provenance: test
    source: >-
      react-console:acceptance/platform-attention/playwright/journeys/attention/RA-ACC-0100.spec.ts#RA-ACC-0100
  - id: SC-CAP-PFM-ELG-016-02
    given: A reconciliation condition becomes blocked.
    when: The reconciliation later clears.
    then: Its holder’s blocker item appears and then resolves.
    provenance: test
    source: >-
      react-console:acceptance/platform-attention/playwright/journeys/attention/RA-ACC-0104.spec.ts#RA-ACC-0104
edge_cases: []
constraints: []
depends_on: []
related:
  - CAP-PFM-ELG-015
  - CAP-PFM-ELG-017
journeys:
  - JNY-PFM-ELG-004
open_questions: []
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.
controls: [TC-AVL-005, TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-CHG-001, TC-CHG-002, TC-CHG-003, TC-CHG-004, TC-CHG-005, TC-CHG-006, TC-CHG-007, TC-DAT-001, TC-DAT-002, TC-DAT-003, TC-DAT-004, TC-IAM-001, TC-IAM-006, TC-LOG-002, TC-LOG-003, TC-LOG-004, TC-LOG-005, TC-MON-001, TC-PI-001, TC-PI-002, TC-PI-003, TC-PI-005, TC-PRV-001, TC-PRV-002, TC-TEN-001, TC-TEN-002, TC-TEN-003, TC-TEN-004, TC-VEN-001, TC-VEN-002, TC-VEN-003]
exercised_by: [FAS-PFM-ELG-05-01, FAS-PFM-ELG-05-02, FAS-PFM-ELG-05-03, FAS-PFM-ELG-05-04, FAS-PFM-ELG-05-05, FAS-PFM-ELG-06-03]
suites: [TST-PFM-ELG-375, TST-PFM-ELG-388, TST-PFM-ELG-390, TST-PFM-ELG-392, TST-PFM-ELG-400, TST-PFM-ELG-402, TST-PFM-ELG-403, TST-PFM-ELG-408]
---
# Maintain attention conditions throughout their lifecycle

## Purpose

Attention needs an accountable lifecycle tied to the application condition. Providers publish and clear occurrences while Platform maintains the shared projection.

## How It Works

An application declares each kind’s meaning and presentation. Deployment validation checks the full set. The provider publishes an occurrence alongside its business change. Later refreshes keep the same open occurrence current. Clearing the business condition resolves it. Recurrence creates a fresh generation for personal responses. Provider sweeps repair missed updates, and Platform sweeps maintain expiry and rank. Computed kinds obtain their matches through reporting. An authorized administrator can resolve an occurrence with an explanation. Merges redirect supported references to the surviving record.

## Relationships

Condition lifecycle supplies the attention read experience and the coverage-gap conditions created by responsibility reconciliation.
