# Release Checklist — Virtual Foreman > Pre-production state right now. The following items remain — all can > be completed in less than an hour. ## ✅ Done - Backend (FastAPI) is live on Hugging Face Space. - Frontend (Next.js) is live on Vercel. - All major routes wired end-to-end: - `GET /health`, `GET /`, `GET /supabase/health` - `POST /projects`, `GET /projects`, `GET /projects/{id}`, `DELETE /projects/{id}` - `POST /work/infer`, `POST /work/blueprint` - `GET /documents/templates`, `POST /documents/render` - `GET /inference/history` - CORS constrained to the live Vercel deploy (`virt-foreman.vercel.app`) plus subdomains and localhost. - X-Request-ID middleware on every response. - HF Space secret recipes documented in `backend/README.md`. - Legacy OpenRouter fields retained but ignored; primary NVIDIA integrate chain (`DeepSeek V4 Flash` + fallbacks) is active. - Vision path uses `Llama-3.2-Vision-11B → 90B → Phi-4-multimodal`. - PDF render pipeline (`pypdfium2 + Pillow`) renders first page to PNG before VLM call, capped at 1536 px on longest edge. - Stub fallbacks for inference exhaustion — UI never dead-ends. - Pytest suite covers schemas + Supabase column mapping (7 tests). - All commits authored `dirboll@gmail.com` (Vercel bot-check OK). ## 🟡 Manual steps remaining (~ 30 minutes) 1. **Apply the Supabase delta schema** - Open https://supabase.com/dashboard/project/hjkubelrluueugdjsqyn/sql/new - Paste contents of `backend/supabase/schema.sql` - Click **Run** → confirm `inference_history` appears in the table editor. 2. **Verify secrets on the HF Space** - https://huggingface.co/spaces/Dirbol/VirtForemanBackend/settings/secrets - `SUPABASE_URL` ✅ - `SUPABASE_SECRET_KEY` (or `SUPABASE_KEY`) ✅ - `LLM_API_KEY` (= NVIDIA integrate API key) ✅ - Optional: `HF_TOKEN` for monitoring 3. **Vercel one-time connect** (skipped in Termux) - Vercel dashboard → "Add New Project" → "Import Git Repository" - Pick `dirboll-commits/VirtForeman` - Root directory: repo root (already Next.js-shaped) - Env vars in Vercel project settings: - `NEXT_PUBLIC_API_URL=https://dirbol-virtforemanbackend.hf.space` - `NEXT_PUBLIC_APP_NAME=Virtual Foreman` 4. **Health checks** - `curl https://dirbol-virtforemanbackend.hf.space/health` → 200 - `curl https://dirbol-virtforemanbackend.hf.space/supabase/health` → `{configured:true, reachable:true, rows_in_projects_sample:1}` - `curl https://virt-foreman.vercel.app/` → 200, home page renders 5. **End-to-end smoke** (manual, in browser) - Create project → /work, /blueprint, /documents chained actions. - Verify each inference shows up under /history. - Verify document download opens in Word / LibreOffice. 6. **Run the regression suite** ```bash pip install -r requirements-dev.txt pytest tests/test_schemas.py tests/test_supabase_mapping.py -v ``` Expected output: `7 passed`. 7. **Production hardening (optional)** - Rate-limit per IP on `/work/infer` and `/work/blueprint`. - Auth layer (Supabase Auth widgets or OIDC for the frontend). - Email verification before document download. ## 📋 Deployment commands cheat-sheet ```bash # Backend → HF Space git push hf :main # Frontend → Vercel (Vercel auto-deploys on push to origin/main) git push origin :refs/heads/main --force ``` Both must succeed for a clean release. Roll back via Vercel "Promote previous deployment" / HF revert. ## 🔁 Logs - HF Space runtime: https://huggingface.co/spaces/Dirbol/VirtForemanBackend → "Logs" tab → "Container" stream. - Vercel: project → "Logs" tab. - Local sanity: `pytest tests/ -v`.