162 lines
6.5 KiB
Markdown
162 lines
6.5 KiB
Markdown
# VAUCO OS — ROADMAP
|
||
|
||
**Eier:** Chris Christiansen
|
||
**Sist oppdatert:** 2026-06-10
|
||
**Erstatter:** `docs/VAUCO_OS_ROADMAP.md` (deprecated)
|
||
|
||
> Levende dokument. Oppdateres hver sesjon. Arkitektur og fasit ligger i `docs/MASTERPLAN.md`.
|
||
|
||
---
|
||
|
||
## HOSTING-PRINSIPP (autoritativt)
|
||
|
||
> **All hosting skjer på GCP. GitHub Pages og Cloudflare Pages er faset ut.**
|
||
> - `vauco.no` → GCS + GCP Load Balancer + Cloud CDN ✅
|
||
> - `costguard.oss.vauco.no` → Cloud Run via IAP ✅
|
||
> - `threadstone.vauco.no` → GCS + GCP Load Balancer (migrering fra GitHub Pages er del av T2)
|
||
|
||
---
|
||
|
||
## NOW — Aktiv akkurat nå
|
||
|
||
- [ ] **CG4b** — Token dashboard breakdown per modul i UI (trigger: 50+ BQ-kall)
|
||
- [ ] **C4** — Medioteq HITL-møte → første betalende kunde
|
||
- [ ] **OX2** — Command Hub: sy sammen jason.html + opax.html + command-hub.html til én arbeidsflate
|
||
|
||
---
|
||
|
||
## NEXT — Neste opp
|
||
|
||
### CI1 — OPAX-MCP (Vauco sin egen CI/CD-kanal)
|
||
- [ ] **CI1a** — `agents/mcp_server/server.py` — FastAPI MCP-server scaffold på Cloud Run
|
||
- [ ] **CI1b** — Tool: `push_static` (GCS upload)
|
||
- [ ] **CI1c** — Tool: `deploy_service` (Cloud Build trigger)
|
||
- [ ] **CI1d** — Tool: `get_logs` + `get_build_status`
|
||
- [ ] **CI1e** — Jason/Emma ADK-integrasjon: MCP som ADK-tool
|
||
|
||
### ML-3 — Emma (Gemma)
|
||
- [x] **ML-3b** — `docs/gemma/world.md` ✅ 2026-06-10
|
||
- [ ] **ML-3a** — GCP GPU-VM (`g2-standard-4` Spot, L4, `europe-west4`) + `emma.vauger@vauco.no` Google Workspace-konto opprettes samtidig
|
||
- [ ] **ML-3c** — Hybrid agent: Emma internt / Jason for kunder
|
||
- [ ] **ML-3d** — Fine-tune på Vauco-sesjonsdata
|
||
|
||
### CostGuard
|
||
- [ ] **CG4d** — Kundeprisingskalkulator basert på token-historikk
|
||
- [ ] **C5** — Salgsdemo: `costguard.os.vauco.no` + demo-video
|
||
- [ ] **DX5** — Dialogflow Messenger live på costguard-landingssiden
|
||
|
||
### Modul #2 — Threadstone
|
||
- [ ] **T1** — Migrer `threadstone.vauco.no` fra GitHub Pages til GCS + GCP LB
|
||
- [ ] **T2–T4** — Konsolidering → pilot → lansering
|
||
|
||
### Infrastruktur — Fase C
|
||
- [ ] **C1** — Terraform-konvertering
|
||
- [ ] **C2** — Multi-tenant stamp-out
|
||
- [ ] **C3** — BQ-2 / Looker Studio
|
||
- [ ] **CG6-Fase-C** — Firestore per bruker for budsjett
|
||
|
||
### Strategisk
|
||
- [ ] **Deep Dream** — etter første betalende kunde
|
||
- [ ] **Proof of Curiosity** — etter Modul #1 + #2 lever
|
||
- [ ] **MV1 — Markedsvalidering når OPAX er live** — Kjør Gemini Enterprise deep research på hvilke SaaS-moduler SMB/mid-market (50–500 ansatte) betaler raskest for i 2026. Fokus: AI-drevet kostnadskontroll, compliance-automatisering, operasjonell automatisering. Output: prioritert modulkø med prisreferanser fra konkurrenter. Brukes som grunnlag for hvilke moduler bygges etter CostGuard.
|
||
- [ ] **MV2 — Trendanalyse basert på CostGuard-data** — Når reelle kundedata finnes: analyser hvilke kostnadsområder bedriftene sliter mest med → definer neste modul basert på faktisk smerte, ikke antagelser.
|
||
|
||
---
|
||
|
||
## BLOCKED
|
||
|
||
- ⏳ **OQ-22** — Claude EU-kvote ikke innvilget. På `gemini-2.5-pro` via Vertex AI.
|
||
- ⏳ **OQ-15** — BQ `billing_export` tabell ikke aktivert (blokkerer real-data i CG4b)
|
||
|
||
---
|
||
|
||
## KJENTE HULL
|
||
|
||
- [x] **OQ-23** — `vauco.no` LIVE · 2026-06-05
|
||
- [x] **OQ-24** — SPF/DKIM/DMARC live · 2026-06-10 ✅
|
||
- [x] **OQ-25** — Personvern + vilkår publisert · 2026-06-05
|
||
- [ ] **OQ-17** — `github-token` secret mangler → alias fra `github-pat`
|
||
- [ ] **OQ-18** — VM alltid-på kostnad → teardown-script
|
||
- [ ] **OQ-26** — Ingen statuspage → etter første kunde
|
||
|
||
---
|
||
|
||
## ✅ Fullførte faser
|
||
|
||
- [x] Phase 0–7 — Baseline, domener, Cloud Run, IAP, CI/CD, RAG · 2026-05-21–30
|
||
- [x] GDrive/GitHub paritet · 2026-05-25
|
||
- [x] Terraform bootstrap-modul · 2026-05-26
|
||
- [x] OPAX operator hub · 2026-05-31
|
||
- [x] **K1** — Repo-konsolidering · 2026-06-09
|
||
- [x] **K3** — Nattlig GDrive backup · 2026-06-09
|
||
- [x] **CG6** — Modulært dashboard · 2026-06-10
|
||
- [x] **CG3e** — Token-logging til BQ · 2026-06-10
|
||
- [x] **OX1a** — Cloud Build live-widget · 2026-06-10
|
||
- [x] **OX1b** — Embedded TUI-panel · 2026-06-10
|
||
- [x] **OX1c** — Jason fullskjerm-chat LIVE `opax.vauco.no/static/jason.html` · 2026-06-10 ✅
|
||
- [x] **CG4a+c** — Token intelligence endepunkter · 2026-06-10
|
||
- [x] **V1e** — SPF/DKIM/DMARC live · 2026-06-10
|
||
- [x] **ML-3b** — `docs/gemma/world.md` Emma-kontekstpakke · 2026-06-10
|
||
- [x] **Emma Vauger** — Registrert som agent `emma.vauger@vauco.no` · 2026-06-10
|
||
- [x] **CI5** — OPAX-MCP build + deploy SUCCESS · 2026-06-10 ✅
|
||
- [x] **CI6** — Jason kaller OPAX-MCP live, returnerer faktisk build-ID · 2026-06-10 ✅
|
||
- [x] **CI/CD smoke-test pipeline** — BASE_URL hardkodet, IAM run.invoker fikset, --audiences bug løst · 2026-06-10 ✅
|
||
|
||
---
|
||
|
||
## AUTH-LØSNING (autoritativ) — Cloud Run / IAP
|
||
|
||
> Oppdatert 2026-06-10 etter smoke-test debugging. Tidligere versjon var feil.
|
||
|
||
### Kanoniske URL-er
|
||
|
||
```
|
||
Kanonisk URL: https://osvauco-agent-357036551735.us-central1.run.app ← bruk ALLTID denne
|
||
IAP/public URL: https://opax.vauco.no
|
||
Cloud Build SA: 357036551735@cloudbuild.gserviceaccount.com
|
||
```
|
||
|
||
> ⚠️ `zjbqp3prqq`-URL er den interne Cloud Run URL — den fungerer IKKE som `--audiences` target for identity tokens. Bruk alltid `357036551735`-URL (kanonisk) eller `opax.vauco.no` (public).
|
||
|
||
### Fra dev-VM (metadata token)
|
||
|
||
```bash
|
||
# Hent token via GCE metadata (riktig audience = kanonisk URL):
|
||
TOKEN=$(curl -s -H "Metadata-Flavor: Google" \
|
||
"http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=https://osvauco-agent-357036551735.us-central1.run.app&format=full")
|
||
|
||
curl -s \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-H "x-goog-authenticated-user-email: accounts.google.com:chris.christiansen@vauco.no" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"user_id": "chris", "session_id": "<session-id>", "message": "<melding>"}' \
|
||
https://osvauco-agent-357036551735.us-central1.run.app/run
|
||
```
|
||
|
||
### Fra Cloud Build smoke-test
|
||
|
||
```bash
|
||
# ALDRI --audiences flagg — returnerer tomt token:
|
||
# TOKEN=$(gcloud auth print-identity-token --audiences="$URL") ← FEIL
|
||
|
||
# RIKTIG:
|
||
BASE_URL="https://osvauco-agent-357036551735.us-central1.run.app"
|
||
TOKEN=$(gcloud auth print-identity-token)
|
||
|
||
curl -s -o /dev/null -w "%{http_code}" \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
"$BASE_URL/health"
|
||
```
|
||
|
||
### Fra gcloud CLI (lokal maskin)
|
||
|
||
```bash
|
||
TOKEN=$(gcloud auth print-identity-token)
|
||
curl -H "Authorization: Bearer $TOKEN" \
|
||
https://osvauco-agent-357036551735.us-central1.run.app/health
|
||
```
|
||
|
||
---
|
||
|
||
*NOW skal være ≤4 oppgaver. Når done → flytt til Fullført.*
|