---
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  rhythm-v2-docs: 37405d50d1465ea0571a66095d98ebec4db04175
finding_evidence:
  - finding: FND-ACC-BAT-001
    source: 'services-accounting:modules/batches/services/rules/posting-records.ts (createSubledgerEntryFor: the batch''s date, fiscal year and period); docs/architecture/accounting-2.0/02-decisions.md#D-03 ("the document''s date deciding the fiscal period"); docs/architecture/accounting-2.0/08-batch-posting.md §4 (G-19); docs/milestones/walkthroughs/ACCT-M3-handoff.md (Decisions it carries, last item); react-console:acceptance/accounting/journeys/batches-posting/ACT-ACC-0550.json (open_decisions)'
  - finding: FND-ACC-BAT-002
    source: 'specs/PRODUCT-AREAS.md (MOD-ACC-BAT row before this draft); services-accounting:docs/milestones/ACCT-M3-batch-posting-and-ledger.md; docs/accounting/batches.md, recurring-batches.md, revenue-schedules.md; docs/migrations/batch-posting/**, docs/migrations/transaction-processing/batches/**; react-console:components/accounting/batches/**, components/configuration/recurring-batches/**, components/configuration/batch-assignment/**, lib/configuration/areas.ts'
  - finding: FND-ACC-BAT-003
    source: 'services-accounting:docs/milestones/ACCT-M3-batch-posting-and-ledger.md (header "In Progress (Stage C)"; Status history 2026-10-21 23:30 "Awaiting Product Acceptance"; "Plan: to be written"); docs/milestones/README.md (the full plan table); docs/milestones/plans/ (no ACCT-M3-plan.md); docs/architecture/accounting-2.0/02-decisions.md §2.3 (M3-1 to M3-8, reversible)'
  - finding: FND-ACC-BAT-004
    source: 'react-console:acceptance/accounting/inventory/parts/batches-posting.json (CAP-ACC-BAT-010 "reverse the current posting''s entries"); services-accounting:modules/batches/db/batch-postings.table.ts (header: "unposting does not delete them, it reverses them"), db/subledger-entries.table.ts (header: "unposting reverses it with a new entry"); docs/architecture/accounting-2.0/02-decisions.md#A-1 ("reversals use the original entries"); docs/accounting/batches.md (Reporting D7)'
  - finding: FND-ACC-BAT-005
    source: 'services-accounting:modules/batches/services/rules/batch-rules.ts:autoCloseOf (no check that the instant is ahead); aws/api/batches.schemas.ts (closeAt); tests/unit/carried/batches/object/cleaning.spec.js#set the scheduled process (2020-05-05 accepted); react-console:acceptance/accounting/inventory/business-rules.json (RUL-ACC-BAT-006); acceptance/accounting/journeys/batches-posting/ACT-ACC-0501.json'
  - finding: FND-ACC-BAT-006
    source: 'services-accounting:docs/accounting/recurring-batches.md#Operational now (last two rows); docs/migrations/transaction-processing/batches/README.md#D13: automatic posting (Andrew, 2026-10-16); modules/batches/services/auto-post/automatic-posting.ts'
  - finding: FND-ACC-BAT-007
    source: 'react-console:acceptance/accounting/inventory/business-rules.json (RUL-ACC-BAT-043); journeys/batches-posting/ACT-ACC-0513.json; services-accounting:modules/batches/services/persistence/recurring-batches.ts (deactivation disables the schedule only); services/assignment/default-batch.ts (problem L)'
  - finding: FND-ACC-BAT-008
    source: 'services-accounting:modules/batches/aws/api/batch-postings.schemas.ts (delete_empty_batches); services/rules/posting-generation.ts (emptyBatches, RS-1116); journeys ACT-ACC-0518.json (open_decisions)'
  - finding: FND-ACC-BAT-009
    source: 'react-console:acceptance/accounting/inventory/business-rules.json (RUL-ACC-BAT-026 "Missing GL accounts are not detected before posting"); journeys ACT-ACC-0521.json, ACT-ACC-0546.json (open_decisions); services-accounting:modules/batches/services/engine/preview-batches.ts; tests/integration/services/posting/gl-resolution-at-posting.integration.spec.js#names the same reason in the preview'
  - finding: FND-ACC-BAT-010
    source: 'react-console:lib/accounting/transactions/http/http-service.ts (getBatchStatusHistory, listEligibleTransactionsForBatch "not connected"; listBatchDeliveries, listBatchExports answer []); components/accounting/batches/batch-accounting-tabs.tsx, create-correction-dialog.tsx, add-transactions-dialog.tsx; journey ACT-ACC-0542.json; services-accounting:docs/migrations/transaction-processing/batches/README.md#Open items (10)'
  - finding: FND-ACC-BAT-011
    source: 'services-accounting:modules/batches/db/business-unit-inter-entity-accounts.table.ts (header: the gap D5 records); services/rules/gl-account-rules.ts; services/persistence/reference-records.ts; react-console inventory CAP-ACC-BAT-020, RUL-ACC-BAT-036; journey ACT-ACC-0549.json'
  - finding: FND-ACC-BAT-012
    source: 'services-accounting:aws/accounting.service.ts (BatchesPermissions, RecurringBatchesPermissions, BatchAssignmentSettingsPermissions, BatchPostingsPermissions, SubledgerEntriesPermissions; "definePermissions always builds the five standard actions"); tests/unit/query-permissions.spec.ts (the six accounting.batches keys); modules/batches/aws/api/*.routes.ts (the keys routes require)'
  - finding: FND-ACC-BAT-013
    source: 'services-accounting:modules/batches/services/auto-post/automatic-posting.ts (startAutomaticPosting, EX-BP-005); docs/migrations/transaction-processing/batches/README.md#Open items (11); journey ACT-ACC-0516.json (open_decisions)'
  - finding: FND-ACC-BAT-014
    source: 'services-accounting:docs/migrations/transaction-processing/batches/README.md#Open items (8); modules/batches/services/roll/first-batch.ts'
  - finding: FND-ACC-BAT-015
    source: 'services-accounting:modules/batches/services/rules/revenue-schedule-rules.ts (amountToRecognize = original_total); services/rules/invoice-entry-rules.ts (revenue credit is revenue_total, net of tax); react-console journeys ACT-ACC-0533.json, ACT-ACC-0528.json (open_decisions); inventory CAP-ACC-BAT-014'
  - finding: FND-ACC-BAT-016
    source: 'react-console:acceptance/accounting/inventory/business-rules.json (RUL-ACC-BAT-061); journey ACT-ACC-0537.json; services-accounting:docs/migrations/transaction-processing/batches/README.md#Status as actions (DEF-ACT-0512); tests/integration/services/jobs/batch-posting-record.integration.spec.js#posts a batch whose description is a 1.0 test directive, as any other (DEF-ACT-0512)'
  - finding: FND-ACC-BAT-017
    source: 'services-accounting:modules/batches/services/persistence/batch-totals.ts; services/rules/posting-generation.ts (statisticsOf); docs/migrations/transaction-processing/batches/README.md#Open items (12); journeys ACT-ACC-0517.json, ACT-ACC-0545.json (open_decisions)'
  - finding: FND-ACC-BAT-018
    source: 'services-accounting:modules/batches/services/actions/batch-actions.ts (header table "post | open, closed"); services/rules/batch-rules.ts:assertBatchCanBePosted; docs/milestones/ACCT-M1-books-and-invoices.md (2026-10-20 04:35 and 05:03 ET rows)'
  - finding: FND-ACC-BAT-019
    source: 'react-console:acceptance/accounting/inventory/business-rules.json (RUL-ACC-BAT-057); services-accounting:modules/batches/services/rules/posting-generation.ts (RB-2485)'
  - finding: FND-ACC-BAT-020
    source: 'react-console:acceptance/accounting/journeys/batches-posting/*.json (automation.status not_started); acceptance/accounting/playwright/journeys/batches-posting/*.spec.ts (32 specs); acceptance/accounting/journeys/slices.json (S3); services-accounting:docs/milestones/ACCT-M3-batch-posting-and-ledger.md (run 8, 32 of 32)'
  - finding: FND-ACC-BAT-021
    source: 'react-console:acceptance/accounting/inventory/parts/batches-posting.json (capabilities CAP-ACC-BAT-001 to 021)'
  - finding: FND-ACC-BAT-022
    source: 'react-console:acceptance/accounting/inventory/parts/batches-posting.json (CAP-ACC-BAT-021, status missing); services-accounting:docs/architecture/accounting-2.0/14-posting-export-delivery.md §5; docs/architecture/accounting-2.0/02-decisions.md §3.1 (D-01 to D-12 open); db/batches.table.ts (status downloaded)'
  - finding: FND-ACC-BAT-023
    source: 'services-accounting:docs/migrations/batch-posting/README.md#Merge readiness ("D7: a refused posting fails", Andrew 2026-10-15) and line 106 ("Andrew''s D7 holds deployed"); docs/accounting/batches.md (Reporting D7, 2026-10-21)'
  - finding: FND-ACC-BAT-024
    source: 'react-console:acceptance/accounting/inventory/business-rules.json (RUL-ACC-BAT-009 "an auto-close schedule is re-synced"); journey ACT-ACC-0507.json; services-accounting:modules/batches/services/rules/batch-rules.ts:autoCloseOf (an automatic close is cleared when the batch leaves open)'
  - finding: FND-ACC-BAT-025
    source: 'services-accounting:modules/batches/services/engine/preview-batches.ts:periodProblemOf; modules/batches/services/persistence/posting-periods.ts:lockPostingPeriodForDate'
  - finding: FND-ACC-BAT-026
    source: 'services-accounting:modules/batches/services/engine/preview-batches.ts:previewBatchPostings; modules/batches/services/engine/engine-scope.ts:lockBatchesForPosting'
  - finding: FND-ACC-BAT-027
    source: 'services-accounting:modules/batches/services/rules/batch-rules.ts:assertBatchCanBePosted; modules/batches/services/rules/batch-posting-rules.ts:ensureBatchesCanBePosted'
  - finding: FND-ACC-BAT-028
    source: 'services-accounting:modules/batches/services/rules/revenue-schedule-rules.ts:generateScheduleForOriginatingLine'
  - finding: FND-ACC-BAT-029
    source: 'react-console:acceptance/accounting/playwright/journeys/batches-posting/ACT-ACC-0533.spec.ts (step 2 accepts both totals)'
  - finding: FND-ACC-BAT-030
    source: 'react-console:lib/accounting/transactions/http/batch-posting.ts:createBatchPostingApi.listEntries'
  - finding: FND-ACC-BAT-031
    source: 'specs/accounting/ACTORS.md; services-accounting:aws/accounting.service.ts (batch permission groups)'
  - finding: FND-ACC-BAT-032
    source: 'services-accounting:modules/batches/attention/batches-awaiting-posting.attention.ts:batchesAwaitingPosting'
  - finding: FND-ACC-BAT-033
    source: 'services-accounting:modules/batches/db/batches.view.ts; modules/batches/services/rules/posting-generation.ts; modules/batches/aws/api/recurring-batches.routes.ts; aws/accounting.service.ts'
  - finding: FND-ACC-BAT-034
    source: 'services-accounting:modules/batches/tests/unit/rules/schedule-truncation.spec.js#answers nothing when no entry falls after the date, so the memo inverts the whole schedule instead'
  - finding: FND-ACC-BAT-035
    source: 'services-accounting:docs/architecture/accounting-2.0/02-decisions.md#A-7'
  - finding: FND-ACC-BAT-036
    source: 'services-accounting:modules/batches/tests/e2e/batch-actions.e2e.spec.js; react-console:acceptance/accounting/playwright/journeys/batches-posting/ACT-ACC-0540.spec.ts'
  - finding: FND-ACC-BAT-037
    source: 'services-accounting:modules/batches/services/rules/posting-generation.ts:106 (FORCE_CASH_MODE); services/rules/subledger-entry-rules.ts:315 (SKIP_BAD_ENTRY_CHECK and the CREDIT-LIABILITY literal); services/rules/batch-posting-rules.ts:45 (FORCE_POSTING); docs/plan/01-legacy-collect-audit.md (LD-37); docs/plan/07-feature-parity-matrix.md (LD-37, "a guard spec forbids bypass switches")'
  - finding: FND-ACC-BAT-038
    source: 'services-accounting:modules/batches/services/engine/post-batches.ts (header steps 2 to 5, one ctx.withTransaction); services/rules/batch-rules.ts (BATCH_POSTING_THRESHOLD_MINUTES, BATCH_STUCK_POSTING_MINUTES); services/rules/batch-posting-rules.ts:43; grep of services/** for writers of verified and downloaded (none)'
  - finding: FND-ACC-BAT-039
    source: 'services-accounting:modules/batches/services/jobs/batch-posting-job-tasks.ts (postBatchesOperation: completeStep and recordProgress after inOneTransaction); services/jobs/batch-posting-jobs.ts (batchPostingWorkflow, STANDARD_TASK_RETRY); aws/logic/batch-posting.step-functions.ts (header: "A task is retried on Lambda''s own throttling and on a transient error")'
  - finding: FND-ACC-BAT-040
    source: 'services-accounting:modules/batches/db/batch-posting-jobs.table.ts (header: kinds accounting.batch-posting.post, four steps); services/jobs/batch-posting-jobs.ts (BATCH_POSTING_JOB_KIND batch_posting, two steps); docs/migrations/batch-posting/DESIGN.md#D6; react-console:lib/accounting/transactions/http/batch-delivery.ts (cites docs/proposals/batch-posting-and-accounting-delivery/14-user-experience.md, absent at the pinned commit)'
  - finding: FND-ACC-BAT-041
    source: 'services-accounting:modules/batches/export/batches.dataset.ts, batch-settings.dataset.ts, subledger.dataset.ts; aws/accounting.export-datasets.ts'
  - finding: FND-ACC-BAT-042
    source: 'services-accounting:aws/cdk.json ("accounting:attentionPublishing": dev true, prod false); lib/attention.ts (gatedAttentionPublisher, ATTENTION_PUBLISHING_VARIABLE)'
  - finding: FND-ACC-BAT-043
    source: 'job accounting-batches-desi-draft-1 (repositories granted: rhythm-v2-docs, services-accounting, react-console); services-accounting:docs/architecture/standard-adoption.md (finding 14, copied platform standards)'
  - finding: FND-ACC-BAT-044
    source: specs/CONVENTIONS.md §9.8 (last sentence); specs/accounting/batches/MODULE.md
  - finding: FND-ACC-BAT-045
    source: 'services-accounting:modules/batches/db/batches.table.ts (snakeSystemColumns only); react-console:components/accounting/batches/batch-detail-tabs.tsx (StatusHistoryTab); services-accounting:docs/accounting/batches.md#Unposting deletes the entries ("the batch''s status history")'
  - finding: FND-ACC-BAT-046
    source: 'services-accounting:modules/batches/services/persistence/revenue-recognition-schedules.ts:voidUnrecognizedSchedules (status only, entries untouched); services/close/revenue-recognition.ts (recognises due entries "including earlier stragglers"); services/engine/unpost-batches.ts:reverseCurrentPostings'
  - finding: FND-ACC-BAT-047
    provenance: unknown
    source: 'rhythm-v2-docs:briefs/design/accounting-batches.brief.md (absent); specs/accounting/batches/MODULE.md:status; specs/accounting/batches/reports/EXAMINATION-2026-10-22.md'
  - finding: FND-ACC-BAT-048
    provenance: observed
    source: 'services-accounting:modules/batches/aws/api/batch-postings.schemas.ts:MAX_BATCHES_PER_REQUEST; modules/batches/db/batch-posting-jobs.table.ts:MAX_BATCHES_PER_JOB; modules/batches/services/jobs/batch-posting-jobs.ts:createBatchJob'
  - finding: FND-ACC-BAT-049
    provenance: observed
    source: 'services-accounting:modules/batches/services/roll/first-batch.ts:openFirstBatch; react-console:lib/accounting/configuration/client.ts; lib/configuration/recurring-batches.ts; components/configuration/recurring-batches/recurring-batch-editor.tsx'
  - finding: FND-ACC-BAT-050
    provenance: observed
    source: 'react-console:lib/accounting/transactions/http/batches.ts:MAX_LIST_PAGES; lib/accounting/transactions/http/batch-transactions.ts'
  - finding: FND-ACC-BAT-051
    provenance: observed
    source: 'services-accounting:modules/batches/services/rules/batch-posting-rules.ts:ensureBatchesCanBeUnposted; modules/batches/services/engine/unpost-batches.ts:unpostBatches; modules/batches/services/engine/posting-reads.ts:loadBatch'
  - finding: FND-ACC-BAT-052
    provenance: inferred
    source: 'services-accounting:modules/batches/export/subledger.dataset.ts:subledgerExport; modules/batches/export/subledger.reader.ts:exportSubledger; modules/batches/services/engine/unpost-batches.ts:reverseCurrentPostings; modules/batches/services/close/revenue-recognition.ts'
  - finding: FND-ACC-BAT-053
    provenance: observed
    source: 'services-accounting:modules/batches/db/subledger-entries.table.ts:subledger_entries_no_duplicates_uq; db/migrations/0025_subledger_entries.sql:subledger_entries_reverses_reference; rhythm-v2-docs:specs/accounting/batches/planning/capabilities/CAP-ACC-BAT-017-keep-the-subledger-balanced-and-unchangeable.md:BR-CAP-ACC-BAT-017-06'
  - finding: FND-ACC-BAT-054
    provenance: inferred
    source: 'services-accounting:modules/batches/services/engine/post-batches.ts:postBatches; modules/batches/services/persistence/ledger-records.ts:postingBatchOf, batchValuesOf; modules/batches/services/persistence/batches.ts:saveBatches, changeBatch; rhythm-v2-docs:specs/accounting/batches/planning/capabilities/CAP-ACC-BAT-005-close-a-batch-automatically-at-a-chosen-time.md (BR-CAP-ACC-BAT-005-05)'
testing_backfill_findings:
  - id: FND-ACC-BAT-055
    severity: medium
    statement: 'Concurrent attempts for the same name, rollback after schedule creation, whitespace-only names, and the fiscal-calendar edges need focused proof. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence.'
    affects:
      - ATS-ACC-BAT-001
      - CAP-ACC-BAT-001
    kind: coverage-gap
    provenance: unknown
    source:
      - 'rhythm-v2-docs:specs/accounting/batches/design/tests/ATS-ACC-BAT-001-open-a-batch-to-collect-a-business-unit-s-transactions.md'
      - 'services-accounting:modules/batches/tests/e2e/batches.e2e.spec.js#refuses a create naming the status 400: a new batch is always open; services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#refuses a rename to a name another batch of the unit has 409, name_in_use (D14)'
      - 'services-accounting:modules/batches/tests/e2e/batches.e2e.spec.js#refuses a create naming the status 400: a new batch is always open; services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#keeps a one-occurrence schedule of the batch at that minute, in the tenant’s zone'
      - 'services-accounting:modules/batches/tests/e2e/batches.e2e.spec.js#refuses a create naming the status 400: a new batch is always open; services-accounting:modules/batches/tests/unit/attention/batches-awaiting-posting.spec.js#holds for a transaction batch in exactly closed, verified, posting and error'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#refuses a name another batch of the unit has 409, name_in_use, in 1.0’s sentence (D14); services-accounting:modules/batches/tests/integration/services/roll/batch-roller.integration.spec.js#names the new batch with the " (2)" suffix when the previous batch is kept and still holds the name'
    coverage_categories:
      - permission
      - failure
      - concurrency
      - invariant
    unbound_scenarios:
      - ATS-ACC-BAT-001-11
      - ATS-ACC-BAT-001-12
      - ATS-ACC-BAT-001-13
      - ATS-ACC-BAT-001-14
  - id: FND-ACC-BAT-056
    severity: medium
    statement: 'Dataset permission evaluation, exact page limits, read failures, and concurrent document changes during totals and dependency reads remain unproved. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence.'
    affects:
      - ATS-ACC-BAT-002
      - CAP-ACC-BAT-002
    kind: coverage-gap
    provenance: unknown
    source:
      - 'rhythm-v2-docs:specs/accounting/batches/design/tests/ATS-ACC-BAT-002-find-batches-and-see-what-they-hold.md'
      - 'services-accounting:modules/batches/services/persistence/batches.ts:dependentBatchesOf; services-accounting:modules/batches/services/rules/batch-rules.ts:dependentBatchesOf'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/batch-totals.queries.integration.spec.js#counts exactly the real transactions of every kind and sums their amounts; services-accounting:modules/batches/tests/integration/services/posting/rebuilt-documents.integration.spec.js#records the batch''s statistics: the documents counted by kind and their base totals'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/batches.queries.integration.spec.js#answers the posted and downloaded batches depending on those named, through others, with their id, name, date and status; services-accounting:modules/batches/tests/e2e/batch-postings.e2e.spec.js#unposts a posted batch as a durable job: the batch is open again and its entries are deleted'
      - 'services-accounting:modules/batches/tests/integration/db/batches-view.integration.spec.js#answers the reader of tenant A its batches, with every column, the number the code else the name'
    coverage_categories:
      - validation
      - permission
      - failure
      - concurrency
    unbound_scenarios:
      - ATS-ACC-BAT-002-07
      - ATS-ACC-BAT-002-08
      - ATS-ACC-BAT-002-09
      - ATS-ACC-BAT-002-11
  - id: FND-ACC-BAT-057
    severity: medium
    statement: Edit failures after fiscal recalculation and exact five-minute posting thresholds remain unproved; optional-version omission also needs a focused comparison. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence.
    affects:
      - ATS-ACC-BAT-003
      - CAP-ACC-BAT-003
    kind: coverage-gap
    provenance: unknown
    source:
      - 'rhythm-v2-docs:specs/accounting/batches/design/tests/ATS-ACC-BAT-003-correct-a-batch-s-details-while-it-is-still-workable.md'
      - 'services-accounting:modules/batches/services/rules/batch-rules.ts:BATCH_FROZEN_FIELDS'
      - 'services-accounting:modules/batches/services/rules/batch-rules.ts:assertBatchChangesAllowed'
      - 'services-accounting:modules/batches/tests/e2e/batches.e2e.spec.js#refuses a create naming the status 400: a new batch is always open; services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#refuses a rename to a name another batch of the unit has 409, name_in_use (D14)'
      - 'services-accounting:modules/batches/services/persistence/batches.ts:changeBatch; services-accounting:modules/batches/services/rules/batch-rules.ts:assertBatchChangesAllowed; services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#archives an open batch and a closed one, and unarchives to open'
      - 'services-accounting:modules/batches/aws/api/batches.schemas.ts:batchPatchSchema; services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#removes the schedule and the time when the batch is closed'
    coverage_categories:
      - permission
      - failure
    unbound_scenarios:
      - ATS-ACC-BAT-003-02
      - ATS-ACC-BAT-003-04
      - ATS-ACC-BAT-003-11
      - ATS-ACC-BAT-003-12
      - ATS-ACC-BAT-003-13
  - id: FND-ACC-BAT-058
    severity: medium
    statement: 'Exact stuck-posting thresholds, concurrent actions, read-permission refusal, confirmation cancellation and failure during schedule or attention cleanup need focused proof. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence.'
    affects:
      - ATS-ACC-BAT-004
      - CAP-ACC-BAT-004
    kind: coverage-gap
    provenance: unknown
    source:
      - 'rhythm-v2-docs:specs/accounting/batches/design/tests/ATS-ACC-BAT-004-move-a-batch-through-its-working-life-with-named-actions.md'
      - 'services-accounting:modules/batches/services/persistence/batches.ts:changeBatch; services-accounting:modules/batches/services/rules/batch-rules.ts:assertBatchChangesAllowed; services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#archives an open batch and a closed one, and unarchives to open'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#refuses closing a batch that is not open; services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#removes the schedule and the time when the batch is closed'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#clears the errors of an errored batch on reopen, so the open batch carries none (journey ACT-ACC-0521); services-accounting:modules/batches/tests/integration/services/persistence/batch-attention-items.integration.spec.js#resolves a reopened batch reopened, and its next close opens the second generation'
      - 'services-accounting:modules/batches/tests/e2e/batch-actions.e2e.spec.js#answers each status action with the updated batch; services-accounting:modules/batches/tests/e2e/batch-postings.e2e.spec.js#posts a batch as a durable job: the answer is the job, and the job posts the batch'
      - 'services-accounting:modules/batches/tests/unit/actions/batch-actions.spec.js#offers a batch posting for half an hour nothing, and one stuck in posting for over an hour unpost; services-accounting:modules/batches/tests/e2e/batch-postings.e2e.spec.js#unposts a posted batch as a durable job: the batch is open again and its entries are deleted'
      - 'services-accounting:modules/batches/tests/e2e/system-batches.e2e.spec.js#offers an administrator no action for the system batch; react-console:acceptance/accounting/playwright/journeys/batches-posting/ACT-ACC-0528.spec.ts#ACT-ACC-0528'
      - 'services-accounting:modules/batches/tests/unit/actions/batch-actions.spec.js#offers a batch posting for half an hour nothing, and one stuck in posting for over an hour unpost'
    coverage_categories:
      - transition
      - permission
      - failure
      - concurrency
    unbound_scenarios:
      - ATS-ACC-BAT-004-09
      - ATS-ACC-BAT-004-10
      - ATS-ACC-BAT-004-11
      - ATS-ACC-BAT-004-12
      - ATS-ACC-BAT-004-13
      - ATS-ACC-BAT-004-14
      - ATS-ACC-BAT-004-15
  - id: FND-ACC-BAT-059
    severity: medium
    statement: 'Create and update authorization for scheduling, past and date-only times, concurrent close and roll delivery, and refusal recovery need proof. Past-time rejection is proposed and contradicts current acceptance of past times. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence.'
    affects:
      - ATS-ACC-BAT-005
      - CAP-ACC-BAT-005
    kind: coverage-gap
    provenance: unknown
    source:
      - 'rhythm-v2-docs:specs/accounting/batches/design/tests/ATS-ACC-BAT-005-close-a-batch-automatically-at-a-chosen-time.md'
      - 'services-accounting:modules/batches/services/auto-post/automatic-posting.ts:prepareAutomaticPosting'
      - 'services-accounting:modules/batches/tests/e2e/batches.e2e.spec.js#refuses a create naming the status 400: a new batch is always open; services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#keeps a one-occurrence schedule of the batch at that minute, in the tenant’s zone'
      - 'services-accounting:modules/batches/aws/api/batches.schemas.ts:batchPatchSchema; services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#removes the schedule and the time when the batch is closed'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#refuses closing a batch that is not open; services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#removes the schedule and the time when the batch is closed'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#posts nothing more when the same occurrence runs again: the batch is no longer open; services-accounting:modules/batches/tests/integration/services/roll/batch-roller.integration.spec.js#opens nothing for the same occurrence delivered again, and answers the same batch'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#submits one posting job of the closed batch, in its unit, for the tenant’s customer (D13); services-accounting:modules/batches/tests/e2e/batch-postings.e2e.spec.js#posts a batch as a durable job: the answer is the job, and the job posts the batch'
      - FND-ACC-BAT-005
    coverage_categories:
      - transition
      - permission
      - edge
      - boundary
      - concurrency
    unbound_scenarios:
      - ATS-ACC-BAT-005-05
      - ATS-ACC-BAT-005-06
      - ATS-ACC-BAT-005-07
      - ATS-ACC-BAT-005-08
      - ATS-ACC-BAT-005-09
      - ATS-ACC-BAT-005-10
      - ATS-ACC-BAT-005-11
  - id: FND-ACC-BAT-060
    severity: medium
    statement: 'Deletion from every eligible stored state, deletion racing with intake or posting, attention cleanup and malformed-reference handling need focused proof. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence.'
    affects:
      - ATS-ACC-BAT-006
      - CAP-ACC-BAT-006
    kind: coverage-gap
    provenance: unknown
    source:
      - 'rhythm-v2-docs:specs/accounting/batches/design/tests/ATS-ACC-BAT-006-delete-a-batch-that-holds-nothing.md'
      - 'services-accounting:modules/batches/aws/api/batch-records.routes.ts:deleteBatch'
      - 'services-accounting:modules/batches/services/persistence/batches.ts:deleteBatch'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#deletes an empty batch with its automatic close’s schedule; services-accounting:modules/batches/tests/integration/services/persistence/batch-attention-items.integration.spec.js#resolves a reopened batch reopened, and its next close opens the second generation'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#deletes the batch a recurring batch names as its active batch and clears the reference (DEF-ACT-0012); services-accounting:modules/batches/tests/integration/services/roll/batch-roller.integration.spec.js#saves a recurring batch whose first batch is refused, with the refusal and no batch'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#refuses deleting a posted batch; services-accounting:modules/batches/tests/e2e/batch-postings.e2e.spec.js#posts a batch as a durable job: the answer is the job, and the job posts the batch'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#deletes an empty batch with its automatic close’s schedule'
    coverage_categories:
      - transition
      - validation
      - permission
      - boundary
      - concurrency
    unbound_scenarios:
      - ATS-ACC-BAT-006-01
      - ATS-ACC-BAT-006-04
      - ATS-ACC-BAT-006-07
      - ATS-ACC-BAT-006-08
      - ATS-ACC-BAT-006-09
      - ATS-ACC-BAT-006-10
  - id: FND-ACC-BAT-061
    severity: medium
    statement: 'Batch-update authorization during reassignment, concurrent intake versus posting, and complete enforcement of immutable issued-document values require cross-module proof. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence.'
    affects:
      - ATS-ACC-BAT-007
      - CAP-ACC-BAT-007
    kind: coverage-gap
    provenance: unknown
    source:
      - 'rhythm-v2-docs:specs/accounting/batches/design/tests/ATS-ACC-BAT-007-keep-each-document-in-an-accepting-batch-and-freeze-it-once.md'
      - 'services-accounting:docs/architecture/accounting-2.0/02-decisions.md#A-7'
      - 'services-accounting:modules/batches/tests/integration/services/close/system-batch-guard.integration.spec.js#refuses the system batch as a default batch (BA-12); react-console:acceptance/accounting/playwright/journeys/batches-posting/ACT-ACC-0510.spec.ts#ACT-ACC-0510'
      - 'services-accounting:modules/batches/tests/integration/services/posting/rebuilt-documents.integration.spec.js#refuses, in the database, moving a document out of a posted batch (RHA05); services-accounting:modules/batches/tests/e2e/batch-postings.e2e.spec.js#posts a batch as a durable job: the answer is the job, and the job posts the batch'
      - 'react-console:acceptance/accounting/playwright/journeys/batches-posting/ACT-ACC-0538.spec.ts#ACT-ACC-0538; services-accounting:modules/batches/tests/e2e/batch-postings.e2e.spec.js#unposts a posted batch as a durable job: the batch is open again and its entries are deleted'
      - 'react-console:acceptance/accounting/playwright/journeys/batches-posting/ACT-ACC-0538.spec.ts#ACT-ACC-0538'
    coverage_categories:
      - permission
      - concurrency
    unbound_scenarios:
      - ATS-ACC-BAT-007-08
      - ATS-ACC-BAT-007-09
      - ATS-ACC-BAT-007-10
      - ATS-ACC-BAT-007-11
      - ATS-ACC-BAT-007-12
  - id: FND-ACC-BAT-062
    severity: medium
    statement: 'Sweep page failure, publication races, allowance limits, item refresh after document changes and console bulk execution remain unproved as complete workflows. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence.'
    affects:
      - ATS-ACC-BAT-008
      - CAP-ACC-BAT-008
      - BR-CAP-ACC-BAT-008-07
    kind: coverage-gap
    provenance: unknown
    source:
      - 'rhythm-v2-docs:specs/accounting/batches/design/tests/ATS-ACC-BAT-008-tell-the-posting-team-which-batches-are-waiting-to-be-posted.md'
      - 'services-accounting:modules/batches/tests/e2e/batches.e2e.spec.js#refuses a create naming the status 400: a new batch is always open; services-accounting:modules/batches/tests/unit/attention/batches-awaiting-posting.spec.js#holds for a transaction batch in exactly closed, verified, posting and error'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#clears the errors of an errored batch on reopen, so the open batch carries none (journey ACT-ACC-0521); services-accounting:modules/batches/tests/integration/services/persistence/batch-attention-items.integration.spec.js#resolves a reopened batch reopened, and its next close opens the second generation'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#deletes an empty batch with its automatic close’s schedule; services-accounting:modules/batches/tests/integration/services/persistence/batch-attention-items.integration.spec.js#resolves a reopened batch reopened, and its next close opens the second generation'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/batch-attention-items.integration.spec.js#resolves a reopened batch reopened, and its next close opens the second generation; services-accounting:modules/batches/tests/e2e/batch-postings.e2e.spec.js#posts a batch as a durable job: the answer is the job, and the job posts the batch'
    coverage_categories:
      - rule
      - edge
      - failure
      - concurrency
    unbound_scenarios:
      - ATS-ACC-BAT-008-06
      - ATS-ACC-BAT-008-07
      - ATS-ACC-BAT-008-08
      - ATS-ACC-BAT-008-09
  - id: FND-ACC-BAT-063
    severity: medium
    statement: 'Paused and inactive deletion, deactivation without losing intake, permission refusals for every read surface, exact list limits and renderer limits need proof. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence.'
    affects:
      - ATS-ACC-BAT-009
      - CAP-ACC-BAT-009
    kind: coverage-gap
    provenance: unknown
    source:
      - 'rhythm-v2-docs:specs/accounting/batches/design/tests/ATS-ACC-BAT-009-keep-a-recurring-batch-that-rolls-on-a-schedule.md'
      - 'services-accounting:modules/batches/services/rules/recurring-batch-rules.ts:renderBatchTemplate'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#deletes the batch a recurring batch names as its active batch and clears the reference (DEF-ACT-0012); services-accounting:modules/batches/tests/integration/services/roll/batch-roller.integration.spec.js#saves a recurring batch whose first batch is refused, with the refusal and no batch'
      - 'services-accounting:modules/batches/tests/e2e/recurring-batches.e2e.spec.js#answers no next run once deactivated; services-accounting:modules/batches/services/roll/recurring-batch-roll.ts'
      - 'services-accounting:modules/batches/tests/e2e/recurring-batches.e2e.spec.js#answers 409 naming the settings and how they name it; services-accounting:modules/batches/tests/e2e/batches-security.e2e.spec.js#is refused the save 403 permission_missing'
      - 'services-accounting:modules/batches/tests/integration/services/roll/batch-roller.integration.spec.js#saves a recurring batch whose first batch is refused, with the refusal and no batch; services-accounting:modules/batches/tests/e2e/batch-postings.e2e.spec.js#posts a batch as a durable job: the answer is the job, and the job posts the batch'
      - 'services-accounting:modules/batches/tests/e2e/recurring-batches.e2e.spec.js#answers 400 to a limit above 200'
    coverage_categories:
      - transition
      - permission
      - edge
      - failure
    unbound_scenarios:
      - ATS-ACC-BAT-009-12
      - ATS-ACC-BAT-009-13
      - ATS-ACC-BAT-009-14
      - ATS-ACC-BAT-009-15
      - ATS-ACC-BAT-009-16
      - ATS-ACC-BAT-009-17
  - id: FND-ACC-BAT-064
    severity: medium
    statement: 'Concurrent distinct occurrences, inactive delivery, permission checks on preview and history, and all predecessor lock and state combinations need proof. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence.'
    affects:
      - ATS-ACC-BAT-010
      - CAP-ACC-BAT-010
    kind: coverage-gap
    provenance: unknown
    source:
      - 'rhythm-v2-docs:specs/accounting/batches/design/tests/ATS-ACC-BAT-010-roll-to-the-next-batch-on-schedule-and-post-the-one-it-replaces.md'
      - 'services-accounting:docs/accounting/recurring-batches.md#The roll'
      - 'services-accounting:modules/batches/services/roll/recurring-batch-roll.ts'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#refuses a name another batch of the unit has 409, name_in_use, in 1.0’s sentence (D14); services-accounting:modules/batches/tests/integration/services/roll/batch-roller.integration.spec.js#names the new batch with the " (2)" suffix when the previous batch is kept and still holds the name'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#posts nothing more when the same occurrence runs again: the batch is no longer open; services-accounting:modules/batches/tests/integration/services/roll/batch-roller.integration.spec.js#opens nothing for the same occurrence delivered again, and answers the same batch'
      - 'services-accounting:modules/batches/tests/e2e/recurring-batches.e2e.spec.js#answers no next run once deactivated; services-accounting:modules/batches/services/roll/recurring-batch-roll.ts'
      - 'services-accounting:modules/batches/tests/e2e/recurring-batches.e2e.spec.js#answers the run the consumer recorded, every property of it'
    coverage_categories:
      - transition
      - permission
      - concurrency
    unbound_scenarios:
      - ATS-ACC-BAT-010-06
      - ATS-ACC-BAT-010-07
      - ATS-ACC-BAT-010-09
      - ATS-ACC-BAT-010-10
      - ATS-ACC-BAT-010-11
      - ATS-ACC-BAT-010-12
  - id: FND-ACC-BAT-065
    severity: medium
    statement: 'Concurrent replacements, rollback during rule writes, vocabulary duplication and missing companion facts need focused proof; native order precedence remains a known binding gap. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence.'
    affects:
      - ATS-ACC-BAT-011
      - CAP-ACC-BAT-011
    kind: coverage-gap
    provenance: unknown
    source:
      - 'rhythm-v2-docs:specs/accounting/batches/design/tests/ATS-ACC-BAT-011-route-a-business-unit-s-new-transactions-to-the-right-batch.md'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/batch-assignment-settings.integration.spec.js#keeps the previous settings and rules after the database refused a rule the save had already replaced them with'
      - 'services-accounting:modules/batches/services/rules/batch-rules.ts:defaultBatchOf'
      - 'services-accounting:modules/batches/tests/integration/services/close/system-batch-guard.integration.spec.js#refuses the system batch as a default batch (BA-12); react-console:acceptance/accounting/playwright/journeys/batches-posting/ACT-ACC-0510.spec.ts#ACT-ACC-0510'
      - 'services-accounting:modules/batches/tests/e2e/recurring-batches.e2e.spec.js#answers 409 naming the settings and how they name it; services-accounting:modules/batches/tests/e2e/batches-security.e2e.spec.js#is refused the save 403 permission_missing'
      - 'services-accounting:modules/batches/tests/e2e/batch-assignment-settings.e2e.spec.js#answers 400 to a transaction type the vocabulary does not have'
    coverage_categories:
      - permission
      - failure
    unbound_scenarios:
      - ATS-ACC-BAT-011-02
      - ATS-ACC-BAT-011-10
      - ATS-ACC-BAT-011-11
      - ATS-ACC-BAT-011-12
      - ATS-ACC-BAT-011-13
  - id: FND-ACC-BAT-066
    severity: medium
    statement: 'Exact selection boundaries, exception handling, candidate precedence, Error candidates and changes after preview need focused proof; preview cannot reserve later admission. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence.'
    affects:
      - ATS-ACC-BAT-012
      - CAP-ACC-BAT-012
    kind: coverage-gap
    provenance: unknown
    source:
      - 'rhythm-v2-docs:specs/accounting/batches/design/tests/ATS-ACC-BAT-012-check-before-posting-what-would-stop-a-batch.md'
      - 'services-accounting:modules/batches/services/engine/preview-batches.ts:previewBatchPostings'
      - 'services-accounting:modules/batches/services/engine/preview-batches.ts'
      - 'services-accounting:modules/batches/services/engine/preview-batches.ts:periodProblemOf; services-accounting:modules/batches/services/persistence/posting-periods.ts:lockPostingPeriodForDate; services-accounting:modules/batches/services/actions/batch-actions.ts:postBatch; services-accounting:modules/batches/services/engine/engine-scope.ts:lockBatchesForPosting'
      - 'services-accounting:modules/batches/services/engine/preview-batches.ts:previewBatchPostings; services-accounting:modules/batches/tests/integration/services/posting/gl-resolution-at-posting.integration.spec.js#fails the batch’s validation with an error naming the invoice, the missing accounts receivable account, the product’s setup and the unit’s default'
      - 'services-accounting:modules/batches/tests/e2e/batch-postings.e2e.spec.js#refuses a preview that names no batch, 400'
    coverage_categories:
      - validation
      - permission
      - edge
      - concurrency
    unbound_scenarios:
      - ATS-ACC-BAT-012-02
      - ATS-ACC-BAT-012-03
      - ATS-ACC-BAT-012-04
      - ATS-ACC-BAT-012-05
      - ATS-ACC-BAT-012-06
  - id: FND-ACC-BAT-067
    severity: medium
    statement: 'All named-action and engine starting states, start failure leaving Pending, settlement failure after commit, request-unit mismatch and exact selection limits remain unproved. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence.'
    affects:
      - ATS-ACC-BAT-013
      - CAP-ACC-BAT-013
    kind: coverage-gap
    provenance: unknown
    source:
      - 'rhythm-v2-docs:specs/accounting/batches/design/tests/ATS-ACC-BAT-013-post-batches-to-the-subledger-as-one-watched-job.md'
      - FND-ACC-BAT-027
      - 'services-accounting:modules/batches/services/jobs/batch-posting-jobs.ts:ensureBatchPostingJobTypesRegistered'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/batch-totals.queries.integration.spec.js#counts exactly the real transactions of every kind and sums their amounts; services-accounting:modules/batches/tests/integration/services/posting/rebuilt-documents.integration.spec.js#records the batch''s statistics: the documents counted by kind and their base totals'
      - 'services-accounting:modules/batches/tests/e2e/batch-actions.e2e.spec.js#answers each status action with the updated batch; services-accounting:modules/batches/tests/e2e/batch-postings.e2e.spec.js#posts a batch as a durable job: the answer is the job, and the job posts the batch'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#submits one posting job of the closed batch, in its unit, for the tenant’s customer (D13); services-accounting:modules/batches/tests/e2e/batch-postings.e2e.spec.js#posts a batch as a durable job: the answer is the job, and the job posts the batch'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/batches.integration.spec.js#refuses deleting a posted batch; services-accounting:modules/batches/tests/e2e/batch-postings.e2e.spec.js#posts a batch as a durable job: the answer is the job, and the job posts the batch'
      - 'services-accounting:modules/batches/tests/integration/services/posting/rebuilt-documents.integration.spec.js#refuses, in the database, moving a document out of a posted batch (RHA05); services-accounting:modules/batches/tests/e2e/batch-postings.e2e.spec.js#posts a batch as a durable job: the answer is the job, and the job posts the batch'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/batch-attention-items.integration.spec.js#resolves a reopened batch reopened, and its next close opens the second generation; services-accounting:modules/batches/tests/e2e/batch-postings.e2e.spec.js#posts a batch as a durable job: the answer is the job, and the job posts the batch'
      - 'services-accounting:modules/batches/tests/integration/services/roll/batch-roller.integration.spec.js#saves a recurring batch whose first batch is refused, with the refusal and no batch; services-accounting:modules/batches/tests/e2e/batch-postings.e2e.spec.js#posts a batch as a durable job: the answer is the job, and the job posts the batch'
      - 'services-accounting:modules/batches/services/engine/preview-batches.ts:periodProblemOf; services-accounting:modules/batches/services/persistence/posting-periods.ts:lockPostingPeriodForDate; services-accounting:modules/batches/services/actions/batch-actions.ts:postBatch; services-accounting:modules/batches/services/engine/engine-scope.ts:lockBatchesForPosting'
      - 'services-accounting:modules/batches/tests/integration/services/posting/rebuilt-posting-edges.integration.spec.js#posts January, puts April in error naming the application whose credit''s batch is not posted, and May in error as April''s dependent; services-accounting:modules/batches/tests/integration/services/posting/gl-resolution-at-posting.integration.spec.js#fails the batch’s validation with an error naming the invoice, the missing accounts receivable account, the product’s setup and the unit’s default'
      - 'services-accounting:modules/batches/tests/integration/services/posting/rebuilt-posting-edges.integration.spec.js#posts January, puts April in error naming the application whose credit''s batch is not posted, and May in error as April''s dependent; services-accounting:modules/batches/tests/integration/services/posting/rebuilt-documents.integration.spec.js#refuses November alone while October is open: November in error, naming the memo''s invoice and October''s status'
      - 'services-accounting:modules/batches/tests/integration/services/jobs/submission-identity.integration.spec.js#answers a colleague''s retry under another key, after the posting finished, with the job that posted (DEF-ACT-0514); services-accounting:modules/batches/tests/integration/services/posting/unpost-deletes-entries.integration.spec.js#writes one fresh set when the batch is posted again, equal in size to the first'
      - 'services-accounting:modules/batches/tests/e2e/batch-postings.e2e.spec.js#posts a batch as a durable job: the answer is the job, and the job posts the batch; services-accounting:modules/batches/tests/integration/services/posting/rebuilt-deferral.integration.spec.js#writes H a schedule of three monthly entries on the firsts of October, November and December, summing to 300.00'
      - 'services-accounting:modules/batches/services/jobs/batch-posting-jobs.ts:createBatchJob; services-accounting:modules/batches/services/rules/batch-posting-rules.ts:ensureBatchesCanBePosted'
    coverage_categories:
      - transition
      - permission
    unbound_scenarios:
      - ATS-ACC-BAT-013-04
      - ATS-ACC-BAT-013-13
      - ATS-ACC-BAT-013-14
      - ATS-ACC-BAT-013-15
      - ATS-ACC-BAT-013-16
      - ATS-ACC-BAT-013-17
      - ATS-ACC-BAT-013-18
      - ATS-ACC-BAT-013-19
      - ATS-ACC-BAT-013-20
      - ATS-ACC-BAT-013-21
      - ATS-ACC-BAT-013-22
      - ATS-ACC-BAT-013-23
      - ATS-ACC-BAT-013-24
      - ATS-ACC-BAT-013-25
      - ATS-ACC-BAT-013-26
  - id: FND-ACC-BAT-068
    severity: medium
    statement: 'Cross-unit account pairs, concurrent configuration changes, account-resolution exception handling and immutable snapshot boundaries need focused proof. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence.'
    affects:
      - ATS-ACC-BAT-014
      - CAP-ACC-BAT-014
    kind: coverage-gap
    provenance: unknown
    source:
      - 'rhythm-v2-docs:specs/accounting/batches/design/tests/ATS-ACC-BAT-014-resolve-and-freeze-the-accounts-when-a-batch-posts.md'
      - 'services-accounting:modules/batches/services/engine/preview-batches.ts:previewBatchPostings; services-accounting:modules/batches/tests/integration/services/posting/gl-resolution-at-posting.integration.spec.js#fails the batch’s validation with an error naming the invoice, the missing accounts receivable account, the product’s setup and the unit’s default'
      - 'services-accounting:modules/batches/tests/integration/services/posting/rebuilt-posting-edges.integration.spec.js#posts January, puts April in error naming the application whose credit''s batch is not posted, and May in error as April''s dependent; services-accounting:modules/batches/tests/integration/services/posting/gl-resolution-at-posting.integration.spec.js#fails the batch’s validation with an error naming the invoice, the missing accounts receivable account, the product’s setup and the unit’s default'
      - 'services-accounting:modules/batches/tests/integration/services/posting/gl-resolution-at-posting.integration.spec.js#posts the invoice to the resolved accounts: the receivable from the unit’s default, the revenue from the product’s setup, the discounted line net of its discount; services-accounting:modules/batches/tests/integration/services/posting/rebuilt-tax.integration.spec.js#posts the invoice per line: the receivable debited the total with the tax, revenue credited the net, and a tax credit per tax line to its account'
      - 'services-accounting:modules/batches/db/business-unit-inter-entity-accounts.table.ts; FND-ACC-BAT-011'
    coverage_categories:
      - edge
      - boundary
      - concurrency
    unbound_scenarios:
      - ATS-ACC-BAT-014-08
      - ATS-ACC-BAT-014-09
      - ATS-ACC-BAT-014-10
      - ATS-ACC-BAT-014-11
  - id: FND-ACC-BAT-069
    severity: medium
    statement: 'Engine exception paths, concurrent source-document changes, stored-rate absence and residual boundaries need proof across the relevant generation kinds. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence.'
    affects:
      - ATS-ACC-BAT-015
      - CAP-ACC-BAT-015
    kind: coverage-gap
    provenance: unknown
    source:
      - 'rhythm-v2-docs:specs/accounting/batches/design/tests/ATS-ACC-BAT-015-turn-each-document-into-its-balanced-entry.md'
      - 'services-accounting:modules/batches/tests/integration/services/posting/rebuilt-posting-edges.integration.spec.js#posts January, puts April in error naming the application whose credit''s batch is not posted, and May in error as April''s dependent; services-accounting:modules/batches/tests/integration/services/posting/rebuilt-documents.integration.spec.js#refuses November alone while October is open: November in error, naming the memo''s invoice and October''s status'
      - 'services-accounting:modules/batches/tests/integration/services/posting/gl-resolution-at-posting.integration.spec.js#posts the invoice to the resolved accounts: the receivable from the unit’s default, the revenue from the product’s setup, the discounted line net of its discount; services-accounting:modules/batches/tests/integration/services/posting/rebuilt-tax.integration.spec.js#posts the invoice per line: the receivable debited the total with the tax, revenue credited the net, and a tax credit per tax line to its account'
      - 'services-accounting:modules/batches/tests/integration/services/posting/rebuilt-documents.integration.spec.js#traces every line of every entry to a line of a document in the batch; services-accounting:modules/batches/tests/integration/services/persistence/subledger-entries.integration.spec.js#refuses an entry whose debits and credits differ, at commit, by the balance constraint'
      - 'services-accounting:modules/batches/tests/integration/services/posting/memo-split-by-schedule.integration.spec.js#posts the credit memo of 60.00 as Cr receivable 6000, Dr deferred revenue 3000 and Dr revenue 3000; 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'
      - 'services-accounting:modules/batches/tests/integration/services/posting/rebuilt-documents.integration.spec.js#traces every line of every entry to a line of a document in the batch'
    coverage_categories:
      - validation
      - edge
      - concurrency
    unbound_scenarios:
      - ATS-ACC-BAT-015-11
      - ATS-ACC-BAT-015-12
      - ATS-ACC-BAT-015-13
      - ATS-ACC-BAT-015-14
      - ATS-ACC-BAT-015-15
  - id: FND-ACC-BAT-070
    severity: medium
    statement: 'All recovery starting states, concurrent dependent updates or failed dependent reads, recognised-schedule recovery and exact one-hour admission require focused proof. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence.'
    affects:
      - ATS-ACC-BAT-016
      - CAP-ACC-BAT-016
    kind: coverage-gap
    provenance: unknown
    source:
      - 'rhythm-v2-docs:specs/accounting/batches/design/tests/ATS-ACC-BAT-016-take-a-posting-back-and-post-again.md'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/batches.queries.integration.spec.js#answers the posted and downloaded batches depending on those named, through others, with their id, name, date and status; services-accounting:modules/batches/tests/e2e/batch-postings.e2e.spec.js#unposts a posted batch as a durable job: the batch is open again and its entries are deleted'
      - 'services-accounting:modules/batches/tests/unit/actions/batch-actions.spec.js#offers a batch posting for half an hour nothing, and one stuck in posting for over an hour unpost; services-accounting:modules/batches/tests/e2e/batch-postings.e2e.spec.js#unposts a posted batch as a durable job: the batch is open again and its entries are deleted'
      - 'react-console:acceptance/accounting/playwright/journeys/batches-posting/ACT-ACC-0538.spec.ts#ACT-ACC-0538; services-accounting:modules/batches/tests/e2e/batch-postings.e2e.spec.js#unposts a posted batch as a durable job: the batch is open again and its entries are deleted'
      - 'services-accounting:modules/batches/tests/integration/services/jobs/submission-identity.integration.spec.js#answers a colleague''s retry under another key, after the posting finished, with the job that posted (DEF-ACT-0514); services-accounting:modules/batches/tests/integration/services/posting/unpost-deletes-entries.integration.spec.js#writes one fresh set when the batch is posted again, equal in size to the first'
      - 'services-accounting:modules/batches/tests/integration/services/posting/unpost-deletes-entries.integration.spec.js#deletes the batch’s entries and their lines, and tells how many entries; services-accounting:modules/batches/tests/integration/services/posting/unpost-deletes-entries.integration.spec.js#is the only way to delete a ledger row: the application role is refused a direct delete'
      - 'services-accounting:modules/batches/tests/integration/services/posting/unpost-deletes-entries.integration.spec.js#deletes the batch’s entries and their lines, and tells how many entries; services-accounting:modules/batches/tests/integration/services/persistence/subledger-entries.queries.integration.spec.js#lists no entry when history is asked for either: nothing is written as a reversal'
      - 'services-accounting:modules/batches/tests/integration/services/close/posting-period-guard.integration.spec.js#refuses the batch action `unpost` (`period_not_open`), submitting no job; react-console:acceptance/accounting/playwright/journeys/batches-posting/ACT-ACC-0528.spec.ts#ACT-ACC-0528'
    coverage_categories:
      - transition
      - permission
      - boundary
    unbound_scenarios:
      - ATS-ACC-BAT-016-08
      - ATS-ACC-BAT-016-09
      - ATS-ACC-BAT-016-10
      - ATS-ACC-BAT-016-11
      - ATS-ACC-BAT-016-12
      - ATS-ACC-BAT-016-13
      - ATS-ACC-BAT-016-14
  - id: FND-ACC-BAT-071
    severity: medium
    statement: 'Concurrent duplicate inserts, minimum-line and minor-unit validation boundaries, reversal uniqueness across generations and guarded-purge failure need focused proof. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence.'
    affects:
      - ATS-ACC-BAT-017
      - CAP-ACC-BAT-017
    kind: coverage-gap
    provenance: unknown
    source:
      - 'rhythm-v2-docs:specs/accounting/batches/design/tests/ATS-ACC-BAT-017-keep-the-subledger-balanced-and-unchangeable.md'
      - 'services-accounting:modules/batches/tests/integration/services/posting/rebuilt-documents.integration.spec.js#traces every line of every entry to a line of a document in the batch; services-accounting:modules/batches/tests/integration/services/persistence/subledger-entries.integration.spec.js#refuses an entry whose debits and credits differ, at commit, by the balance constraint'
      - 'services-accounting:modules/batches/tests/integration/services/posting/unpost-deletes-entries.integration.spec.js#deletes the batch’s entries and their lines, and tells how many entries; services-accounting:modules/batches/tests/integration/services/posting/unpost-deletes-entries.integration.spec.js#is the only way to delete a ledger row: the application role is refused a direct delete'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/subledger-entries.integration.spec.js#cannot be updated even by the table owner: the append-only trigger refuses it, naming the table; services-accounting:modules/batches/tests/e2e/subledger-entries.e2e.spec.js#names the number of the document each entry posts, never its id (DEF-ACT-0531)'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/subledger-entries.integration.spec.js#refuses a second entry of the same transaction in the same posting, by the no-duplicates key'
    coverage_categories:
      - edge
      - failure
    unbound_scenarios:
      - ATS-ACC-BAT-017-07
      - ATS-ACC-BAT-017-08
      - ATS-ACC-BAT-017-09
      - ATS-ACC-BAT-017-10
  - id: FND-ACC-BAT-072
    severity: medium
    statement: 'Dataset permission evaluation, concurrent recovery during reads, query failure and exact console loading caps require focused proof. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence.'
    affects:
      - ATS-ACC-BAT-018
      - CAP-ACC-BAT-018
    kind: coverage-gap
    provenance: unknown
    source:
      - 'rhythm-v2-docs:specs/accounting/batches/design/tests/ATS-ACC-BAT-018-read-the-subledger-by-batch-document-account-and-date.md'
      - 'services-accounting:modules/batches/tests/integration/services/posting/unpost-deletes-entries.integration.spec.js#deletes the batch’s entries and their lines, and tells how many entries; services-accounting:modules/batches/tests/integration/services/persistence/subledger-entries.queries.integration.spec.js#lists no entry when history is asked for either: nothing is written as a reversal'
      - 'services-accounting:modules/batches/tests/integration/services/persistence/subledger-entries.integration.spec.js#cannot be updated even by the table owner: the append-only trigger refuses it, naming the table; services-accounting:modules/batches/tests/e2e/subledger-entries.e2e.spec.js#names the number of the document each entry posts, never its id (DEF-ACT-0531)'
      - 'services-accounting:modules/batches/tests/e2e/subledger-entries.e2e.spec.js#refuses from_date=2026-13-01 with a 400 naming the date, not a 500 (DEF-ACT-0507)'
    coverage_categories:
      - permission
      - edge
      - failure
      - concurrency
    unbound_scenarios:
      - ATS-ACC-BAT-018-07
      - ATS-ACC-BAT-018-08
      - ATS-ACC-BAT-018-09
  - id: FND-ACC-BAT-073
    severity: medium
    statement: 'Earlier-date clamping, empty-weight fallback, exact sixty-month limits, read and dataset authorization, schedule lifecycle retirement and concurrent recognition remain unproved. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence.'
    affects:
      - ATS-ACC-BAT-019
      - CAP-ACC-BAT-019
    kind: coverage-gap
    provenance: unknown
    source:
      - 'rhythm-v2-docs:specs/accounting/batches/design/tests/ATS-ACC-BAT-019-schedule-deferred-revenue-when-a-line-posts.md'
      - 'services-accounting:modules/batches/services/rules/deferral-rules.ts:calculateRevenueRecognitionPeriod'
      - FND-ACC-BAT-029
      - 'services-accounting:modules/batches/services/rules/revenue-schedule-rules.ts:generateInvoiceSchedules; services-accounting:modules/batches/services/rules/revenue-schedule-rules.ts:generatePaymentSchedules'
      - 'services-accounting:modules/batches/tests/e2e/batch-postings.e2e.spec.js#posts a batch as a durable job: the answer is the job, and the job posts the batch; services-accounting:modules/batches/tests/integration/services/posting/rebuilt-deferral.integration.spec.js#writes H a schedule of three monthly entries on the firsts of October, November and December, summing to 300.00'
      - 'services-accounting:modules/batches/tests/integration/services/posting/memo-split-by-schedule.integration.spec.js#posts the credit memo of 60.00 as Cr receivable 6000, Dr deferred revenue 3000 and Dr revenue 3000; 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'
      - '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; services-accounting:modules/batches/tests/integration/services/close/revenue-recognition.integration.spec.js#un-recognizes A''s and B''s September entries and opens both schedules again'
      - 'services-accounting:modules/batches/tests/unit/rules/schedule-truncation.spec.js#refuses a service period of more than 60 months'
      - 'services-accounting:modules/batches/services/rules/revenue-schedule-rules.ts:truncationWeightsOf; services-accounting:modules/batches/services/rules/revenue-schedule-rules.ts:returnTruncatedRevenueRecognitionSchedule'
      - 'services-accounting:modules/batches/services/rules/posting-generation.ts'
      - 'services-accounting:modules/batches/tests/integration/services/posting/rebuilt-service-periods.integration.spec.js#answers A’s line with 240.00 still deferred across the invoice’s and the memo’s schedules, on the view and on the read; services-accounting:modules/batches/tests/integration/db/revenue-schedule-entries-view.integration.spec.js#sums the waterfall the recipe asks for: what is still deferred, by month and revenue account, the memo netted and V left out'
    coverage_categories:
      - transition
      - validation
      - permission
      - concurrency
    unbound_scenarios:
      - ATS-ACC-BAT-019-02
      - ATS-ACC-BAT-019-10
      - ATS-ACC-BAT-019-11
      - ATS-ACC-BAT-019-12
      - ATS-ACC-BAT-019-13
      - ATS-ACC-BAT-019-14
      - ATS-ACC-BAT-019-15
      - ATS-ACC-BAT-019-16
      - ATS-ACC-BAT-019-17
      - ATS-ACC-BAT-019-18
  - id: FND-ACC-BAT-074
    severity: medium
    statement: 'Concurrent fiscal requests, rollback at each recognition and system-posting seam, input precision boundaries and interactions with partly recognised ordinary recovery need focused proof. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence.'
    affects:
      - ATS-ACC-BAT-020
      - CAP-ACC-BAT-020
    kind: coverage-gap
    provenance: unknown
    source:
      - 'rhythm-v2-docs:specs/accounting/batches/design/tests/ATS-ACC-BAT-020-post-and-reverse-the-period-s-system-batches-for-the-fiscal.md'
      - 'services-accounting:modules/batches/tests/e2e/system-batches.e2e.spec.js#offers an administrator no action for the system batch; react-console:acceptance/accounting/playwright/journeys/batches-posting/ACT-ACC-0528.spec.ts#ACT-ACC-0528'
      - 'services-accounting:modules/batches/tests/integration/services/close/posting-period-guard.integration.spec.js#refuses the batch action `unpost` (`period_not_open`), submitting no job; react-console:acceptance/accounting/playwright/journeys/batches-posting/ACT-ACC-0528.spec.ts#ACT-ACC-0528'
      - '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; services-accounting:modules/batches/tests/integration/services/close/revenue-recognition.integration.spec.js#un-recognizes A''s and B''s September entries and opens both schedules again'
      - 'services-accounting:modules/batches/tests/integration/services/close/revenue-recognition.integration.spec.js#refuses recognition outside a transaction (`transaction-required`); services-accounting:modules/batches/tests/integration/services/close/reverse-system-batch.integration.spec.js#writes a reversing entry for each entry, debits and credits swapped, and keeps the originals'
    coverage_categories:
      - transition
      - boundary
      - concurrency
    unbound_scenarios:
      - ATS-ACC-BAT-020-08
      - ATS-ACC-BAT-020-09
      - ATS-ACC-BAT-020-10
      - ATS-ACC-BAT-020-11
  - id: FND-ACC-BAT-075
    severity: medium
    kind: inconsistency
    provenance: test
    source:
      - 'react-console:e2e/mock/accounting-batch-posting.mock.spec.ts#a posting that fails ends on the failure panel and leaves the batch closed'
      - 'react-console:e2e/mock/accounting-batches.mock.spec.ts#closing a batch asks for confirmation, records the history and offers Reopen and Post'
      - 'services-accounting:modules/batches/tests/integration/services/posting/rebuilt-posting-edges.integration.spec.js#one failing batch among several'
      - 'react-console:acceptance/accounting/playwright/journeys/batches-posting/ACT-ACC-0540.spec.ts#read-only controls'
    statement: 'Browser doubles retain Closed on a simulated missing-account failure and assert status history, while native generation uses Error and the service provides no ordinary status history. Earlier capability proof also describes disabled Edit Details with an explanation while the acceptance suite asserts that the action is absent. Mock outcomes and permissive browser assertions cannot qualify the narrower native accounting contract.'
    affects:
      - ATS-ACC-BAT-003-10
      - ATS-ACC-BAT-013
      - FND-ACC-BAT-010
      - FND-ACC-BAT-045
  - id: FND-ACC-BAT-076
    severity: low
    kind: coverage-gap
    provenance: observed
    source: 'rhythm-v2-docs:tools/check-corpus.mjs#dated report recognition and general reference validation'
    statement: 'The current checker rejects the requested testing report filename. Its suite-specific check accepts feature scenario identifiers, but the earlier general reference check rejects those identifiers. The full fiscal feature binding and exact report filename remain pending a checker correction outside this job’s authorized file scope.'
    affects:
      - FAS-ACC-BAT-01
      - FAS-ACC-BAT-02
      - FAS-ACC-BAT-03
      - FAS-ACC-BAT-04
      - FAS-ACC-BAT-05
control_backfill_evidence:
  - finding: FND-ACC-BAT-055
    controls:
      - TC-PI-004
      - TC-AVL-004
    provenance: observed
    source: 'services-accounting:modules/batches/services/jobs/batch-posting-jobs.ts; rhythm-v2-docs:specs/accounting/batches/FINDINGS.md#FND-ACC-BAT-013'
---

# Batch management findings and decisions needed

## Findings

| id | severity | statement | affects | evidence | kind |
|---|---|---|---|---|---|
| `FND-ACC-BAT-001` | high | Ledger generation uses batch fiscal placement, while the recorded accounting-date decision describes document-based placement. The milestone walkthrough describes the built choice but has not received product acceptance. Andrew needs to reconcile the decision and implemented accounting result. | `BR-CAP-ACC-BAT-015-02`, `CAP-ACC-BAT-015`, `CON-ACC-BAT-004`, `JNY-ACC-BAT-001`, `OQ-ACC-BAT-001` | Structured evidence | inconsistency |
| `FND-ACC-BAT-002` | medium | The former module registration omitted posting records and several console configuration paths used by this layer. Registration now includes the examined batch records and screens so the source boundary matches the work being specified. | `MOD-ACC-BAT` | Structured evidence | inconsistency |
| `FND-ACC-BAT-003` | medium | The posting milestone has inconsistent progress labels and no completed plan. Its reversible build choices establish proposed behavior, while only explicitly recorded product rulings establish confirmed intent. | `MOD-ACC-BAT`, `CAP-ACC-BAT-013`, `CAP-ACC-BAT-015`, `CAP-ACC-BAT-016` | Structured evidence | inconsistency |
| `FND-ACC-BAT-004` | medium | Earlier inventory wording and table comments describe compensating ordinary unposting. The later reporting decision instead requires deleting ordinary entries while retaining posting history. Those earlier descriptions still need alignment with the replacement policy. | `CAP-ACC-BAT-016`, `CAP-ACC-BAT-017`, `BR-CAP-ACC-BAT-016-03` | Structured evidence | inconsistency |
| `FND-ACC-BAT-005` | medium | Automatic-close validation accepts timestamps in the past despite the earlier acceptance expectation of refusal. The schedule can therefore be created with an already-passed occurrence; delivery behavior at the imported scheduling boundary still needs focused proof. | `BR-CAP-ACC-BAT-005-07`, `CAP-ACC-BAT-005` | Structured evidence | defect |
| `FND-ACC-BAT-006` | low | The operational recurrence record still describes automatic posting as awaiting a decision. A later recorded decision and the implemented preparation path establish that rolling and automatic closing can request posting. | `CAP-ACC-BAT-005`, `CAP-ACC-BAT-010` | Structured evidence | inconsistency |
| `FND-ACC-BAT-007` | medium | The earlier acceptance material expects deactivation to close current intake. The implemented change disables scheduling and leaves the current batch available to assignment, so the expected lifecycle needs reconciliation. | `BR-CAP-ACC-BAT-009-07`, `CAP-ACC-BAT-009` | Structured evidence | inconsistency |
| `FND-ACC-BAT-008` | low | The empty-batch deletion option is accepted but does not change generation’s deletion choice. The product should either honor the option or remove it from the request contract. | `BR-CAP-ACC-BAT-013-12`, `CAP-ACC-BAT-013` | Structured evidence | undocumented |
| `FND-ACC-BAT-009` | medium | Earlier acceptance material says preview cannot find missing accounts. Generation preview and its integration evidence now report those configuration problems, so the older readiness descriptions are stale. | `CAP-ACC-BAT-012`, `BR-CAP-ACC-BAT-012-03` | Structured evidence | inconsistency |
| `FND-ACC-BAT-010` | medium | Several visible batch experiences lack service connections: status history, adding existing transactions and creating corrections are incomplete, while delivery and export lists return empty results. Submitted action reasons are not retained. The product should communicate those limits before staff depend on them. | `CAP-ACC-BAT-004`, `CAP-ACC-BAT-002`, `CON-ACC-BAT-001` | Structured evidence | undocumented |
| `FND-ACC-BAT-011` | medium | Cross-unit account resolution requires configured inter-unit account pairs. Storage and reading exist, but the registered implementation has no setup route, screen or seed for those pairs. Supported cross-unit sales therefore lack a complete configuration path. | `BR-CAP-ACC-BAT-014-11`, `CAP-ACC-BAT-014` | Structured evidence | debt |
| `FND-ACC-BAT-012` | low | Four explicitly declared permission keys have no requiring route: batch and recurring bulk access, and assignment create and bulk access. Additional keys generated by the imported catalogue helper cannot be established from this pinned module alone. | `MOD-ACC-BAT` | Structured evidence | debt |
| `FND-ACC-BAT-013` | medium | Job creation commits before workflow start. A failed start can leave submitted work without execution, including scheduled posting, and the registered module has no reconciler for that state. | `CAP-ACC-BAT-005`, `CAP-ACC-BAT-010`, `CAP-ACC-BAT-013` | Structured evidence | debt |
| `FND-ACC-BAT-014` | low | Reactivation can retire the collection retained during inactivity without requesting its posting. Rolling does request accounting work for its retired collection. The recorded open item leaves this difference for a product decision. | `CAP-ACC-BAT-009`, `OQ-ACC-BAT-002` | Structured evidence | undocumented |
| `FND-ACC-BAT-015` | medium | Taxed deferral can schedule the tax-inclusive line total while posting credits only tax-exclusive deferred revenue. That mismatch can release more than the deferred credit, and the acceptance records leave its accounting treatment undecided. | `BR-CAP-ACC-BAT-019-11`, `CAP-ACC-BAT-019`, `OQ-ACC-BAT-003` | Structured evidence | defect |
| `FND-ACC-BAT-016` | low | Earlier acceptance material treats description text as a production error directive. The current posting test demonstrates that the old marker behaves as ordinary description text. | `BR-CAP-ACC-BAT-013-15` | Structured evidence | inconsistency |
| `FND-ACC-BAT-017` | low | Live totals and posting statistics use different document-counting definitions. The migration record leaves their customer-facing interpretation for a product decision; the product should explain the difference or adopt one count. | `CAP-ACC-BAT-002`, `BR-CAP-ACC-BAT-013-11`, `OQ-ACC-BAT-004` | Structured evidence | inconsistency |
| `FND-ACC-BAT-018` | low | The action description omits Error from its posting summary even though retrying an errored batch is implemented and recorded in milestone history. The stale summary needs alignment with the supported action. | `BR-CAP-ACC-BAT-004-06`, `BR-CAP-ACC-BAT-013-05` | Structured evidence | inconsistency |
| `FND-ACC-BAT-019` | low | Earlier acceptance material expects immediately recognising scheduled dates before the batch date. Generation instead moves those dates to the batch date for subsequent fiscal recognition. | `BR-CAP-ACC-BAT-019-06` | Structured evidence | inconsistency |
| `FND-ACC-BAT-020` | low | Journey automation flags remain unset despite existing browser specifications and a recorded milestone run. This layer cites the specifications directly and does not treat the flags as evidence of whether automation exists. | `JNY-ACC-BAT-001`, `JNY-ACC-BAT-002`, `JNY-ACC-BAT-003`, `JNY-ACC-BAT-004`, `JNY-ACC-BAT-005` | Structured evidence | inconsistency |
| `FND-ACC-BAT-021` | low | Earlier inventory identifiers resemble the permanent identifiers allocated here but represent different groupings. Supersession references explicitly identify the inventory so readers can distinguish the two corpora. | `MOD-ACC-BAT` | Structured evidence | inconsistency |
| `FND-ACC-BAT-022` | medium | External ledger delivery and export have no implemented producer for the downloaded lifecycle, and the visible lists are placeholders. Their design decisions remain open; this planning layer records the gap without inventing a delivery capability. | `MOD-ACC-BAT`, `CON-ACC-BAT-001`, `OQ-ACC-BAT-005` | Structured evidence | debt |
| `FND-ACC-BAT-023` | low | Two separate recorded rulings share the same short decision label. Citations must include the owning record and context to distinguish posting-failure policy from ordinary-entry deletion policy. | `BR-CAP-ACC-BAT-013-09`, `BR-CAP-ACC-BAT-016-03` | Structured evidence | inconsistency |
| `FND-ACC-BAT-024` | low | Earlier acceptance material expects reopening to restore automatic close. Leaving Open clears that schedule, so reopening alone does not restore the former close time. | `CAP-ACC-BAT-005`, `BR-CAP-ACC-BAT-005-05` | Structured evidence | inconsistency |

| `FND-ACC-BAT-025` | medium | Preview holds a shared fiscal-period lock although its source header says it locks nothing. The rule now follows the executable read path. | `BR-CAP-ACC-BAT-012-06` | Structured evidence | inconsistency |
| `FND-ACC-BAT-026` | high | Preview does not apply the ordinary status or update-lock guards before marking candidates eligible. An archived or locked batch can therefore pass preview and fail the posting check. | `BR-CAP-ACC-BAT-012-03` | Structured evidence | defect |
| `FND-ACC-BAT-027` | high | The named Post action and posting engine accept different status sets. The engine additionally accepts verified batches and stale posting work and reads an environment override; the existing repost test does not prove that whole contract. | `BR-CAP-ACC-BAT-013-05` | Structured evidence | inconsistency |
| `FND-ACC-BAT-028` | medium | Period schedules use a line service period, but fixed-date and matching relative-date strategies run first. The draft overstated service-period precedence; the combined strategy contract still needs a proving scenario. | `BR-CAP-ACC-BAT-019-02` | Structured evidence | undocumented |
| `FND-ACC-BAT-029` | medium | The taxed-deferral browser test accepts either gross or net schedule totals. It cannot prove the exact gross result stated by the draft acceptance scenario, whose binding is removed; the code evidence remains. | `ATS-ACC-BAT-019-10`, `BR-CAP-ACC-BAT-019-11` | Structured evidence | debt |
| `FND-ACC-BAT-030` | medium | The batch entry reader stops after five thousand entries and computes its account summary from that partial result without returning a completeness flag. A larger posting needs an explicit incomplete-result treatment. | `CAP-ACC-BAT-018` | Structured evidence | debt |
| `FND-ACC-BAT-031` | medium | The shared administrator and reader actors describe product-catalogue permissions but batches reuse them for batch administration and inspection. This module cannot safely rewrite another module’s actor rows; their shared permission descriptions need reconciliation. | `ACT-ACC-006`, `ACT-ACC-007` | Structured evidence | inconsistency |
| `FND-ACC-BAT-032` | medium | The attention provider declares a bulk Post action, but no pinned console binding examined here proves grouping and execution by business unit. The planned action is not established console behavior. | `BR-CAP-ACC-BAT-008-07` | Structured evidence | debt |
| `FND-ACC-BAT-033` | medium | Coverage gaps remain for the Batches reporting permission and identifier display, recurring-list limit, earlier schedule-date adjustment, and Revenue Schedule Entries query permission. Existing dataset tests establish rows but do not establish permission evaluation. | `BR-CAP-ACC-BAT-002-08`, `BR-CAP-ACC-BAT-009-13`, `BR-CAP-ACC-BAT-019-06`, `BR-CAP-ACC-BAT-019-13` | Structured evidence | debt |
| `FND-ACC-BAT-034` | medium | When an effective date yields no truncation weights, the correction falls back to schedule inversion. No acceptance scenario yet proves that fallback across the posting path. | `BR-CAP-ACC-BAT-019-14` | Structured evidence | undocumented |
| `FND-ACC-BAT-035` | medium | The document date and immutable-money rule cites a product decision, not executable enforcement. The rule is retained as documented intent with no established enforcement layer; cross-document proof requires the Transactions scope. | `BR-CAP-ACC-BAT-007-09` | Structured evidence | debt |
| `FND-ACC-BAT-036` | low | Some illustrative and journey rows combine an API result with unproved console or follow-up behavior. Provenance must describe the whole claim; the examination narrows those rows where the cited test only proves the service result. | `MOD-ACC-BAT` | Structured evidence | debt |
| `FND-ACC-BAT-037` | high | Three carried test switches still change posting in production code: one forces cash accounting for every unit, one skips the check that each line's account belongs to the entry's unit, and one admits any batch status for posting. The migration plan expected a guard that forbids such switches. The product should remove them so no deployment setting can change an accounting result. | `CAP-ACC-BAT-015`, `CAP-ACC-BAT-017`, `BR-CAP-ACC-BAT-013-05`, `DOM-ACC-BAT-004`, `WF-ACC-BAT-005` | Structured evidence | defect |
| `FND-ACC-BAT-038` | medium | Native posting writes Posting and the final status in one transaction, so no other reader ever sees a batch in Posting; nothing native writes Verified or Downloaded. The waiting thresholds for a batch stuck in Posting therefore protect only migrated rows. The lifecycle should either retire those states or name the work that produces them. | `STATE-ACC-BAT-001`, `BR-CAP-ACC-BAT-003-04`, `BR-CAP-ACC-BAT-016-02`, `BR-CAP-ACC-BAT-004-06`, `FND-ACC-BAT-022` | Structured evidence | inconsistency |
| `FND-ACC-BAT-039` | medium | A posting job settles its steps after the posting transaction commits. If the task is lost between the commit and the settlement, settlement failures can trigger workflow recovery or failure handling without undoing accounting, so the job may be recorded as failed although the posting succeeded. Staff then see a failed job beside a posted batch. | `WF-ACC-BAT-005`, `WF-ACC-BAT-006`, `STATE-ACC-BAT-003`, `CAP-ACC-BAT-013` | Structured evidence | defect |
| `FND-ACC-BAT-040` | low | The job table description names job kinds and a four-step shape that the code no longer uses, and the console cites a design proposal that is absent at the pinned commit. Readers of either description get a wrong picture of the posting job. | `SVC-ACC-BAT-batches`, `STATE-ACC-BAT-003`, `SCR-ACC-BAT-003` | Structured evidence | inconsistency |
| `FND-ACC-BAT-041` | medium | The module contributes three datasets to the workspace data export: batches with their postings and inter-unit accounts, recurring and routing settings, and the subledger with its schedules. No capability in the planning layer covers that export, so its contents and consistency are specified only in code. | `MOD-ACC-BAT`, `SVC-ACC-BAT-batches`, `DOM-ACC-BAT-001`, `DOM-ACC-BAT-004` | Structured evidence | undocumented |
| `FND-ACC-BAT-042` | medium | Posting attention is published only where a deployment switch is on, and the pinned configuration turns it on in development and off in production. Until it is turned on, waiting batches raise no attention item and the hourly sweep does nothing, so the attention capability does not yet hold in production. | `CAP-ACC-BAT-008`, `AS-JNY-ACC-BAT-001-03`, `WF-ACC-BAT-001`, `WF-ACC-BAT-009`, `ADR-ACC-BAT-012` | Structured evidence | undocumented |
| `FND-ACC-BAT-043` | low | The Platform standards this design cites (persistence, indexing, jobs, queued work, record history and row-level security) were not readable in the design job. The design names them through the Accounting records that cite them, and this examination could not read those original standards either; compliance beyond the available Accounting records remains unknown. | `SVC-ACC-BAT-batches`, `RESP-ACC` | Structured evidence | debt |
| `FND-ACC-BAT-044` | low | The module performs no inference, but its charter does not yet say so in the one sentence the conventions require. The design job may not edit the charter, so the sentence waits for the next charter revision. | `MOD-ACC-BAT` | Structured evidence | undocumented |
| `FND-ACC-BAT-045` | medium | Batch edits, closes, reopenings, archiving and lock changes keep only the last modifier and time. Posting and unposting history survives in the posting and job records, but the console's status history has no source. The product should adopt record history for batches or remove the history tab. | `DOM-ACC-BAT-001`, `SCR-ACC-BAT-003`, `FND-ACC-BAT-010` | Structured evidence | debt |
| `FND-ACC-BAT-046` | medium | Unposting voids a posting's open schedules but leaves any entries already recognised, and their recognition entries in the system batch, untouched, while it deletes the deferred credit they released. If a later period can be closed while the batch's period is still open, the deferred revenue account is left debited with nothing to offset it. The rule needs either a guard against unposting a partly recognised schedule or a compensation that takes the recognition back. | `CAP-ACC-BAT-016`, `CAP-ACC-BAT-020`, `BR-CAP-ACC-BAT-016-05`, `STATE-ACC-BAT-005`, `WF-ACC-BAT-006` | Structured evidence | defect |

| `FND-ACC-BAT-047` | low | The requested design brief is absent from the checkout. Planning artifacts are marked draft or proposed, and the available planning examination does not establish blanket approval. Verification used the pinned planning corpus and its individual recorded decisions; Andrew must establish the intended approval baseline. | `SVC-ACC-BAT-batches`, `ADR-ACC-BAT-014` | Structured evidence | debt |
| `FND-ACC-BAT-048` | low | HTTP posting and unposting requests accept at most one hundred batches, while the internal job service and job-table constraint permit two hundred. The design now distinguishes the boundaries; the product limit and treatment of larger internal requests remain undecided. | `DOM-ACC-BAT-003`, `WF-ACC-BAT-005`, `ADR-ACC-BAT-002` | Structured evidence | inconsistency |
| `FND-ACC-BAT-049` | medium | First-batch planning refusals appear only in the save response and are not persisted. The console adapter omits that response field and the pause reason; the recurring editor renders neither, so administrators can save an active stream without seeing why it has no intake batch or why later rolling paused. The product should choose a visible recovery path. | `STATE-ACC-BAT-002`, `WF-ACC-BAT-004`, `SCR-ACC-BAT-005` | Structured evidence | defect |
| `FND-ACC-BAT-050` | medium | The console batch adapter stops after fifty pages of two hundred and calculates filtering, sorting and total from those loaded rows. Batch transaction tabs request at most five hundred rows. Neither boundary supplies a complete-result guarantee, which can hide newer batches or documents in large collections; the product should define partial-result indicators and paging. | `SCR-ACC-BAT-001`, `SCR-ACC-BAT-003` | Structured evidence | defect |
| `FND-ACC-BAT-051` | high | Unposting loads recorded dependents outside the requested batch set without explicit row locks and turns read rejection into an empty result. A successful read of a Posted or Downloaded dependent prevents unposting, but that protection is not established for failed reads or competing dependency changes. The product should require reliable dependent checks and prove the concurrent boundary before preparing implementation. | `INV-DOM-ACC-BAT-003-06`, `WF-ACC-BAT-006` | Structured evidence | defect |
| `FND-ACC-BAT-052` | high | The subledger export filters current rows by creation time and declares an exact historical cut-off. Ordinary unposting can delete entries after that cut-off, and recognition can change older schedule statuses. Creation-time filtering cannot recover the deleted entries or prior schedule state. Historical export semantics require either retained history or an explicitly current-state contract. | `DOM-ACC-BAT-004`, `SVC-ACC-BAT-batches`, `FND-ACC-BAT-041` | Structured evidence | inconsistency |

| `FND-ACC-BAT-053` | medium | Planning describes a database guarantee of one reversal per original entry. The declared duplicate key includes the posting generation, while the reversal-reference trigger checks only that the original exists in the same workspace. Those constraints do not establish uniqueness across generations. The design states the narrower constraint; Andrew must choose whether the broader invariant requires an additional database guard. Planning is unchanged. | `BR-CAP-ACC-BAT-017-06`, `INV-DOM-ACC-BAT-004-06` | Structured evidence | inconsistency |

| `FND-ACC-BAT-054` | medium | Planning describes removal of automatic-close configuration when a batch leaves Open. Ordinary mutation performs that cleanup, but direct posting copies the close time through its read and write mapping and saves outcomes without the schedule helper. Posting can therefore retain close configuration on a completed collection; a later scheduled close skips its non-Open state. The broader cleanup invariant needs a focused runtime proof or a common cleanup path. Planning is unchanged. | `BR-CAP-ACC-BAT-005-05`, `DOM-ACC-BAT-001`, `WF-ACC-BAT-001` | Structured evidence | inconsistency |

| `FND-ACC-BAT-055` | medium | Concurrent attempts for the same name, rollback after schedule creation, whitespace-only names, and the fiscal-calendar edges need focused proof. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence. | `ATS-ACC-BAT-001`, `CAP-ACC-BAT-001` | Structured testing evidence | coverage-gap |
| `FND-ACC-BAT-056` | medium | Dataset permission evaluation, exact page limits, read failures, and concurrent document changes during totals and dependency reads remain unproved. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence. | `ATS-ACC-BAT-002`, `CAP-ACC-BAT-002` | Structured testing evidence | coverage-gap |
| `FND-ACC-BAT-057` | medium | Edit failures after fiscal recalculation and exact five-minute posting thresholds remain unproved; optional-version omission also needs a focused comparison. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence. | `ATS-ACC-BAT-003`, `CAP-ACC-BAT-003` | Structured testing evidence | coverage-gap |
| `FND-ACC-BAT-058` | medium | Exact stuck-posting thresholds, concurrent actions, read-permission refusal, confirmation cancellation and failure during schedule or attention cleanup need focused proof. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence. | `ATS-ACC-BAT-004`, `CAP-ACC-BAT-004` | Structured testing evidence | coverage-gap |
| `FND-ACC-BAT-059` | medium | Create and update authorization for scheduling, past and date-only times, concurrent close and roll delivery, and refusal recovery need proof. Past-time rejection is proposed and contradicts current acceptance of past times. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence. | `ATS-ACC-BAT-005`, `CAP-ACC-BAT-005` | Structured testing evidence | coverage-gap |
| `FND-ACC-BAT-060` | medium | Deletion from every eligible stored state, deletion racing with intake or posting, attention cleanup and malformed-reference handling need focused proof. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence. | `ATS-ACC-BAT-006`, `CAP-ACC-BAT-006` | Structured testing evidence | coverage-gap |
| `FND-ACC-BAT-061` | medium | Batch-update authorization during reassignment, concurrent intake versus posting, and complete enforcement of immutable issued-document values require cross-module proof. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence. | `ATS-ACC-BAT-007`, `CAP-ACC-BAT-007` | Structured testing evidence | coverage-gap |
| `FND-ACC-BAT-062` | medium | Sweep page failure, publication races, allowance limits, item refresh after document changes and console bulk execution remain unproved as complete workflows. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence. | `ATS-ACC-BAT-008`, `CAP-ACC-BAT-008`, `BR-CAP-ACC-BAT-008-07` | Structured testing evidence | coverage-gap |
| `FND-ACC-BAT-063` | medium | Paused and inactive deletion, deactivation without losing intake, permission refusals for every read surface, exact list limits and renderer limits need proof. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence. | `ATS-ACC-BAT-009`, `CAP-ACC-BAT-009` | Structured testing evidence | coverage-gap |
| `FND-ACC-BAT-064` | medium | Concurrent distinct occurrences, inactive delivery, permission checks on preview and history, and all predecessor lock and state combinations need proof. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence. | `ATS-ACC-BAT-010`, `CAP-ACC-BAT-010` | Structured testing evidence | coverage-gap |
| `FND-ACC-BAT-065` | medium | Concurrent replacements, rollback during rule writes, vocabulary duplication and missing companion facts need focused proof; native order precedence remains a known binding gap. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence. | `ATS-ACC-BAT-011`, `CAP-ACC-BAT-011` | Structured testing evidence | coverage-gap |
| `FND-ACC-BAT-066` | medium | Exact selection boundaries, exception handling, candidate precedence, Error candidates and changes after preview need focused proof; preview cannot reserve later admission. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence. | `ATS-ACC-BAT-012`, `CAP-ACC-BAT-012` | Structured testing evidence | coverage-gap |
| `FND-ACC-BAT-067` | medium | All named-action and engine starting states, start failure leaving Pending, settlement failure after commit, request-unit mismatch and exact selection limits remain unproved. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence. | `ATS-ACC-BAT-013`, `CAP-ACC-BAT-013` | Structured testing evidence | coverage-gap |
| `FND-ACC-BAT-068` | medium | Cross-unit account pairs, concurrent configuration changes, account-resolution exception handling and immutable snapshot boundaries need focused proof. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence. | `ATS-ACC-BAT-014`, `CAP-ACC-BAT-014` | Structured testing evidence | coverage-gap |
| `FND-ACC-BAT-069` | medium | Engine exception paths, concurrent source-document changes, stored-rate absence and residual boundaries need proof across the relevant generation kinds. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence. | `ATS-ACC-BAT-015`, `CAP-ACC-BAT-015` | Structured testing evidence | coverage-gap |
| `FND-ACC-BAT-070` | medium | All recovery starting states, concurrent dependent updates or failed dependent reads, recognised-schedule recovery and exact one-hour admission require focused proof. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence. | `ATS-ACC-BAT-016`, `CAP-ACC-BAT-016` | Structured testing evidence | coverage-gap |
| `FND-ACC-BAT-071` | medium | Concurrent duplicate inserts, minimum-line and minor-unit validation boundaries, reversal uniqueness across generations and guarded-purge failure need focused proof. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence. | `ATS-ACC-BAT-017`, `CAP-ACC-BAT-017` | Structured testing evidence | coverage-gap |
| `FND-ACC-BAT-072` | medium | Dataset permission evaluation, concurrent recovery during reads, query failure and exact console loading caps require focused proof. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence. | `ATS-ACC-BAT-018`, `CAP-ACC-BAT-018` | Structured testing evidence | coverage-gap |
| `FND-ACC-BAT-073` | medium | Earlier-date clamping, empty-weight fallback, exact sixty-month limits, read and dataset authorization, schedule lifecycle retirement and concurrent recognition remain unproved. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence. | `ATS-ACC-BAT-019`, `CAP-ACC-BAT-019` | Structured testing evidence | coverage-gap |
| `FND-ACC-BAT-074` | medium | Concurrent fiscal requests, rollback at each recognition and system-posting seam, input precision boundaries and interactions with partly recognised ordinary recovery need focused proof. Complete guards and side effects for the listed transitions and permissions remain unverified. Proposed scenarios supply a specification but do not supply executable or run evidence. | `ATS-ACC-BAT-020`, `CAP-ACC-BAT-020` | Structured testing evidence | coverage-gap |
| `FND-ACC-BAT-075` | medium | Browser doubles retain Closed on a simulated missing-account failure and assert status history, while native generation uses Error and the service provides no ordinary status history. Earlier capability proof also describes disabled Edit Details with an explanation while the acceptance suite asserts that the action is absent. Mock outcomes and permissive browser assertions cannot qualify the narrower native accounting contract. | `ATS-ACC-BAT-003-10`, `ATS-ACC-BAT-013`, `FND-ACC-BAT-010`, `FND-ACC-BAT-045` | Structured testing evidence | inconsistency |
| `FND-ACC-BAT-076` | low | The current checker rejects the requested testing report filename. Its suite-specific check accepts feature scenario identifiers, but the earlier general reference check rejects those identifiers. The full fiscal feature binding and exact report filename remain pending a checker correction outside this job’s authorized file scope. | `FAS-ACC-BAT-01`, `FAS-ACC-BAT-02`, `FAS-ACC-BAT-03`, `FAS-ACC-BAT-04`, `FAS-ACC-BAT-05` | Structured testing evidence | coverage-gap |

## Open Questions

| id | question | why_it_matters | options | recommendation | affects |
|---|---|---|---|---|---|
| `OQ-ACC-BAT-001` | Should entry accounting placement follow the collection date or each document date? | Late and backdated documents can change which period carries revenue, receivables and cash. | Keep batch placement, or introduce document placement with checks across every affected period. | The product should retain batch placement and explicitly amend the earlier decision after Andrew confirms the accounting policy. | `CAP-ACC-BAT-015`, `CAP-ACC-BAT-001`, `FND-ACC-BAT-001` |
| `OQ-ACC-BAT-002` | Should reactivation submit posting for the collection it retires? | Reactivation currently leaves follow-up accounting to staff while rolling requests it automatically. | Submit accounting work after retirement, or deliberately keep a manual posting step. | The product should use the same retirement-to-posting policy for reactivation and rolling, subject to Andrew’s decision. | `CAP-ACC-BAT-009`, `CAP-ACC-BAT-010`, `FND-ACC-BAT-014` |
| `OQ-ACC-BAT-003` | Should recognition schedules exclude tax from their originating total? | The schedule and deferred credit currently differ for taxed lines. | Use the tax-exclusive amount, or retain a tax-inclusive schedule with an explicitly supported accounting treatment. | The product should align scheduled revenue with the deferred credit by excluding tax, after accounting review. | `CAP-ACC-BAT-019`, `FND-ACC-BAT-015` |
| `OQ-ACC-BAT-004` | Should live and recorded transaction counts share a definition? | A count change after posting makes reconciliation difficult to interpret. | Use one definition throughout, or display separately named collection and posting counts. | The product should adopt a consistent count and explicitly decide how pending payments and refunds contribute. | `CAP-ACC-BAT-002`, `CAP-ACC-BAT-013`, `FND-ACC-BAT-017` |
| `OQ-ACC-BAT-005` | How should incomplete external-ledger features appear before delivery is built? | Empty placeholders and an unused state suggest an available workflow. | Hide incomplete delivery experiences, or clearly present their planned status. | The product should hide incomplete controls and resolve delivery policy before implementation. | `MOD-ACC-BAT`, `FND-ACC-BAT-022`, `FND-ACC-BAT-010` |
| `OQ-ACC-BAT-006` | Must whole-record replacements of recurring streams and routing settings carry every replaceable value, as CRM records must? | A replacement that omits a value silently clears it today, and administrators edit both records from configuration screens that resend what they read. | Adopt the complete-payload rule for both replacements, or keep omission as clearing and document it. | The product should adopt the complete-payload rule for both, matching the rule Andrew chose for CRM records. | `CAP-ACC-BAT-009`, `CAP-ACC-BAT-011`, `ADR-ACC-BAT-011`, `SVC-ACC-BAT-batches` |
