Skip to content

CAP-ACC-REC-012Abandon a draft and release its money

Markdown

CAP-ACC-REC-012

Abandon a draft and release its money

Markdown
  • DocumentDraft
  • Product intentConfirmed
  • ImplementationObserved

KindCapabilityProduct areaAccountingModuleReconciliationRevision2

Read atservices-accounting f47cb263react-console baf6dae3

The Formal Contract

The narrative above explains; the sections below are authoritative — the rules, scenarios and tests this document binds.

Outcomes
Abandoned explanations free their payout and matched money.Terminal drafts retain their historical record.
Surfaces
api
Intent sources
services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D10 (§2 scope; journey 0593: voiding the draft releases everything)services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D10 (§4: the architecture §6 invariants hold; INV-14)

Controls

21 controls apply, from the corpus control catalogue.

TC-IAM-001 TC-IAM-002 TC-IAM-004 TC-IAM-005 TC-AZ-001 TC-AZ-002 TC-AZ-003 TC-AZ-004 TC-AZ-006 TC-TEN-001 TC-TEN-002 TC-TEN-003 TC-DAT-001 TC-DAT-004 TC-LOG-002 TC-LOG-003 TC-LOG-004 TC-LOG-005 TC-PI-001 TC-PI-003 TC-PI-005

Permissions

KeyChecked atScope
accounting.reconciliation-batches.deleteapitenant

Business Rules

9 rules, 8 to be proved before approval. A rule's product intent is derived from its origin: 9 confirmed by a product decision, the rest inheriting this capability's confirmed.

IdRuleKindEnforced atProvenance
01must prove
Confirmed
Only an open reconciliation can be voided, with a reason and its current version.
origin: services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D10 (plan approved 2026-10-22 10:40 ET; §2 scope)
validationapi, servicetest
02must prove
Confirmed
Void releases claims and payout links with the reason and withdraws its own manual entries, leaving matched settlement items unresolved and available.
origin: services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D10 (plan approved 2026-10-22 10:40 ET; §2 scope)
lifecycleservice, databasetest
03must prove
Confirmed
Abandoning an open reconciliation generates no ledger request.
origin: services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D10 (plan approved 2026-10-22 10:40 ET; §2 scope)
policyservicetest
04must prove
Confirmed
The released payout can enter another reconciliation or be voided independently.
origin: services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D10 (plan approved 2026-10-22 10:40 ET; §2 scope); journey 0593
lifecycleservicetest
05must prove
Confirmed
The stored lifecycle permits open to finalized or voided and finalized to reversed; reversed and voided are terminal.
origin: services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D1 (reverse and redo, never reopen)
lifecycleservice, databasetest
06must prove
Confirmed
A voided reconciliation is immutable and retains no active holdings.
origin: services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D10 (§4: the architecture §6 invariants hold; INV-08)
invariantdatabasetest
07must prove
Confirmed
The void event records its explanation and released records.
lifecycleservicetest
08must prove
Confirmed
Reconciliation delete permission controls draft abandonment.
permissionapitest
services-accounting:modules/reconciliation/tests/e2e/batch-lifecycle.e2e.spec.js#refuses a principal without accounting.reconciliation-batches.delete with 403
09
Confirmed
The console currently provides no draft-void command.
policyconsoleobserved

Scenarios

IdGivenWhenThenProvenance
01The open draft holds a payout, capture and manual fee.Abandon it with a written reason.Payout and capture are released, the fee is withdrawn and accounting is untouched.test

Edge Cases

IdGivenWhenThenProvenance
02The explanation has already been finalized.Attempt void.Abandonment is refused and correction requires reversal.test

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.