48 lines
8.5 KiB
Markdown
48 lines
8.5 KiB
Markdown
## 1. Backend connection generation and cache isolation
|
||
|
||
- [x] 1.1 [backend] По выбранному в утверждённом Solution Assessment варианту расширить internal connection access context opaque generation из digest persisted encrypted payload средствами Node runtime; generation не сохранять отдельно, не включать в API, logs или errors и закрепить regression proof смены identity при каждом successful PUT, включая тот же plaintext token.
|
||
- **Covers:** `N/A` — internal generation не создаёт самостоятельного observable behavior, но является выбранной в утверждённом Design технической основой строгой cache isolation без schema или API migration.
|
||
- **Verification:** Targeted backend tests подтверждают одинаковую generation для одной persisted connection record, новую generation после successful replacement и отсутствие public/logged token-derived identifier.
|
||
- [x] 1.2 [backend] Включить current connection generation в Account Ledger page cache boundary, сохранив connection/account access checks до reuse, и закрепить regression proof, что cached и поздно завершившиеся страницы прежней generation недоступны Operations и производным Income Summary/Analytics после replace или delete.
|
||
- **Covers:** `frontend-query-coherence` — `Requirement: Frontend сохраняет когерентность кэша T-Bank connection`
|
||
- **Verification:** Targeted Account Ledger и Income tests моделируют cached hit и late completion вокруг successful PUT/DELETE и подтверждают только current-generation reuse при неизменных TTL/LRU limits.
|
||
- [x] 1.3 [backend] Ограничить Portfolio cache hit и cached fallback текущей persisted connection generation, разрешая cache reuse только после connection resolution, и закрепить regression proof для replace/delete и старого in-flight completion без ослабления current-generation fallback.
|
||
- **Covers:** `frontend-query-coherence` — `Requirement: Frontend сохраняет когерентность кэша T-Bank connection`
|
||
- **Verification:** Targeted Portfolio tests подтверждают current-generation hit/fallback, отсутствие hit без connection и недоступность cached либо late previous-generation snapshot после successful PUT/DELETE.
|
||
- [x] 1.4 [backend] Выполнить canonical backend gate после generation-scoped cache implementation и обязательного concurrency/regression coverage.
|
||
- **Covers:** `N/A` — gate не добавляет самостоятельного observable behavior, а подтверждает affected backend delivery из утверждённого Design.
|
||
- **Verification:** `nvm use --silent && npm run verify` из `backend`.
|
||
|
||
## 2. Frontend connection boundary
|
||
|
||
- [x] 2.1 [frontend] Реализовать в `tbank-connection` единую операцию commit подтверждённого status и native reset всех generated GET query из `/api/v1/brokerage-accounts` subtree; перевести successful PUT и DELETE на эту операцию и добавить regression proof для root, parameterized и in-flight query без очистки несвязанного cache.
|
||
- **Covers:** `frontend-query-coherence` — `Requirement: Frontend сохраняет когерентность кэша T-Bank connection`
|
||
- **Verification:** `nvm use --silent && npm run test:run -- src/features/tbank-connection`; observable assertions подтверждают новый status, отсутствие данных предыдущей границы для create/replace/delete, отмену позднего старого browser response и сохранение несвязанного query.
|
||
- [x] 2.2 [frontend] Дополнить regression coverage сохранения текущей границы при failed connection mutation, Client Cached Snapshot при обычной ошибке фонового refetch и полной независимой очистки status и financial cache при logout.
|
||
- **Covers:** `frontend-query-coherence` — `Requirement: Frontend сохраняет когерентность кэша T-Bank connection`
|
||
- **Verification:** `nvm use --silent && npm run test:run -- src/features/tbank-connection src/features/auth/model/auth.test.tsx src/entities/brokerage-account/api/useBrokerageAccounts.test.tsx src/entities/portfolio/api/usePortfolio.test.tsx`; observable assertions покрывают failure, current-generation background snapshot и logout scenarios.
|
||
- [x] 2.3 [frontend] Выполнить canonical frontend gate после implementation и regression coverage.
|
||
- **Covers:** `N/A` — gate не добавляет самостоятельного observable behavior, а подтверждает affected frontend delivery из утверждённого Design.
|
||
- **Verification:** `nvm use --silent && npm run verify` из `frontend`.
|
||
|
||
## 3. As-built documentation
|
||
|
||
- [x] 3.1 [docs] После подтверждённой backend и frontend delivery обновить as-built описания T-Bank connection, Portfolio и Account Ledger cache semantics: successful mutation создаёт общую frontend/backend generation boundary, failed mutation и current-generation Client Cached Snapshot сохраняются, а logout остаётся отдельной полной session cleanup.
|
||
- **Covers:** `N/A` — документация не создаёт самостоятельного поведения, но поставляет обязательный affected docs outcome для реализованной cache boundary по утверждённому Design.
|
||
- **Verification:** Scoped review затронутых feature/cache documents подтверждает current-state generation isolation, frontend reset и lifecycle cases без копирования Proposal, Specs, Design или Tasks.
|
||
- [x] 3.2 [docs] Выполнить canonical docs gate после as-built обновления.
|
||
- **Covers:** `N/A` — gate проверяет обязательную affected docs delivery и не меняет observable product behavior.
|
||
- **Verification:** `nvm use --silent && npm run verify` из `docs`.
|
||
|
||
## 4. Cross-area readiness and canonical traceability
|
||
|
||
- [x] 4.1 [workspace] Семантически сверить delivered backend, frontend и docs outcomes с утверждёнными Requirement и Design, включая create/replace/delete, failed mutation, cached и in-flight ordering, current-generation background snapshot, logout и отсутствие storage/API contract changes.
|
||
- **Covers:** `N/A` — cross-area verification координирует affected repositories и подтверждает approved scope, но не владеет repository implementation.
|
||
- **Verification:** Scenario-to-evidence review для `frontend-query-coherence` и Delivery Map не оставляет непокрытых scenarios, unchecked affected delivery или незапланированных schema/OpenAPI diffs.
|
||
- [x] 4.2 [specs] После repository delivery и semantic review отметить в canonical Tasks только действительно завершённые items, сохранив traceability утверждённых Requirement, Design и affected areas.
|
||
- **Covers:** `N/A` — versioned SDD traceability является обязательным specs outcome утверждённого delivery, но не добавляет observable product behavior.
|
||
- **Verification:** Scoped review `tasks.md` сопоставляет каждый checked item с repository evidence и не оставляет завершённую работу отмеченной без подтверждения.
|
||
- [x] 4.3 [specs] Выполнить canonical strict change gate перед передачей в independent Validation.
|
||
- **Covers:** `N/A` — structural gate подтверждает affected specs delivery и не заменяет semantic verification реализации.
|
||
- **Verification:** `openspec validate harden-tbank-connection-cache-boundary --type change --strict --store wealth-ledger-specs` из `specs` под Node 22.
|