---
id: WF-PFM-ELG-011
title: Reconcile responsibilities nightly
trigger: >-
  At 07:10 UTC the responsibility scheduler submits a dated reconcile job for
  each operational workspace.
product_area: platform
module: eligibility
revision: 1
status: draft
design_intent: confirmed
origin: >-
  Responsibilities and attention architecture D-02 (role defaults reconciled
  nightly, removable or narrowable by the workspace), 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-015
  - CAP-PFM-ELG-014
moves:
  - STATE-PFM-ELG-005
crosses:
  - SVC-PFM-ELG-responsibilities
  - SVC-PFM-ELG-attention
idempotency: >-
  Workspace-and-date submission identities suppress duplicate jobs; unchanged
  reconciliation produces no new holding changes.
concurrency: >-
  Each reconcile uses one transaction with a two-minute timeout. The 07:20
  attention schedule is independent and does not await completion.
hops:
  - 'n': 1
    actor_or_service: Nightly scheduler
    action: Submit the dated workspace reconcile jobs.
    anchor: >-
      services-platform:modules/responsibilities/services/reconcile/submit-nightly-reconcile.ts:submitNightlyResponsibilityReconciles
    seam: schedule
    on_failure: >-
      Scheduler failures are logged; later nightly scheduling provides another
      opportunity.
    left_inconsistent: Unsubmitted workspaces retain the previous report.
    observer: Scheduler logs and alarms expose missed work.
    provenance: observed
    source: >-
      services-platform:modules/responsibilities/aws/logic/responsibilities-reconcile.lambda.ts:responsibilitiesReconcileSchedulerFunction
  - 'n': 2
    actor_or_service: Reconcile state machine and task
    action: >-
      Realize current role defaults, respect removals, end retired defaults,
      refresh always-held gaps and report inactive covering colleagues
      atomically.
    anchor: >-
      services-platform:modules/responsibilities/services/reconcile/reconcile-tenant.ts:reconcileTenant
    seam: state_machine
    on_failure: Execution failure rolls back that workspace transaction and alarms.
    left_inconsistent: The previous reconcile result remains without partial replacement.
    observer: 'Job alarms, duration and gap gauges show outcome.'
    provenance: observed
    source: >-
      services-platform:modules/responsibilities/services/reconcile/nightly-reconcile-workflow.ts:responsibilityReconcileWorkflow
  - 'n': 3
    actor_or_service: 'Attention evaluation (07:20 UTC)'
    action: >-
      Run the independent 07:20 computed evaluation to publish uncovered-area
      advisories and resolve cleared gaps.
    anchor: >-
      services-platform:modules/attention/services/evaluate/evaluate-definition.ts:runInternal
    seam: schedule
    on_failure: Exceptions fail the evaluation; earlier committed publications remain.
    left_inconsistent: A late reconcile can leave this evaluation using an earlier gap report.
    observer: Attention execution alarms expose failure.
    provenance: observed
    source: >-
      services-platform:modules/attention/services/evaluate/submit-evaluations.ts:submitDueEvaluations
branches:
  - >-
    Inactive cover is counted and logged without automatically ending its stored
    arrangement.
waits:
  - 'Ten minutes separates scheduled start times, without a completion barrier.'
evidence:
  - >-
    services-platform at ad3f6a6: modules/responsibilities/services/reconcile/;
    aws/logic/responsibilities-reconcile.lambda.ts,
    responsibilities-reconcile.step-function.ts;
    modules/attention/services/evaluate/; docs/responsibilities.md §6;
    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-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-005, TC-MON-001, TC-MON-002, TC-PI-001, TC-PI-002, TC-PI-003, TC-PI-005, TC-TEN-001, TC-TEN-002, TC-TEN-003, TC-VEN-001, TC-VEN-002, TC-VEN-003]
---
# Reconcile responsibilities nightly

## What It Does

At 07:10 UTC the responsibility scheduler submits a dated reconcile job for each operational workspace.

## The Flow

```mermaid
flowchart TD
  H1["Nightly scheduler" ]
  H2["Reconcile state machine and task" ]
  H1 --> H2
  H3["Attention evaluation (07:20 UTC)" ]
  H2 --> H3
```

Submit the dated workspace reconcile jobs. Realize current role defaults, respect removals, end retired defaults, refresh always-held gaps and report inactive covering colleagues atomically. Run the independent 07:20 computed evaluation to publish uncovered-area advisories and resolve cleared gaps.

## When Something Fails

Scheduler failures are logged; later nightly scheduling provides another opportunity. Unsubmitted workspaces retain the previous report. Execution failure rolls back that workspace transaction and alarms. The previous reconcile result remains without partial replacement. Exceptions fail the evaluation; earlier committed publications remain. A late reconcile can leave this evaluation using an earlier gap report.

## Open Design Questions

Inactive cover is counted and logged without automatically ending its stored arrangement.
