chore(handoff): oppdater sesjonsstatus 2026-06-15 — terminal+ssh levert, panel-status frå historikk
This commit is contained in:
parent
0e066d8d13
commit
787edea5f6
116
docs/HANDOFF.md
116
docs/HANDOFF.md
|
|
@ -1,8 +1,8 @@
|
|||
# HANDOFF — Vauco OS
|
||||
|
||||
**Sist oppdatert:** 2026-06-13 18:00 CEST
|
||||
**Skrevet av:** Nemotron (stand-in)
|
||||
**Status:** Fase 2 — sesjon avsluttet
|
||||
**Sist oppdatert:** 2026-06-15 06:05 CEST
|
||||
**Skrevet av:** Sonar/Perplexity (Orchestrator 2)
|
||||
**Status:** Fase 2 — aktiv sesjon
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -15,64 +15,55 @@
|
|||
- **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 i dag (2026-06-13)
|
||||
## ✅ Levert — kumulative commits (HEAD: `0e066d8`)
|
||||
|
||||
### PR #17 — merga til main (commit `1e6bc5b`)
|
||||
- `fix(opax): replace cloudbuild_v1 import with REST API` — `d25caf1`
|
||||
- `fix: replace sync httpx.get with async client in build-status + terminal` — `1e6bc5b`
|
||||
- To stader i `main.py` fiksa: linje ~188 (`build_status()`) og linje ~248 (`terminal_exec` cmd=build)
|
||||
- Synkron `httpx.get` → `async with httpx.AsyncClient(timeout=15.0)` + `raise_for_status()`
|
||||
|
||||
### Dockerfile-fix
|
||||
- `fix(docker): start main:app fra /app — ikke agents/core-logic` — `beb466e`
|
||||
- `WORKDIR /app` og `CMD ["uvicorn", "main:app", ...]` bekrefta i prod
|
||||
|
||||
### Panelfiksar opax.html
|
||||
- `fix(opax): MD-panel — bytt renderMd() med marked.js` — `39f714a`
|
||||
- `fix(opax): CostGuard — AbortController 10s timeout + /billing/credits?days=30` — `b5c03d4`
|
||||
- `fix(opax): Fix 4 — Browser → Docs Browser, marked.js render, default MASTERPLAN.md` — `3cc6a83`
|
||||
|
||||
### Backend-endepunkt lagt til
|
||||
- `feat(terminal+vm): POST /terminal/exec whitelist + GET /vm/ssh-key` — `c7e7b28`
|
||||
| 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 fått `roles/cloudbuild.builds.viewer` — satt manuelt
|
||||
|
||||
### Andre commits
|
||||
- `chore: oppdater gemma/world.md + vm-teardown.sh` — `6d0eeeb`
|
||||
- `chore: trigger CI/CD redeploy — rollback env-var fix` — `3d8caf0`
|
||||
- `osvauco-agent-sa` har `roles/cloudbuild.builds.viewer` — satt manuelt 2026-06-13
|
||||
|
||||
---
|
||||
|
||||
## 🔴 Incident i dag — env-var-krasj
|
||||
## 🧪 Panel-status opax.vauco.no (verifisert via sesjonslogs)
|
||||
|
||||
**Kva skjedde:** `--set-env-vars` vart køyrt med plasshaldarar (`<din-token>`) i staden for faktiske verdiar. Cloud Run tolka `<` og `>` som ugyldig Python-syntaks → `SyntaxError` → container krasja → revision `00482-5hq` dead.
|
||||
|
||||
**Løysing:**
|
||||
1. `gcloud run services update ... --remove-env-vars GITHUB_TOKEN,SENDGRID_API_KEY,TWILIO_ACCOUNT_SID`
|
||||
2. `git commit --allow-empty` + `git pull --rebase` + `git push` for å trigge ny CI/CD
|
||||
3. Tenesta tilbake på `00480-dbn` → ny build `3d8caf0` deployd og live
|
||||
|
||||
**Lærdom:** Set aldri env-vars med plasshaldarar. Bruk Secret Manager for sensitive verdiar.
|
||||
| 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 |
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Panel-status opax.vauco.no
|
||||
## 🔴 Kjente problem
|
||||
|
||||
| Panel | Status |
|
||||
|-------|--------|
|
||||
| Jason chat | ✅ Fungerer |
|
||||
| Kalkulator | ✅ Fungerer |
|
||||
| VM-er | ✅ Fungerer |
|
||||
| Sites & Moduler | ✅ Fungerer |
|
||||
| CostGuard | ⚠️ Ikkje verifisert i prod etter fix |
|
||||
| Cloud Build | ⚠️ Ikkje verifisert i prod etter fix |
|
||||
| Terminal | 🟡 Backend pusht, frontend-kobling manglar |
|
||||
| MD-panel | ⚠️ Ikkje verifisert i prod etter fix |
|
||||
| Docs Browser | ⚠️ Ikkje verifisert i prod etter fix |
|
||||
### 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.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -80,30 +71,33 @@
|
|||
|
||||
| # | Oppgåve | Prioritet |
|
||||
|---|---------|----------|
|
||||
| 1 | Verifiser alle paneler i `opax.vauco.no` i nettlesar | 🔴 Høy |
|
||||
| 2 | Terminal frontend-kobling — `runTerminalCommand()` i `opax.html` → `POST /terminal/exec` | 🔴 Høy |
|
||||
| 3 | GET /vm/ssh-key modal i `opax.html` | 🟡 Medium |
|
||||
| 4 | Env-vars: `GITHUB_TOKEN`, `SENDGRID_API_KEY`, `TWILIO_ACCOUNT_SID` — hent frå SendGrid/Twilio/GitHub og set via `--set-env-vars` med faktiske verdiar | 🟡 Medium |
|
||||
| 5 | CG7-scope | ⏳ Venter på Chris |
|
||||
| 6 | Emma/Gemma GPU VM — sjå `docs/gemma/world.md` | 🟡 Medium |
|
||||
| 7 | OAuth allowlist etter domene-migrering (ProISP → Google) | 🟡 Issue open |
|
||||
| 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` — revision `00483` (etter CI/CD `3d8caf0`)
|
||||
- **opax.vauco.no:** Live — panel-status ikkje verifisert etter dagens fixar
|
||||
- **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`
|
||||
- **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 alle 9 paneler
|
||||
2. Les `main.py` linje 240-280 for terminal-frontend-kobling
|
||||
3. Hent `GITHUB_TOKEN` frå github.com/settings/tokens, `SENDGRID_API_KEY` frå sendgrid.com, `TWILIO_ACCOUNT_SID` frå console.twilio.com
|
||||
4. Set env-vars med faktiske verdiar — **ikkje plasshaldarar**
|
||||
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**
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user