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
2026-07-03 11:18:10 +03:00
2026-08-17 16:20:13 +03:00
2025-10-10 12:56:49 +03:00
2025-10-10 12:56:49 +03:00
2025-10-10 12:56:49 +03:00
2025-10-10 12:56:49 +03:00
Description
No description provided
558 KiB
Languages
Java 100%