---
id: ATS-ACC-CLS-013
scope: CAP-ACC-CLS-013
product_area: accounting
module: close
revision: 2
status: proposed
approved_by: null
approved_at: null
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
scenarios:
  - id: ATS-ACC-CLS-013-01
    title: Read retained execution evidence
    level: api
    proves:
      - BR-CAP-ACC-CLS-013-01
      - BR-CAP-ACC-CLS-013-02
    preconditions: A close has completed.
    steps: Read its run.
    expected: 'The response includes ordered steps and outputs, chronological events and retained readiness.'
    negative: false
    data_needs: A successful close fixture.
    bound_to:
      - >-
        services-accounting:modules/fiscal-close/tests/e2e/fiscal-close-runs.e2e.spec.js#reads the
        run succeeded with its six steps
      - >-
        services-accounting:modules/fiscal-close/tests/e2e/fiscal-close-runs.e2e.spec.js#lists the
        run’s events, oldest first
      - >-
        services-accounting:modules/fiscal-close/tests/e2e/fiscal-close-runs.e2e.spec.js#carries the
        readiness evaluated in the close, and the period as closed
      - >-
        services-accounting:modules/fiscal-close/tests/integration/services/jobs/close-job.integration.spec.js#keeps
        the readiness the close evaluated on the run
      - TST-ACC-CLS-017
      - TST-ACC-CLS-021
    provenance: test
    source: 'services-accounting:modules/fiscal-close/tests/e2e/fiscal-close-runs.e2e.spec.js#the close'
    category: rule
  - id: ATS-ACC-CLS-013-02
    title: Recover the selected run after browser refresh
    level: browser
    proves:
      - BR-CAP-ACC-CLS-013-03
    preconditions: The console submitted a close.
    steps: Reload its run page while execution progresses.
    expected: >-
      The same run and its steps remain visible after refresh, followed by its completed close
      record.
    negative: false
    data_needs: The browser refresh journey fixture.
    bound_to:
      - >-
        react-console:acceptance/accounting/playwright/journeys/reconciliation-close/ACT-ACC-0617.spec.ts#ACT-ACC-0617
      - TST-ACC-CLS-005
    provenance: test
    source: >-
      react-console:acceptance/accounting/playwright/journeys/reconciliation-close/ACT-ACC-0617.spec.ts#ACT-ACC-0617
    category: edge
  - id: ATS-ACC-CLS-013-03
    title: Filter and page the run catalogue
    level: api
    proves:
      - BR-CAP-ACC-CLS-013-04
      - BR-CAP-ACC-CLS-013-05
    preconditions: 'Runs span units, kinds, years and workspaces.'
    steps: 'Request filters and continuation pages, then an invalid kind or oversized page.'
    expected: Filters and ordering remain consistent and invalid requests fail.
    negative: false
    data_needs: A mixed run catalogue.
    bound_to:
      - >-
        services-accounting:modules/fiscal-close/tests/integration/services/persistence/period-close-runs.queries.integration.spec.js#answers
        every run of the tenant, newest first
      - >-
        services-accounting:modules/fiscal-close/tests/integration/services/persistence/period-close-runs.queries.integration.spec.js#filters
        by kind
      - >-
        services-accounting:modules/fiscal-close/tests/integration/services/persistence/period-close-runs.queries.integration.spec.js#filters
        by unit and year
      - >-
        services-accounting:modules/fiscal-close/tests/integration/services/persistence/period-close-runs.queries.integration.spec.js#pages
        by the last id answered
      - >-
        services-accounting:modules/fiscal-close/tests/integration/services/persistence/period-close-runs.queries.integration.spec.js#refuses
        a page size above the maximum
      - >-
        services-accounting:modules/fiscal-close/tests/e2e/fiscal-close-runs.e2e.spec.js#lists the
        tenant’s close runs
      - >-
        services-accounting:modules/fiscal-close/tests/e2e/fiscal-close-runs.e2e.spec.js#refuses an
        unknown kind with 400
      - TST-ACC-CLS-030
      - TST-ACC-CLS-017
    provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/integration/services/persistence/period-close-runs.queries.integration.spec.js#the
      tenant’s runs (FC2-4)
    category: boundary
  - id: ATS-ACC-CLS-013-04
    title: Enforce run-reading boundaries
    level: api
    proves:
      - BR-CAP-ACC-CLS-013-06
      - BR-CAP-ACC-CLS-013-07
    preconditions: A run belongs to another workspace and the route catalogue is available.
    steps: Read absent and foreign runs and inspect required route grants.
    expected: Reads return not found and run routes declare fiscal-period read authority.
    negative: true
    data_needs: A foreign run and permission catalogue.
    bound_to:
      - >-
        services-accounting:modules/fiscal-close/tests/e2e/fiscal-close-runs.e2e.spec.js#answers 404
        for a run the tenant does not have
      - >-
        services-accounting:modules/fiscal-close/tests/e2e/fiscal-close-runs.e2e.spec.js#answers 404
        for the run in another tenant
      - >-
        services-accounting:tests/unit/fiscal-close-permissions.spec.ts#is required by the fiscal
        close routes: close by the close, reopen by the reopen, read by every other
      - TST-ACC-CLS-017
      - TST-ACC-CLS-050
    provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/e2e/fiscal-close-runs.e2e.spec.js#the runs and
      the record
    category: permission
  - id: ATS-ACC-CLS-013-05
    title: Show retry lineage beside retained close evidence
    category: interaction
    level: api
    proves:
      - BR-CAP-ACC-CLS-013-01
      - BR-CAP-ACC-CLS-013-02
    preconditions: A close or reopen has failed after taking its month.
    steps: >-
      Read the run, retry eligible retained work, then inspect its attempts and the original
      successful close record when reopening completes.
    expected: >-
      The execution view reflects the recovery without erasing earlier evidence; a reopen adds
      correction context to the original close.
    negative: false
    data_needs: A close or reopen has failed after taking its month.
    bound_to: []
    provenance: proposed
    source:
      - >-
        rhythm-v2-docs:specs/accounting/close/design/workflows/WF-ACC-CLS-003-retry-an-interrupted-close-or-reopen.md#What
        It Does
      - >-
        services-accounting:modules/fiscal-close/tests/e2e/fiscal-close-runs.e2e.spec.js#lists the
        run’s events, oldest first
      - >-
        services-accounting:modules/fiscal-close/tests/e2e/fiscal-close-runs.e2e.spec.js#carries the
        readiness evaluated in the close, and the period as closed
    exercises:
      - CAP-ACC-CLS-013
      - CAP-ACC-CLS-012
      - CAP-ACC-CLS-014
    workflows: []
  - id: ATS-ACC-CLS-013-06
    title: Inspect execution beyond the job-history limit
    category: boundary
    level: api
    proves:
      - BR-CAP-ACC-CLS-013-09
    preconditions: A run has one hundred and one jobs with distinguishable events and attempts.
    steps: Read its execution view and compare it with the underlying ordered job history.
    expected: >-
      The view reflects only the oldest one hundred jobs, with no continuation; the omitted newest
      attempt must not be mistaken for a verified complete history.
    negative: false
    data_needs: A run has one hundred and one jobs with distinguishable events and attempts.
    bound_to: []
    provenance: proposed
    source: >-
      services-accounting:modules/fiscal-close/services/persistence/fiscal-close-jobs.ts:listFiscalCloseJobsOfRun
  - id: ATS-ACC-CLS-013-07
    title: Resolve display names without hiding unnamed people
    category: failure
    level: unit
    proves:
      - BR-CAP-ACC-CLS-013-08
    preconditions: A run response contains unnamed people and the directory lookup fails.
    steps: Read the response through the console adapter.
    expected: >-
      The adapter returns the response with each person’s identifier preserved rather than failing
      the close view.
    negative: true
    data_needs: A transport response with person references and a refused directory lookup.
    bound_to:
      - TST-ACC-CLS-013
      - >-
        react-console:lib/accounting/close/http-service.test.ts#keeps the ids when the directory
        cannot be read, and answers anyway
    provenance: test
    source: >-
      react-console:lib/accounting/close/http-service.test.ts#keeps the ids when the directory
      cannot be read, and answers anyway
evidence:
  - 'services-accounting examination inputs: the bound integration, unit and end-to-end files.'
  - 'react-console examination inputs: the interrupted-close browser journey.'
  - >-
    Testing back-fill: pinned executable files are inspected; no backend or browser result is
    claimed.
coverage:
  rule: covered
  transition: not-applicable
  validation: 'gap: FND-ACC-CLS-069'
  permission: covered
  edge: covered
  failure: covered
  boundary: covered
  concurrency: 'gap: FND-ACC-CLS-069'
  invariant: 'gap: FND-ACC-CLS-069'
  interaction: covered
coverage_notes:
  rule:
    scenarios:
      - ATS-ACC-CLS-013-01
    provenance: inferred
    source:
      - ATS-ACC-CLS-013-01
    note: Specified coverage does not establish that all variants execute or pass.
  transition:
    reason: >-
      This capability evaluates or reads state; it defines no independent persisted lifecycle
      transition.
    provenance: inferred
    source:
      - CAP-ACC-CLS-013
  validation:
    reason: >-
      Job-history truncation, exact polling timing, history page limits and recovery availability
      during changing execution need complete proof.
    provenance: unknown
    source: FND-ACC-CLS-069
  permission:
    scenarios:
      - ATS-ACC-CLS-013-04
    provenance: inferred
    source:
      - ATS-ACC-CLS-013-04
    note: Specified coverage does not establish that all variants execute or pass.
  edge:
    scenarios:
      - ATS-ACC-CLS-013-02
    provenance: inferred
    source:
      - ATS-ACC-CLS-013-02
    note: Specified coverage does not establish that all variants execute or pass.
  failure:
    scenarios:
      - ATS-ACC-CLS-013-07
    provenance: inferred
    source:
      - ATS-ACC-CLS-013-07
    note: Specified coverage does not establish that all variants execute or pass.
  boundary:
    scenarios:
      - ATS-ACC-CLS-013-03
      - ATS-ACC-CLS-013-06
    provenance: inferred
    source:
      - ATS-ACC-CLS-013-03
      - ATS-ACC-CLS-013-06
    note: Specified coverage does not establish that all variants execute or pass.
  concurrency:
    reason: >-
      Job-history truncation, exact polling timing, history page limits and recovery availability
      during changing execution need complete proof.
    provenance: unknown
    source: FND-ACC-CLS-069
  invariant:
    reason: >-
      Job-history truncation, exact polling timing, history page limits and recovery availability
      during changing execution need complete proof.
    provenance: unknown
    source: FND-ACC-CLS-069
  interaction:
    scenarios:
      - ATS-ACC-CLS-013-05
    provenance: inferred
    source:
      - ATS-ACC-CLS-013-05
    note: Specified coverage does not establish that all variants execute or pass.
design_coverage:
  objects:
    - DOM-ACC-CLS-003
  invariants:
    - id: INV-DOM-ACC-CLS-003-01
      scenarios: []
      gap: FND-ACC-CLS-069
      provenance: unknown
      source: FND-ACC-CLS-069
    - id: INV-DOM-ACC-CLS-003-02
      scenarios: []
      gap: FND-ACC-CLS-069
      provenance: unknown
      source: FND-ACC-CLS-069
    - id: INV-DOM-ACC-CLS-003-03
      scenarios: []
      gap: FND-ACC-CLS-069
      provenance: unknown
      source: FND-ACC-CLS-069
    - id: INV-DOM-ACC-CLS-003-04
      scenarios: []
      gap: FND-ACC-CLS-069
      provenance: unknown
      source: FND-ACC-CLS-069
    - id: INV-DOM-ACC-CLS-003-05
      scenarios: []
      gap: FND-ACC-CLS-069
      provenance: unknown
      source: FND-ACC-CLS-069
    - id: INV-DOM-ACC-CLS-003-06
      scenarios: []
      gap: FND-ACC-CLS-069
      provenance: unknown
      source: FND-ACC-CLS-069
    - id: INV-DOM-ACC-CLS-003-07
      scenarios: []
      gap: FND-ACC-CLS-069
      provenance: unknown
      source: FND-ACC-CLS-069
    - id: INV-DOM-ACC-CLS-003-08
      scenarios: []
      gap: FND-ACC-CLS-069
      provenance: unknown
      source: FND-ACC-CLS-069
    - id: INV-DOM-ACC-CLS-003-09
      scenarios: []
      gap: FND-ACC-CLS-069
      provenance: unknown
      source: FND-ACC-CLS-069
    - id: INV-DOM-ACC-CLS-003-10
      scenarios: []
      gap: FND-ACC-CLS-069
      provenance: unknown
      source: FND-ACC-CLS-069
    - id: INV-DOM-ACC-CLS-003-11
      scenarios: []
      gap: FND-ACC-CLS-069
      provenance: unknown
      source: FND-ACC-CLS-069
  permissions:
    - key: accounting.fiscal-periods.read
      where_checked: api
      gap: FND-ACC-CLS-069
      provenance: unknown
      source: FND-ACC-CLS-069
      note: >-
        Existing permission scenarios cover the named cases; complete grant and surface variants
        need qualification.
  workflows: []
  state_models: []
  transitions: []
  interactions:
    - with: CAP-ACC-CLS-012
      scenario: ATS-ACC-CLS-013-05
      provenance: proposed
      source:
        - >-
          rhythm-v2-docs:specs/accounting/close/design/workflows/WF-ACC-CLS-003-retry-an-interrupted-close-or-reopen.md#What
          It Does
        - >-
          services-accounting:modules/fiscal-close/tests/e2e/fiscal-close-runs.e2e.spec.js#lists the
          run’s events, oldest first
        - >-
          services-accounting:modules/fiscal-close/tests/e2e/fiscal-close-runs.e2e.spec.js#carries
          the readiness evaluated in the close, and the period as closed
    - with: CAP-ACC-CLS-014
      scenario: ATS-ACC-CLS-013-05
      provenance: proposed
      source:
        - >-
          rhythm-v2-docs:specs/accounting/close/design/workflows/WF-ACC-CLS-003-retry-an-interrupted-close-or-reopen.md#What
          It Does
        - >-
          services-accounting:modules/fiscal-close/tests/e2e/fiscal-close-runs.e2e.spec.js#lists the
          run’s events, oldest first
        - >-
          services-accounting:modules/fiscal-close/tests/e2e/fiscal-close-runs.e2e.spec.js#carries
          the readiness evaluated in the close, and the period as closed
---
# Track execution and review close history: Capability Test Specification

## Coverage

Coverage records the cases specified here. Proposed cases and remaining variants need executable proof before qualification.

| Rule | Scenarios or Finding |
|---|---|
| `BR-CAP-ACC-CLS-013-01` | `ATS-ACC-CLS-013-01`, `ATS-ACC-CLS-013-05` |
| `BR-CAP-ACC-CLS-013-02` | `ATS-ACC-CLS-013-01`, `ATS-ACC-CLS-013-05` |
| `BR-CAP-ACC-CLS-013-03` | `ATS-ACC-CLS-013-02` |
| `BR-CAP-ACC-CLS-013-04` | `ATS-ACC-CLS-013-03` |
| `BR-CAP-ACC-CLS-013-05` | `ATS-ACC-CLS-013-03` |
| `BR-CAP-ACC-CLS-013-06` | `ATS-ACC-CLS-013-04` |
| `BR-CAP-ACC-CLS-013-07` | `ATS-ACC-CLS-013-04` |

## Interactions With Related Capabilities

Show retry lineage beside retained close evidence. Read the run, retry eligible retained work, then inspect its attempts and the original successful close record when reopening completes. The execution view reflects the recovery without erasing earlier evidence; a reopen adds correction context to the original close. The interaction scenario names related capabilities and the workflows it exercises in its structured evidence.
