Moves phases 08–11 execution artifacts from .planning/phases/ to .planning/milestones/v0.2-phases/ to keep .planning/phases/ clean for the next milestone. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
92 lines
3.0 KiB
Markdown
92 lines
3.0 KiB
Markdown
---
|
|
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)
|