---
id: ADR-ACC-REC-018
title: Refusals Carry Stable Codes and Lifecycle Refusals Are Audited
product_area: accounting
module: reconciliation
revision: 3
status: proposed
design_intent: proposed
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
decision: >-
  Return stable refusal codes and retain guarded lifecycle and acceptance
  refusals when the audited section handles them.
constrains:
  - SVC-ACC-REC-reconciliation
  - WF-ACC-REC-004
  - WF-ACC-REC-005
  - WF-ACC-REC-010
  - SCR-ACC-REC-003
origin: >-
  services-accounting modules/reconciliation/README.md (refusal codes);
  architecture §7.3.10 and §18.3
alternatives:
  - option: Rollback all refusal evidence.
    why_not: Rejected approvals would disappear from financial history.
  - option: Have clients interpret error wording.
    why_not: Routine sentence changes would alter client behavior.
consequences:
  - >-
    Audited guards can commit a refusal event without committing business
    writes.
  - Errors during later accounting request writes may rollback without history.
  - >-
    The console shows service errors; stable route codes remain the programmatic
    contract.
supersedes: []
evidence:
  - >-
    services-accounting at f47cb263:
    modules/reconciliation/services/rules/refusal-codes.ts;
    services/batch-lifecycle/batch-commands.ts; README.md.
---
# Refusals Carry Stable Codes and Lifecycle Refusals Are Audited

## Context

Reviewers need rejected approval evidence and clients need machine-readable failures.

## Decision

Return stable refusal codes and retain guarded lifecycle and acceptance refusals when the audited section handles them.

## Alternatives Considered

Rollback all refusal evidence. Rejected approvals would disappear from financial history.

Have clients interpret error wording. Routine sentence changes would alter client behavior.

## Consequences

Audited guards can commit a refusal event without committing business writes. Errors during later accounting request writes may rollback without history. The console shows service errors; stable route codes remain the programmatic contract.
