---
id: TST-ACC-CLS-047
title: Period and run transition tables
kind: unit
product_area: accounting
module: close
revision: 1
status: draft
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
repository: services-accounting
files:
  - modules/fiscal-close/tests/unit/rules/transitions.spec.js
implements:
  - ATS-ACC-CLS-003-05
  - ATS-ACC-CLS-012-09
environment: local
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 1
isolation: The suite owns in-memory inputs and declaration fixtures.
binding_policy: >-
  Each binding identifies the assertions this suite executes; combined scenarios
  may require other bound suites. Existence is not a recorded execution result.
evidence:
  - >-
    services-accounting:modules/fiscal-close/tests/unit/rules/transitions.spec.js
  - provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/unit/rules/transitions.spec.js
    assertion_titles:
      - fiscal close transitions
      - a fiscal period
      - may make exactly the six moves of a close and a reopen
      - is allowed each of the six moves
      - →
      - 'is refused every other move between two statuses, by name'
      - →
      - says what the period may become instead
      - is refused a move to the status it already has
      - throws for a status that is not a fiscal period status
      - a close run
      - >-
        may start or be cancelled while queued, finish or be cancelled while
        running, and be retried or cancelled once failed
      - is allowed each of those moves
      - →
      - is refused every move out of a succeeded or cancelled run as finished
      - →
      - →
      - is refused moving a failed run to the queue or to succeeded
      - →
      - is refused finishing a run that never started
      - is refused returning a running run to the queue
      - throws for a status that is not a run status
real_dependencies: >-
  The suite calls pure rules, mappings or declarations with supplied inputs and
  test contexts. No deployed workflow is exercised.
product_intent: proposed
implementation_evidence: observed
---
# Period and run transition tables

## Verification Boundary

The suite exercises pure rules, mappings or declarations with supplied inputs. It checks those functions directly rather than executing a complete close.

## What This Suite Proves

Pure assertions enumerate permitted period and run moves, refuse all other transitions and keep succeeded and cancelled outcomes final.

## What It Does Not Prove

This register records assertion scope without claiming a passing run or complete coverage of every rule and scenario variant.

## Real Dependencies and Test Doubles

The suite calls pure rules, mappings or declarations with supplied inputs and test contexts. No deployed workflow is exercised.

## Must Not Be Doubled

Run the production rule, mapper or declaration being asserted. Supplied inputs are appropriate here; they do not establish database, public API or deployed workflow behavior.
