docs: record React component style evidence

This commit is contained in:
2026-08-25 15:34:37 +03:00
parent 68f1d8f398
commit 6812fdeae3
+51
View File
@@ -192,3 +192,54 @@ query params/keys, `staleTime` и `retry: false` сохранены, а оста
явному non-goal Design. Residual risk: full AuthProvider login/refresh/logout
path enabling/disabling authenticated queries покрыт ограниченно; direct
session snapshot transition через `configureAuthClient` покрыт regression test.
## 2026-08-25-codify-frontend-component-style
**Change:** codify-frontend-component-style (schema `wealth-ledger-sdd`)
**Archive path:** `specs/openspec/changes/archive/2026-08-25-codify-frontend-component-style`
**Specs sync:** дельта `frontend-quality-guardrails` слита в main spec; `openspec validate --specs --strict --store wealth-ledger-specs` — `20 passed, 0 failed`.
### Delivery Map
| Area | Status | Outcome |
| --- | --- | --- |
| frontend | affected | Authored React components мигрированы на const-valued `FC` declarations; props destructuring перенесён внутрь component body; лишние children-only props aliases удалены в пользу `FC<PropsWithChildren>`; чистые barrels используют direct re-exports; Biome gate блокирует проверяемую часть style |
| backend | N/A | Backend behavior, routes, DTOs, persistence и runtime OpenAPI contract не менялись |
| specs | affected | Delta `frontend-quality-guardrails` синхронизирована в main spec, change заархивирован |
| docs | N/A | As-built product docs не менялись; Completion Evidence добавлен отдельным финальным docs-коммитом |
### Delivery commits
| Repo | Commit | Subject |
| --- | --- | --- |
| frontend | `d10e1dd1827094e6e52768f0ccd2ea060aef95a1` | chore: codify React component style |
| backend | — | N/A |
| specs | `6898732dd8e933e9d6a587aef48ebe0eddaa0cf2` | docs: archive React component style change |
| docs | current evidence commit | docs: record React component style evidence |
### Verification
| Command (repo) | Наблюдённый результат |
| --- | --- |
| `npm run typecheck` (frontend, baseline before structural edits) | pass |
| `npm run test:coverage` (frontend, baseline before structural edits) | pass; 21 test files / 67 tests |
| `npm exec biome -- check .tmp-biome-style/compliant.tsx` (frontend) | pass; compliant representative sample accepted |
| `npm exec biome -- check .tmp-biome-style/function-component.tsx` (frontend) | failed as expected with `lint/nursery/useReactFunctionComponentDefinition` |
| `npm exec biome -- check .tmp-biome-style/default-export.tsx` (frontend) | failed as expected with `lint/style/noDefaultExport` |
| `npm exec biome -- check .tmp-biome-style/export-order.tsx` (frontend) | failed as expected with `lint/style/useExportsLast` |
| `rg "type \\w+Props = PropsWithChildren;" frontend/src -g '!shared/api/generated/**'` (workspace) | no matches |
| `rg -n "^import \\{ .+ \\} from \\\"\\." frontend/src/**/index.ts` (workspace) | no matches |
| `PATH=/Users/ksv741/.nvm/versions/node/v22.21.0/bin:$PATH npm run verify` (frontend) | pass; runtime Node 22.21.0, OpenAPI/hygiene/typecheck/lint/vitest/knip/deps/build/bundle checks passed; 21 test files / 67 tests; initial JavaScript payload 510523 bytes |
| `bash specs/scripts/verify-workspace-change.sh codify-frontend-component-style` (workspace, Node 22.21.0) | pass; Delivery Map verified frontend/specs=affected, backend/docs/runtime-openapi=N/A; main specs 20 passed, frontend canonical verification passed |
| `openspec archive codify-frontend-component-style --yes --store wealth-ledger-specs` (specs) | pass; archived as `2026-08-25-codify-frontend-component-style` |
| `openspec validate --specs --strict --store wealth-ledger-specs` (specs, post-archive) | pass; 20 passed, 0 failed |
| `git diff --check` (frontend/specs) | pass |
### Independent read-only review
Verdict: **PASS**. Critical и Important findings отсутствовали. Minor findings
о mixed-language summary и stale wording устранены до archive. После уточнения
Change Owner дополнительно удалены children-only aliases вида
`type TestWrapperProps = PropsWithChildren` и чистые barrel imports ради
последующего re-export; обе convention-проверки подтверждены пустыми `rg`
результатами. Generated OpenAPI source остался вне manual migration.