diff --git a/docs/HANDOFF.md b/docs/HANDOFF.md index 3b05b8b..f775c0c 100644 --- a/docs/HANDOFF.md +++ b/docs/HANDOFF.md @@ -1,8 +1,8 @@ # HANDOFF — Vauco OS -**Sist oppdatert:** 2026-06-01 ~06:27 CEST -**Skrevet av:** Jason Vauger (via Perplexity / Sonnet 4.6) på vegne av Marte Solbrekke Hein -**Status:** Fase 8 gjenstår. Sesjon 2026-06-01 fullført — dokumentasjon og agentprofil lagt til. +**Sist oppdatert:** 2026-06-04 ~21:30 CEST +**Skrevet av:** Jason Vauger (via Perplexity) på vegne av Chris Christiansen +**Status:** Fase 8 pågår. PR #15 (IAP /health-fix) er MERGET til main. Neste: fiks cloudbuild.yaml secrets → manuell deploy → verifiser. > **Regel:** Dette er **den eneste** HANDOFF-filen. Overskrives hver sesjon. Tidligere handoffs er flyttet til `docs/archive/handoffs/`. @@ -16,18 +16,48 @@ Self-modifisering av infrastruktur, secrets, IAM eller produksjonsmiljø uten go --- +## 🎯 NESTE OPPGAVE (les denne først) + +**Fase 8 — deploy den mergede /health-fixen og verifiser OPAX live.** + +Konkret, i rekkefølge (én av gangen, vis output, aldri deploy uten `DEPLOY GODKJENT`): + +1. **Fiks cloudbuild.yaml deploy-steget** — det mangler OAuth/session-secrets. Uten dette sletter `--set-env-vars` alle secrets ved deploy. + - Legg til etter `--set-env-vars`-linja: `- '--set-secrets=GOOGLE_CLIENT_ID=GOOGLE_CLIENT_ID:1,SESSION_SECRET=SESSION_SECRET:1,GOOGLE_CLIENT_SECRET=GOOGLE_CLIENT_SECRET:1'` + - Legg til i `substitutions:`: `_GEMINI_LOCATION: global` +2. Commit (signér "Powered by Jason, Crafted by Vauco") + push. +3. **Manuell deploy:** `gcloud builds submit --config=cloudbuild.yaml --project=propane-will-491900-m5` (kun etter `DEPLOY GODKJENT`). +4. Verifiser: ny Cloud Run revisjon + Vertex-ping + browser-login på opax.vauco.no. + +**IKKE gjør dette (kjente feller fra forrige sesjon):** +- IKKE re-merge PR #15 — den er allerede merget til main. +- IKKE sett opp nye CI/CD-triggere — vi deployer manuelt. Ut av scope. +- IKKE kjør `gcloud builds triggers list` — den henger. + +--- + ## 🏗 Hva er dette prosjektet? Se `docs/MASTERPLAN.md` for full sannhet. Kortversjonen: ``` Vauco OS (plattform) - └── OPAX (engine på Cloud Run us-central1) + └── OPAX (kommandosenter + salgsmodul-bygger, Cloud Run us-central1) ├── CostGuard (Modul #1 — live på costguard.oss.vauco.no) ├── Threadstone (Modul #2 — Q3 2026) └── [Modul #3+] ``` +**OPAX = kommandosenter for ALLE prosjekter** (et prosjekt = en klient — samme ting). OPAX bygger, iscenesetter og publiserer prosjekter. OPAX er ikke bundet til noe enkelt prosjekts region. + +**Branding-konvensjon for prosjekter:** +| Subdomene | Type | +|---|---| +| `.oss.vauco.no` | Staging / demo | +| `.os.vauco.no` | Live produksjon | + +(Klient kan videresende eget domene, men kanonisk merkevare-label er alltid `*.vauco.no`.) + Første betalende produkt: **CostGuard** (GCP-kostnadsanalyse via AI). --- @@ -39,19 +69,54 @@ Første betalende produkt: **CostGuard** (GCP-kostnadsanalyse via AI). | Cloud Run `osvauco-agent` | ✅ Live, `us-central1` | | `opax.vauco.no` (LB + SSL) | ✅ Live, IP `34.98.77.173` | | IAP (`@vauco.no` only) | ✅ Aktivert | -| CI/CD Cloud Build → Cloud Run | ✅ Operativt (auto-deploy på push til main) | +| PR #15 IAP /health-fix | ✅ Merget til main (commit 7a09871) | +| CI/CD Cloud Build → Cloud Run | ⚠️ IKKE operativt — ingen trigger, siste builds FAILURE. Deploy MANUELT. | | RAG corpus `osvauco-corpus` | ✅ Populert, `europe-west1` | | OAuth2 (Google) | ✅ I Secret Manager | -| Budget guard (500 NOK/mnd) | ✅ Live | | AI-modell | ✅ `gemini-2.5-pro` via Vertex AI (us-central1) | | `costguard.oss.vauco.no` | ✅ Live (Cloudflare Pages) | -| Terraform bootstrap-modul | ✅ I `infrastructure/terraform/modules/` | -| Jason Vauger agentprofil | ✅ `agents/jason-vauger.md` opprettet 2026-06-01 | -| BigQuery dataset + sink | ⏳ Oppe, men tabell ikke populert ennå | --- -## 🟡 Forrige sesjon (2026-05-31) — Konsolidering + vauco.no inkorporert +## 📋 Nøkkelinformasjon + +| Nøkkel | Verdi | +|---|---| +| GCP Project | `propane-will-491900-m5` | +| Region (OPAX, LÅST) | `us-central1` | +| Vertex AI endpoint | `us-central1` (kjører `GOOGLE_CLOUD_LOCATION=global` i praksis) | +| Artifact Registry | `us-central1-docker.pkg.dev/propane-will-491900-m5/osvauco-repo` | +| Cloud Run service | `osvauco-agent` | +| Cloud Run URL (direkte) | `https://osvauco-agent-357036551735.us-central1.run.app` | +| Public URL | `https://opax.vauco.no` | +| LB IP | `34.98.77.173` | +| AI-modell | `gemini-2.5-pro` | +| Repo | `vauco-saas/OSVauco` | +| Eier / Operatør | Chris Christiansen — `chris.christiansen@vauco.no` | +| Agent-konto | `jason.vauger@vauco.no` | + +--- + +## 🩺 Medisinsk prosjekt (Medioteq) — SEPARAT, IKKE OPAX + +Det medisinske prosjektet er et **eget, fremtidig prosjekt** som **ikke er opprettet ennå** og **ikke er prioritert**. Det påvirker IKKE OPAX sin region eller arkitektur. Når det opprettes, velges region (EU eller US) der og da, uavhengig av OPAX. Alle kliniske/`europe-north1`-regler gjelder KUN det prosjektet — ikke OPAX. + +--- + +## ⚠️ Vanlige feil — ikke gjør disse + +- **Ikke opprett nye HANDOFF_YYYYMMDD-filer.** Det er kun denne. Overskriv den. +- **Ikke re-merge PR #15** — allerede merget. +- **Ikke sett opp CI/CD-triggere** — deploy manuelt. +- **Ikke bytt til Claude før kvote er bekreftet** + `MODEL APPROVED` fra Chris. +- **Ikke migrere fra us-central1** — regionen er låst for OPAX. +- **Ikke rør IAP, OAuth, eller Secret Manager** uten eksplisitt `DEPLOY GODKJENT`. +- **Ikke oppdater OAuth-klient redirect URIs uten domeneavklaring** — se Issue #16. +- **Ikke hopp over HITL gates.** + +--- + +## 🟡 Tidligere sesjon (2026-05-31) — Konsolidering + vauco.no inkorporert PR `chore/consolidate-2026-05-31` rydder: @@ -74,92 +139,6 @@ PR `chore/consolidate-2026-05-31` rydder: - ✅ Åpne PR-er: #8 (docs region), #9 (opax comments), #10 (vm stop-fix) - ✅ VM stop-fix: `scripts/stop-osvauco-dev-vm.sh` laget, DELETE-risiko eliminert ---- - -## 🟢 Denne sesjonen (2026-06-01 ~05:30–06:30 CEST) — Dokumentasjon + Jason Vauger - -**Utført av:** Marte Solbrekke Hein + Jason Vauger (Perplexity) - -### ✅ Fullført - -- ✅ **Issue #16 opprettet** — OAuth-klient må revideres etter domeneflytting fra ProISP til Google - - Sjekkliste for OPAX, OS, Costguard, Threadstone - - Påminnelse: Google krever eksakt match på redirect URIs — ikke bare "anta" at de fungerer etter DNS-migrasjon - - Se: [vauco-saas/OSVauco#16](https://github.com/vauco-saas/OSVauco/issues/16) - -- ✅ **`agents/jason-vauger.md` opprettet** — fullstendig agentprofil for Jason Vauger - - Rolle: personlig assistent / persona-lag over OPAX - - Dekker: ansvarsområder, personlighet, integrasjonspunkter, ML-faser (ML-1/2/3) - - Peker til Issue #16 (OAuth-avhengighet) - -- ✅ **`AGENTS.md` oppdatert** — Jason Vauger lagt til - - Øverst i arkitekturdiagram (over OPAX) - - Ny rad i agenttabell med PS-rolle, Dask-rolle og ML-faser - - Commit: `bcd3036` - -### 📝 Avklart i sesjonen - -- GitHub Copilot bruker **Auto**-modell som standard (ikke Gemini 2.5 Pro eksplisitt) -- 50 % Copilot premium requests brukt — sannsynligvis fra agent/chat-sesjoner, ikke modellvalg -- Jason Vauger er **ikke** en PS-worker — han er persona-lag over hele stacken -- Marte er den faktiske eieren av OSVauco (tidligere referert som "Chris" i eldre docs) - ---- - -## 🔄 Neste oppgave: Fase 8 — End-to-end test (browser) - -Cloud Run og IAP er allerede verifisert (`/health` OK via Cloud Run, IAP blokkerer uautentisert). - -**Det som gjenstår:** - -### Steg 1 — Verifiser modell-config -```bash -# Sjekk at app bruker gemini-2.5-pro, ikke Claude -gcloud run services describe osvauco-agent --region us-central1 \ - --format='value(spec.template.spec.containers[0].env[?(@.name=="VERTEX_MODEL")].value)' -# Forventet: gemini-2.5-pro -``` - -### Steg 2 — Test Vertex Gemini direkte -```bash -curl -X POST \ - "https://us-central1-aiplatform.googleapis.com/v1/projects/propane-will-491900-m5/locations/us-central1/publishers/google/models/gemini-2.5-pro:generateContent" \ - -H "Authorization: Bearer $(gcloud auth print-access-token)" \ - -H "Content-Type: application/json" \ - -d '{"contents":[{"role":"user","parts":[{"text":"ping"}]}]}' -# Forventet: JSON med tekst-svar -``` - -### Steg 3 — Full end-to-end -Logg inn på `https://opax.vauco.no` med `chris.christiansen@vauco.no` → send en melding → verifiser at agenten svarer. - -**HITL gate:** Skriv `FASE8 APPROVED` i denne filen + i ROADMAP når alle steg er verifisert. - ---- - -## 🔜 Etter Fase 8 — to spor parallelt - -**Spor A — CG3 (CostGuard frontend wiring)** — inntektsmotor -**Spor B — V1 (vauco.no salgsportal)** — ansiktet utad, må være live før første kundeklage om "hvem er Vauco?" - -Se `docs/ROADMAP.md` seksjon NEXT for full sjekkliste og `docs/vauco-site/DESIGN.md` for V1 design-spec. - ---- - -## 📋 Nøkkelinformasjon - -| Nøkkel | Verdi | -|---|---| -| GCP Project | `propane-will-491900-m5` | -| Region | `us-central1` | -| Vertex AI endpoint | `us-central1` | -| Cloud Run service | `osvauco-agent` | -| Cloud Run URL (direkte) | `https://osvauco-agent-357036551735.us-central1.run.app` | -| Public URL | `https://opax.vauco.no` | -| LB IP | `34.98.77.173` | -| AI-modell | `gemini-2.5-pro` | -| Repo | `vauco-saas/OSVauco` | -| Kontakt | `chris.christiansen@vauco.no` | --- @@ -190,13 +169,6 @@ Se `docs/ROADMAP.md` seksjon NEXT for full sjekkliste og `docs/vauco-site/DESIGN --- -## 📜 Tidligere handoffs - -Arkivert i `docs/archive/handoffs/`: -- `HANDOFF_20260526.md` -- `HANDOFF_20260531.md` -- `HANDOFF_20260531_claude47.md` - --- -*Vauco AS · propane-will-491900-m5 · `us-central1` · Jason Vauger sier: neste sesjon starter med Fase 8.* +*Vauco AS · propane-will-491900-m5 · `us-central1` · Powered by Jason, Crafted by Vauco · Fase 8: cloudbuild secrets-fix → manuell deploy.*