docs(specs): archive frontend view model boundary change
This commit is contained in:
+48
@@ -0,0 +1,48 @@
|
||||
# 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.ts` now 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.tsx`
|
||||
and `components/*.view.tsx` render props only.
|
||||
- Forbidden view dependencies: grep found no `useBrokerageOperations`,
|
||||
`useBrokerageEvents`, `useAuth`, `useParams`, `useNavigate`,
|
||||
`useAccountPageViewModel`, `denominators` or `positions.filter` occurrences
|
||||
in account page view files or presentation components.
|
||||
- Access token boundary: `accessToken` remains only in `AccountPage.vm.ts` and
|
||||
test auth mocks under `src/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.md` and `frontend/AGENTS.md` now 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 missing `positionSections`, `recentOperations` and `recentEvents` presentation 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 knip` and `npm 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.
|
||||
Reference in New Issue
Block a user