46 lines
2.4 KiB
Markdown
46 lines
2.4 KiB
Markdown
## Why
|
|
|
|
Backend допускает неограниченный рост process-local кэша страниц журнала и
|
|
теряет детерминированность при конкурентных регистрации и refresh. Эти
|
|
подтверждённые audit findings WL-P2-01—03 могут приводить к исчерпанию памяти,
|
|
`500` вместо ожидаемого конфликта и отзыву успешно обновлённой Session.
|
|
|
|
## What Changes
|
|
|
|
- Заменить неограниченный cache страниц Account Ledger на bounded
|
|
`lru-cache`: не более 100 страниц, TTL 30 секунд, LRU eviction и
|
|
канонический cache key.
|
|
- Сделать database unique constraint источником истины для параллельной
|
|
регистрации и преобразовывать Prisma `P2002` в `409
|
|
EMAIL_ALREADY_REGISTERED`.
|
|
- Ротировать refresh token compare-and-swap обновлением Session, чтобы
|
|
только один конкурентный запрос был успешным; superseded token отвечает
|
|
`401` без отзыва Session победителя.
|
|
- Добавить детерминированные service-level regression tests и обновить
|
|
устойчивую auth/cache документацию, не объявляя временно неработающий
|
|
Prisma e2e gate восстановленным.
|
|
|
|
## Capabilities
|
|
|
|
### New Capabilities
|
|
|
|
<!-- None. -->
|
|
|
|
### Modified Capabilities
|
|
|
|
- `user-authentication`: определяет детерминированные результаты
|
|
конкурентной регистрации и refresh rotation, включая поведение superseded
|
|
refresh token.
|
|
- `brokerage-account-ledger`: определяет bounded process-local cache страниц
|
|
журнала и его каноническую идентичность.
|
|
|
|
## Impact
|
|
|
|
- Backend: `AuthService`, `BrokerageOperationsService`, unit tests и
|
|
production dependency `lru-cache`.
|
|
- Specs: delta specifications для user authentication и brokerage account
|
|
ledger.
|
|
- Docs: ADR-009 и фактическая документация authentication/ledger cache.
|
|
- Public HTTP routes и auth success statuses не меняются; их contract
|
|
alignment остаётся отдельным WL-P2-04.
|