OSVauco/docs/HANDOFF.md

104 lines
4.9 KiB
Markdown

# HANDOFF — Vauco OS
**Sist oppdatert:** 2026-06-15 06:05 CEST
**Skrevet av:** Sonar/Perplexity (Orchestrator 2)
**Status:** Fase 2 — aktiv sesjon
---
## ⚠️ KRITISKE REGLER — les alltid først
- **Hovudapp:** `main.py` i rot — IKKJE `agents/core-logic/app.py`
- **Dockerfile:** `agents/core-logic/Dockerfile` — skal ha `WORKDIR /app` og `CMD ["uvicorn", "main:app", ...]`
- **Region:** `us-central1` | **Service:** `osvauco-agent` | **Prosjekt:** `propane-will-491900-m5`
- **Test via proxy:** `gcloud run services proxy osvauco-agent --region us-central1 --project propane-will-491900-m5 --port 8181`
- **ALDRI** `--audiences`-flag
- **Smoke-test:** skal peke på `/health` (ikkje `/debug-health`)
- **Curl mot prod:** Bruk alltid identity token — `TOKEN=$(gcloud auth print-identity-token)` — IAP blokkerer utan
- **GITHUB_PAT** → migrerer til eigen MCP (planlagt, ikkje kritisk no)
---
## ✅ Levert — kumulative commits (HEAD: `0e066d8`)
| SHA | Commit | Dato |
|-----|--------|------|
| `0e066d8` | `feat(vm): SSH-nøkkel-knapp + modal i opax.html — GET /vm/ssh-key` | 2026-06-15 |
| `afc878b` | `feat(terminal): koble frontend til POST /terminal/exec` | 2026-06-15 |
| `1e6bc5b` | `fix: replace sync httpx.get with async client in build-status + terminal` | 2026-06-13 |
| `beb466e` | `fix(docker): start main:app fra /app — ikke agents/core-logic` | 2026-06-13 |
| `3cc6a83` | `fix(opax): Fix 4 — Docs Browser, marked.js render, default MASTERPLAN.md` | 2026-06-13 |
| `b5c03d4` | `fix(opax): CostGuard — AbortController 10s timeout + /billing/credits?days=30` | 2026-06-13 |
| `39f714a` | `fix(opax): MD-panel — bytt renderMd() med marked.js` | 2026-06-13 |
| `c7e7b28` | `feat(terminal+vm): POST /terminal/exec whitelist + GET /vm/ssh-key` | 2026-06-13 |
| `d25caf1` | `fix(opax): replace cloudbuild_v1 import with REST API` | 2026-06-13 |
### IAM
- `osvauco-agent-sa` har `roles/cloudbuild.builds.viewer` — satt manuelt 2026-06-13
---
## 🧪 Panel-status opax.vauco.no (verifisert via sesjonslogs)
| Panel | Status | Notat |
|-------|--------|-------|
| Jason chat | ✅ Fungerer | |
| Kalkulator | ✅ Fungerer | |
| VM-er | ✅ Fungerer | |
| Sites & Moduler | ✅ Fungerer | |
| Cloud Build | ⚠️ Viser tom liste | IAM satt, men `/opax/build-status` returnerte `Unauthorized` via proxy — IAP-problem, ikkje app-feil |
| CostGuard | ⚠️ Ingen data | `GOOGLE_CREDIT_TOTAL_USD` env-var ikkje satt |
| Terminal | ✅ Frontend kobla (`afc878b`) | Ikkje prod-verifisert etter siste commit |
| MD-panel | ⚠️ Ikkje verifisert | Fix pusht (`39f714a`), ingen bekreftelse |
| Docs Browser | ⚠️ Ikkje verifisert | Fix pusht (`3cc6a83`), GITHUB_PAT var problem — no løyst |
---
## 🔴 Kjente problem
### Cloud Build-panel — `Unauthorized`
`/opax/build-status` returnerer 401 via `gcloud run services proxy`. `Server: Google Frontend` i header = IAP blokkerer. Identity token frå VM-brukar har ikkje tilgang til IAP-ressursen.
- `osvauco-agent-sa` har `cloudbuild.builds.viewer`
- Problemet: IAP-bypass for `iap.httpsResourceAccessor` — berre `chris.christiansen@vauco.no` er i lista
- **Workaround:** Test direkte frå nettlesaren (innlogga Google-sesjon) — IAP-cookie fungerer
### CostGuard — ingen data
Mangler `GOOGLE_CREDIT_TOTAL_USD` env-var på Cloud Run.
---
## ⚠️ Gjenstår (prioritert)
| # | Oppgåve | Prioritet |
|---|---------|----------|
| 1 | Verifiser Terminal + MD-panel + Docs Browser i nettlesar | 🔴 Høy |
| 2 | Sett `GOOGLE_CREDIT_TOTAL_USD` env-var | 🟡 Medium |
| 3 | Sett `SENDGRID_API_KEY` + `TWILIO_ACCOUNT_SID` | 🟡 Medium |
| 4 | CG5a — `POST /notify/webhook` i `main.py` | 🟡 Medium |
| 5 | CG4d — Prisingskalkulator i `static/opax.html` | 🟡 Medium |
| 6 | CG5b — `POST /notify/email` via SendGrid | 🟡 Medium |
| 7 | Eigen MCP for GitHub-tilgang (erstatter PAT) | 🟡 Planlagt |
| 8 | CG7-scope | ⏳ Venter på Chris |
| 9 | Emma/Gemma GPU VM — `docs/gemma/world.md` | 🟡 Medium |
| 10 | OAuth allowlist etter domene-migrering (ProISP → Google) | 🟡 Issue open |
---
## 🏗 Systemstatus
- **Cloud Run osvauco-agent:** ✅ Live `us-central1` — HEAD `0e066d8`
- **opax.vauco.no:** ✅ Live — 4/9 paneler bekrefta grøne, 5 uverifiserte/feil
- **costguard.oss.vauco.no:** 403 i inline-panel
- **Kreditt:** 2911 NOK utløper 2026-07-10
- **Env-vars på Cloud Run:** `GOOGLE_CLOUD_PROJECT`, `GOOGLE_CLOUD_LOCATION`, `GOOGLE_GENAI_USE_VERTEXAI`, `BILLING_TABLE`, `RAG_CORPUS`, `RAG_LOCATION`, `GOOGLE_CLIENT_ID`, `SESSION_SECRET`, `GOOGLE_CLIENT_SECRET`, `MCP_SECRET`
- **Manglar:** `GITHUB_TOKEN`, `SENDGRID_API_KEY`, `TWILIO_ACCOUNT_SID`, `GOOGLE_CREDIT_TOTAL_USD`
---
## 📌 Neste sesjon — start her
1. Gå til `opax.vauco.no` i nettlesar — sjekk Terminal, MD-panel, Docs Browser
2. Rapporter panel-status tilbake til agent
3. Neste kode-oppgåve: **CG5a**`POST /notify/webhook` i `main.py`
4. Deretter: sett env-vars med faktiske verdiar — **ikkje plasshaldarar**