OSVauco/docs/MASTERPLAN.md

385 lines
14 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.
---
## 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
- [ ] 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 |
| Perplexity (stand-in) | — | Sonnet 4.6 via GitHub MCP | Operatør-assistent til Emma er oppe | ✅ Aktiv nå |
| 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
| Endepunkt | Status |
|-----------|--------|
| `GET /health` | ✅ (ingen auth påkrevd) |
| `POST /run` | ✅ (krever metadata-token, se auth-løsning i ROADMAP) |
| `GET /static/jason.html` | ✅ OX1c LIVE |
| `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:**
- ✅ 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*