93 lines
12 KiB
Markdown
93 lines
12 KiB
Markdown
# Audit remediation registry
|
||
|
||
## Назначение
|
||
|
||
Это versioned реестр текущего состояния remediation для findings из [технического аудита 20.08.2026](../audits/audit-20-08-2026.md). Аудит — неизменяемый source of facts; этот документ хранит только приоритет, статус, путь продолжения и evidence последующих решений.
|
||
|
||
## Правила работы
|
||
|
||
- Каждая audit-derived запись имеет один статус: `planned`, `active`, `done`, `deferred` или `accepted`.
|
||
- Одновременно допускается не более одного `active` remediation change. При отсутствии active change раздел «Следующая задача» содержит ровно один рекомендуемый change.
|
||
- `done` требует даты, archive path OpenSpec change, commit для каждого затронутого Git-репозитория и точных non-mutating verification commands с observed results.
|
||
- `deferred` и `accepted` требуют даты, rationale и review trigger либо ссылки на явное решение владельца.
|
||
- При смене статуса обновляется только этот реестр; versioned audit snapshot не редактируется.
|
||
|
||
## Текущее состояние workflow
|
||
|
||
- Bootstrap change: [`2026-08-23-establish-audit-remediation-workflow`](../../specs/openspec/changes/archive/2026-08-23-establish-audit-remediation-workflow/) — `archived`; это process foundation и не закрывает ни одного Audit ID.
|
||
- Active audit remediation change: отсутствует.
|
||
|
||
## Следующая задача
|
||
|
||
Создать `harden-openspec-authority-and-lifecycle` для WL-P1-03 и WL-P1-04: определить единственный canonical OpenSpec root и устранить циклическую зависимость между archive и обязательным post-archive bookkeeping.
|
||
|
||
## Реестр findings
|
||
|
||
### P1
|
||
|
||
| Audit ID | Цель | Репозитории | Статус | Связанный change | Следующее действие | Terminal evidence |
|
||
| --- | --- | --- | --- | --- | --- | --- |
|
||
| WL-P1-01 | Один владелец React Query cache identity. | frontend | done | [`2026-08-23-stabilize-frontend-query-and-strict-contracts`](../../specs/openspec/changes/archive/2026-08-23-stabilize-frontend-query-and-strict-contracts/) | — | 2026-08-23; frontend `1250581`, specs `b8a3f96`; `npm run verify` — passed (16 files, 48 tests). |
|
||
| WL-P1-02 | Сделать strict TypeScript исполняемым gate и устранить 16 ошибок. | frontend | done | [`2026-08-23-stabilize-frontend-query-and-strict-contracts`](../../specs/openspec/changes/archive/2026-08-23-stabilize-frontend-query-and-strict-contracts/) | — | 2026-08-23; frontend `1250581`, specs `b8a3f96`; strict typecheck and full `npm run verify` passed. |
|
||
| WL-P1-03 | Установить единственный canonical OpenSpec root. | specs | planned | `harden-openspec-authority-and-lifecycle` (ещё не создан) | Запланировать после P1 frontend change. | — |
|
||
| WL-P1-04 | Сделать archive lifecycle доказательством завершённости. | specs, docs | planned | `harden-openspec-authority-and-lifecycle` (ещё не создан) | Запланировать вместе с WL-P1-03. | — |
|
||
| WL-P1-05 | Разделить non-mutating lint check и auto-fix backend. | backend | planned | `make-local-verification-agent-safe` (ещё не создан) | Запланировать после P1 lifecycle work. | — |
|
||
|
||
### P2
|
||
|
||
| Audit ID | Цель | Репозитории | Статус | Связанный change | Следующее действие | Terminal evidence |
|
||
| --- | --- | --- | --- | --- | --- | --- |
|
||
| WL-P2-01 | Ограничить размер и eviction operations cache. | backend | planned | `harden-auth-and-cache-concurrency` (ещё не создан) | Уточнить policy cache в design. | — |
|
||
| WL-P2-02 | Вернуть предсказуемый 409 при конкурентной регистрации. | backend | planned | `harden-auth-and-cache-concurrency` (ещё не создан) | Добавить parallel integration scenario. | — |
|
||
| WL-P2-03 | Сделать refresh rotation атомарной. | backend | planned | `harden-auth-and-cache-concurrency` (ещё не создан) | Выбрать CAS/transaction policy. | — |
|
||
| WL-P2-04 | Синхронизировать runtime, OpenAPI и auth success statuses. | backend, frontend | planned | `align-api-contract-and-client-resilience` (ещё не создан) | Выбрать единый status contract. | — |
|
||
| WL-P2-05 | Восстановить runnable backend e2e gate. | backend | planned | `make-local-verification-agent-safe` (ещё не создан) | Диагностировать schema-engine failure. | — |
|
||
| WL-P2-06 | Добавить проходящий app/test TypeScript gate backend. | backend | planned | `make-local-verification-agent-safe` (ещё не создан) | Разделить app и test compilation. | — |
|
||
| WL-P2-07 | Сохранять cached data во время background refetch. | frontend | planned | `align-api-contract-and-client-resilience` (ещё не создан) | Зафиксировать stale-data scenarios. | — |
|
||
| WL-P2-08 | Нормализовать cold-start refresh failure. | frontend | planned | `align-api-contract-and-client-resilience` (ещё не создан) | Добавить failure test. | — |
|
||
| WL-P2-09 | Проверять backend runtime OpenAPI против frontend snapshot. | backend, frontend | planned | `make-local-verification-agent-safe` (ещё не создан) | Спроектировать read-only contract gate. | — |
|
||
| WL-P2-10 | Актуализировать onboarding и постоянную документацию. | docs, frontend, backend, specs | planned | `refresh-project-documentation-and-agent-entrypoints` (ещё не создан) | Сверить docs с delivered features. | — |
|
||
| WL-P2-11 | Зафиксировать одинаковый local bootstrap frontend/backend. | frontend, backend, docs | planned | `make-local-verification-agent-safe` (ещё не создан) | Описать Node/npm policy и `npm ci`. | — |
|
||
| WL-P2-12 | Проверить применимость high dependency advisories. | frontend, backend | planned | `address-dependency-advisories-and-repo-hygiene` (ещё не создан) | Исследовать call paths до обновления версий. | — |
|
||
| WL-P2-13 | Дать одному agent workflow единый local verify interface. | frontend, backend, specs, docs | planned | `make-local-verification-agent-safe` (ещё не создан) | Спроектировать workspace verifier. | — |
|
||
|
||
### P3
|
||
|
||
| Audit ID | Цель | Репозитории | Статус | Связанный change | Следующее действие | Terminal evidence |
|
||
| --- | --- | --- | --- | --- | --- | --- |
|
||
| WL-P3-01 | Сделать unknown request fields явной ошибкой или документированной policy. | backend | planned | `tighten-backend-request-feedback` (ещё не создан) | Выбрать validation policy. | — |
|
||
| WL-P3-02 | Устранить shared i18n import cycle. | frontend | planned | `tighten-frontend-quality-guardrails` (ещё не создан) | Добавить cycle rule и leaf import. | — |
|
||
| WL-P3-03 | Восстановить FSD public API boundary. | frontend | planned | `tighten-frontend-quality-guardrails` (ещё не создан) | Расширить dependency rule. | — |
|
||
| WL-P3-04 | Исправить базовые language/loading accessibility semantics. | frontend | planned | `tighten-frontend-quality-guardrails` (ещё не создан) | Добавить semantic status primitive. | — |
|
||
| WL-P3-05 | Ввести пропорциональный bundle regression budget. | frontend | planned | `tighten-frontend-quality-guardrails` (ещё не создан) | Проверить route splitting boundaries. | — |
|
||
| WL-P3-06 | Добавить coverage ratchet только как regression signal. | frontend | planned | `tighten-frontend-quality-guardrails` (ещё не создан) | Зафиксировать baseline после risk tests. | — |
|
||
| WL-P3-07 | Защитить рабочий `.env` от случайного commit. | frontend | planned | `address-dependency-advisories-and-repo-hygiene` (ещё не создан) | Уточнить `.env`/example policy. | — |
|
||
| WL-P3-08 | Исключить runtime SQLite DB из Git. | backend | planned | `address-dependency-advisories-and-repo-hygiene` (ещё не создан) | Проверить безопасный relocation/ignore. | — |
|
||
|
||
## История registry
|
||
|
||
Terminal evidence добавляется сюда только после завершения соответствующего change.
|
||
|
||
### 2026-08-23 — WL-P1-01, WL-P1-02: `stabilize-frontend-query-and-strict-contracts`
|
||
|
||
Статус: `done`. OpenSpec change синхронизирован в main specs и архивирован в [`specs/openspec/changes/archive/2026-08-23-stabilize-frontend-query-and-strict-contracts`](../../specs/openspec/changes/archive/2026-08-23-stabilize-frontend-query-and-strict-contracts/).
|
||
|
||
- Затронутые Git-репозитории: frontend commit `1250581` (`fix: stabilize frontend query cache contracts`); specs commit `b8a3f96` (`docs(specs): archive frontend query remediation`).
|
||
- `npm run verify` в `frontend` — passed: OpenAPI check, strict TypeScript check, Biome, 16 test files / 48 tests, coverage, Knip, dependency check и production build.
|
||
- `openspec validate stabilize-frontend-query-and-strict-contracts --type change --store wealth-ledger-specs` — `Change 'stabilize-frontend-query-and-strict-contracts' is valid` перед archive.
|
||
- `openspec validate --specs --store wealth-ledger-specs` — 14 specs passed, 0 failed перед archive.
|
||
- `git diff --check` для staged OpenSpec archive/sync changes — exit 0.
|
||
- Archive выполнен по явному разрешению владельца с одной незакрытой только административной задачей 4.2: она требует archive path и поэтому не могла быть закрыта до archive. Сразу после archive задача отмечена `[x]`; WL-P1-04 остаётся `planned`, чтобы убрать эту циклическую зависимость из будущего процесса.
|
||
|
||
### 2026-08-23 — bootstrap verification: `establish-audit-remediation-workflow`
|
||
|
||
Этот process change не закрывает Audit ID. Перед archive выполнены следующие read-only checks:
|
||
|
||
- `cmp -s audit-20-08-2026.md docs/audits/audit-20-08-2026.md` — exit 0; versioned snapshot byte-for-byte совпадает с исходной локальной копией.
|
||
- `openspec validate establish-audit-remediation-workflow --type change --store wealth-ledger-specs` — `Change ... is valid`.
|
||
- Структурная проверка registry — 26 records, 26 `planned`, 0 `active`, 0 `done`, одна «Следующая задача»; все четыре agent pointers и оба registry links разрешаются.
|
||
- `git diff --check` в frontend, backend, specs и docs — exit 0.
|
||
- Независимый read-only review registry-to-audit mapping, OpenSpec links, instruction discoverability и scope diff — `findings: none`.
|
||
- `opsx-verify` доступен как OpenCode command, но не установлен как shell executable в этой среде; выполнена эквивалентная процедура из `.opencode/skills/openspec-verify-change/SKILL.md` с теми же dimensions completeness, correctness и coherence.
|
||
- Change синхронизирован в main specs и архивирован в [`specs/openspec/changes/archive/2026-08-23-establish-audit-remediation-workflow`](../../specs/openspec/changes/archive/2026-08-23-establish-audit-remediation-workflow/).
|