3.3 KiB
3.3 KiB
codify-frontend-view-model-boundary — Implementation Summary
Semantic Verification
Date: 2026-08-25
Checked areas:
- User-visible account page behavior: existing render regressions still pass for loading, error, empty, loaded, stale Portfolio Snapshot, nullable values, signed returns, logo fallback, recent failure isolation and cached portfolio visibility.
- VM/View boundary:
AccountPage.vm.tsnow owns Portfolio Position grouping, share/return/logo derived presentation data, recent Account Ledger and Future Cash Events query state, retry props and route targets.AccountPage.view.tsxandcomponents/*.view.tsxrender props only. - Forbidden view dependencies: grep found no
useBrokerageOperations,useBrokerageEvents,useAuth,useParams,useNavigate,useAccountPageViewModel,denominatorsorpositions.filteroccurrences in account page view files or presentation components. - Access token boundary:
accessTokenremains only inAccountPage.vm.tsand test auth mocks undersrc/pages/account/ui. - API/backend contract: backend files, OpenAPI snapshot, generated client and entity API hook signatures were not changed.
- Frontend guidance:
frontend/docs/UI-PATTERN.md,frontend/docs/CONVENTIONS.mdandfrontend/AGENTS.mdnow describe the container/ViewModel/view boundary and semantic split guidance. - Bundle guardrail: the account lazy route baseline was updated from 21,872 to 22,366 bytes after the semantic presentation split. Initial JavaScript payload remains 509,165 bytes and passed the existing budget.
Observed verification:
- Initial baseline before edits:
npm run test:run -- src/pages/account/ui/AccountPage.test.tsx— passed, 1 file / 12 tests. - RED VM tests before implementation:
npm run test:run -- src/pages/account/ui/AccountPage.vm.test.tsx— failed on missingpositionSections,recentOperationsandrecentEventspresentation state. - Targeted account page verification after implementation:
npm run test:run -- src/pages/account/ui/AccountPage.test.tsx src/pages/account/ui/AccountPage.vm.test.tsx— passed, 2 files / 15 tests. - Focused frontend checks:
npm run typecheck,npm run lint,npm run knipandnpm run deps— passed. - Frontend canonical gate under Node 22.21.0 with Node 22 first in
PATH:npm ci && npm run verify— passed after bundle baseline update; 18 test files / 64 tests, coverage 83.84% statements / 78.41% branches / 78.36% functions / 84.5% lines, production build and bundle check passed. - OpenSpec structural check:
openspec validate codify-frontend-view-model-boundary --type change --strict --store wealth-ledger-specs— passed. - Workspace dispatcher under Node 22.21.0 with Node 22 first in
PATH:bash specs/scripts/verify-workspace-change.sh codify-frontend-view-model-boundary— passed; Delivery Map frontend/specs affected and backend/docs N/A verified, main specs 20/20 passed, frontend canonical verification passed.
Conclusion:
The implementation matches the approved Proposal and Design as a behavior-preserving frontend architecture hardening change. The account page now provides a corrected local example of the container/ViewModel/view boundary, frontend-local guidance documents that boundary, and no user-visible capability, backend behavior, route, API contract, durable data behavior or non-goal changed.