docs(specs): archive api contract resilience remediation

This commit is contained in:
2026-08-24 00:51:06 +03:00
parent 6e20cdffaf
commit 800450d075
8 changed files with 386 additions and 0 deletions
@@ -0,0 +1,68 @@
## 1. Auth success-status contract
- [x] 1.1 Добавить независимый от БД backend regression test, который читает
Nest response-status metadata для `register`, `login` и `refresh` и
проверяет `200`; cookie/payload behavior не входит в его scope.
- [x] 1.2 Добавить явный runtime status `200` в три auth POST handlers, не
меняя logout `204`, error responses и session/cookie logic; добиться
прохождения нового metadata regression test.
- [x] 1.3 Обновить существующие auth e2e success expectations с `201` на
`200`, включая явный successful login assertion; задокументировать, что
suite остаётся deferred по WL-P2-05, а не считается passing gate.
- [x] 1.4 Запустить штатный frontend OpenAPI sync workflow после backend
change; принять только artifacts, сгенерированные этим workflow, затем
выполнить generated-artifact и runtime-contract checks.
## 2. Представление Client Cached Snapshot
- [x] 2.1 Добавить observable Accounts page regression coverage для
существующего списка во время in-flight refetch и после его ошибки: список
остаётся видимым, loading indicator неблокирующий, а retry локализованного
warning вновь вызывает тот же query.
- [x] 2.2 Расширить Account page coverage для эквивалентных Portfolio refetch
states, включая независимый render server `isStale` и client warnings об
ошибке refresh.
- [x] 2.3 Отрефакторить Accounts и Account view models, чтобы blocking
loading/error states выбирались только при отсутствии query data; раскрыть
progress, failure и retry refresh рядом с данными Client Cached Snapshot без
изменения query TTL, retry или refetch policies.
- [x] 2.4 Обновить Accounts и Account page presentations и localized copy для
отображения неблокирующего progress и доступных client refresh warnings с
retry, сохранив operations/events pagination вне scope.
## 3. Контролируемая ошибка refresh
- [x] 3.1 Добавить AuthProvider regression coverage для отклонённого
cold-start refresh: он устанавливает `ready`, оставляет user/access token
пустыми, очищает query cache и не создаёт необработанного отклонения Promise.
- [x] 3.2 Добавить coverage для protected `401`, чей serialised refresh имеет
транспортную ошибку: refresh возвращает контролируемую ошибку, локальный
auth/cache очищен, а исходный unauthorized response сохранён для
существующего route handling.
- [x] 3.3 Централизовать применение и очистку local auth state, направить
cold start и refresh защищённого запроса через общий non-throwing refresh
path и сохранить one-refresh-at-a-time behavior.
## 4. Устойчивая документация и состояние remediation
- [x] 4.1 Обновить feature documentation authentication, brokerage accounts и
portfolio с фактически поставленными `200` auth responses и различием между
server-side Portfolio fallback и Client Cached Snapshot refresh UX; limits и
deferred Prisma evidence должны остаться точными.
- [x] 4.2 Поддерживать `docs/development/audit-remediation.md` согласованным с
active status change и verification evidence; только после успешного archive
записать terminal archive path, commits и checks, затем отметить WL-P2-04,
WL-P2-07 и WL-P2-08 `done` вне этого task list.
## 5. Верификация перед archive
- [x] 5.1 Выполнить затронутые frontend и backend non-mutating lint, typecheck
и unit-test gates под Node 22; выполнить frontend `verify`, когда его
generated artifacts окончательны, и записать точные observed results.
- [x] 5.2 Выполнить `bash specs/scripts/verify-runtime-openapi.sh`, OpenSpec
authority verifier, strict change/spec validation и `git diff --check` в
каждом затронутом Git repository; устранить каждый blocking result.
- [x] 5.3 Провести независимый read-only review implementation, delta specs,
generated-contract diff, error-state tests и документации; выполнить
применимую `opsx-verify` procedure и устранить все blocking findings до
archive.