id: CORE-001D1 title: Portfolio Persistence Serialization Seam status: done priority: P1 effort: M depends_on: - CORE-001B - CORE-001C tags: - core - decimal - persistence - workspace summary: Portfolio and workspace persistence now use an explicit unit-aware schema with strict validation and atomic saves. completed_notes: - Added `schema_version: 2` persistence envelopes for portfolio/workspace config storage. - Persisted bookkeeping-sensitive numeric values now carry explicit unit or currency metadata. - Load path now rejects invalid JSON, unsupported schema versions, malformed payload shapes, and incomplete v2 payloads. - Save path now validates before writing and replaces files atomically. - Invalid workspace config files are no longer treated as routeable workspaces. - Legacy non-workspace routes were removed so canonical workspace URLs are the only supported dashboard paths. - Validated with unit tests, `make build`, and live Playwright on `main`.