docs: archive React component style change

This commit is contained in:
2026-08-25 15:33:52 +03:00
parent 18a9487432
commit 6898732dd8
7 changed files with 46 additions and 0 deletions
@@ -0,0 +1,109 @@
# Implementation Summary: codify-frontend-component-style
## Scope
Реализована behavior-preserving frontend style migration для утверждённого
change:
- Biome настроен на enforceable subset React component style;
- frontend conventions описывают полный React component style и границу между
enforced guardrails и mandatory review conventions;
- authored frontend source мигрирован на const-valued `FC` React components,
named props types only where they carry real props shape, direct
`FC<PropsWithChildren>` for children-only components, internal props
destructuring, bottom named exports for ordinary modules and direct
re-exports for pure barrels;
- generated OpenAPI source оставлен под ownership генератора и не
редактировался руками ради style.
Backend code, persisted data, runtime OpenAPI behavior, routes, localization
keys, API calls, state selection и visual design намеренно не менялись.
## Guardrail Proof
Локально использовался Biome `2.5.8`.
- `npm exec biome -- check .tmp-biome-style/compliant.tsx` — pass,
`Checked 1 file ... No fixes applied`.
- `npm exec biome -- check .tmp-biome-style/function-component.tsx` — fail с
`lint/nursery/useReactFunctionComponentDefinition` для React component,
объявленного как function declaration.
- `npm exec biome -- check .tmp-biome-style/default-export.tsx` — fail с
`lint/style/noDefaultExport` для `export default`.
- `npm exec biome -- check .tmp-biome-style/export-order.tsx` — fail с
`lint/style/useExportsLast` для export перед module declarations.
Temporary samples удалены после proof и не входят в delivered source.
## Review-Only Convention Checks
Manual scans после migration:
- `rg -n "^export function|^export const|^export type|^export interface|^export default|^function [A-Z][A-Za-z0-9]*" src scripts --glob '*.{ts,tsx,mjs}'` —
остались только generated OpenAPI declarations.
- `rg -n "\\}: \\{[^}]+\\}\\) =>|\\}: \\{[^}]+\\}\\)" src --glob '*.tsx'` —
не нашёл inline destructured component props matches.
- `rg --pcre2 -n "^const [A-Z][A-Za-z0-9]*(?![^=]*:\\s*FC\\b)[^=]*=" src --glob '*.tsx'` —
нашёл только `lazy(...)` route bindings и `AuthContext`, а не const-valued
React function component declarations.
- `rg -n "type \\w+Props = PropsWithChildren;" src --glob '*.tsx'` — не нашёл
лишних aliases для children-only components.
- `rg -n "^import \\{ .+ \\} from \\\"\\." src/**/index.ts` — не нашёл
чистых barrel imports, которые нужны только для последующего re-export.
## Verification
Baseline before structural edits:
- `npm run typecheck` — pass.
- `npm run test:coverage` — pass, `21` test files и `67` tests passed.
Targeted checks после migration:
- `npm run lint` — pass, `Checked 121 files ... No fixes applied`.
- `npm run typecheck` — pass.
- `npm run test:coverage` — pass, `21` test files и `67` tests passed;
coverage summary: statements `86%`, branches `78.28%`, functions `79.09%`,
lines `86.64%`.
- `npm run knip` — pass.
- `npm run deps` — pass, `4` dependency-cruiser config tests passed и
`no dependency violations found`.
- `npm run build` — pass.
Canonical frontend gate:
- `npm run verify` под Node `26.7.0` — blocked by runtime preflight as
expected: repository требует Node `22.x`.
- `PATH=/Users/ksv741/.nvm/versions/node/v22.21.0/bin:$PATH npm run verify` —
pass; runtime verified Node `22.21.0`, OpenAPI check passed, repository
hygiene passed, lint/typecheck/coverage/knip/deps/build/bundle checks passed,
bundle check reported `Initial JavaScript payload: 510523 bytes`.
OpenSpec structural validation:
- `openspec validate codify-frontend-component-style --type change --strict --store wealth-ledger-specs` —
pass.
Independent read-only review:
- Separate read-only review reported no Critical or Important findings.
- Minor findings about mixed language and stale implementation-summary status
were addressed before workspace dispatcher.
Workspace dispatcher:
- `PATH=/Users/ksv741/.nvm/versions/node/v22.21.0/bin:$PATH bash specs/scripts/verify-workspace-change.sh codify-frontend-component-style` —
pass; Delivery Map verified `frontend=affected backend=N/A specs=affected
docs=N/A`, Contract Gate Decision verified `runtime-openapi=N/A`, main specs
`20 passed, 0 failed`, frontend canonical verification passed and workspace
verification passed.
## Semantic Verification
Implementation соответствует утверждённым Proposal, Delta Spec, Design и Tasks
как style/tooling change с уточнением Change Owner: children-only components
используют `FC<PropsWithChildren>` без лишнего alias, а чистые barrels
используют прямые re-exports без промежуточных imports. Изменены
declaration/export shape и documentation. User-visible behavior, routes,
localized text keys, API contract, backend behavior, generated API source
ownership и product documentation остаются вне изменённого scope.