Staking 6.2.1

26 August 2026

This release has upgrade notes. Read them before updating — they describe behaviour changes that need your attention.

POSITIONSWITHDRAWALSMOBILELICENSING

Staking v6.2.1

Release Date: August 26, 2026 Tags: POSITIONS, WITHDRAWALS, MOBILE, LICENSING

Overview

A position waiting on a withdrawal approval could be locked forever. The maturity job only ever scanned positions marked ACTIVE, and the staker's own withdraw door refused anything that was not ACTIVE — so a position in PENDING_WITHDRAWAL had exactly one way out, an admin pressing a button. When nobody pressed it, the row stopped existing as far as the software was concerned: its end date came and went, the term it was written for ended, and the only door the staker could reach answered "a withdrawal request is already in progress".

The rule deciding that lived in two places — a database query and an in-transaction guard — and agreed by accident. It is now one rule in one place, and the maturity job scans both statuses.

The app is also no longer sent an advertised APR or APY. What a position has actually earned is untouched. Requires Core v6.7.2.

Update Instructions

pnpm updator

Restart the backend. There is no database change and nothing to run.


Upgrade Notes

If you publish a mobile app, early exits stop queueing for approval

  • This branch is keyed on the This platform ships a mobile app switch, which ships off. An install that leaves it off is unaffected and keeps exactly its current behaviour, approval queue included.
  • The switch is edited on the AI Market Maker's settings screen (Settings → Trading → Status), which is the only editor for it. Without that add-on installed the setting simply does not exist, and an absent setting reads as off — so nothing here changes for you.
  • With the app switched on, an early exit settles on the customer's own instruction whatever stakingRequireWithdrawalApproval says. A control the customer can press that then waits indefinitely on an operator is not a control they have.
  • Positions already sitting in the approval queue when you switch the app on are settled too, and priced from the date they asked rather than from today — they should not be billed for the interval you spent not answering. The early exit fee is still charged.
  • The mature case is unchanged: a position past its end date settles in full and has never needed approval.

Fixed

A position awaiting withdrawal approval never matured

  • Fixed the maturity and accrual job to scan positions awaiting withdrawal approval as well as active ones, so a matured term is settled whether or not an admin has acted on the request.
  • Fixed the disagreement between the job's query and the guard inside the settlement transaction by making them one rule. They previously agreed by coincidence.
  • An end date that cannot be read is never treated as matured. Settling a live position early because a date failed to parse is the one outcome that must not happen.

Changed

The app is not sent an advertised rate

  • Changed the pool list, a pool's detail, a position's detail, the landing data and the statistics to strip advertised APR and APY from a native response. A staking screen may say what a position has accrued; it may not lead with what it pays.
  • Realised earnings, the principal and the position's own history are untouched.

A licence check on opening a position

  • Added a residence check to opening a staking position for native app clients. Staking is served only to residents of a country you have recorded a licence attestation for, in System → Geo → Licence Attestations in core.
  • Withdrawing is never gated.