---
id: CAP-ACC-CLS-004
title: Assess a month’s readiness to close
feature: FEAT-ACC-CLS-02
product_area: accounting
module: close
revision: 1
status: draft
product_intent: confirmed
implementation_evidence: observed
supersedes:
  - >-
    CAP-ACC-REC-016 (react-console acceptance inventory, the verdict and the
    check framework)
  - >-
    CAP-ACC-REC-023 (react-console acceptance inventory, the Month-End Close
    workspace)
  - RUL-ACC-REC-065
  - RUL-ACC-REC-073
  - RUL-ACC-REC-075
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
intent_sources:
  - >-
    services-accounting:docs/milestones/plans/ACCT-M4-plan.md#4a row 73 (class
    A: Close Readiness checks period ended, batches posted, transactions
    accounted, payments reconciled, revenue recognised, authorised)
purpose: >-
  The checklist gives staff an evidence-based view of the conditions for closing
  a selected month.
outcomes:
  - >-
    Controllers see required work, advisory concerns and planned close effects
    together.
  - Unavailable evidence remains visible instead of appearing successful.
concepts:
  - CON-ACC-CLS-002
actors:
  - ACT-ACC-015
  - ACT-ACC-007
surfaces:
  - console
  - api
preconditions: []
postconditions: []
permissions:
  - key: accounting.fiscal-periods.read
    where_checked: api
    scope: tenant
  - key: accounting.fiscal-periods.close
    where_checked: service
    scope: tenant
rules:
  - id: BR-CAP-ACC-CLS-004-01
    proved_by: []
    statement: >-
      Each readiness check identifies its requirement and outcome, with a
      headline and any supporting figures, records or actions.
    kind: policy
    enforced_at:
      - service
    must_prove: false
    provenance: observed
    source: >-
      services-accounting:modules/fiscal-close/services/readiness/readiness-types.ts:CloseCheck
    origin: >-
      services-accounting:docs/milestones/plans/ACCT-M4-plan.md#4a row 73 (class
      A; plan approved 2026-10-21)
  - id: BR-CAP-ACC-CLS-004-02
    proved_by: [ATS-ACC-CLS-004-01, ATS-ACC-CLS-004-08, ATS-ACC-CLS-006-08, TST-ACC-CLS-010, TST-ACC-CLS-044]
    statement: >-
      A required check that is blocked, pending or in error makes the month not
      ready.
    kind: calculation
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/unit/readiness/readiness-verdict.spec.js#is
      not ready for a required check pending: missing evidence never passes
    origin: >-
      services-accounting:docs/milestones/plans/ACCT-M4-plan.md#4a row 73 (class
      A; plan approved 2026-10-21)
  - id: BR-CAP-ACC-CLS-004-03
    proved_by: [ATS-ACC-CLS-004-01, TST-ACC-CLS-044]
    statement: >-
      Without a required blocker, warnings or unsuccessful advisory checks
      produce ready with warnings; otherwise the verdict is ready.
    kind: calculation
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/unit/readiness/readiness-verdict.spec.js#is
      ready with warnings for an advisory check blocked, which never blocks
    origin: >-
      services-accounting:docs/milestones/plans/ACCT-M4-plan.md#4a row 73 (class
      A; plan approved 2026-10-21)
  - id: BR-CAP-ACC-CLS-004-04
    proved_by: [ATS-ACC-CLS-004-02, TST-ACC-CLS-033, TST-ACC-CLS-042]
    statement: >-
      An evaluator failure produces an error check with its applicable
      requirement, and evaluation continues for other checks.
    kind: policy
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/unit/readiness/other-checks.spec.js#is
      an error, never passed, keeping the requirement the tenant’s policy gives
      it
    origin: none
  - id: BR-CAP-ACC-CLS-004-05
    proved_by: [ATS-ACC-CLS-004-03, TST-ACC-CLS-016, TST-ACC-CLS-037, TST-ACC-CLS-044]
    statement: >-
      Period scope evaluates nine checks in order, and fiscal-year scope appends
      three year checks.
    kind: policy
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/e2e/fiscal-close-readiness.e2e.spec.js#adds
      the year checks for the fiscal_year scope
    origin: none
  - id: BR-CAP-ACC-CLS-004-06
    proved_by: [ATS-ACC-CLS-004-04, TST-ACC-CLS-033]
    statement: >-
      An independent readiness evaluation runs in a read-only transaction shared
      by its checks, without an established guarantee that all reads use one
      unchanged database snapshot.
    kind: invariant
    enforced_at:
      - service
      - database
    must_prove: true
    provenance: observed
    source: >-
      services-accounting:modules/fiscal-close/services/persistence/readiness-transactions.ts:inReadinessTransaction
    origin: none
  - id: BR-CAP-ACC-CLS-004-07
    proved_by: [ATS-ACC-CLS-004-05, TST-ACC-CLS-041, TST-ACC-CLS-046]
    statement: >-
      A check returns no more than fifty supporting items alongside its total
      item count.
    kind: policy
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/unit/readiness/batches-posted.spec.js#keeps
      the first 50 items and the total beside them
    origin: none
  - id: BR-CAP-ACC-CLS-004-08
    proved_by: [ATS-ACC-CLS-004-03, ATS-ACC-CLS-004-08, TST-ACC-CLS-016, TST-ACC-CLS-037, TST-ACC-CLS-044]
    statement: >-
      The effects preview describes period closure, due revenue, the skipped
      cost of goods sold work and the aging request, adding year-end effects for
      the final month.
    kind: calculation
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/unit/readiness/readiness-verdict.spec.js#lists
      a month’s close in order
    origin: none
  - id: BR-CAP-ACC-CLS-004-09
    proved_by: [ATS-ACC-CLS-004-06, TST-ACC-CLS-016, TST-ACC-CLS-042]
    statement: >-
      Viewer authorization is a required readiness check, so a person without
      close permission sees a clean month as not ready.
    kind: permission
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/e2e/fiscal-close-readiness.e2e.spec.js#answers
      a reader not ready, blocked by close_authorization alone
    origin: >-
      services-accounting:docs/milestones/plans/ACCT-M4-plan.md#4a row 73 (class
      A: authorised)
  - id: BR-CAP-ACC-CLS-004-10
    proved_by: [ATS-ACC-CLS-004-07, ATS-ACC-CLS-004-09, TST-ACC-CLS-016]
    statement: >-
      Readiness requests require read permission, a valid period from one to
      twelve, a supported scope and a year in the workspace.
    kind: validation
    enforced_at:
      - api
      - service
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/e2e/fiscal-close-readiness.e2e.spec.js#refuses
      a period number out of range with 400
    origin: none
  - id: BR-CAP-ACC-CLS-004-11
    proved_by: [ATS-ACC-CLS-004-08]
    statement: >-
      A readiness result does not authorize execution; the close performs its
      own evaluation.
    kind: policy
    enforced_at:
      - service
    must_prove: false
    provenance: documented
    source: >-
      services-accounting:docs/fiscal-close/README.md#3. Readiness checks
      (month-end)
    origin: >-
      services-accounting:docs/milestones/plans/ACCT-M4-plan.md#4a row 74 (class
      A; plan approved 2026-10-21)
scenarios:
  - id: SC-CAP-ACC-CLS-004-01
    given: September contains no required blocker.
    when: An authorized closer evaluates readiness.
    then: 'The verdict is ready, with cost of goods sold marked not applicable.'
    provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/integration/services/readiness/evaluate-readiness.integration.spec.js#passes
      every check but cost of goods sold, which is not applicable
  - id: SC-CAP-ACC-CLS-004-02
    given: >-
      The integration fixture contains twenty-three unposted batches and its
      other period and reconciliation blockers.
    when: The controller evaluates the fixture’s readiness.
    then: >-
      The fixture returns six blocking checks and explanations of the
      outstanding work.
    provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/integration/services/readiness/evaluate-readiness.integration.spec.js#is
      not ready, six checks blocking
  - id: SC-CAP-ACC-CLS-004-03
    given: A read-only auditor inspects the same clean period.
    when: Readiness runs with the auditor’s authority.
    then: The missing close grant alone makes the verdict not ready.
    provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/e2e/fiscal-close-readiness.e2e.spec.js#answers
      a reader not ready, blocked by close_authorization alone
edge_cases: []
constraints: []
depends_on:
  - CAP-ACC-CLS-001
related:
  - CAP-ACC-CLS-005
  - CAP-ACC-CLS-006
  - CAP-ACC-CLS-007
  - CAP-ACC-CLS-008
journeys:
  - JNY-ACC-CLS-001
  - JNY-ACC-CLS-002
open_questions:
  - OQ-ACC-CLS-002
evidence:
  - >-
    services-accounting examination inputs:
    modules/fiscal-close/aws/api/fiscal-close.routes.ts
    (getFiscalCloseReadiness), fiscal-close.schemas.ts (readinessRequestSchema),
    services/readiness/evaluate-readiness.ts, registry.ts, readiness-verdict.ts,
    readiness-evaluator.ts, readiness-types.ts, close-effects.ts,
    close-authorization.ts, services/persistence/readiness-transactions.ts;
    tests unit/readiness/*.spec.js,
    integration/services/readiness/evaluate-readiness.integration.spec.js,
    persistence/readiness-transactions.integration.spec.js,
    e2e/fiscal-close-readiness.e2e.spec.js; docs/fiscal-close/README.md §3.
  - >-
    react-console examination inputs:
    app/(console)/console/[tenantId]/accounting/close/page.tsx,
    periods/[fiscalYearId]/[periodNumber]/page.tsx;
    components/accounting/close/close-workspace.tsx, readiness-summary.tsx,
    readiness-checklist.tsx, check-detail-drawer.tsx, details/*.tsx;
    lib/accounting/close/checks.ts.
controls: [TC-IAM-001, TC-IAM-002, TC-IAM-004, TC-IAM-005, 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-LOG-001, TC-LOG-002, TC-LOG-003, TC-LOG-004, TC-LOG-005, TC-PI-001, TC-PI-003, TC-PI-005]
exercised_by: [FAS-ACC-CLS-02-01, FAS-ACC-CLS-02-02, FAS-ACC-CLS-02-03, FAS-ACC-CLS-02-04, FAS-ACC-CLS-02-05]
suites: [TST-ACC-CLS-010, TST-ACC-CLS-016, TST-ACC-CLS-033, TST-ACC-CLS-037, TST-ACC-CLS-041, TST-ACC-CLS-042, TST-ACC-CLS-044, TST-ACC-CLS-046]
---

# Assess a month’s readiness to close

## Purpose

The checklist gives staff an evidence-based view of the conditions for closing a selected month.

## How It Works

The controller opens the selected month and reads the overall verdict. Each check explains its result and supplies relevant supporting information. Required blockers prevent completion; advisory concerns remain review work. The controller can follow the supplied actions to address problems elsewhere in Accounting. Evaluation failures stay visible and do not stop the other checks from running. Independent evaluation does not write to the books. Its shared transaction does not establish a guarantee of one fixed database snapshot. The effects preview helps the controller understand the action before confirming it. Fiscal-year scope adds the year review checks. A reader sees their missing close authority included in the verdict. The product should decide whether that authority belongs beside the verdict instead.

## Relationships

- The calendar identifies the selected month and year.
- Ledger completeness, reconciliation and recognition preview supply the individual checks.
- Close execution records a new evaluation after taking the period.
