# 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**