saveTransaction does this.transactions.unshift(tx) with no cap. In a long-lived dev server or any deployment that keeps a Node process warm across many requests, this array grows without bound — this is exactly the kind of latent bug that's invisible in fixture-scale testing (MOCK_TRANSACTIONS_COMPACT seeds a small fixed set) and only surfaces under load. Not urgent to fix in mock-db.ts itself (it should be replaced by real persistence per the auth/custody issues above) but worth a guard rail plus an explicit test proving the growth-without-bound behavior, so whoever replaces this with a real DB has a written spec for pagination/retention.
Definition of done:
- Test demonstrating unbounded growth under repeated
saveTransaction calls (documents the bug concretely)
- A written retention/pagination policy for the real datastore that replaces this
Before opening a PR for this issue, read CONTRIBUTING.md.
This is not a starter-issue. The Definition of done above is the full
acceptance criteria, not a subset to sample from — a PR that addresses part
of it is an unfinished issue, not a smaller one. Your PR must include, in
the PR description itself:
PRs missing these will be sent back before review, not reviewed and rejected — please do this up front.
saveTransactiondoesthis.transactions.unshift(tx)with no cap. In a long-lived dev server or any deployment that keeps a Node process warm across many requests, this array grows without bound — this is exactly the kind of latent bug that's invisible in fixture-scale testing (MOCK_TRANSACTIONS_COMPACTseeds a small fixed set) and only surfaces under load. Not urgent to fix in mock-db.ts itself (it should be replaced by real persistence per the auth/custody issues above) but worth a guard rail plus an explicit test proving the growth-without-bound behavior, so whoever replaces this with a real DB has a written spec for pagination/retention.Definition of done:
saveTransactioncalls (documents the bug concretely)Before opening a PR for this issue, read CONTRIBUTING.md.
This is not a starter-issue. The Definition of done above is the full
acceptance criteria, not a subset to sample from — a PR that addresses part
of it is an unfinished issue, not a smaller one. Your PR must include, in
the PR description itself:
PRs missing these will be sent back before review, not reviewed and rejected — please do this up front.