Commit Graph

4 Commits

Author SHA1 Message Date
spiro-alvin-nyasimi
d8048c1591 Guard status transitions and close off stale pending payments
- StatusCatalog gains an Unresolved state and a PRECEDENCE order
  (Pending -> Unresolved -> Failed -> Success -> Paid); canTransition only
  allows moves up it, so a callback and a status query racing each other
  cannot make the status flap. A refused transition still stores the row.
- PaymentInitiation carries a @Version optimistic lock; callback and query
  paths go through blockingWithRetry, which replays the losing unit of work
  once instead of dropping it.
- Reconciliation runs two passes per tick, stale first: anything Pending past
  payments.reconciliation.stale-age (3h) is marked Unresolved with
  resolvedBy = EXPIRY, then anything past pending-age (now 3m) is re-queried.
- Explicit lowercase @Table names on the entities that were relying on
  derived naming.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-24 16:21:49 +03:00
spiro-alvin-nyasimi
cd186868fa Updates 2026-08-17 16:20:13 +03:00
spiro-alvin-nyasimi
c6a6755b08 Updates 2026-07-27 10:27:58 +03:00
spiro-alvin-nyasimi
e9d216be78 Updates and payments additions 2026-07-02 16:45:48 +03:00