Updated the HANDOFF document with the latest sprint status, identified critical issues, and outlined next steps for fixes. Adjusted timestamps and added details on the current system status and environment variables.
132 lines
5.2 KiB
Markdown
132 lines
5.2 KiB
Markdown
# HANDOFF — Vauco OS
|
|
|
|
**Sist oppdatert:** 2026-06-13 14:45 CEST
|
|
**Skrevet av:** Perplexity (stand-in) via GitHub MCP
|
|
**Sprint:** Fase 2 — opax.html panel-fikser er neste prioritet
|
|
|
|
---
|
|
|
|
## 🔴 Kritisk blokkering — fikses nå
|
|
|
|
### `google.cloud.devtools` krasjer `/run`-endepunktet
|
|
**Rotårsak:** `main.py` importerer `from google.cloud.devtools import cloudbuild_v1` inne i `/opax/build-status`.
|
|
Denne importen krasjer med HTTP 500 og blokkerer:
|
|
- Jason: alle verktøykall (`get_build_status`, `get_logs`, `deploy_service`) feiler
|
|
- Cloud Build-panel i opax.html: viser alltid ERROR
|
|
- `/run`-endepunktet krasjer hvis Jason prøver å bruke et ADK-verktøy
|
|
|
|
**Fix:** Erstatt `cloudbuild_v1`-importen med REST API via `httpx` + `google.auth` (se Fase 2-oppdrag nedenfor)
|
|
|
|
---
|
|
|
|
## 🧪 Panel-test 2026-06-13 — opax.vauco.no
|
|
|
|
| Panel | Status | Problem |
|
|
|-------|--------|----------|
|
|
| Jason chat | ✅ Svarer | Enkle spørsmål fungerer — verktøykall gir HTTP 500 |
|
|
| CostGuard | 🔴 Spinner evig | Fetcher feil URL eller timeout |
|
|
| Kalkulator | ✅ Fungerer | Slider + ROI live |
|
|
| Cloud Build | 🔴 ERROR alltid | `devtools`-import krasjer — aldri fungert |
|
|
| VM-er | ✅ Fungerer | RUNNING, IP, SSH-knapp til GCP |
|
|
| Sites & Moduler | ✅ Fungerer | Alle 6 kort vises |
|
|
| Terminal | 🟡 Skall | Viser 5 hardkodede kommandoer, ingen output fra backend |
|
|
| MD | 🔴 Tom | Åpne-knappen gjør ingenting |
|
|
| Browser | 🔴 Ødelagt | Kun intern /docs/-proxy — externe URLer viser broken |
|
|
|
|
---
|
|
|
|
## 🔴 Fase 2 — Neste oppdrag (gi til Nemotron)
|
|
|
|
### Fix 1 — Cloud Build REST (blokkerer Jason)
|
|
`/opax/build-status` i `main.py`: fjern `cloudbuild_v1`-import, bruk:
|
|
```python
|
|
import httpx, google.auth, google.auth.transport.requests
|
|
|
|
@app.get("/opax/build-status")
|
|
async def build_status():
|
|
creds, project = google.auth.default()
|
|
creds.refresh(google.auth.transport.requests.Request())
|
|
url = f"https://cloudbuild.googleapis.com/v1/projects/{project}/builds?pageSize=5"
|
|
r = httpx.get(url, headers={"Authorization": f"Bearer {creds.token}"})
|
|
builds = r.json().get("builds", [])
|
|
return {"builds": [{"id": b["id"], "status": b["status"],
|
|
"branch": b.get("substitutions",{}).get("BRANCH_NAME",""),
|
|
"createTime": b["createTime"]} for b in builds]}
|
|
```
|
|
|
|
### Fix 2 — MD-panel
|
|
`Åpne`-knappen på hvert MD-kort gjør ingenting.
|
|
Fiks: klikk → fetch `/docs/<filnavn>` → render markdown inline med `marked.js`
|
|
|
|
### Fix 3 — CostGuard-panel spinner
|
|
Finn fetch-URL i `opax.html` for CostGuard-seksjonen.
|
|
Verifiser at den peker på `/billing/credits?days=30`.
|
|
Legg til timeout 10s og vis "Ingen data" i stedet for evig spinner.
|
|
|
|
### Fix 4 — Browser-panel
|
|
Fjern ekstern URL-støtte (fungerer ikke — CORS/iframe-blokkering).
|
|
Rename til "Docs Browser", placeholder `/docs/MASTERPLAN.md`.
|
|
Vis markdown rendret, ikke raw.
|
|
|
|
**Commit:** `fix(opax): cloud-build REST, MD-render, CostGuard timeout, browser-panel`
|
|
|
|
---
|
|
|
|
## ✅ Levert 2026-06-13
|
|
| Commit | Task | Detalj |
|
|
|--------|------|---------|
|
|
| `6611927` | **Hotfix** `requirements.txt` + BQ-migrering | `google-cloud-build>=3.24.0` lagt til. BQ-skript kjørt ✅ |
|
|
| `c114f6c` | **Frontend** `billing-dashboard.html` | Tre pool-bars, Free Trial topbar-banner, `Promise.allSettled()` |
|
|
| `bc501c1` | **OQ-31** `billing_agent.py` | `credit_pools[]`, `effective_days`, `badge_class`, `warning: bool` |
|
|
| `055a482` | **OQ-29** `main.py` | `GET /notify/channels` — verifisert i prod |
|
|
| `4693fea` | **CI-fix** `cloudbuild.yaml` | Fjernet `--audiences` fra smoke-test |
|
|
|
|
---
|
|
|
|
## ✅ Manuelt utført 2026-06-13
|
|
| Handling | Status |
|
|
|----------|--------|
|
|
| Kreditt env-vars satt i Cloud Run (rev `00469-p96`) | ✅ Ferdig |
|
|
| BQ-migrering kjørt — `caller_type`, `module_name`, `session_id` | ✅ Ferdig |
|
|
| `google-cloud-build` i `requirements.txt` | ✅ Pushet |
|
|
|
|
---
|
|
|
|
## ✅ OQ-logg
|
|
| OQ | Beskrivelse | Status |
|
|
|----|-------------|--------|
|
|
| **OQ-29** | `GET /notify/channels` | ✅ Verifisert i prod |
|
|
| **OQ-30** | Browser-panel `opax.html` | ✅ Løst (frontend) — backend /docs/ fungerer |
|
|
| **OQ-31** | `credit_pools[]` + kreditt env-vars | ✅ Komplett |
|
|
|
|
---
|
|
|
|
## ⚠️ Gjenstår for Chris
|
|
| # | Handling | Prioritet |
|
|
|---|----------|-----------|
|
|
| 1 | Gi Fase 2-oppdraget til Nemotron (Fix 1-4 over) | 🔴 Høy |
|
|
| 2 | Sett varslings-env-vars: `SENDGRID_API_KEY`, `NOTIFY_EMAIL_TO`, `TWILIO_ACCOUNT_SID` | Lav |
|
|
| 3 | Bestem CG7-scope | Venter på Chris |
|
|
| 4 | Aktiver Emma/Gemma — `docs/gemma/world.md` finnes allerede i repo | Medium |
|
|
|
|
---
|
|
|
|
## ⚠️ Regler (låst)
|
|
- **Test alltid via `cloud-run-proxy`** — IKKE `--audiences`
|
|
- `gcloud run services proxy osvauco-agent --region=us-central1 --project=propane-will-491900-m5 --port=8080`
|
|
- **Hovudapp:** `main.py` i rot — IKKE `agents/core-logic/app.py`
|
|
- **Region:** `us-central1`
|
|
- **Service:** `osvauco-agent`
|
|
|
|
---
|
|
|
|
## 🏗 Systemstatus
|
|
| Komponent | Status |
|
|
|-----------|--------|
|
|
| Cloud Run `osvauco-agent` | ✅ Live `us-central1` rev `00469-p96` |
|
|
| `opax.vauco.no` | ✅ Live — 5/9 paneler fungerer |
|
|
| `costguard.oss.vauco.no` | ✅ Innlogging fungerer |
|
|
| Jason (ADK) | 🔴 Verktøykall feiler — devtools-fix nødvendig |
|
|
| BQ billing export | ✅ Aktiv |
|
|
| Gemma/Emma VM | ⏳ Ikke startet |
|