---
id: JNY-ACC-CLS-004
title: A controller completes the year through its final month
feature: FEAT-ACC-CLS-03
product_area: accounting
module: close
revision: 1
status: draft
product_intent: proposed
implementation_evidence: observed
supersedes:
  - ACT-ACC-0622 (react-console acceptance journey)
  - ACT-ACC-0025 (react-console acceptance journey)
source_sha:
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
actor: ACT-ACC-015
goal: Review the year and complete its final period with future calendars available.
capabilities:
  - CAP-ACC-CLS-008
  - CAP-ACC-CLS-010
  - CAP-ACC-CLS-004
  - CAP-ACC-CLS-001
  - CAP-ACC-CLS-011
screens:
  - '/console/{tenantId}/accounting/close/years/{fiscalYearId}'
  - '/console/{tenantId}/accounting/close/history'
steps:
  - 'n': 1
    surface: closeFiscalPeriod
    action: Complete the first eleven months and attempt one out-of-sequence close.
    capability: CAP-ACC-CLS-008
    expected: Months complete in order and the premature request is refused.
    provenance: documented
    source: >-
      react-console:acceptance/accounting/journeys/reconciliation-close/ACT-ACC-0622.json:steps
  - 'n': 2
    surface: '/console/{tenantId}/accounting/close/years/{fiscalYearId}'
    action: Review the fiscal-year screen.
    capability: CAP-ACC-CLS-004
    expected: >-
      The final month includes year checks and explains the absence of year-end
      ledger entries.
    provenance: documented
    source: >-
      react-console:acceptance/accounting/journeys/reconciliation-close/ACT-ACC-0622.json:steps
  - 'n': 3
    surface: closeFiscalPeriod
    action: Confirm the final period’s close.
    capability: CAP-ACC-CLS-010
    expected: >-
      The year-close run completes and future-year generation attempts to supply
      three eligible years.
    provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/integration/services/jobs/close-job.integration.spec.js#the
      year’s last period
  - 'n': 4
    surface: '/console/{tenantId}/accounting/close/history'
    action: Inspect the calendar after completion.
    capability: CAP-ACC-CLS-001
    expected: >-
      The year is closed with its final-period details and the next unfinished
      period is current.
    provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/integration/services/periods/period-calendar.integration.spec.js#answers
      a closed year with its last period’s close
  - 'n': 5
    surface: reopenFiscalPeriod
    action: Request a reasoned reopen of the final month.
    capability: CAP-ACC-CLS-011
    expected: The period and year return to open.
    provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/integration/services/persistence/fiscal-periods.integration.spec.js#becomes
      open again when one period starts reopening
alternates: []
failures:
  - from_step: 3
    condition: Generation fails after successful finalization.
    path: >-
      The run remains successful while its job records the failed future-year
      step.
    outcome: >-
      A later close can fill the calendar, without a dedicated staff
      notification today.
    provenance: observed
    source: >-
      services-accounting:docs/migrations/fiscal-close/README.md#Decisions and
      departures from the brief
rules_in_play:
  - BR-CAP-ACC-CLS-002-01
  - BR-CAP-ACC-CLS-010-01
  - BR-CAP-ACC-CLS-010-02
  - BR-CAP-ACC-CLS-010-03
  - BR-CAP-ACC-CLS-010-05
  - BR-CAP-ACC-CLS-001-05
assertions:
  - id: AS-JNY-ACC-CLS-004-01
    statement: The year closes when its final remaining period closes.
    provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/integration/services/jobs/close-job.integration.spec.js#closes
      the fiscal year with its twelfth period
  - id: AS-JNY-ACC-CLS-004-02
    statement: Year completion produces no closing or opening ledger entries.
    provenance: documented
    source: 'services-accounting:docs/fiscal-close/README.md#5. Fiscal-year close'
  - id: AS-JNY-ACC-CLS-004-03
    statement: Successful uncapped roll-forward leaves three eligible future years.
    provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/integration/services/jobs/close-job.integration.spec.js#rolls
      the fiscal years forward to three open years after September 2026
e2e_policy: optional
e2e_reason: >-
  Year review spans the final-month screen and execution; service evidence
  covers the available path while browser coverage remains optional.
proved_by: []
---

# A controller completes the year through its final month

## Story

The controller works through the calendar before reviewing the final period with year scope. Completing that period also completes the year and invokes future-year generation. A subsequent correction to the final month opens the year again. A generation failure can leave the close successful while its job has failed, so the product should make that remaining work visible.
