--- phase: 08-stack-upgrade-backend-decomposition plan: 08 status: complete completed: 2026-06-12 --- # Plan 08-08 Summary — Dependency Upgrades (Wave 3) ## What Was Done - Installed all PERF-01 frontend packages; upgraded Vite 5 → 6 resolving 2 moderate CVEs - Wired `@tailwindcss/forms` plugin in `tailwind.config.js` (required for Phase 11 VISUAL-02) - Pinned `backend/requirements.txt` from floating `>=` to exact `==` versions per D-17 ## Human Checkpoint (Package Legitimacy) User approved all 8 npm packages after security research instead of manual npmjs.com inspection. CVE research confirmed: - **vite 5.4.21 → 6.4.3**: Patched CVE-2026-39363 + CVE-2026-39364 (High, arbitrary file read via dev server). Relevant because `vite.config.js` uses `server.host: '0.0.0.0'`. Vite 8 was evaluated and rejected (breaking Rolldown changes out of phase scope). - All other packages: no known CVEs in Snyk/OpenCVE as of 2026-06-12. ## Before / After: frontend/package.json | Package | Before | After | |---|---|---| | vite | `^5.2.0` (installed 5.4.21) | `^6.4.3` (installed 6.4.3) | | @vitejs/plugin-vue | `^5.0.0` (installed 5.2.4) | `^6.0.7` (installed 6.0.7) | | vue | `^3.4.0` | `^3.5.38` | | @vueuse/core | — | `^14.3.0` (14.3.0) | | @vueuse/integrations | — | `^14.3.0` (14.3.0) | | sortablejs | — | `^1.15.7` (1.15.7) | | @tailwindcss/forms | — | `^0.5.11` (0.5.11) | | rollup-plugin-visualizer | — | `^7.0.1` (7.0.1) | | @types/sortablejs | — | `^1.15.9` (1.15.9) | ## Final backend/requirements.txt (pinned) ``` fastapi==0.128.8 uvicorn[standard]==0.49.0 python-multipart==0.0.32 pydantic-settings==2.14.1 pydantic[email]==2.13.4 anthropic==0.104.0 openai==2.41.0 PyMuPDF==1.27.2.3 python-docx==1.2.0 pytesseract==0.3.13 Pillow==12.2.0 aiofiles==25.1.0 httpx==0.28.1 pytest==9.0.3 pytest-asyncio==1.4.0 sqlalchemy[asyncio]==2.0.49 psycopg[binary]==3.2.13 # alembic pinned to currently-installed 1.16.5 (was >=1.18.4); D-17 mandates pinning to installed alembic==1.16.5 minio==7.2.20 celery[redis]==5.6.3 redis==6.4.0 aiosqlite==0.22.1 PyJWT==2.13.0 pwdlib[argon2]==0.3.0 pyotp==2.9.0 slowapi==0.1.9 cryptography==48.0.0 google-auth-oauthlib==1.4.0 google-api-python-client==2.197.0 msal==1.37.0 webdavclient3==3.14.7 cachetools==7.1.4 structlog==25.5.0 ``` ## Test Results - `cd frontend && npm test` — 136/136 passed on Vite 6 ✅ - `cd frontend && npm run build` — clean production build with Vite 6.4.3 ✅ - `cd frontend && npm audit` — 0 vulnerabilities (was 2 moderate on Vite 5) ✅ - `docker exec backend pytest -v` — 408 passed, 4 skipped, 7 xfailed ✅ (baseline was 405/1) - `pip install -r requirements.txt --dry-run` — no resolution conflicts ✅ ## Acceptance Criteria Met - [x] All PERF-01 packages installed at correct versions - [x] `@tailwindcss/forms` wired in `tailwind.config.js` (ready for Phase 11 VISUAL-02) - [x] Vite 6 production build succeeds - [x] `backend/requirements.txt` fully `==` pinned per D-17 (0 floating constraints) - [x] All tests pass - [x] Human checkpoint approved (CVE-informed, not just npmjs.com visual check)