---
id: ADR-ACC-BAT-003
title: Remove ordinary ledger generations while retaining posting history
product_area: accounting
module: batches
revision: 1
status: proposed
design_intent: confirmed
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
decision: >-
  Ordinary recovery deletes current ledger entries, retires Open plans and
  records posting retirement; fiscal reopening retains original entries and
  appends mirrors.
constrains:
  - DOM-ACC-BAT-003
  - DOM-ACC-BAT-004
  - DOM-ACC-BAT-005
  - WF-ACC-BAT-006
  - WF-ACC-BAT-008
  - STATE-ACC-BAT-004
origin: >-
  Reporting D7 (Andrew, 2026-10-21: "Unposting a batch should delete subledger
  entries; so no such thing as reversals. But if so, keep all mark reversals."),
  recorded at services-accounting:docs/accounting/batches.md#Unposting deletes
  the entries
alternatives:
  - option: Append mirrors on every ordinary recovery.
    why_not: >-
      The reported reposting sequence caused ordinary results to be counted
      repeatedly.
  - option: Remove generation history together with ledger rows.
    why_not: >-
      Recovery still needs to explain who completed and retired accounting and
      when.
consequences:
  - >-
    Ordinary reporting reads current surviving generations, while fiscal
    reversal records remain meaningful.
  - >-
    The guarded deletion function admits only eligible current ordinary
    accounting in the caller workspace; workspace purge is a separate guarded
    path.
  - >-
    Earlier reversal descriptions require qualification against the later
    deletion ruling.
  - >-
    Previously released fiscal recognition is not undone merely by retiring an
    Open source plan.
supersedes: []
evidence:
  - >-
    services-accounting at f47cb263: docs/accounting/batches.md;
    modules/batches/services/engine/unpost-batches.ts;
    services/persistence/subledger-entries.ts:deleteBatchPostingEntries
---

# Remove ordinary ledger generations while retaining posting history

## Context

Reporting exposed duplicate ordinary results after the first rebuild kept original and mirrored entries through reposting. The recorded product ruling changed ordinary recovery to deletion.

## Decision

The decision field restates the existing recorded direction for this design boundary. This examination does not grant a new approval.

## Alternatives Considered

The alternatives above identify the competing implementation choices and their consequences. They preserve the distinction between a recorded product ruling and a proposed engineering boundary.

## Consequences

The consequence rows describe obligations and known implementation limits at this boundary. Related artifact references retain the affected design homes.
