OSVauco/docs/MASTERPLAN.md

395 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# VAUCO OS — MASTERPLAN
**Eier:** Chris Christiansen · Vauco AS · Org.nr 935 989 779
**Sist oppdatert:** 2026-06-10
**Status:** 🟢 AUTORITATIV — én kilde til sannhet for hele Vauco-økosystemet
> **Regel #1:** Denne filen er sannheten. Hvis en annen fil sier noe annet — denne vinner.
> **Regel #2:** Endringer her krever eksplisitt `PLAN APPROVED` fra Chris.
> **Regel #3:** Roadmap → seksjon 7. Sesjonsstatus → `docs/HANDOFF.md`. Ingen andre handoff-filer.
---
## Lessons Learned
- Cloud Build smoke-tests require: hardcoded canonical BASE_URL, bare identity token (no --audiences), and explicit run.invoker IAM binding for the Cloud Build service account on every service.
- **2026-06-10 — Absolutte filstier i Python:** Bruk alltid `Path(__file__).parent / "..."` for å referere til statiske filer og konfigurasjon i FastAPI/Cloud Run. Aldri relativ sti som `"static/file.html"` — dette bryter når WORKDIR avviker fra repo-rot (f.eks. i Docker). Regelen gjelder alle fremtidige tjenester og klientleveranser.
- **2026-06-10 — Dockerfile COPY static/:** `static/`-mappen må eksplisitt kopieres inn i Docker-imaget via `COPY static/ ./static/`. Den kopieres ikke automatisk selv om build-konteksten er repo-roten.
- **2026-06-10 — app.py mangler GET /:** FastAPI returnerer `{"detail":"Not Found"}` for alle ruter som ikke er definert — inkludert rot (`/`). Sørg alltid for at rot-ruten er eksplisitt definert og peker på riktig HTML-fil via absolutt sti.
## 1. Plattformhierarki — sannheten i én modell
```
Vauco AS (selskap, eier alle merkevarer)
├── vauco.no (APEX — bedriftens salgs- og portalside; ansiktet utad)
│ └── ruter besøkende videre til riktig modul
└── VAUCO OS (plattform — visjon, økonomi, token-lag, agent-fabrikk)
└── OPAX (engine — Cloud Run, RAG, agentic arkitektur, IAP)
├── Modul #1 · CostGuard (live på costguard.oss.vauco.no)
├── Modul #2 · Threadstone (landingsside live, app i bygg)
└── Modul #3 · [navngis senere]
Separat merkevare under Vauco AS (parkert til etter Modul #1 + #2 lever):
└── Proof of Curiosity (egen identitet, ikke en OPAX-modul)
```
**Fire nivåer, fire formål:**
| Nivå | Hva | Hvem ser det |
|---|---|---|
| **vauco.no (apex)** | **Bedriftens salgsportal — viser hvem Vauco AS er og hvilke moduler vi selger** | **Alle: kunder, partnere, presse, kandidater** |
| Vauco OS | Plattformen Chris bygger og selger fra | Internt (Chris + agenter) |
| OPAX | Engine som driver modulene | Internt + utviklere |
| Modul (CostGuard / Threadstone / …) | Det kundene faktisk kjøper | Kunder |
**Salgskanal-prinsipp:**
- `vauco.no` = portalen som forteller "hva selger vi" og leder til riktig modul
- Hver modul har sin egen landings-/produktside
- Vauco OS og OPAX nevnes ikke som produkter på `vauco.no` — de er interne verktøy
**Ikke selg Vauco OS. Ikke selg OPAX. De er interne verktøy.**
---
## 2. Registrerte domener — fasit
### Vauco (hos Proisp)
| Domene | Prosjekt | Status |
|--------|----------|--------|
| `vauco.no` | Rot for alle Vauco-tjenester | ✅ Aktiv, live på GCS+LB |
**Aktive subdomener:**
| Domene/subdomen | Teknologi | Status | Eier-flate |
|----------|-----------|--------|------------|
| `vauco.no` (apex) | GCS + GCP Load Balancer + Cloud CDN | ✅ LIVE · 2026-06-05 | Vauco AS apex |
| `www.vauco.no` | Følger apex | ✅ LIVE | Vauco AS apex |
| `opax.vauco.no` | LB + IAP → Cloud Run `osvauco-agent` | ✅ Live (IP 34.98.77.173) | OPAX |
| `oss.vauco.no` | Staging-miljø | ✅ Aktiv | OPAX |
| `os.vauco.no` | Prod-miljø | 🔮 Fase C | OPAX |
| `costguard.oss.vauco.no` | Cloud Run via IAP | ✅ Live | CostGuard |
| `costguard.os.vauco.no` | Promoteres fra oss | 🔮 Fase C | CostGuard |
| `threadstone.vauco.no` | GitHub Pages (`threadstone-landing`) | ✅ Live | Threadstone |
| `app.threadstone.vauco.no` | GitHub Pages (`vauco-saas.github.io`) | ⚠️ CNAME satt, side mangler | Threadstone |
| `<kunde>.vauco.no` | LB + IAP via Terraform | 🔮 Fase C2 | OPAX/Multi-tenant |
**Reservert til senere:**
| Subdomen | Tiltenkt formål | Trigger |
|----------|------------------|---------|
| `status.vauco.no` | Statuspage | Etter første kunde |
| `docs.vauco.no` | Offentlig kundedok | CG4 / første kunde |
| `careers.vauco.no` | Stillinger | Når Vauco rekrutterer |
**Email-infra:**
- MX: Google Workspace ✅
- SPF/DKIM/DMARC: ✅ Live 2026-06-10
### Proof of Curiosity (hos Proisp) — egen merkevare
| Domene | Merknad |
|--------|---------|
| `proof-of-curiosity.com` | Registrert — ikke i bruk |
| `proofofcuriosity.com` | Registrert — ikke i bruk |
| `proofofcuriosity.io` | Registrert — ikke i bruk |
| `proof-of-curiosity.no` | Registrert — ikke i bruk |
| `proofofcuriosity.no` | Registrert — ikke i bruk |
> **Trigger:** Ingen POC-arbeid før Modul #1 + #2 lever.
---
## 3. Repo-struktur — fasit
### Aktive repos (5)
| Repo | Formål | Synlighet | Eier-flate |
|------|--------|-----------|------------|
| `OSVauco` | Mono-repo: OPAX-engine, infra, Terraform, all dokumentasjon | Privat | OPAX (rot) |
| `vauco-bootstrap` | Terraform-modul for kunde-provisjonering | Privat | OPAX |
| `vauco-site` | `vauco.no` salgsportal | Public | Vauco AS apex |
| `threadstone-landing` | `threadstone.vauco.no` landingsside | Public | Threadstone |
| `vauco-saas.github.io` | `app.threadstone.vauco.no` Threadstone-app frontend | Public | Threadstone |
### Arkiverte repos
| Repo | Arkivert | Innholdet finnes nå i |
|------|----------|------------------------|
| `vauco-os` | ✅ 2026-05-27 | `OSVauco/docs/architecture/` |
| `vauco-gemini-tui-bridge` | ✅ 2026-05-27 | Arkiv — reaktiveres som del av OX1b |
| `command-hub` | ✅ 2026-05-27 | `OSVauco/static/command-hub.html` |
> **Regel:** Nytt repo krever eksplisitt `REPO APPROVED` fra Chris.
---
## 4. OSVauco — intern mappestruktur (fasit)
```
OSVauco/
├── MASTERPLAN.md
├── README.md
├── AGENTS.md
├── Dockerfile / cloudbuild.yaml
├── agents/
│ ├── core-logic/ OPAX orchestrator + FastAPI app
│ │ ├── agent.py Kjører Gemini nå → Gemma fra ML-3
│ │ ├── app.py
│ │ └── token_logger.py
│ ├── mcp_server/ ← NY: OPAX-MCP — Vauco sin egen CI/CD-kanal (CI1)
│ │ ├── server.py FastAPI MCP-server, kjører på Cloud Run
│ │ ├── tools/ deploy_service, push_static, get_build_status, ...
│ │ └── README.md
│ ├── rag/
│ ├── memory/
│ ├── multi_agent/
│ ├── eval/
│ ├── tests/
│ └── tools/
├── auth/
├── ml/
├── infrastructure/
├── scripts/
├── static/
│ ├── opax.html Operator hub — Chris sitt cockpit (OX1)
│ ├── jason.html Jason fullskjerm-chat ✅ LIVE opax.vauco.no/static/jason.html
│ ├── billing-dashboard.html
│ ├── command-hub.html
│ └── admin.html
├── docs/
│ ├── MASTERPLAN.md ← denne filen
│ ├── ROADMAP.md
│ ├── HANDOFF.md
│ ├── AGENT_RULEBOOK.md
│ ├── gemma/
│ │ ├── world.md Vaucos verden — kontekstpakke for Emma/Gemma ✅
│ │ └── README.md
│ └── [øvrige tema-docs]
├── protocols/sessions/
└── data/
```
---
## 4b. vauco.no — salgsportal (Vauco AS apex)
> Eget repo: `vauco-saas/vauco-site` — LIVE 2026-06-05 på GCS+LB.
### Formål
Vauco AS sin offisielle bedriftsside. Selger moduler ved å lede besøkende til riktig produktside.
### Versjons-evolusjon
| Versjon | Inneholder | Trigger |
|---------|------------|---------|
| V1 (MVP) ✅ | Hero + modul-grid + om-oss + kontakt + personvern | LIVE 2026-06-05 |
| V2 | Sales-CTA + CostGuard ROI-kalkulator | Etter første betalende kunde |
| V3 | Blogg, kundereferanser, status-widget | Når 3+ kunder |
| V4 | Internasjonalt (`vauco.no/en`), Proof of Curiosity i footer | Etter Modul #3 |
---
## 5. Dokumenthierarki — én kilde til sannhet
| Fil | Rolle | Oppdateres |
|-----|-------|------------|
| `docs/MASTERPLAN.md` | Arkitektur, domener, repos, agent-identitet | Ved arkitekturendringer |
| `docs/ROADMAP.md` | Faser, status, backlog | Hver sesjon |
| `docs/HANDOFF.md` | Hva ble gjort, hva er neste | Overskrives hver sesjon |
| `docs/AGENT_RULEBOOK.md` | Locked definitions for agent-boot | Ved infrastruktur-låsing |
| `docs/gemma/world.md` | Emmas verden — kontekstpakke for lokal Gemma-modell | Bygges simultant med alt annet |
| `protocols/sessions/YYYY-MM-DD_<tema>.md` | Detaljerte protokoller | Append-only |
---
## 6. AI-modell — tofase-strategi
### Fase 1 — Nå (Vertex AI, løper ut kreditter)
| Parameter | Verdi | Merknad |
|-----------|-------|---------|
| **Intern modell (Emma/Chris)** | `gemini-2.5-pro` / `gemini-2.5-flash` | Via Vertex AI, tærer på kreditter |
| **Stand-in operatør** | Perplexity (Sonnet 4.6) via GitHub MCP | Erstatter Emma til Gemma-VM er oppe |
| **Kundemodell (Jason)** | `gemini-2.5-flash` | Via Vertex AI — kunder betaler indirekte |
| **Endpoint** | `us-central1` | Vertex-kreditter |
| **SDK** | `google-adk` + `google-genai` | |
| **Status Claude** | ⏳ Venter på EU-kvote | Bytt når kvote innvilget |
### Fase 2 — Gemma-migrering (trigger: kreditter < 20% eller første kunde onboardet)
| Parameter | Verdi | Merknad |
|-----------|-------|---------|
| **Emma (intern)** | `gemma-4-12b-it` int4 | GCP `g2-standard-4` Spot VM (~$120150/mnd) |
| **Serving** | Ollama (utvikling) → vLLM (produksjon) | |
| **Jason (kunder)** | `gemini-2.5-flash` via Vertex | Uendret — kunder merker ingenting |
| **Kontekst** | `docs/gemma/world.md` lastet som system-prompt | Emma forstår Vauco fra dag 1 |
**Prinsipp:** Kunder bruker alltid Gemini via Vertex (Jason). Chris bruker Emma lokalt.
**Emma er ikke dum når den starter** — kontekstpakken (`docs/gemma/world.md`) bygges simultant.
**Bytte til Emma/Gemma krever:**
1. ML-3b kontekstpakke ferdigstilt ✅
2. GPU-VM verifisert med smoke-test
3. Eksplisitt `MODEL APPROVED` fra Chris
4. Oppdatering av `agent.py`, `AGENT_RULEBOOK.md` og denne tabellen i samme commit
---
## 7. Roadmap — kortversjon
> Full status i `docs/ROADMAP.md`.
### 🔴 NOW
- [x] OX1c — Jason fullskjerm-chat LIVE ✅ 2026-06-10
- [x] CI5+CI6 — OPAX-MCP live + Jason kaller MCP ✅ 2026-06-10
- [x] OX1-fix — opax.html LIVE via GET / ✅ 2026-06-10 (absolutt sti + Dockerfile static copy)
- [ ] OX2 — Command Hub: samle jason.html + opax.html + command-hub.html
- [ ] CG4b — Token dashboard breakdown per modul
- [ ] C4 — Medioteq HITL-møte → første betalende kunde
### 🟠 NEXT
- CI1 — OPAX-MCP: full CI/CD-kanal (CI1ae)
- ML-3a — GCP GPU-VM for Emma (Gemma 4) + `emma.vauger@vauco.no` opprettes
- CG4d — Kundeprisingskalkulator
- C5 — Salgsdemo
### 🟡 LATER
- ML-3c — Hybrid agent: Emma internt / Jason for kunder
- T1T4 — Threadstone
- Fase C — Multi-tenant
---
## 8. Agent-identitet
| Identitet | E-post | Modell | Rolle | Status |
|-----------|--------|--------|-------|--------|
| Eier / admin | `chris.christiansen@vauco.no` | — | Full kontroll | ✅ Aktiv |
| Jason Vauger | `jason.vauger@vauco.no` | `gemini-2.5-flash` via Vertex | Kundevendt agent, `billing.viewer` + `run.invoker` | ✅ Live |
| Emma Vauger | `emma.vauger@vauco.no` | `gemma-4-12b-it` (lokal GPU-VM) | Intern agent for Chris — erstatter Perplexity stand-in | 🔮 ML-3a trigger — opprett Google Workspace-konto samtidig |
| Fremtidig gruppe | `billing@vauco.no` | — | `billing.viewer` (Fase C) | 🔮 Fase C |
**Forbudte kontoer:** `tinius.vauger`, `ccv` — aldri gi tilganger.
> **Emma vs Jason:** Emma er Chris sin interne co-pilot (kodeskriving, deploy, planlegging). Jason er kundenes agent (billing, anomaly, status). To separate identiteter, to separate ansvarsområder.
---
## 9. Cloud Run — live endepunkter
**Service:** `osvauco-agent` | **Region:** `us-central1` | **Project:** `propane-will-491900-m5`
**Direkte URL:** `https://osvauco-agent-zjbqp3prqq-uc.a.run.app` ← bruk denne (ikke 357036551735)
**Public URL:** `https://opax.vauco.no` (via LB 34.98.77.173 + IAP `@vauco.no`)
**Jason UI:** `https://opax.vauco.no/static/jason.html` ✅ LIVE
**OPAX UI:** `https://opax.vauco.no/` ✅ LIVE (opax.html via GET /, fikset 2026-06-10)
| Endepunkt | Status |
|-----------|--------|
| `GET /` | ✅ Serverer opax.html (fikset 2026-06-10) |
| `GET /health` | ✅ (ingen auth påkrevd) |
| `POST /run` | ✅ (krever metadata-token, se auth-løsning i ROADMAP) |
| `GET /static/jason.html` | ✅ OX1c LIVE |
| `GET /static/{filename}` | ✅ Generell static-rute |
| `GET /opax/build-status` | ✅ (OX1a) |
| `GET /billing/tokens/by-module` | ✅ (CG4a) |
| `GET /billing/tokens/estimate` | ✅ (CG4c) |
| `GET /billing/summary` | ✅ |
| `GET /billing/anomalies` | ✅ |
| `GET /billing/history` | ✅ |
| `GET /billing/budget` | ✅ |
| `POST /billing/budget` | ✅ |
| `GET /auth/login` | ✅ |
| `GET /auth/callback` | ✅ |
---
## 10. Go-to-market
**Produkt #1: CostGuard**
- **Hvem:** Norske bedrifter med GCP-kostnader de ikke kontrollerer
- **Hva:** Autonomt kostnadsovervåkningsverktøy med AI-anomali-deteksjon
- **Pris:** $300500/mnd per kunde (breakeven ved 1 kunde)
- **Salgskanal:** Chris selv → HITL-møte → `terraform apply`
**Produkt #2: Threadstone** (Q3 2026)
- Definisjon låses når Modul #1 har første kunde.
---
## 11. Kjente hull
| ID | Problem | Løsning | Prioritet |
|----|---------|---------|-----------|
| OQ-15 | BQ billing_export tabell | Venter på aktivering | Medium |
| OQ-17 | `github-token` secret mangler | Opprett alias fra `github-pat` | Medium |
| OQ-18 | VM alltid-på kostnad | Kjør `03-teardown.sh` hver kveld | Høy |
| OQ-21 | `app.threadstone.vauco.no` CNAME uten side | Bygg T2 eller fjern CNAME | Lav |
| OQ-22 | Claude EU-kvote | Vent på Google Cloud-team | Medium |
| OQ-26 | Ingen statuspage | Etter første kunde | Lav |
---
## 12. OPAX — fremtidig visjon
### Operator Hub (OX1 → OX2) — Chris sitt cockpit
OPAX (`opax.vauco.no`) er Chris sin **komplette arbeidsflate**.
**Ferdig:**
- ✅ opax.html LIVE via `GET /` — absolutt sti, fikset 2026-06-10
- ✅ Jason-chat (`/static/jason.html`) — OX1c LIVE 2026-06-10
- ✅ Billing dashboard
- ✅ Cloud Build live-widget — OX1a
- ✅ Embedded TUI-panel — OX1b
- ✅ Token Intelligence endepunkter — CG4a+c
- ✅ CI5 — OPAX-MCP build+deploy
- ✅ CI6 — Jason kaller MCP live
**Gjenstår:**
- OX2 — Command Hub: sy sammen alle grensesnitt
- Token Intelligence dashboard i UI — CG4b
- OPAX-MCP full CI/CD-kanal — CI1
### OPAX-MCP — Vauco sin egen CI/CD-kanal (CI1)
Erstatter GitHub Actions som CI/CD-trigger. Jason/Emma kaller MCP-serveren direkte:
```
Chris / Jason / Emma
OPAX-MCP (agents/mcp_server/ → Cloud Run)
GCP APIs: Cloud Build, GCS, Secret Manager, Cloud DNS
Deploy skjer direkte — GitHub er kun kode-lager
```
**MCP-verktøy som skal eksponeres:**
| Tool | GCP API |
|------|----------|
| `deploy_service` | Cloud Build API |
| `push_static` | Storage API |
| `get_build_status` | Cloud Build API |
| `run_query` | BigQuery API |
| `write_secret` | Secret Manager API |
| `get_logs` | Cloud Logging API |
### Gemma/Emma-verdensbygging (ML-3b) — done ✅
`docs/gemma/world.md` er ferdig. Emma er ikke dum når hun starter.
---
## 13. TUI-bridge — reaktivert som OX1b ✅
Embedded TUI-panel i OPAX operator hub er live som OX1b.
---
*OSVauco | propane-will-491900-m5 | us-central1 | Autoritativ fra 2026-05-31 | Oppdatert 2026-06-10*