---
id: WF-PFM-ELG-019
title: Evaluate computed attention on schedule
trigger: >-
  At hourly minute twenty the scheduler submits due computed-kind evaluations
  for each workspace and schedule slot.
product_area: platform
module: eligibility
revision: 1
status: draft
design_intent: confirmed
origin: >-
  Responsibilities and attention architecture D-03 and D-13 (Platform evaluates
  only computed kinds, through the query layer), approved by Andrew 2026-10-18
  (PLAT-M15 "Decisions"); the job standard (docs/jobs.md)
implementation_evidence: observed
inference: []
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
implements:
  - CAP-PFM-ELG-016
  - CAP-PFM-ELG-015
moves:
  - STATE-PFM-ELG-007
crosses:
  - SVC-PFM-ELG-attention
  - SVC-PFM-ELG-responsibilities
idempotency: >-
  Workspace, kind and slot identify a job submission. Item publication refreshes
  existing keys; unconfirmed resolution runs only after successful enumeration.
concurrency: >-
  Each job is scoped to one workspace-kind-slot, but records publish in
  individual transactions and a later failure cannot undo earlier items.
hops:
  - 'n': 1
    actor_or_service: Evaluation scheduler
    action: >-
      Determine hourly, six-hourly or daily eligibility and submit due
      workspace-kind jobs.
    anchor: >-
      services-platform:modules/attention/services/evaluate/submit-evaluations.ts:submitDueEvaluations
    seam: schedule
    on_failure: >-
      Log each submission failure and continue other pairs; the silence alarm
      detects missing scheduler invocation.
    left_inconsistent: A missed pair can remain stale without the global silence alarm firing.
    observer: >-
      Scheduler logs, dead-letter handling and invocation silence show different
      failure classes.
    provenance: observed
    source: >-
      services-platform:modules/attention/services/evaluate/submit-evaluations.ts:evaluationSlot
  - 'n': 2
    actor_or_service: Evaluation state machine and task
    action: Start a run and evaluate the kind’s criteria or internal source.
    anchor: >-
      services-platform:modules/attention/services/evaluate/evaluate-definition.ts:evaluateDefinition
    seam: state_machine
    on_failure: Exceptions during evaluation mark failure and trigger execution alarms.
    left_inconsistent: Items already committed remain; old items are not cleared by a failed run.
    observer: State-machine failure and timeout alarms expose execution.
    provenance: observed
    source: >-
      services-platform:modules/attention/services/evaluate/evaluation-workflow.ts:attentionEvaluationWorkflow
  - 'n': 3
    actor_or_service: Evaluation task (uncovered areas)
    action: >-
      For uncovered responsibilities, orchestrate advisory publication from gap
      rows and resolve absent gaps after successful publication.
    anchor: >-
      services-platform:modules/attention/services/evaluate/evaluate-definition.ts:runInternal
    seam: state_machine
    on_failure: Evaluation exceptions follow the run failure path.
    left_inconsistent: A partial publication remains until later evaluation.
    observer: Evaluation alarms expose incomplete work.
    provenance: observed
    source: >-
      services-platform:modules/attention/services/evaluate/unassigned-responsibilities.ts:evaluateUnassignedResponsibilities
  - 'n': 4
    actor_or_service: Evaluation task (dataset kinds)
    action: >-
      Read dataset pages of one thousand, apply settings to criteria, project
      item fields, publish matches and resolve unconfirmed items only after
      finishing.
    anchor: >-
      services-platform:modules/attention/services/evaluate/evaluate-definition.ts:itemOf
    seam: state_machine
    on_failure: >-
      Beyond one hundred thousand matches settle over capacity without clearing;
      exceptions fail, and unsupported eligibility audiences are refused.
    left_inconsistent: Earlier items remain and later matches beyond capacity are not published.
    observer: The over-capacity alarm distinguishes this outcome from failure.
    provenance: observed
    source: 'services-platform:docs/attention.md#7. The sweep and the evaluator'
branches:
  - >-
    Daily uncovered-area evaluation is scheduled at 07:20 independently of
    responsibility reconcile completion.
waits: []
evidence:
  - >-
    services-platform at ad3f6a6: modules/attention/services/evaluate/;
    services/persistence/evaluation-runs.ts;
    aws/logic/attention-evaluation.lambda.ts,
    attention-evaluation.step-function.ts; docs/attention.md §7; docs/jobs.md.
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-CRY-001, TC-CRY-002, TC-CRY-003, TC-CRY-004, TC-DAT-001, TC-DAT-002, TC-DAT-003, TC-DAT-004, TC-IAM-001, TC-IAM-002, TC-IAM-004, TC-IAM-005, TC-IAM-006, TC-LOG-002, TC-LOG-003, TC-LOG-004, TC-LOG-005, TC-MON-001, TC-MON-002, 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]
---
# Evaluate computed attention on schedule

## What It Does

At hourly minute twenty the scheduler submits due computed-kind evaluations for each workspace and schedule slot.

## The Flow

```mermaid
flowchart TD
  H1["Evaluation scheduler" ]
  H2["Evaluation state machine and task" ]
  H1 --> H2
  H3["Evaluation task (uncovered areas)" ]
  H2 --> H3
  H4["Evaluation task (dataset kinds)" ]
  H3 --> H4
```

Determine hourly, six-hourly or daily eligibility and submit due workspace-kind jobs. Start a run and evaluate the kind’s criteria or internal source. For uncovered responsibilities, orchestrate advisory publication from gap rows and resolve absent gaps after successful publication. Read dataset pages of one thousand, apply settings to criteria, project item fields, publish matches and resolve unconfirmed items only after finishing.

## When Something Fails

Log each submission failure and continue other pairs; the silence alarm detects missing scheduler invocation. A missed pair can remain stale without the global silence alarm firing. Exceptions during evaluation mark failure and trigger execution alarms. Items already committed remain; old items are not cleared by a failed run. Evaluation exceptions follow the run failure path. A partial publication remains until later evaluation. Beyond one hundred thousand matches settle over capacity without clearing; exceptions fail, and unsupported eligibility audiences are refused. Earlier items remain and later matches beyond capacity are not published.

## Open Design Questions

Daily uncovered-area evaluation is scheduled at 07:20 independently of responsibility reconcile completion.
