Источник: локальный todo/wealthledger-engineering-improvements.md, пункт 08.frontend, анализ от 13.09.2026. Исходные критерии приведены ниже, чтобы issue не зависела от наличия локального TODO.
Что осталось сделать
08.frontend. Проверить frontend secrets и dependency risks. Часть 08.root.
Готово, когда: история/изменения и runtime/dev dependencies проверены,
baseline привязан к revision, прежние решения WL-P2-12 учтены;
новые secrets/advisories обрабатываются в CI без вывода секретов.
До публикации или production-доступов — P0.
Gitea API возвращает private=false для всех пяти репозиториев. Условие повышения security baseline до P0 по исходному плану применимо; доступность кода без авторизации отдельно не проверена. Не публиковать найденные значения секретов.
Основание текущего статуса
package.json содержит полный verify и отдельные openapi:generate/openapi:check. Генерация типов читает локальный snapshot; единого экспорта runtime OpenAPI с согласованным обновлением двух файлов пока нет. Node 24 уже принят.
Проверка 13.09.2026: статическая сверка текущих файлов и remediation registry; через MCP проверены репозитории, issues, ветки и Actions workflows. Все пять main-веток имеют protected=false, список workflows пуст, существующих issues не найдено. Внешние CI, server-side updater, история секретов и свежий npm audit этой сверкой не проверялись; полные application gates повторно не запускались.
Remediation registry остаётся владельцем статусов audit findings. Создание issue не означает выполнение или изменение статуса finding. Закрыть после проверки критериев и ссылки на фактические результаты.
<!-- wealthledger-engineering-improvements:frontend:08.frontend -->
Источник: локальный `todo/wealthledger-engineering-improvements.md`, пункт 08.frontend, анализ от 13.09.2026. Исходные критерии приведены ниже, чтобы issue не зависела от наличия локального TODO.
## Что осталось сделать
**08.frontend. Проверить frontend secrets и dependency risks.** Часть 08.root.
**Готово, когда:** история/изменения и runtime/dev dependencies проверены,
baseline привязан к revision, прежние решения `WL-P2-12` учтены;
новые secrets/advisories обрабатываются в CI без вывода секретов.
До публикации или production-доступов — P0.
Gitea API возвращает private=false для всех пяти репозиториев. Условие повышения security baseline до P0 по исходному плану применимо; доступность кода без авторизации отдельно не проверена. Не публиковать найденные значения секретов.
## Основание текущего статуса
[package.json](https://git.personal.ksv741.ru/WealthLedger/frontend/src/commit/117e74cdfc29cbf63f549ea88e8106ab25300541/package.json) содержит полный verify и отдельные openapi:generate/openapi:check. Генерация типов читает локальный snapshot; единого экспорта runtime OpenAPI с согласованным обновлением двух файлов пока нет. Node 24 уже принят.
Проверка 13.09.2026: статическая сверка текущих файлов и remediation registry; через MCP проверены репозитории, issues, ветки и Actions workflows. Все пять main-веток имеют protected=false, список workflows пуст, существующих issues не найдено. Внешние CI, server-side updater, история секретов и свежий npm audit этой сверкой не проверялись; полные application gates повторно не запускались.
Проверяемая revision frontend: `117e74cdfc29cbf63f549ea88e8106ab25300541`.
[Remediation registry](https://git.personal.ksv741.ru/WealthLedger/docs/src/commit/7bc8792b9853768734066c31a323b70886d73a23/development/audit-remediation.md) остаётся владельцем статусов audit findings. Создание issue не означает выполнение или изменение статуса finding. Закрыть после проверки критериев и ссылки на фактические результаты.
## Связанные issues
- [main: [P0] 08.root. Получить проверенный security/dependency baseline и включить регулярные проверки](https://git.personal.ksv741.ru/WealthLedger/main/issues/5)
WL-P2-12 учтён: прежний React Router fix сохранён; accepted Prisma tooling risk относится только к backend, новых frontend security exceptions нет.
По согласованному расширению scope #9 обновлены 8 major-групп: Babel 8, jest-dom 7, jsdom 30, lint-staged 17, react-i18next 17, React Router 8, Zod 4, Vitest/coverage 5. Выполнена миграция Zod error callbacks без изменения правил валидации и локализованных сообщений. TypeScript остаётся 5.9.3: последний openapi-typescript 7.13.0 требует peer ^5.x; совместимого обновления генератора пока нет. Ограничение и review trigger записаны в README. Dependency Dashboard #9 остаётся постоянным dashboard.
Secrets
Gitleaks 8.30.1: gitleaks git --log-opts=--all --redact=100 --no-banner — 93 commits, no leaks found, exit 0. Repository не shallow; scope — все локально доступные refs, без обещания проверки удалённых/unreachable объектов.
Исходное текущее дерево (324 файла, включая hidden/local config; без .git/node_modules/build/coverage outputs) отдельно проверено gitleaks dir с полной редакцией — no findings. Последующие изменения проверены Gitleaks в реальном pre-commit и повторным history scan итогового commit. Рабочее дерево после commit чистое.
В .husky/pre-commit первым шагом добавлен gitleaks git --pre-commit --staged --redact=100 --no-banner; secret finding и отсутствие инструмента блокируют commit.
node --test scripts/test-pre-commit.mjs проверяет чистый index при unstaged-секрете, блокировку staged-секрета до downstream hooks, отсутствие значения в выводе и блокировку без Gitleaks. Synthetic token создаётся в памяти; реальные секреты не используются.
Сканирование секретов локальное. npm audit обращается к npm registry с dependency metadata; исходники и значения секретов не отправляются.
CI / verification
Существующий Frontend verify сохраняет npm ci → npm run verify.
Новый Frontend security работает на push/pull_request и ежедневно: полный checkout history, pinned Gitleaks 8.30.1 с SHA256-проверкой архива, regression test pre-commit, blocking npm audit runtime+dev (любой severity).
Критерии #4 выполнены. ADR 014 сохранён: frontend доверяет предоставленному OpenAPI snapshot; backend checkout/SHA/runtime OpenAPI checks не добавлялись. Branch protection/required checks остаются отдельной #2. Предупреждения Renovate об отсутствии GitHub token для metadata/release notes не требуют добавления секретов в репозиторий и не препятствовали выполненным npm-обновлениям.
Выполнено 13.09.2026, revision `3be6e61b8fc85d4b16199dbe9910b38894159cb8` ([commit](https://git.personal.ksv741.ru/WealthLedger/frontend/commit/3be6e61b8fc85d4b16199dbe9910b38894159cb8)).
**Dependencies**
- На исходной revision `7a89356` свежий npm audit выявил 3 high affected-package entries: fast-uri, js-yaml и зависимый @redocly/openapi-core (5 distinct advisories).
- Исправлено lockfile-обновлением: fast-uri 3.1.5 → 3.1.7, js-yaml 4.3.1 → 4.3.2, @redocly/openapi-core 1.34.19 → 1.34.20.
- После чистого `npm ci`: `npm audit --include=dev --audit-level=low --json` и `npm audit --omit=dev --json` — **0 vulnerabilities**, exit 0; `npm ls --all --json` — exit 0. Все 45 direct dependencies используют exact versions; manifest соответствует lockfile.
- SHA256 package-lock.json: `cee708f94d6bbd4ce6937ff83de6f537f60047105e03b45dc365d1b968b0e47d`.
- WL-P2-12 учтён: прежний React Router fix сохранён; accepted Prisma tooling risk относится только к backend, новых frontend security exceptions нет.
- По согласованному расширению scope #9 обновлены 8 major-групп: Babel 8, jest-dom 7, jsdom 30, lint-staged 17, react-i18next 17, React Router 8, Zod 4, Vitest/coverage 5. Выполнена миграция Zod error callbacks без изменения правил валидации и локализованных сообщений. TypeScript остаётся 5.9.3: последний openapi-typescript 7.13.0 требует peer ^5.x; совместимого обновления генератора пока нет. Ограничение и review trigger записаны в README. Dependency Dashboard #9 остаётся постоянным dashboard.
**Secrets**
- Gitleaks 8.30.1: `gitleaks git --log-opts=--all --redact=100 --no-banner` — **93 commits**, no leaks found, exit 0. Repository не shallow; scope — все локально доступные refs, без обещания проверки удалённых/unreachable объектов.
- Исходное текущее дерево (324 файла, включая hidden/local config; без .git/node_modules/build/coverage outputs) отдельно проверено `gitleaks dir` с полной редакцией — no findings. Последующие изменения проверены Gitleaks в реальном pre-commit и повторным history scan итогового commit. Рабочее дерево после commit чистое.
- В .husky/pre-commit первым шагом добавлен `gitleaks git --pre-commit --staged --redact=100 --no-banner`; secret finding и отсутствие инструмента блокируют commit.
- `node --test scripts/test-pre-commit.mjs` проверяет чистый index при unstaged-секрете, блокировку staged-секрета до downstream hooks, отсутствие значения в выводе и блокировку без Gitleaks. Synthetic token создаётся в памяти; реальные секреты не используются.
- Сканирование секретов локальное. npm audit обращается к npm registry с dependency metadata; исходники и значения секретов не отправляются.
**CI / verification**
- Существующий Frontend verify сохраняет `npm ci → npm run verify`.
- Новый Frontend security работает на push/pull_request и ежедневно: полный checkout history, pinned Gitleaks 8.30.1 с SHA256-проверкой архива, regression test pre-commit, blocking npm audit runtime+dev (любой severity).
- Локально Node 24.21.0 через `nvm use --silent`: `npm ci`, `KNIP_DISABLE_RAW_TRANSFER=1 npm run verify` — PASS: OpenAPI snapshot check, TypeScript, Biome, **46 files / 268 tests**, coverage 90.45% statements / 81.44% branches / 85.78% functions / 91.22% lines, Knip, FSD checks, application/Storybook builds. `git diff --check` — PASS.
- [Gitea security run 13](https://git.personal.ksv741.ru/WealthLedger/frontend/actions/runs/13) — success на указанной revision.
- [Gitea verify run 14](https://git.personal.ksv741.ru/WealthLedger/frontend/actions/runs/14) — success на той же revision.
Критерии #4 выполнены. ADR 014 сохранён: frontend доверяет предоставленному OpenAPI snapshot; backend checkout/SHA/runtime OpenAPI checks не добавлялись. Branch protection/required checks остаются отдельной #2. Предупреждения Renovate об отсутствии GitHub token для metadata/release notes не требуют добавления секретов в репозиторий и не препятствовали выполненным npm-обновлениям.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Источник: локальный
todo/wealthledger-engineering-improvements.md, пункт 08.frontend, анализ от 13.09.2026. Исходные критерии приведены ниже, чтобы issue не зависела от наличия локального TODO.Что осталось сделать
08.frontend. Проверить frontend secrets и dependency risks. Часть 08.root.
Готово, когда: история/изменения и runtime/dev dependencies проверены,
baseline привязан к revision, прежние решения
WL-P2-12учтены;новые secrets/advisories обрабатываются в CI без вывода секретов.
До публикации или production-доступов — P0.
Gitea API возвращает private=false для всех пяти репозиториев. Условие повышения security baseline до P0 по исходному плану применимо; доступность кода без авторизации отдельно не проверена. Не публиковать найденные значения секретов.
Основание текущего статуса
package.json содержит полный verify и отдельные openapi:generate/openapi:check. Генерация типов читает локальный snapshot; единого экспорта runtime OpenAPI с согласованным обновлением двух файлов пока нет. Node 24 уже принят.
Проверка 13.09.2026: статическая сверка текущих файлов и remediation registry; через MCP проверены репозитории, issues, ветки и Actions workflows. Все пять main-веток имеют protected=false, список workflows пуст, существующих issues не найдено. Внешние CI, server-side updater, история секретов и свежий npm audit этой сверкой не проверялись; полные application gates повторно не запускались.
Проверяемая revision frontend:
117e74cdfc29cbf63f549ea88e8106ab25300541.Remediation registry остаётся владельцем статусов audit findings. Создание issue не означает выполнение или изменение статуса finding. Закрыть после проверки критериев и ссылки на фактические результаты.
Связанные issues
Выполнено 13.09.2026, revision
3be6e61b8fc85d4b16199dbe9910b38894159cb8(commit).Dependencies
7a89356свежий npm audit выявил 3 high affected-package entries: fast-uri, js-yaml и зависимый @redocly/openapi-core (5 distinct advisories).npm ci:npm audit --include=dev --audit-level=low --jsonиnpm audit --omit=dev --json— 0 vulnerabilities, exit 0;npm ls --all --json— exit 0. Все 45 direct dependencies используют exact versions; manifest соответствует lockfile.cee708f94d6bbd4ce6937ff83de6f537f60047105e03b45dc365d1b968b0e47d.Secrets
gitleaks git --log-opts=--all --redact=100 --no-banner— 93 commits, no leaks found, exit 0. Repository не shallow; scope — все локально доступные refs, без обещания проверки удалённых/unreachable объектов.gitleaks dirс полной редакцией — no findings. Последующие изменения проверены Gitleaks в реальном pre-commit и повторным history scan итогового commit. Рабочее дерево после commit чистое.gitleaks git --pre-commit --staged --redact=100 --no-banner; secret finding и отсутствие инструмента блокируют commit.node --test scripts/test-pre-commit.mjsпроверяет чистый index при unstaged-секрете, блокировку staged-секрета до downstream hooks, отсутствие значения в выводе и блокировку без Gitleaks. Synthetic token создаётся в памяти; реальные секреты не используются.CI / verification
npm ci → npm run verify.nvm use --silent:npm ci,KNIP_DISABLE_RAW_TRANSFER=1 npm run verify— PASS: OpenAPI snapshot check, TypeScript, Biome, 46 files / 268 tests, coverage 90.45% statements / 81.44% branches / 85.78% functions / 91.22% lines, Knip, FSD checks, application/Storybook builds.git diff --check— PASS.Критерии #4 выполнены. ADR 014 сохранён: frontend доверяет предоставленному OpenAPI snapshot; backend checkout/SHA/runtime OpenAPI checks не добавлялись. Branch protection/required checks остаются отдельной #2. Предупреждения Renovate об отсутствии GitHub token для metadata/release notes не требуют добавления секретов в репозиторий и не препятствовали выполненным npm-обновлениям.