---
id: WF-ACC-REC-011
title: Supply reconciliation readiness to month-end close
trigger: >-
  Close evaluates reconciliation readiness, or a controller requests a period
  preview.
product_area: accounting
module: reconciliation
revision: 3
status: draft
design_intent: confirmed
origin: >-
  Andrew, 2026-10-16 (one finding per problem); ACCT-M8 plan §1 (close reads
  reconciliation's readiness and refuses to close over overdue or unexplained
  money) and D10, approved 2026-10-22; services-accounting
  docs/reconciliation/architecture.md §15.1
implementation_evidence: observed
inference: []
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
implements:
  - CAP-ACC-REC-018
  - CAP-ACC-REC-011
moves: []
crosses:
  - SVC-ACC-REC-reconciliation
idempotency: >-
  Evaluation creates no record, so repeat reads are safe; findings reflect
  current source facts rather than a retained whole-assessment answer.
concurrency: >-
  A caller transaction is required. Close locks its fiscal period and posting
  commands share-lock relevant periods, but other assessed mutations are not
  universally excluded.
hops:
  - 'n': 1
    actor_or_service: Month-End Close run step
    action: >-
      The close caller coordinates the period lock and invokes its readiness
      evaluators.
    anchor: >-
      services-accounting:modules/fiscal-close/services/readiness/evaluate-readiness.ts
    seam: state_machine
    on_failure: >-
      A failed evaluator becomes an error or unavailable section rather than a
      successful check.
    left_inconsistent: No successful readiness result is fabricated.
    observer: Close checks and run history show evaluator errors.
    provenance: observed
    source: >-
      services-accounting:modules/fiscal-close/services/persistence/fiscal-periods.ts:lockPeriodForUpdate
  - 'n': 2
    actor_or_service: Reconciliation readiness
    action: >-
      Require a caller transaction and assemble findings, clearing positions and
      accepted concerns for the state day.
    anchor: >-
      services-accounting:modules/reconciliation/services/close-readiness/assess-period.ts:assessReconciliationReadiness
    seam: sync
    on_failure: Propagate evaluation failure to the caller.
    left_inconsistent: No assessment changes source records.
    observer: The caller reports unavailable reconciliation information.
    provenance: observed
    source: >-
      services-accounting:modules/reconciliation/services/close-readiness/assess-period.ts:assessReconciliationReadiness
  - 'n': 3
    actor_or_service: Month-End Close
    action: >-
      Map reconciliation blockers into close checks and retain close-owned
      evidence when closing succeeds.
    anchor: >-
      services-accounting:modules/fiscal-close/services/readiness/payment-reconciliation.ts
    seam: state_machine
    on_failure: Blockers prevent the relevant required checks from passing.
    left_inconsistent: Unfinished reconciliation work remains visible.
    observer: The close controller sees the checks and their findings.
    provenance: observed
    source: >-
      services-accounting:modules/fiscal-close/services/readiness/reconciliation-summary.ts
  - 'n': 4
    actor_or_service: Reconciliation posting commands after close
    action: >-
      Check document-period writability and flag late effects; request creation
      separately uses the selected batch date.
    anchor: >-
      services-accounting:modules/reconciliation/services/close-readiness/assess-period.ts:assertPeriodWritable
    seam: sync
    on_failure: Missing fiscal period or later open period refuses the check.
    left_inconsistent: No new request commits through that failed command.
    observer: The command response and later readiness expose the issue.
    provenance: observed
    source: >-
      services-accounting:modules/reconciliation/services/close-readiness/assess-period.ts:assertPeriodWritable
  - 'n': 5
    actor_or_service: Controller in the console
    action: >-
      Choose year and period, evaluate for today and navigate with the browser’s
      local finding mappings.
    anchor: 'react-console:components/accounting/reconciliation/close-screen.tsx'
    seam: sync
    on_failure: The readiness section shows an error and retry control.
    left_inconsistent: No financial record changes.
    observer: The controller sees the load state.
    provenance: observed
    source: 'react-console:lib/accounting/reconciliation/store.tsx:readReadiness'
branches:
  - An earlier requested state day supports API preview before period end.
waits: []
evidence:
  - >-
    services-accounting at f47cb263:
    modules/reconciliation/services/close-readiness/assess-period.ts;
    services/persistence/readiness-findings.ts, fiscal-period-locks.ts;
    services/rules/readiness.ts;
    modules/fiscal-close/services/readiness/evaluate-readiness.ts,
    payment-reconciliation.ts, reconciliation-summary.ts;
    modules/fiscal-close/services/persistence/fiscal-periods.ts;
    modules/fiscal-close/services/jobs/fiscal-close-jobs.ts;
    docs/reconciliation/architecture.md §15.
  - >-
    react-console at baf6dae3:
    components/accounting/reconciliation/close-screen.tsx.
controls: [TC-IAM-001, TC-IAM-002, TC-IAM-004, TC-IAM-005, TC-IAM-006, TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-AZ-005, TC-AZ-006, TC-TEN-001, TC-TEN-002, TC-TEN-003, TC-DAT-001, TC-DAT-002, TC-DAT-003, TC-LOG-001, TC-LOG-002, TC-LOG-003, TC-LOG-004, TC-LOG-005, TC-PI-001, TC-PI-002, TC-PI-003, TC-PI-005, TC-PRV-001, TC-PRV-002]
---
# Supply reconciliation readiness to month-end close

## What It Does

Close consumes Reconciliation’s assessment instead of duplicating its financial checks. The console uses the same evaluator for a read-only preview.

## The Flow

```mermaid
sequenceDiagram
  participant C as Month-End Close step
  participant D as Accounting database
  participant R as Reconciliation readiness
  participant F as Finalize or reverse
  C->>D: lock the period row for update
  C->>R: assess (same transaction)
  R->>D: read payouts, items, reconciliations, exceptions, clearing balance
  R-->>C: blockers, warnings, clearing, positions, accepted
  alt blockers
    C-->>C: refuse the close
  else none
    C->>D: close the period, keep the snapshot
  end
  F->>D: share-lock period (waits for the close)
  F->>D: request on selected open batch date
```

## When Something Fails

Evaluation errors do not pass close checks. A transaction requirement alone does not establish an unchanged source set through close, and posting locks cover only participating writes. Late-review findings currently lack a complete resolution path.

## Open Design Questions

Close consistency beyond posting locks, late-effect review and faithful console adaptation remain open.
