---
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
control_backfill_evidence:
  - finding: FND-ACC-REC-044
    controls: [TC-PI-003]
    provenance: observed
    source: "services-accounting:modules/reconciliation/services/persistence/reconciliation-exceptions.ts:withdrawExceptionAcceptance; modules/reconciliation/services/persistence/reconciliation-dismissals.ts:dismissSettlementItem; rhythm-v2-docs:specs/accounting/reconciliation/FINDINGS.md#FND-ACC-REC-040"
  - finding: FND-ACC-REC-045
    controls: [TC-MON-001, TC-MON-002, TC-PI-004]
    provenance: observed
    source: "rhythm-v2-docs:specs/accounting/reconciliation/FINDINGS.md#FND-ACC-REC-036,FND-ACC-REC-043; services-accounting:modules/reconciliation/aws/lambda/RECONCILIATION_ATTENTION_SWEEP.ts:handler"
---

# Reconciliation Findings and Product Questions

## Findings

| id | severity | statement | affects | evidence | kind |
|---|---|---|---|---|---|
| `FND-ACC-REC-001` | high | The console submits bank verification without the evidence, posted day or result required by the service. Live verification therefore fails, while its client and mock tests accept the incomplete request. The approved policy requires bank evidence before a deposit is verified. | `CAP-ACC-REC-003`, `BR-CAP-ACC-REC-003-01`, `BR-CAP-ACC-REC-003-10`, `JNY-ACC-REC-002`, `AS-JNY-ACC-REC-002-03` | react-console:lib/accounting/reconciliation/client.ts:verifyBank; react-console:lib/accounting/reconciliation/store.tsx:verifyBank; react-console:lib/accounting/reconciliation/client.test.ts; react-console:e2e/mock/accounting-reconciliation.mock.spec.ts; services-accounting:modules/reconciliation/aws/api/payouts.schemas.ts:verifyPayoutBankRequestSchema | defect |
| `FND-ACC-REC-002` | high | Forward-posted ledger requests require a late-after-close review before the next period can close. The review recognizer accepts only a resolved or accepted exception of that specific kind, but no detector creates one and hand-entered exceptions have a different kind. The promised review route is unavailable. | `CAP-ACC-REC-018`, `BR-CAP-ACC-REC-018-06`, `CAP-ACC-REC-011`, `BR-CAP-ACC-REC-011-11`, `CAP-ACC-REC-013`, `OQ-ACC-REC-002` | services-accounting:modules/reconciliation/services/persistence/readiness-findings.ts:late_reviewed; services-accounting:modules/reconciliation/services/close-readiness/assess-period.ts; services-accounting:docs/reconciliation/architecture.md#13.1; react-console:acceptance/accounting/journeys/reconciliation-close/ACT-ACC-0601.json | defect |
| `FND-ACC-REC-003` | medium | Acknowledging a deposit look-alike retains the acknowledgement and audit event without raising the duplicate exception described by the architecture. Close readiness cannot produce its duplicate warning from that acknowledgement, and the duplicate blocker has no automatic raiser. | `CAP-ACC-REC-001`, `BR-CAP-ACC-REC-001-04`, `CAP-ACC-REC-018`, `BR-CAP-ACC-REC-018-08`, `OQ-ACC-REC-003` | services-accounting:modules/reconciliation/services/persistence/payouts.ts; services-accounting:modules/reconciliation/services/persistence/reconciliation-exceptions.ts; services-accounting:docs/reconciliation/architecture.md#13.1 | defect |
| `FND-ACC-REC-004` | medium | The second-person requirement is stored and enforced, but administrators have no supported command or screen for changing it with an audit trail. Settings reads omit the value. The approved waiver policy remains unavailable through the product. | `CAP-ACC-REC-020`, `BR-CAP-ACC-REC-020-10`, `CAP-ACC-REC-011`, `BR-CAP-ACC-REC-011-04`, `JNY-ACC-REC-006` | services-accounting:modules/books/services/persistence/settings.ts:toSettings; services-accounting:modules/books/db/settings.table.ts; services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D3 | inconsistency |
| `FND-ACC-REC-005` | medium | Approval excludes the creator and people who claim, release, add manual items or link payouts. Editing payout money, dismissing candidates, adding notes or attaching evidence does not establish preparer status. No approved decision defines whether those contributors should be excluded. | `CAP-ACC-REC-011`, `BR-CAP-ACC-REC-011-03`, `OQ-ACC-REC-001` | services-accounting:modules/reconciliation/services/rules/segregation.ts; services-accounting:modules/reconciliation/services/persistence/reconciliation-batch-lifecycles.ts; services-accounting:docs/reconciliation/architecture.md#18.2; react-console:acceptance/accounting/journeys/reconciliation-close/ACT-ACC-0599.json | undocumented |
| `FND-ACC-REC-006` | medium | The architecture promises forward posting to the first open date. The service instead uses the batch selected by the default-batch rule and refuses a closed selected date even when another period is open. Staff must supply an operational batch dated in an open period before retrying. | `CAP-ACC-REC-014`, `BR-CAP-ACC-REC-014-01`, `BR-CAP-ACC-REC-011-11`, `BR-CAP-ACC-REC-007-07`, `BR-CAP-ACC-REC-013-05` | services-accounting:modules/reconciliation/services/persistence/reconciliation-ledger-postings.ts:recordPostings; services-accounting:modules/reconciliation/tests/integration/services/batch-lifecycle/finalize-concurrency.integration.spec.js; services-accounting:docs/reconciliation/architecture.md#6. | inconsistency |
| `FND-ACC-REC-007` | medium | Several service actions have no console workflow: payout correction, voiding, evidence attachment and duplicate acknowledgement; draft abandonment; settlement splitting and write-off; and manual exception creation and progress steps. Evidence upload remains unavailable. Overview figures and payout filters are derived locally rather than using their service summaries. | `CAP-ACC-REC-001`, `CAP-ACC-REC-002`, `CAP-ACC-REC-007`, `CAP-ACC-REC-010`, `CAP-ACC-REC-012`, `CAP-ACC-REC-015`, `CAP-ACC-REC-019`, `BR-CAP-ACC-REC-001-12`, `BR-CAP-ACC-REC-007-11`, `BR-CAP-ACC-REC-012-09`, `BR-CAP-ACC-REC-019-07` | react-console:lib/accounting/reconciliation/client.ts; react-console:lib/accounting/reconciliation/store.tsx:addEvidence; react-console:components/accounting/reconciliation/overview.tsx; react-console:components/accounting/reconciliation/workspace/adjustments.tsx | debt |
| `FND-ACC-REC-008` | low | The command for running daily work uses the sensitive exception-acceptance permission instead of a dedicated operational permission. Its request-key cleanup also acts across workspaces, so one authorized customer command can trigger shared cleanup beyond that customer. | `CAP-ACC-REC-017`, `BR-CAP-ACC-REC-017-07`, `BR-CAP-ACC-REC-017-08` | services-accounting:modules/reconciliation/aws/api/outstanding.routes.ts:runReconciliationScheduledWork; services-accounting:modules/reconciliation/tests/integration/services/scheduled/reconciliation-scheduled-work.integration.spec.js | inconsistency |
| `FND-ACC-REC-009` | medium | Milestone and acceptance records lag the implementation. The milestone has not reached engineering verification, automation metadata remains unstarted despite executable specifications, and several journey premises and defect descriptions describe controls or missing schedules that the pinned code has replaced. These records need reconciliation before they support a completion claim. | `MOD-ACC-REC`, `JNY-ACC-REC-001`, `JNY-ACC-REC-004`, `JNY-ACC-REC-005`, `CAP-ACC-REC-017`, `CAP-ACC-REC-019` | services-accounting:docs/milestones/ACCT-M8-payout-reconciliation.md; react-console:acceptance/accounting/journeys/reconciliation-close; react-console:acceptance/accounting/inventory/parts/reconciliation-close.json; react-console:acceptance/accounting/reports/defects/reconciliation-close.md; react-console:acceptance/accounting/playwright/journeys/reconciliation-close/ACT-ACC-0623.spec.ts | inconsistency |
| `FND-ACC-REC-010` | low | The architecture still presents the module as unbuilt and approved decisions as open. The module guide also describes the ledger gap as a warning and reconciliation posting as unavailable, while the code implements a blocker and a posting source. These historical descriptions are unreliable as current behavior evidence. | `MOD-ACC-REC`, `BR-CAP-ACC-REC-018-07`, `BR-CAP-ACC-REC-014-08` | services-accounting:docs/reconciliation/architecture.md; services-accounting:modules/reconciliation/README.md; services-accounting:modules/reconciliation/services/close-readiness/assess-period.ts:LEDGER_POSTS_PAYMENTS_AT_EVENT_TIME; services-accounting:docs/milestones/plans/ACCT-M8-plan.md | inconsistency |
| `FND-ACC-REC-011` | medium | Ledger requests support only currencies with two decimal places. Other merchant currencies can accumulate deposits and settlement items but cannot finalize, reverse or write off through the posting bridge. Product has not recorded how these customers should proceed while minor-unit support is missing. | `CAP-ACC-REC-014`, `BR-CAP-ACC-REC-014-09`, `JNY-ACC-REC-003` | services-accounting:modules/reconciliation/services/persistence/reconciliation-ledger-postings.ts; services-accounting:modules/reconciliation/README.md | debt |
| `FND-ACC-REC-012` | low | Refused accounting commands can leave no audit event because their transaction rolls back all writes. In particular, refusal for a missing operational batch leaves the draft unchanged and records no attempt. The architectural promise to retain refusals exceeds this implementation. | `CAP-ACC-REC-020`, `BR-CAP-ACC-REC-020-05`, `BR-CAP-ACC-REC-011-01` | services-accounting:modules/reconciliation/tests/integration/services/batch-lifecycle/finalize-batch.integration.spec.js; services-accounting:docs/reconciliation/architecture.md#18.3 | undocumented |
| `FND-ACC-REC-013` | low | Some vocabulary anticipates processor imports without implementing them: imported payout origins, processor-line ranking, processor-matched state and additional exception kinds. The approved scope defers imports, so these definitions do not establish an available workflow. | `CAP-ACC-REC-008`, `CAP-ACC-REC-018`, `CON-ACC-REC-004` | services-accounting:modules/reconciliation/db/payouts.table.ts:PAYOUT_ORIGINS; services-accounting:modules/reconciliation/db/reconciliation-exceptions.table.ts:EXCEPTION_KINDS; services-accounting:modules/reconciliation/services/rules/match-ranking.ts; services-accounting:modules/reconciliation/services/rules/payment-states.ts | debt |
| `FND-ACC-REC-014` | low | The architecture describes the unreconciled-payout aging threshold as configurable. The detector fixes the threshold at five business days. There is no setting that implements the promised adjustment. | `CAP-ACC-REC-017`, `BR-CAP-ACC-REC-017-05` | services-accounting:modules/reconciliation/services/exceptions/detectors.ts:UNBALANCED_PAYOUT_BUSINESS_DAYS; services-accounting:docs/reconciliation/architecture.md#13.1 | inconsistency |
| `FND-ACC-REC-015` | low | The seed acceptance catalogue uses identifier shapes that overlap this corpus. Superseded references include their original corpus names to distinguish historical acceptance entries from permanent specification identifiers. Readers must retain that qualification when following a reference. | `MOD-ACC-REC` | react-console:acceptance/accounting/inventory/parts/reconciliation-close.json; react-console:acceptance/accounting/journeys/reconciliation-close | inconsistency |
| `FND-ACC-REC-016` | low | Console saving performs separate commands before finalization. A failure can leave only part of the visible draft saved. An approver who saves changes that establish preparer status becomes ineligible to finalize the reconciliation they were reviewing. | `CAP-ACC-REC-009`, `BR-CAP-ACC-REC-009-11`, `CAP-ACC-REC-011`, `BR-CAP-ACC-REC-011-13` | react-console:lib/accounting/reconciliation/store.tsx:syncDraft; react-console:lib/accounting/reconciliation/store.tsx:finalizeRecon; react-console:lib/accounting/reconciliation/adapter.ts:planSync | defect |
| `FND-ACC-REC-017` | low | The initial registry scope omitted the rendered components, service client, permission declarations, approved plan, design records and mock specifications needed to describe this module. The draft expands that scope. Examination uses the expanded registry and the dependency records it cites. | `MOD-ACC-REC` | specs/PRODUCT-AREAS.md | inconsistency |
| `FND-ACC-REC-018` | low | Several limits and defaults are observed implementation choices without a specific product decision: matching windows, grace days, seeded settlement lead times, numbering, collection limits and reason lengths. Their capability-level intent does not independently approve each numerical choice. Design should confirm which values belong to policy and which remain operational defaults. | `BR-CAP-ACC-REC-008-07`, `BR-CAP-ACC-REC-006-03`, `BR-CAP-ACC-REC-005-11`, `BR-CAP-ACC-REC-009-01`, `BR-CAP-ACC-REC-009-09`, `BR-CAP-ACC-REC-010-08`, `BR-CAP-ACC-REC-002-08`, `BR-CAP-ACC-REC-015-05` | services-accounting:docs/reconciliation/architecture.md#6.; services-accounting:modules/reconciliation/db/settlement-lead-times.table.ts; services-accounting:modules/reconciliation/aws/api/payouts.schemas.ts; services-accounting:modules/reconciliation/aws/api/batches.schemas.ts; services-accounting:modules/reconciliation/aws/api/outstanding.schemas.ts | undocumented |
| `FND-ACC-REC-019` | medium | The original unbound proof gaps remain: the incomplete console verification request, the accounting day of a manual item and an audited change to the second-person requirement. Source inspection corrects their descriptions but does not create executable proof. Additional gaps discovered during examination are recorded separately. | `BR-CAP-ACC-REC-003-10`, `BR-CAP-ACC-REC-010-05`, `BR-CAP-ACC-REC-020-10` | services-accounting:modules/reconciliation/README.md; specs/accounting/reconciliation/planning/acceptance-test-sets/ | debt |
| `FND-ACC-REC-020` | low | Blocker attention links to the overall reconciliation overview rather than opening the affected exception. Its explanation assumes that a detail screen is unavailable, although the console now has an exception detail view. The attention destination and its rationale need updating. | `CAP-ACC-REC-015`, `BR-CAP-ACC-REC-015-08` | services-accounting:modules/reconciliation/attention/reconciliation-blockers.attention.ts; react-console:components/accounting/reconciliation/exceptions-screen.tsx | inconsistency |
| `FND-ACC-REC-021` | medium | Several acceptance bindings prove only part of their stated scenario: the mock payout test checks creation and navigation rather than reload persistence, the finalize mock sends commands without proving segregation, and the mock acceptance test checks the request without asserting accepted state. Mixed unit and database bindings also overstate a unit level. Corrected scenarios describe the available evidence; live browser proof remains open. | `ATS-ACC-REC-001`, `ATS-ACC-REC-011`, `ATS-ACC-REC-016`, `JNY-ACC-REC-002` | react-console:e2e/mock/accounting-reconciliation.mock.spec.ts; react-console:acceptance/accounting/playwright/journeys/reconciliation-close/ACT-ACC-0623.spec.ts | debt |
| `FND-ACC-REC-022` | high | The unbalanced-payout sweep reads the oldest five hundred eligible payouts in a 120-day lookback without excluding payouts whose problem is already open or advancing a cursor. Repeating a pass can revisit the same payouts and miss later ones; a payout outside the lookback is never examined. The open-problem clearing scans are also capped without continuation. This limits the promise that daily work catches every problem. | `CAP-ACC-REC-017`, `BR-CAP-ACC-REC-017-12` | services-accounting:modules/reconciliation/services/persistence/unreconciled-payouts.ts:listUnreconciledPayoutsBefore; services-accounting:modules/reconciliation/services/scheduled/overdue-sweep.ts:sweepOverdueSettlement | defect |
| `FND-ACC-REC-023` | medium | The exception transition rules permit a detector to reopen an accepted exception, but the raising service returns no change for an accepted condition. The concept now describes the detector behavior; Product must decide whether acceptance persists indefinitely or is reconsidered when the condition returns. | `CON-ACC-REC-004`, `CAP-ACC-REC-015` | services-accounting:modules/reconciliation/services/rules/transitions.ts:EXCEPTION_TRANSITIONS; services-accounting:modules/reconciliation/services/persistence/reconciliation-exceptions.ts:raiseException | inconsistency |
| `FND-ACC-REC-024` | medium | Reconciliation export keeps evidence asset references without the service asset addresses needed to copy the documents. Package completeness is unproved, and the new export scenario remains proposed. Recording also has an uncovered refusal for unavailable settlement timing or reserved manual keys. | `CAP-ACC-REC-020`, `BR-CAP-ACC-REC-020-13`, `BR-CAP-ACC-REC-005-13` | services-accounting:modules/reconciliation/export/reconciliation.dataset.ts; services-accounting:modules/reconciliation/services/settlement-items/settlement-item-recording.ts | debt |
| `FND-ACC-REC-025` | low | The exception detail view enables Add Note whenever text is present, without checking the update permission. A read-only person can attempt the command, which the API refuses. The screen therefore does not consistently apply its promised permission hints. | `CAP-ACC-REC-020`, `BR-CAP-ACC-REC-020-11` | react-console:components/accounting/reconciliation/exceptions-screen.tsx:ExceptionDetail; services-accounting:modules/reconciliation/aws/api/outstanding.routes.ts:addReconciliationExceptionNote | defect |
| `FND-ACC-REC-026` | medium | The bank-verification journey assumes that supplying a bank amount fails validation. The pinned service accepts it and advances the payout version; the next command reuses the old version and is refused. Its successful journey binding is withdrawn until the test follows the current contract. | `ATS-ACC-REC-003`, `JNY-ACC-REC-002` | react-console:acceptance/accounting/playwright/journeys/reconciliation-close/ACT-ACC-0594.spec.ts; services-accounting:modules/reconciliation/aws/api/payouts.schemas.ts; services-accounting:modules/reconciliation/services/persistence/payouts.ts | inconsistency |
| `FND-ACC-REC-027` | low | The module asks no model a question, so its design has no inference directory. The convention requires the module charter to say so in one sentence, and the design job may not edit the approved charter. The charter needs that sentence at its next revision. | `MOD-ACC-REC`, `SVC-ACC-REC-reconciliation` | services-accounting:modules/reconciliation (no Platform LLM task or provider call); react-console:components/accounting/reconciliation; react-console:lib/accounting/reconciliation | undocumented |
| `FND-ACC-REC-028` | medium | A workspace's three daily schedules are created only by the hourly blocker-attention pass, which visits every active workspace before sweeping its blockers. If that pass fails for a workspace or is switched off, the overdue sweep, drift check and request-key purge never start there, and nothing reports their absence. Daily detection depends on an unrelated job succeeding. A schedule that pauses itself after five consecutive failures is also left paused, because the pass never changes a disabled schedule and these workspace-wide schedules have no owning record whose save would clear the pause. | `WF-ACC-REC-008`, `WF-ACC-REC-009`, `ADR-ACC-REC-017`, `CAP-ACC-REC-017`, `BR-CAP-ACC-REC-017-01` | services-accounting:modules/reconciliation/aws/lambda/RECONCILIATION_ATTENTION_SWEEP.ts:handler; services-accounting:modules/reconciliation/services/scheduled/reconciliation-schedules.ts:ensureReconciliationSchedules; services-accounting:docs/accounting/schedules.md#The dispatcher and the consumer | debt |
| `FND-ACC-REC-029` | medium | The request-key ledger and the money arithmetic helpers live in reconciliation's code, but Transactions, Billing and Month-End Close use them for their own commands. The realignment inventory classes the ledger as shared Accounting infrastructure. Reconciliation is recorded as its host here, not as the owner of other modules' keys, until the ledger moves to a shared home. | `SVC-ACC-REC-reconciliation`, `RESP-ACC`, `ADR-ACC-REC-012` | services-accounting:modules/reconciliation/services/persistence/idempotency-keys.ts; services-accounting:modules/transactions/services/payments/payment-commands.ts; services-accounting:modules/fiscal-close/services/persistence/unposted-batches.ts; services-accounting:docs/architecture/realignment-2026-10-22/inventory.md | inconsistency |
| `FND-ACC-REC-030` | medium | The console creates a new request key for every command it sends, including a repeat after a lost answer. The service therefore treats a retried finalize, void, verification or manual entry as a new request, refusing it or applying it again instead of replaying the first answer. Request keys protect only the transport's own retries. | `SCR-ACC-REC-003`, `SCR-ACC-REC-006`, `WF-ACC-REC-003`, `WF-ACC-REC-004`, `ADR-ACC-REC-012`, `BR-CAP-ACC-REC-020-04` | react-console:lib/accounting/reconciliation/client.ts:newKey; react-console:lib/accounting/reconciliation/client.ts:command | defect |
| `FND-ACC-REC-031` | medium | The console reads the selected unit's payouts, settlement items and exceptions in full, and up to the newest hundred reconciliations in detail, then derives every list, tile and status in the browser. Older reconciliations are absent from that state, and the cost grows with the unit's history. The service's paged lists, summaries and overview are the intended sources. | `SCR-ACC-REC-001`, `SCR-ACC-REC-002`, `SCR-ACC-REC-004`, `SCR-ACC-REC-005`, `SCR-ACC-REC-006`, `FND-ACC-REC-007` | react-console:lib/accounting/reconciliation/load.ts:MAX_BATCH_DETAILS; react-console:lib/accounting/reconciliation/store.tsx; react-console:lib/accounting/reconciliation/adapter.ts:buildState | debt |
| `FND-ACC-REC-032` | low | The Platform standards this design cites (persistence, indexing, queued work, jobs, record history, row-level security and submission-compatible operations) were not readable from the design job. Conformance is stated from the Accounting code's own citations of them. The verification pass should read the standards at the snapshot commit. | `SVC-ACC-REC-reconciliation`, `RESP-ACC`, `ADR-ACC-REC-011`, `ADR-ACC-REC-014` | services-accounting:modules/reconciliation/services/persistence/payouts.ts (cites services-platform docs/persistence.md and docs/indexing.md); specs/SNAPSHOT.md | undocumented |
| `FND-ACC-REC-033` | low | Reconciliation produces no change events: Month-End Close and Batch Management learn of a finalization, reversal or write-off only by reading reconciliation tables in their own transactions. The architecture names finalization and reversal as the first change-event candidates once Accounting adopts the shared package. No other reaction is designed today. | `SVC-ACC-REC-reconciliation`, `ADR-ACC-REC-011`, `WF-ACC-REC-007`, `WF-ACC-REC-011` | services-accounting:docs/reconciliation/architecture.md#18.3 Audit; services-accounting:docs/architecture/standard-adoption.md (async.events baseline) | undocumented |
| `FND-ACC-REC-034` | low | Several commands take no request key and rely on the version alone: claim, release, authoritative acceptance, manual-entry removal, notes, dismissal, draft void, exception update, notes, steps and resolution, manual exceptions and evidence attachment. A retry after a lost answer is refused as stale, or for a note or manual exception applied twice, rather than replayed. | `SVC-ACC-REC-reconciliation`, `ADR-ACC-REC-012`, `WF-ACC-REC-003`, `BR-CAP-ACC-REC-020-04` | services-accounting:modules/reconciliation/aws/api/matching.routes.ts; services-accounting:modules/reconciliation/aws/api/outstanding.routes.ts; services-accounting:modules/reconciliation/services/batch-lifecycle/void-batch.ts | undocumented |
| `FND-ACC-REC-035` | low | Payout and exception numbers come from module-local numbering rather than Platform number allocation, which the architecture expected. Payout and exception creation uses the current maximum plus one, with a unique constraint and up to five savepoint attempts after a collision. Reconciliation numbering uses its own allocation path; shared numbering remains a separate adoption decision. | `DOM-ACC-REC-001`, `DOM-ACC-REC-003`, `DOM-ACC-REC-004`, `BR-CAP-ACC-REC-001-07` | services-accounting:modules/reconciliation/services/persistence/payout-numbers.ts; services-accounting:modules/reconciliation/services/persistence/reconciliation-exceptions.ts (platform.number_seeds is not adopted yet) | debt |
| `FND-ACC-REC-036` | high | Attention publishing is a deployment switch that is off unless enabled, and the pinned deployment configuration enables it in development only. In production no blocker attention reaches the reconciliation responsibility, although the approved rules promise it. Whether the hourly pass still creates the daily schedules while publishing is off depends on the shared sweep handler, which this job could not read; if it does not, production also has no daily detection. | `WF-ACC-REC-009`, `WF-ACC-REC-008`, `ADR-ACC-REC-017`, `CAP-ACC-REC-015`, `BR-CAP-ACC-REC-015-08`, `CAP-ACC-REC-017`, `BR-CAP-ACC-REC-017-01` | services-accounting:aws/cdk.json (accounting:attentionPublishing dev true, prod false); services-accounting:aws/accounting.names.ts:attentionPublishingEnabled; services-accounting:lib/attention.ts:attentionPublishingEnabled; services-accounting:modules/reconciliation/aws/lambda/RECONCILIATION_ATTENTION_SWEEP.ts:handler | inconsistency |
| `FND-ACC-REC-037` | high | The console formats all money as US dollars and parses two-decimal cents, losing currency information in the adapter. This contradicts the draft’s currency-aware display claim and misrepresents non-dollar and non-two-decimal accounts. | `SCR-ACC-REC-002`, `SCR-ACC-REC-003`, `ADR-ACC-REC-019` | react-console:lib/accounting/reconciliation/format.ts:money; react-console:lib/accounting/reconciliation/adapter.ts:toPayout | defect |
| `FND-ACC-REC-038` | high | Readiness requires a transaction but does not freeze its assessed records. The fiscal-period lock coordinates posting commands; ordinary payout creation, draft preparation and exception changes do not all take that lock. A claim that all readiness facts remain unchanged through close is unsupported. | `DOM-ACC-REC-005`, `WF-ACC-REC-011`, `ADR-ACC-REC-009` | services-accounting:modules/reconciliation/services/close-readiness/assess-period.ts:assessReconciliationReadiness; services-accounting:modules/reconciliation/services/persistence/payouts.ts:createPayout; services-accounting:modules/reconciliation/services/persistence/reconciliation-exceptions.ts:updateException | inconsistency |
| `FND-ACC-REC-039` | medium | Close Readiness drops service navigation metadata and derives links locally. Its adapter expects aggregate clearing and account-label fields the service does not return, discards payment-state availability and currency, and reads an exception identity under a different field name. The screen contract must describe these losses rather than promise faithful presentation. | `SCR-ACC-REC-007`, `WF-ACC-REC-011` | react-console:lib/accounting/reconciliation/adapter.ts:toReadiness; react-console:components/accounting/reconciliation/close-screen.tsx:goToHref; services-accounting:modules/reconciliation/services/close-readiness/assess-period.ts:ReadinessAssessment | defect |
| `FND-ACC-REC-040` | medium | Acceptance withdrawal, evidence attachment and note addition do not require expected versions, and dismissals do not advance the reconciliation version. The draft’s universal version protection and save-sequence descriptions were stronger than the implemented contracts. | `STATE-ACC-REC-005`, `WF-ACC-REC-003`, `WF-ACC-REC-010`, `ADR-ACC-REC-020` | services-accounting:modules/reconciliation/services/persistence/reconciliation-exceptions.ts:withdrawExceptionAcceptance; services-accounting:modules/reconciliation/services/persistence/reconciliation-dismissals.ts:dismissSettlementItem | undocumented |
| `FND-ACC-REC-041` | medium | Finalization recomputes and can replace maintained counters, although the architecture says recalculation never rewrites totals. Database triggers protect external references but do not make eligibility dates set-once. Design now identifies service enforcement and the finalization correction; planning statements are left for their owner to reconcile. | `DOM-ACC-REC-002`, `DOM-ACC-REC-003` | services-accounting:modules/reconciliation/services/batch-lifecycle/finalize-batch.ts:recordFinalization; services-accounting:db/migrations/0063_reconciliation_records.sql:settlement_items_set_once_trigger | inconsistency |
| `FND-ACC-REC-042` | medium | The workspace does not call source-batch or activity-history operations. It groups loaded items into operational batches and constructs creation and finalization history in the browser. Completed reversal details are also omitted by the adapter, so the draft overstated retained history visible on screen. | `SCR-ACC-REC-003` | react-console:lib/accounting/reconciliation/adapter.ts:toReconBatch; react-console:lib/accounting/reconciliation/adapter.ts:operationalBatches; react-console:lib/accounting/reconciliation/client.ts | inconsistency |
| `FND-ACC-REC-043` | low | Independent confirmation of Platform standards and shared attention sweep behavior remains unavailable in the supplied repository scope. In particular, the wrapper may skip schedule bootstrap when attention publishing is disabled; the local handler alone cannot establish production schedule creation. No design claim is promoted from these citations to verified Platform compliance. | `SVC-ACC-REC-reconciliation`, `WF-ACC-REC-008`, `WF-ACC-REC-009`, `FND-ACC-REC-032`, `FND-ACC-REC-036` | services-accounting:modules/reconciliation/aws/lambda/RECONCILIATION_ATTENTION_SWEEP.ts:createAttentionSweepHandler; services-accounting:lib/attention.ts; specs/SNAPSHOT.md | undocumented |
| `FND-ACC-REC-044` | medium | Acceptance withdrawal and draft dismissal omit expected-version checks, and dismissal does not advance the draft version. These supplemental writes can change work read by another editor without the version conflict required to expose concurrent changes. | `TC-PI-003`, `CAP-ACC-REC-009`, `CAP-ACC-REC-016`, `WF-ACC-REC-003`, `WF-ACC-REC-010`, `SVC-ACC-REC-reconciliation` | Structured control evidence | control-gap |
| `FND-ACC-REC-045` | medium | The production attention switch disables local reconciliation attention delivery, and the examined handler alone does not establish daily schedule bootstrap when that switch is off. Production detection and addressed notification therefore lack established coverage in the pinned area evidence. | `TC-MON-001`, `TC-MON-002`, `TC-PI-004`, `CAP-ACC-REC-015`, `CAP-ACC-REC-017`, `WF-ACC-REC-008`, `WF-ACC-REC-009`, `SVC-ACC-REC-reconciliation` | Structured control evidence | control-gap |

| `FND-ACC-REC-046` | medium | No scenario is assigned to transition coverage. The category map does not establish exhaustive traceability for every relevant domain invariant, state-model transition and declared permission key; the existing cases and new seam cases need that mapping before complete design coverage is claimed. | `CAP-ACC-REC-001`, `ATS-ACC-REC-001` | specs/accounting/reconciliation/design/tests/ATS-ACC-REC-001-record-a-processor-deposit-exactly-once.md; specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-001-record-a-processor-deposit-exactly-once.md; specs/accounting/reconciliation/design/objects; specs/accounting/reconciliation/design/state-models | coverage-gap |
| `FND-ACC-REC-047` | medium | No scenario is assigned to edge, failure, concurrency coverage. The category map does not establish exhaustive traceability for every relevant domain invariant, state-model transition and declared permission key; the existing cases and new seam cases need that mapping before complete design coverage is claimed. | `CAP-ACC-REC-002`, `ATS-ACC-REC-002` | specs/accounting/reconciliation/design/tests/ATS-ACC-REC-002-correct-document-or-void-a-deposit-until-it-is-reconciled.md; specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-002-correct-document-or-void-a-deposit-until-it-is-reconciled.md; specs/accounting/reconciliation/design/objects; specs/accounting/reconciliation/design/state-models | coverage-gap |
| `FND-ACC-REC-048` | medium | No scenario is assigned to validation, edge, boundary, concurrency coverage. The category map does not establish exhaustive traceability for every relevant domain invariant, state-model transition and declared permission key; the existing cases and new seam cases need that mapping before complete design coverage is claimed. | `CAP-ACC-REC-003`, `ATS-ACC-REC-003` | specs/accounting/reconciliation/design/tests/ATS-ACC-REC-003-prove-a-deposit-against-the-banks-own-record.md; specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-003-prove-a-deposit-against-the-banks-own-record.md; specs/accounting/reconciliation/design/objects; specs/accounting/reconciliation/design/state-models | coverage-gap |
| `FND-ACC-REC-049` | medium | No scenario is assigned to validation, edge, failure, concurrency, invariant coverage. The category map does not establish exhaustive traceability for every relevant domain invariant, state-model transition and declared permission key; the existing cases and new seam cases need that mapping before complete design coverage is claimed. | `CAP-ACC-REC-004`, `ATS-ACC-REC-004` | specs/accounting/reconciliation/design/tests/ATS-ACC-REC-004-find-deposits-and-see-where-each-one-stands.md; specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-004-find-deposits-and-see-where-each-one-stands.md; specs/accounting/reconciliation/design/objects; specs/accounting/reconciliation/design/state-models | coverage-gap |
| `FND-ACC-REC-050` | medium | No scenario is assigned to edge, concurrency coverage. The category map does not establish exhaustive traceability for every relevant domain invariant, state-model transition and declared permission key; the existing cases and new seam cases need that mapping before complete design coverage is claimed. | `CAP-ACC-REC-005`, `ATS-ACC-REC-005` | specs/accounting/reconciliation/design/tests/ATS-ACC-REC-005-capture-every-money-movement-a-processor-should-pay-out-with.md; specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-005-capture-every-money-movement-a-processor-should-pay-out-with.md; specs/accounting/reconciliation/design/objects; specs/accounting/reconciliation/design/state-models | coverage-gap |
| `FND-ACC-REC-051` | medium | No scenario is assigned to failure, concurrency coverage. The category map does not establish exhaustive traceability for every relevant domain invariant, state-model transition and declared permission key; the existing cases and new seam cases need that mapping before complete design coverage is claimed. | `CAP-ACC-REC-006`, `ATS-ACC-REC-006` | specs/accounting/reconciliation/design/tests/ATS-ACC-REC-006-see-what-money-is-in-transit-late-or-missing.md; specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-006-see-what-money-is-in-transit-late-or-missing.md; specs/accounting/reconciliation/design/objects; specs/accounting/reconciliation/design/state-models | coverage-gap |
| `FND-ACC-REC-052` | medium | No scenario is assigned to transition, edge, boundary, concurrency, invariant coverage. The category map does not establish exhaustive traceability for every relevant domain invariant, state-model transition and declared permission key; the existing cases and new seam cases need that mapping before complete design coverage is claimed. | `CAP-ACC-REC-007`, `ATS-ACC-REC-007` | specs/accounting/reconciliation/design/tests/ATS-ACC-REC-007-split-or-write-off-money-that-will-never-arrive-as-recorded.md; specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-007-split-or-write-off-money-that-will-never-arrive-as-recorded.md; specs/accounting/reconciliation/design/objects; specs/accounting/reconciliation/design/state-models | coverage-gap |
| `FND-ACC-REC-053` | medium | No scenario is assigned to failure, invariant coverage. The category map does not establish exhaustive traceability for every relevant domain invariant, state-model transition and declared permission key; the existing cases and new seam cases need that mapping before complete design coverage is claimed. | `CAP-ACC-REC-008`, `ATS-ACC-REC-008` | specs/accounting/reconciliation/design/tests/ATS-ACC-REC-008-open-a-reconciliation-over-a-deposit-and-see-what-explains.md; specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-008-open-a-reconciliation-over-a-deposit-and-see-what-explains.md; specs/accounting/reconciliation/design/objects; specs/accounting/reconciliation/design/state-models | coverage-gap |
| `FND-ACC-REC-054` | medium | No scenario is assigned to failure, invariant coverage. The category map does not establish exhaustive traceability for every relevant domain invariant, state-model transition and declared permission key; the existing cases and new seam cases need that mapping before complete design coverage is claimed. | `CAP-ACC-REC-009`, `ATS-ACC-REC-009` | specs/accounting/reconciliation/design/tests/ATS-ACC-REC-009-claim-what-a-deposit-paid-out-without-two-people-claiming.md; specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-009-claim-what-a-deposit-paid-out-without-two-people-claiming.md; specs/accounting/reconciliation/design/objects; specs/accounting/reconciliation/design/state-models | coverage-gap |
| `FND-ACC-REC-055` | medium | No scenario is assigned to failure, concurrency, invariant coverage. The category map does not establish exhaustive traceability for every relevant domain invariant, state-model transition and declared permission key; the existing cases and new seam cases need that mapping before complete design coverage is claimed. | `CAP-ACC-REC-010`, `ATS-ACC-REC-010` | specs/accounting/reconciliation/design/tests/ATS-ACC-REC-010-enter-the-fees-reserves-and-corrections-the-processor-took.md; specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-010-enter-the-fees-reserves-and-corrections-the-processor-took.md; specs/accounting/reconciliation/design/objects; specs/accounting/reconciliation/design/state-models | coverage-gap |
| `FND-ACC-REC-056` | medium | No scenario is assigned to edge, boundary coverage. The category map does not establish exhaustive traceability for every relevant domain invariant, state-model transition and declared permission key; the existing cases and new seam cases need that mapping before complete design coverage is claimed. | `CAP-ACC-REC-011`, `ATS-ACC-REC-011` | specs/accounting/reconciliation/design/tests/ATS-ACC-REC-011-approve-a-balanced-reconciliation-and-move-the-deposit-to.md; specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-011-approve-a-balanced-reconciliation-and-move-the-deposit-to.md; specs/accounting/reconciliation/design/objects; specs/accounting/reconciliation/design/state-models | coverage-gap |
| `FND-ACC-REC-057` | medium | No scenario is assigned to rule, edge, failure, boundary, concurrency coverage. The category map does not establish exhaustive traceability for every relevant domain invariant, state-model transition and declared permission key; the existing cases and new seam cases need that mapping before complete design coverage is claimed. | `CAP-ACC-REC-012`, `ATS-ACC-REC-012` | specs/accounting/reconciliation/design/tests/ATS-ACC-REC-012-abandon-a-draft-reconciliation-and-free-what-it-held.md; specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-012-abandon-a-draft-reconciliation-and-free-what-it-held.md; specs/accounting/reconciliation/design/objects; specs/accounting/reconciliation/design/state-models | coverage-gap |
| `FND-ACC-REC-058` | medium | No scenario is assigned to rule, edge, boundary, concurrency, invariant coverage. The category map does not establish exhaustive traceability for every relevant domain invariant, state-model transition and declared permission key; the existing cases and new seam cases need that mapping before complete design coverage is claimed. | `CAP-ACC-REC-013`, `ATS-ACC-REC-013` | specs/accounting/reconciliation/design/tests/ATS-ACC-REC-013-correct-a-finalized-reconciliation-by-reversing-it-and.md; specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-013-correct-a-finalized-reconciliation-by-reversing-it-and.md; specs/accounting/reconciliation/design/objects; specs/accounting/reconciliation/design/state-models | coverage-gap |
| `FND-ACC-REC-059` | medium | No scenario is assigned to edge, concurrency coverage. The category map does not establish exhaustive traceability for every relevant domain invariant, state-model transition and declared permission key; the existing cases and new seam cases need that mapping before complete design coverage is claimed. | `CAP-ACC-REC-014`, `ATS-ACC-REC-014` | specs/accounting/reconciliation/design/tests/ATS-ACC-REC-014-hand-reconciliations-accounting-to-the-ledger-through-the.md; specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-014-hand-reconciliations-accounting-to-the-ledger-through-the.md; specs/accounting/reconciliation/design/objects; specs/accounting/reconciliation/design/state-models | coverage-gap |
| `FND-ACC-REC-060` | medium | No scenario is assigned to edge, failure coverage. The category map does not establish exhaustive traceability for every relevant domain invariant, state-model transition and declared permission key; the existing cases and new seam cases need that mapping before complete design coverage is claimed. | `CAP-ACC-REC-015`, `ATS-ACC-REC-015` | specs/accounting/reconciliation/design/tests/ATS-ACC-REC-015-raise-work-and-resolve-reconciliation-problems.md; specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-015-raise-work-and-resolve-reconciliation-problems.md; specs/accounting/reconciliation/design/objects; specs/accounting/reconciliation/design/state-models | coverage-gap |
| `FND-ACC-REC-061` | medium | No scenario is assigned to edge, failure, boundary, concurrency coverage. The category map does not establish exhaustive traceability for every relevant domain invariant, state-model transition and declared permission key; the existing cases and new seam cases need that mapping before complete design coverage is claimed. | `CAP-ACC-REC-016`, `ATS-ACC-REC-016` | specs/accounting/reconciliation/design/tests/ATS-ACC-REC-016-accept-a-problem-under-policy-with-a-second-persons-approval.md; specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-016-accept-a-problem-under-policy-with-a-second-persons-approval.md; specs/accounting/reconciliation/design/objects; specs/accounting/reconciliation/design/state-models | coverage-gap |
| `FND-ACC-REC-062` | medium | No scenario is assigned to validation, edge, failure, concurrency coverage. The category map does not establish exhaustive traceability for every relevant domain invariant, state-model transition and declared permission key; the existing cases and new seam cases need that mapping before complete design coverage is claimed. | `CAP-ACC-REC-017`, `ATS-ACC-REC-017` | specs/accounting/reconciliation/design/tests/ATS-ACC-REC-017-catch-overdue-money-stale-deposits-and-drifting-totals-every.md; specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-017-catch-overdue-money-stale-deposits-and-drifting-totals-every.md; specs/accounting/reconciliation/design/objects; specs/accounting/reconciliation/design/state-models | coverage-gap |
| `FND-ACC-REC-063` | medium | No scenario is assigned to validation, concurrency coverage. The category map does not establish exhaustive traceability for every relevant domain invariant, state-model transition and declared permission key; the existing cases and new seam cases need that mapping before complete design coverage is claimed. | `CAP-ACC-REC-018`, `ATS-ACC-REC-018` | specs/accounting/reconciliation/design/tests/ATS-ACC-REC-018-tell-month-end-close-what-stops-a-period-from-closing.md; specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-018-tell-month-end-close-what-stops-a-period-from-closing.md; specs/accounting/reconciliation/design/objects; specs/accounting/reconciliation/design/state-models | coverage-gap |
| `FND-ACC-REC-064` | medium | No scenario is assigned to edge, failure, concurrency, invariant coverage. The category map does not establish exhaustive traceability for every relevant domain invariant, state-model transition and declared permission key; the existing cases and new seam cases need that mapping before complete design coverage is claimed. | `CAP-ACC-REC-019`, `ATS-ACC-REC-019` | specs/accounting/reconciliation/design/tests/ATS-ACC-REC-019-see-the-state-of-reconciliation-at-a-glance.md; specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-019-see-the-state-of-reconciliation-at-a-glance.md; specs/accounting/reconciliation/design/objects; specs/accounting/reconciliation/design/state-models | coverage-gap |
| `FND-ACC-REC-065` | medium | No scenario is assigned to rule, transition, concurrency coverage. The category map does not establish exhaustive traceability for every relevant domain invariant, state-model transition and declared permission key; the existing cases and new seam cases need that mapping before complete design coverage is claimed. | `CAP-ACC-REC-020`, `ATS-ACC-REC-020` | specs/accounting/reconciliation/design/tests/ATS-ACC-REC-020-keep-preparing-apart-from-approving-and-leave-a-trail-of.md; specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-020-keep-preparing-apart-from-approving-and-leave-a-trail-of.md; specs/accounting/reconciliation/design/objects; specs/accounting/reconciliation/design/state-models | coverage-gap |
| `FND-ACC-REC-066` | low | The existing concurrent preparation scenario described an amount edit racing a claim, but the executable journey races that edit with release. The specification now names the actual commands and their distinct version outcomes. | `ATS-ACC-REC-009-10` | react-console:acceptance/accounting/playwright/journeys/reconciliation-close/ACT-ACC-0598.spec.ts#step 4 | inconsistency |
| `FND-ACC-REC-067` | medium | Feature chains without a registered binding and proposed capability interactions lack executable proof as a whole. Reusing their component assertions does not establish the combined outcome, and historical or skipped journey suites cannot close this gap without contract review. | `FAS-ACC-REC-01`, `FAS-ACC-REC-02`, `FAS-ACC-REC-03`, `FAS-ACC-REC-04`, `FAS-ACC-REC-05`, `FAS-ACC-REC-06`, `FAS-ACC-REC-07` | specs/accounting/reconciliation/planning/acceptance/FAS-ACC-REC-01-processor-payout.md; specs/accounting/reconciliation/planning/acceptance/FAS-ACC-REC-02-deposit.md; specs/accounting/reconciliation/planning/acceptance/FAS-ACC-REC-03-reconciliation-approval-and.md; specs/accounting/reconciliation/planning/acceptance/FAS-ACC-REC-04-expected-settlement.md; specs/accounting/reconciliation/planning/acceptance/FAS-ACC-REC-05-problem-investigation-and.md; specs/accounting/reconciliation/planning/acceptance/FAS-ACC-REC-06-period-assessment-and-daily.md; specs/accounting/reconciliation/planning/acceptance/FAS-ACC-REC-07-financial-record.md; react-console:acceptance/accounting/playwright/journeys/reconciliation-close/ACT-ACC-0594.spec.ts; react-console:acceptance/accounting/playwright/journeys/reconciliation-close/ACT-ACC-0626.spec.ts; react-console:acceptance/accounting/playwright/journeys/reconciliation-close/ACT-ACC-0627.spec.ts | coverage-gap |

## Open Questions

| id | question | why_it_matters | options | recommendation | affects |
|---|---|---|---|---|---|
| `OQ-ACC-REC-001` | Which contributions should prevent a person from approving the reconciliation? | Approval can currently include someone who changed payout money or supplied supporting material. The preparer boundary determines whether the review is independent. | A: retain the existing preparation activities. B: include all contributors to the draft or its payout records. C: also include people who verified its bank evidence. | The product should exclude everyone who shaped the draft or its payout records, while treating bank verification as separate evidence. | `CAP-ACC-REC-011`, `BR-CAP-ACC-REC-011-03`, `FND-ACC-REC-005` |
| `OQ-ACC-REC-002` | How should staff review accounting that posts after its original period closes? | The following close cannot satisfy the required review through the available exception workflows. | A: create a dedicated late-posting exception automatically. B: add a separate review command for the ledger request. C: reduce the check to a warning. | The product should create a late-posting exception that staff resolve or accept through the existing approval workflow. | `CAP-ACC-REC-018`, `BR-CAP-ACC-REC-018-06`, `FND-ACC-REC-002` |
| `OQ-ACC-REC-003` | Should an acknowledged deposit look-alike remain visible during close review? | Entry acknowledgement currently leaves no duplicate warning for the controller to review later. | A: create a warning exception after acknowledgement. B: rely on entry acknowledgement and remove the close warning. | The product should create a warning so a second person can examine the acknowledged duplicate risk before close. | `CAP-ACC-REC-001`, `BR-CAP-ACC-REC-001-04`, `CAP-ACC-REC-018`, `FND-ACC-REC-003` |
| `OQ-ACC-REC-004` | Which reconciliation timing and size values are customer policy, and which are fixed operating limits? | Grace days, lead times, the unreconciled-payout age and the matching window decide when money is called missing. Collection limits only protect the service. Treating policy as constants hides decisions customers expect to make. | A: make grace, lead time, cut-off and unreconciled-payout age merchant or workspace settings, and keep collection limits, page sizes and text lengths as constants. B: keep every value a constant until processor imports measure real timing. C: make every value a setting. | The product should adopt A: settle timing on the merchant account and the age threshold on the workspace, each change audited and applied to new items only, and keep size limits as engineering constants. | `FND-ACC-REC-018`, `FND-ACC-REC-014`, `DOM-ACC-REC-002`, `WF-ACC-REC-008`, `BR-CAP-ACC-REC-006-03`, `BR-CAP-ACC-REC-017-05` |
| `OQ-ACC-REC-005` | Should saving the workspace draft be one service command rather than a sequence of small commands? | The console applies a draft as several separate commands, so a failure partway leaves part of the change saved, and an approver who saves becomes a preparer. One command would make the save all-or-nothing. | A: add one versioned command that applies a draft's releases, claims, manual entries, notes and dismissals together. B: keep the command sequence and show which steps applied. C: keep the sequence and stop offering Save to approvers. | The product should adopt A, keeping the separate commands for API clients, so a draft save succeeds or fails as a whole and its preparer effect is explicit. | `FND-ACC-REC-016`, `WF-ACC-REC-003`, `ADR-ACC-REC-020`, `SCR-ACC-REC-003`, `BR-CAP-ACC-REC-009-11` |
