---
id: ADR-ACC-CLS-001
title: Close Controls Period Status on the Shared Calendar
product_area: accounting
module: close
revision: 1
status: proposed
design_intent: proposed
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
decision: >-
  Books retains the fiscal calendar while Month-End Close owns its closing
  fields and changes them through the expected-state period writer.
constrains:
  - DOM-ACC-CLS-001
  - SVC-ACC-CLS-fiscal-close
  - STATE-ACC-CLS-001
  - RESP-ACC
origin: >-
  services-accounting:docs/fiscal-close/PHASE-2-PLAN.md#1 Ownership and
  boundaries; foundation FC2-1 (the only writer of a month's status)
alternatives:
  - option: Store a second period-state record for close.
    why_not: >-
      Posting and year-status derivation would need another record and lock
      relationship to read the same month.
  - option: Ask Books to own close-state operations.
    why_not: >-
      That would place run-dependent closing behavior outside the module
      responsible for its execution and evidence.
consequences:
  - >-
    Ownership divides the shared row by concern: calendar fields belong to Books
    and closing fields to Close.
  - >-
    Posting and late-effect paths read the period table directly rather than
    calling a close endpoint.
  - >-
    Responsibilities must preserve this split when Books receives its own
    design.
supersedes: []
evidence:
  - >-
    services-accounting at f47cb263:
    modules/fiscal-close/services/persistence/fiscal-periods.ts (header);
    db/migrations/0064_fiscal_close_foundation.sql;
    docs/fiscal-close/PHASE-2-PLAN.md §1.
---

# Close Controls Period Status on the Shared Calendar

## Context

The same month supports calendar administration and posting protection. Ownership must distinguish those concerns without storing two conflicting period states.

## Decision

Keep the close’s state, attribution, run backlink and correction count on the shared period row. Use the single transition writer for changes and leave calendar maintenance to Books.

## Alternatives Considered

Store a second period-state record for close. Posting and year-status derivation would need another record and lock relationship to read the same month.

Ask Books to own close-state operations. That would place run-dependent closing behavior outside the module responsible for its execution and evidence.

## Consequences

Ownership divides the shared row by concern: calendar fields belong to Books and closing fields to Close. Posting and late-effect paths read the period table directly rather than calling a close endpoint. Responsibilities must preserve this split when Books receives its own design.
