Files
specs/openspec/changes/archive/2026-08-23-harden-auth-and-cache-concurrency/proposal.md
T

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.