---
id: TST-ACC-BAT-132
title: Batch rules schedule truncation
kind: unit
product_area: accounting
module: batches
revision: 1
status: draft
product_intent: proposed
implementation_evidence: observed
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
repository: services-accounting
files:
  - modules/batches/tests/unit/rules/schedule-truncation.spec.js
implements:
  - ATS-ACC-BAT-019-04
  - ATS-ACC-BAT-019-06
  - ATS-ACC-BAT-019-07
environment: mock
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 1
isolation: Each case owns its supplied rule inputs and test doubles.
assertion_sources:
  - scenario: ATS-ACC-BAT-019-04
    provenance: test
    source: >-
      services-accounting:modules/batches/tests/unit/rules/schedule-truncation.spec.js#refuses
      a service period of more than 60 months
  - scenario: ATS-ACC-BAT-019-06
    provenance: test
    source: >-
      services-accounting:modules/batches/tests/unit/rules/schedule-truncation.spec.js#by
      period: the memo’s 60.00 falls on the entries after 25 August in their
      proportion, the last taking the rounding, negative for a credit memo
  - scenario: ATS-ACC-BAT-019-07
    provenance: test
    source: >-
      services-accounting:modules/batches/tests/unit/rules/schedule-truncation.spec.js#inverts
      the nine unrecognised months at half each on their own dates and nothing
      for the recognised three
evidence:
  - provenance: observed
    source: >-
      services-accounting:modules/batches/tests/unit/rules/schedule-truncation.spec.js
    note: >-
      The executable file is inspected at the pinned revision; duration is an
      unmeasured planning estimate.
  - provenance: documented
    source: >-
      services-accounting:modules/batches/tests/unit/rules/schedule-truncation.spec.js#suite
      header
    note: >-
      Real: the rules. Doubled: nothing (pure functions over 1.0-shaped
      records).
unbound_scope: null
---

# Batch rules schedule truncation

## Verification Boundary

This suite exercises the named rule functions with controlled inputs. Its boundary ends before persistent accounting and deployed execution.

## What This Suite Proves

The assertions exercise batch rules schedule truncation with controlled case inputs and compare permitted outcomes with their recorded refusals. The assertion anchors identify the supported portions of the bound scenarios.

## What It Does Not Prove

These checks do not prove transport authorization, transactional storage, scheduling delivery or the whole feature workflow.

## Real Dependencies and Test Doubles

The rule inputs and dependency callbacks are controlled by the case. Database, API dispatch and workflow delivery are outside this boundary.

## Must Not Be Doubled

Qualifying transactional integrity requires real storage and accounting execution beyond this rule-only suite.
