Skip to content

ATS-ACC-REC-020Separate duties and retain trustworthy reconciliation records: Capability Test Specification

Markdown

ATS-ACC-REC-020

Separate duties and retain trustworthy reconciliation records: Capability Test Specification

Markdown
  • DocumentProposed

KindAcceptance test setProduct areaAccountingModuleReconciliationRevision3

Read atservices-accounting f47cb263react-console baf6dae3

Coverage

  • Validation covered
  • Permission covered
  • Edge covered
  • Failure covered
  • Boundary covered
  • Invariant covered
  • Interaction covered
  • Rule gap: FND-ACC-REC-065
  • Transition gap: FND-ACC-REC-065
  • Concurrency gap: FND-ACC-REC-065

Test Scenarios

14 scenarios proving CAP-ACC-REC-020; 8 bound to an existing test.

01 Permission count and sensitivity tierspermissionunittest
Proves
BR-CAP-ACC-REC-020-01
Preconditions
The published permission catalogue is loaded.
Steps
Inspect reconciliation keys and their tier or sensitivity.
Expected
Sixteen keys divide into read, ordinary user changes and sensitive administrator approvals without bulk.
Data
No additional fixture beyond the case setup.
Bound to
services-accounting:tests/unit/reconciliation-permissions.spec.ts#publishes exactly the reconciliation keys of the architecture, no bulk among them
services-accounting:tests/unit/reconciliation-permissions.spec.ts#makes each read tier read, so the Read Only policy carries it
services-accounting:tests/unit/reconciliation-permissions.spec.ts#makes the ordinary writes tier user: reconciliation’s records are records, not configuration
services-accounting:tests/unit/reconciliation-permissions.spec.ts#makes every approval tier admin and sensitive
Source
services-accounting:tests/unit/reconciliation-permissions.spec.ts#publishes exactly the reconciliation keys of the architecture, no bulk among them
02 Declared duty-separation policiespermissionunittest
Proves
BR-CAP-ACC-REC-020-02
Preconditions
The two reconciliation policies are published.
Steps
Compare their applications and allowed keys.
Expected
Preparer grants ordinary work only; approver adds exactly four approvals and both belong to Accounting.
Data
No additional fixture beyond the case setup.
Bound to
services-accounting:tests/unit/reconciliation-permissions.spec.ts#lets the preparer record payouts and prepare reconciliations, and approve nothing
services-accounting:tests/unit/reconciliation-permissions.spec.ts#lets the approver do what the preparer does and the four approvals
services-accounting:tests/unit/reconciliation-permissions.spec.ts#files both policies under the accounting application
Source
services-accounting:tests/unit/reconciliation-permissions.spec.ts#lets the preparer record payouts and prepare reconciliations, and approve nothing
03 Role grants span unitspermissionapinegativetest
Proves
BR-CAP-ACC-REC-020-03 BR-CAP-ACC-REC-020-08 AS-JNY-ACC-REC-006-01 AS-JNY-ACC-REC-006-03
Preconditions
Per-run preparer, approver, reader and access-only roles are assigned.
Steps
Exercise commands under those roles in two units.
Expected
Grants follow roles rather than unit boundaries, and application access alone gives no record reads.
Data
Provide Per-run people for this case.
Bound to
services-accounting:modules/reconciliation/tests/e2e/reconciliation-lists.e2e.spec.js#refuses a principal denied accounting.application.access with 403
Source
react-console:acceptance/accounting/playwright/journeys/reconciliation-close/ACT-ACC-0608.spec.ts#ACT-ACC-0608
04 Keyed commands distinguish body and callervalidationapinegativetest
Proves
BR-CAP-ACC-REC-020-04 AS-JNY-ACC-REC-006-02
Preconditions
Money operations have recorded request keys.
Steps
Repeat, alter the body and use the same key as another caller.
Expected
Unchanged requests replay, changed bodies fail and the colleague’s request has a separate scope.
Data
Provide Two people for this case.
Bound to
services-accounting:modules/reconciliation/tests/integration/db/idempotency-ledger-converge.integration.spec.js#carries every row over as a completion: the actor its principal, the answer its 200 body, the creation its completion
Source
react-console:acceptance/accounting/playwright/journeys/reconciliation-close/ACT-ACC-0609.spec.ts#ACT-ACC-0609
05 Committed immutable activityinvariantapinegativetest
Proves
BR-CAP-ACC-REC-020-05
Preconditions
Commands include successes, refusals and transaction rollback.
Steps
Read recorded events, exceed detail capacity and try history mutation.
Expected
Committed events retain actor and time, invalid detail and mutation fail and rollback leaves no event.
Data
No additional fixture beyond the case setup.
Bound to
services-accounting:modules/reconciliation/tests/integration/db/reconciliation-events.table.integration.spec.js#refuses the owner a DELETE outside a tenant purge, by the append-only trigger (RHF32)
Source
services-accounting:modules/reconciliation/tests/integration/services/persistence/reconciliation-events.integration.spec.js#answers the event as stored, its actor the caller and its time the clock’s
06 Refusal codes are stablefailureapinegativetest
Proves
BR-CAP-ACC-REC-020-06
Preconditions
Requests exercise validation, missing records, stale versions and malformed cursor paths.
Steps
Submit each refusal case.
Expected
Each response carries its defined machine code independently of wording.
Data
No additional fixture beyond the case setup.
Bound to
services-accounting:modules/reconciliation/tests/e2e/refusal-codes.e2e.spec.js#answers a payout edit whose body breaks its schema 400 validation_failed
services-accounting:modules/reconciliation/tests/e2e/refusal-codes.e2e.spec.js#answers a payout edit at a version already moved on 409 stale_version
services-accounting:modules/reconciliation/tests/e2e/refusal-codes.e2e.spec.js#answers a cursor the list did not answer 400 invalid_request
services-accounting:modules/reconciliation/tests/unit/rules/refusal-codes.spec.js#names a state refusal without a refusal word illegal_operation
Source
services-accounting:modules/reconciliation/tests/e2e/refusal-codes.e2e.spec.js#answers a payout edit whose body breaks its schema 400 validation_failed
07 Cross-workspace isolationboundaryapinegativetest
Proves
BR-CAP-ACC-REC-020-07
Preconditions
Two workspaces have reconciliation records.
Steps
Attempt reads and writes across their boundary.
Expected
Other-workspace rows remain invisible and writes fail.
Data
Provide records in each of the two isolated workspaces.
Bound to
Source
services-accounting:modules/reconciliation/tests/integration/db/payouts.table.integration.spec.js#hides them from another tenant
08 Exact arithmetic and currency formattingboundaryunitnegativetest
Proves
BR-CAP-ACC-REC-020-09
Preconditions
Amounts include safe-range boundaries and different currency exponents.
Steps
Add, total and render amounts.
Expected
Arithmetic stays exact, overflow or fractions fail and formatting uses the exponent.
Data
No additional fixture beyond the case setup.
Bound to
Source
services-accounting:modules/reconciliation/tests/unit/rules/money.spec.js#refuses a sum past the safe-integer range
09 Product waiver command remains proposedpermissionapiproposed
Proves
BR-CAP-ACC-REC-020-10
Preconditions
An administrator needs to waive second-person enforcement.
Steps
Change that setting through a product operation and finalize as preparer.
Expected
The product should audit the policy change and mark finalization waived; no current operation supplies this proof.
Data
Provide Accounting settings for this case.
Source
FND-ACC-REC-004
10 Export reference versus copied evidenceedgeapinegativeproposed
Proves
BR-CAP-ACC-REC-020-13
Preconditions
A payout has a stored evidence asset reference.
Steps
Export records and inspect the referenced document in the package.
Expected
The reference survives, while actual file inclusion requires independent proof.
Data
Provide Isolated records for the cases described for this case.
Source
services-accounting:modules/reconciliation/export/reconciliation.dataset.ts
11 Contribution changes approval eligibilityinteractionapiproposed
Proves
BR-CAP-ACC-REC-020-02 BR-CAP-ACC-REC-011-03 BR-CAP-ACC-REC-011-04
Preconditions
Use one isolated workspace with the financial records and caller roles required by the relied-on cases.
Steps
[ { "do": "Have a second person add a manual entry, then try approval by that person and by an uninvolved third person.", "expect": "Only the uninvolved authorized approver completes approval under the default separation setting.", "provenance": "proposed", "source": [ "specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-020-keep-preparing-apart-from-approving-and-leave-a-trail-of.md", "specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-011-approve-a-balanced-reconciliation-and-move-the-deposit-to.md" ] } ]
Expected
Only the uninvolved authorized approver completes approval under the default separation setting.
Data
Local merchant and bank accounts, an open operational batch and distinct preparation and approval callers.
Source
specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-020-keep-preparing-apart-from-approving-and-leave-a-trail-of.md,specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-011-approve-a-balanced-reconciliation-and-move-the-deposit-to.md
12 Reversal retains separate approval actorsinteractionapiproposed
Proves
BR-CAP-ACC-REC-020-05 BR-CAP-ACC-REC-013-04 BR-CAP-ACC-REC-013-05 BR-CAP-ACC-REC-013-06
Preconditions
Use one isolated workspace with the financial records and caller roles required by the relied-on cases.
Steps
[ { "do": "Request closed-period reversal, try requester approval and complete as another authorized person.", "expect": "The self-approval fails and completion retains separate requester and approver.", "provenance": "proposed", "source": [ "specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-020-keep-preparing-apart-from-approving-and-leave-a-trail-of.md", "specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-013-correct-a-finalized-reconciliation-by-reversing-it-and.md" ] } ]
Expected
The self-approval fails and completion retains separate requester and approver.
Data
Local merchant and bank accounts, an open operational batch and distinct preparation and approval callers.
Source
specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-020-keep-preparing-apart-from-approving-and-leave-a-trail-of.md,specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-013-correct-a-finalized-reconciliation-by-reversing-it-and.md
13 Acceptance derives the acting approverinteractionapiproposed
Proves
BR-CAP-ACC-REC-020-02 BR-CAP-ACC-REC-016-03 BR-CAP-ACC-REC-016-04
Preconditions
Use one isolated workspace with the financial records and caller roles required by the relied-on cases.
Steps
[ { "do": "Request acceptance, try supplying an approval identity and approve as a second authorized person.", "expect": "Supplied identity fails and completion names the actual requester and approver.", "provenance": "proposed", "source": [ "specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-020-keep-preparing-apart-from-approving-and-leave-a-trail-of.md", "specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-016-accept-a-problem-under-policy-with-a-second-persons-approval.md" ] } ]
Expected
Supplied identity fails and completion names the actual requester and approver.
Data
Local merchant and bank accounts, an open operational batch and distinct preparation and approval callers.
Source
specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-020-keep-preparing-apart-from-approving-and-leave-a-trail-of.md,specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-016-accept-a-problem-under-policy-with-a-second-persons-approval.md
14 Acceptance history keeps guarded refusalsinteractionapinegativeproposed
Proves
BR-CAP-ACC-REC-020-05 BR-CAP-ACC-REC-016-09 BR-CAP-ACC-REC-016-10
Preconditions
Use one isolated workspace with the financial records and caller roles required by the relied-on cases.
Steps
[ { "do": "Request acceptance, try self-approval, approve independently and inspect history.", "expect": "Refusal and completion retain their actual actors without allowing requester approval.", "provenance": "proposed", "source": [ "specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-020-keep-preparing-apart-from-approving-and-leave-a-trail-of.md", "specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-016-accept-a-problem-under-policy-with-a-second-persons-approval.md" ] } ]
Expected
Refusal and completion retain their actual actors without allowing requester approval.
Data
Local merchant and bank accounts, an open operational batch and distinct preparation and approval callers.
Source
specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-020-keep-preparing-apart-from-approving-and-leave-a-trail-of.md,specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-016-accept-a-problem-under-policy-with-a-second-persons-approval.md

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