---
id: TST-ACC-TRX-141
title: Lost answer rules suite
kind: unit
product_area: accounting
module: transactions
revision: 1
status: draft
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
repository: services-accounting
files:
  - modules/transactions/tests/unit/lost-answer-rules.spec.js
implements: []
implements_parts: []
environment: local
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 1
isolation: In-memory fixtures and test-controlled collaborators.
provenance: test
source: 'services-accounting:modules/transactions/tests/unit/lost-answer-rules.spec.js'
evidence:
  - provenance: test
    source: >-
      services-accounting:modules/transactions/tests/unit/lost-answer-rules.spec.js
    assertion_titles:
      - the lost-answer rules
      - the lookup schedule setting
      - is named ACCOUNTING_LOST_ANSWER_LOOKUP_SCHEDULE
      - 'is the reconciler’s 30s, 2m, 10m, 1h, 6h in production and by default'
      - 'is 30s, 60s, 90s in development'
      - 'parses seconds, minutes and hours, with spaces around the steps'
      - >-
        falls back to the default for an empty value, a step without a unit, a
        zero, a fraction, a word and too many steps
      - lookupStepOf
      - >-
        puts the production lookups at 30 s, 2:30, 12:30, 1:12:30 and 7:12:30
        after the claim
      - >-
        puts the development lookups at 30, 90 and 180 seconds, the last
        deciding
      - >-
        is not due before the next step even when a later one has long passed
        for another record
      - 'stays last past the last lookup, so a late pass invents no further step'
      - 'has one lookup, the last, for a one-step schedule'
      - >-
        what a not_found settles (Dummy 0.2.2: a reference lookup is decoded
        from the reference on an instance that never saw it)
      - 'never settles a charge looked up by key, however old'
      - >-
        settles a charge looked up by reference only from the grace, the
        schedule’s first wait
      - takes the grace from the development schedule too
      - 'never settles a refund, by key or by reference'
      - >-
        never settles a void, by key or by reference (it answers not_found on
        every instance but the one that voided it)
      - 'is the table refunds.md prints, one row per operation'
      - the sweeper’s pass cadence
      - is one pass a minute by default and at 60
      - 'is a pass every 30 seconds, two per invocation, in development'
      - is one pass for a value that is not a whole number from 10 to 60
    imports:
      - 'const { expect } = require(''chai'');'
      - '} = require(''../../services/payments/lost-answer-rules'');'
      - '} = require(''../../services/payments/intent-sweeper-cadence'');'
    test_double_declarations: []
---

# Lost answer rules suite

## Verification Boundary

The suite exercises financial calculations and input contracts in an isolated test process. Registration records the existing executable file; it does not report a run or establish product approval.

## What This Suite Proves

The executable assertions exercise this module, but no capability or feature scenario binding is established for this file. Its individual assertion titles remain in the evidence register for subsequent mapping.

## What It Does Not Prove

Pure calculations and doubled collaborators do not establish database persistence, route authorization or deployed behavior. An unbound feature chain remains proposed, and this registration carries no execution result.

## Real Dependencies and Test Doubles

The imported calculation or contract runs with the fixtures and collaborators declared by the test. The evidence register retains those declarations so the boundaries can be inspected.

## Must Not Be Doubled

The calculation or contract being asserted must remain real; replacing it with a predetermined result removes this suite’s evidence.
