OSVauco/docs/MASTERPLAN.md

308 lines
11 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-12
**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. Sørg alltid for at rot-ruten er eksplisitt definert.
- **2026-06-12 — Mappestruktur må verifiseres mot repo:** MASTERPLAN-dokumentasjon av mappestruktur må alltid verifiseres via GitHub API før bygging. Antakelser om struktur er ikke nok.
---
## 1. Plattformhierarki — sannheten i én modell
```
Vauco AS (selskap, eier alle merkevarer)
├── vauco.no (APEX — bedriftens salgs- og portalside; ansiktet utad)
└── VAUCO OS (plattform)
└── 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 (parkert):
└── Proof of Curiosity
```
| Nivå | Hva | Hvem ser det |
|---|---|---|
| **vauco.no (apex)** | Bedriftens salgsportal | Alle |
| Vauco OS | Plattformen Chris bygger | Internt |
| OPAX | Engine som driver modulene | Internt + utviklere |
| Modul | Det kundene kjøper | Kunder |
**Ikke selg Vauco OS. Ikke selg OPAX. De er interne verktøy.**
---
## 2. Registrerte domener — fasit
**Aktive subdomener:**
| Domene/subdomen | Teknologi | Status |
|----------|-----------|--------|
| `vauco.no` (apex) | GCS + LB + CDN | ✅ LIVE 2026-06-05 |
| `opax.vauco.no` | LB + IAP → Cloud Run | ✅ Live (IP 34.98.77.173) |
| `oss.vauco.no` | Staging | ✅ Aktiv |
| `costguard.oss.vauco.no` | Cloud Run via IAP | ✅ Live |
| `threadstone.vauco.no` | GitHub Pages | ✅ Live |
| `app.threadstone.vauco.no` | GitHub Pages | ⚠️ CNAME satt, side mangler |
| `os.vauco.no` | Prod-miljø | 🔮 Fase C |
**Email-infra:** MX + SPF/DKIM/DMARC ✅ Live 2026-06-10
---
## 3. Repo-struktur — fasit
### Aktive repos (5)
| Repo | Formål | Synlighet |
|------|--------|-----------|
| `OSVauco` | Mono-repo: OPAX-engine, infra, Terraform, all dokumentasjon | Privat |
| `vauco-bootstrap` | Terraform-modul for kunde-provisjonering | Privat |
| `vauco-site` | `vauco.no` salgsportal | Public |
| `threadstone-landing` | `threadstone.vauco.no` landingsside | Public |
| `vauco-saas.github.io` | Threadstone-app frontend | Public |
> **Regel:** Nytt repo krever eksplisitt `REPO APPROVED` fra Chris.
---
## 4. OSVauco — FAKTISK mappestruktur (verifisert 2026-06-12)
> **VIKTIG:** Denne seksjonen er verifisert mot GitHub API. Ikke anta struktur — alltid verifiser.
```
OSVauco/ (root)
├── main.py (26 KB) ⭐ HOVUDAPPLIKASJON — FastAPI app + alle ruter
├── AGENTS.md
├── CLAUDE.md ← Kontekstfil for Claude-agenter
├── README.md
├── CNAME
├── cloudbuild.yaml ← CI/CD trigger
├── cloudbuild.base.yaml
├── requirements.txt
├── .env.example / .env.prefilled
├── dev-startup.sh / opax.sh
├── agents/ ← Agent-logikk (ikke hovudapp)
├── architecture/ ← Arkitekturdokumenter
├── auth/ ← Auth-logikk
├── data/
├── dialogflow/ ← Dialogflow-integrasjon
├── docs/ ← All dokumentasjon
│ ├── MASTERPLAN.md
│ ├── ROADMAP.md
│ ├── HANDOFF.md
│ ├── AGENT_RULEBOOK.md
│ ├── UNIVERSAL_BOOT_PROMPT.md
│ ├── LEARNINGS.md
│ ├── ARCHITECTURE.md
│ ├── AGENTIC_CONTRACT_MCP_PROVISIONING.md
│ ├── DNS-OG-INFRASTRUKTUR.md
│ ├── SECRETS-SETUP.md
│ ├── LEARNINGS_CICD_2026-06-10.md
│ ├── GCP_Best_Practices.md
│ └── gemma/
│ └── world.md ❌ MANGLER — blokkerer ML-3a/Emma-boot
├── infrastructure/
├── master_hub/ ← Eksisterer — formål ikke klarlagt
├── ml/
├── opax-mcp/ ← MCP-server (ikke agents/mcp_server/)
├── protocols/
├── scripts/
└── static/
├── opax.html ✅ CG4d prisingskalkulator
├── costguard-dashboard.html ✅ CG6 klient-dashboard
├── jason.html
├── billing-dashboard.html
├── costguard.html
├── command-hub.html
└── admin.html
```
**Kritiske korreksjoner fra tidligere feil dokumentasjon:**
- `main.py` (rot) er hovudapplikasjonen — IKKE `agents/core-logic/app.py`
- MCP-server ligger i `opax-mcp/` — IKKE `agents/mcp_server/`
- `master_hub/` og `dialogflow/` eksisterer — formål må kartlegges
- Nye ruter/endepunkter legges i `main.py` — ikke i agents/
---
## 4b. vauco.no — salgsportal
| Versjon | Inneholder | Trigger |
|---------|------------|---------|
| V1 (MVP) ✅ | Hero + modul-grid + om-oss + kontakt | LIVE 2026-06-05 |
| V2 | Sales-CTA + ROI-kalkulator | Etter første betalende kunde |
| V3 | Blogg, kundereferanser | Når 3+ kunder |
---
## 5. Dokumenthierarki
| Fil | Rolle |
|-----|-------|
| `docs/MASTERPLAN.md` | Autoritativ sannhet |
| `docs/ROADMAP.md` | Faser og status |
| `docs/HANDOFF.md` | Sesjonsstatus — overskrives hver sesjon |
| `docs/AGENT_RULEBOOK.md` | Locked agent-regler |
| `docs/UNIVERSAL_BOOT_PROMPT.md` | Boot-protokoll v1.4 |
| `CLAUDE.md` | Kontekst for Claude-agenter (rot) |
| `docs/gemma/world.md` | Emma sin kontekstpakke ❌ mangler |
---
## 6. AI-modell — tofase-strategi
### Fase 1 — Nå
| Parameter | Verdi |
|-----------|-------|
| Intern stand-in | Perplexity (Sonnet 4.6) via GitHub MCP |
| Kundemodell (Jason) | `gemini-2.5-flash` via Vertex AI |
| Region | `us-central1` |
### Fase 2 — Gemma (trigger: kreditter < 20% eller første kunde)
| Parameter | Verdi |
|-----------|-------|
| Emma (intern) | `gemma-4-12b-it` int4 · GCP `g2-standard-4` Spot VM |
| Jason (kunder) | `gemini-2.5-flash` via Vertex — uendret |
---
## 7. Roadmap — kortversjon
> Full status i `docs/ROADMAP.md`.
### 🔴 NOW
- [x] CG4d — Prisingskalkulator i `static/opax.html` ✅ 2026-06-12
- [x] CG5a — Delivery layer: `POST /notify/webhook` ✅ live (commit 4a1e23e, Sonar)
- [x] CG5b — E-postvarsler: `POST /notify/email` via SendGrid ✅ live
- [x] CG6 — Klient-dashboard `static/costguard-dashboard.html` ✅ 2026-06-12
- [ ] len(agents)-bugfix i `/run/dag` 🔴
- [ ] CG5-onboard — Klient-onboarding flow 🔴
- [ ] CG5c — SMS-varsler: `POST /notify/sms` via Twilio [Guard+]
### 🟠 NEXT
- CI1 — opax-mcp/ full CI/CD-kanal
- ML-3a — GPU-VM for Emma + `docs/gemma/world.md` opprettes
- C4 — Medioteq partnerstrategimøte
---
## 8. Agent-identitet
| Identitet | E-post | Modell | Status |
|-----------|--------|--------|--------|
| Eier | `chris.christiansen@vauco.no` | — | ✅ Aktiv |
| Jason Vauger | `jason.vauger@vauco.no` | `gemini-2.5-flash` | ✅ Live |
| Emma Vauger | `emma.vauger@vauco.no` | `gemma-4-12b-it` | 🔮 ML-3a |
**Forbudte kontoer:** `tinius.vauger`, `ccv` — aldri gi tilganger.
---
## 9. Cloud Run — live endepunkter
**Service:** `osvauco-agent` · `us-central1` · `propane-will-491900-m5`
**Public URL:** `https://opax.vauco.no`
| Endepunkt | Fil | Status |
|-----------|-----|--------|
| `GET /` | `main.py` | ✅ Serverer opax.html |
| `GET /health` | `main.py` | ✅ |
| `POST /run` | `main.py` | ✅ |
| `GET /static/jason.html` | `main.py` | ✅ |
| `GET /billing/tokens/by-module` | `main.py` | ✅ |
| `GET /billing/tokens/estimate` | `main.py` | ✅ |
| `GET /billing/summary` | `main.py` | ✅ |
| `GET /billing/anomalies` | `main.py` | ✅ |
| `GET /billing/history` | `main.py` | ✅ |
| `GET /billing/budget` | `main.py` | ✅ |
| `POST /billing/budget` | `main.py` | ✅ |
| `POST /notify/webhook` | `main.py` | ✅ CG5a live |
| `POST /notify/email` | `main.py` | ✅ CG5b live |
| `POST /notify/sms` | `main.py` | 🔴 CG5c |
| `GET /notify/channels` | `main.py` | 🔴 OQ-29 |
---
## 10. Go-to-market
### CostGuard — prismodell v2 (godkjent 2026-06-12)
> **Prinsipp:** Push-first — Jason finner kunden, ikke omvendt.
> **Pitch:** *"Du trenger ikke lære et nytt verktøy. Jason finner deg."*
| Tier | GCP-spend/mnd | Pris | Kjerneløfte |
|------|--------------|------|-------------|
| **Starter** | $0$3k | $499/mnd | Synlighet |
| **Guard** | $3k$15k | $999/mnd | Kontroll |
| **Shield** | $15k$50k | $1.999/mnd | Automatisering |
| **Enterprise** | >$50k | $3.500+/mnd | Platform |
**Delivery layer:**
```
GCP-event → Jason → Delivery layer → Webhook (CG5a) / E-post (CG5b) / SMS (CG5c)
```
**Markedsposisjon:**
| Konkurrent | Pris | CostGuard vinner på |
|-----------|------|--------------------|
| Kubecost Business | $199/mnd | GCP-native + Jason AI |
| Apptio Cloudability | $1.930/mnd | Enklere, push-first |
| CloudHealth | $5.400+/mnd | Pris + SMB-fokus |
### Medioteq — Joint Venture
> Partnersamarbeid, ikke SaaS-kunde. C4 = partnerstrategimøte.
---
## 11. Kjente hull
| ID | Problem | Prioritet |
|----|---------|----------|
| OQ-15 | BQ billing_export tabell | Medium |
| OQ-17 | `github-token` secret mangler | Medium |
| OQ-18 | VM alltid-på kostnad | Høy |
| OQ-21 | `app.threadstone.vauco.no` CNAME uten side | Lav |
| OQ-26 | `docs/gemma/world.md` mangler | Høy (ML-3a blokkert) |
| OQ-27 | `master_hub/` formål ikke dokumentert | Medium |
| OQ-28 | `dialogflow/` formål ikke dokumentert | Medium |
| OQ-29 | `GET /notify/channels` mangler i `main.py` — CG6 faller tilbake på defaults | Lav |
---
## 12. OPAX — status
**Ferdig:**
- ✅ opax.html LIVE via `GET /` (main.py)
- ✅ Jason-chat LIVE
- ✅ Billing dashboard + Chart.js donut (CG4b)
- ✅ Token Intelligence endepunkter
- ✅ CI5+CI6 — opax-mcp live
- ✅ CG4d — Prisingskalkulator i opax.html
- ✅ CG5a — POST /notify/webhook live
- ✅ CG5b — POST /notify/email live
- ✅ CG6 — Klient-dashboard costguard-dashboard.html
**Gjenstår:** len(agents)-bugfix i /run/dag · CG5-onboard · CG5c · CI1 · ML-3a
---
*OSVauco | propane-will-491900-m5 | us-central1 | Autoritativ fra 2026-05-31 | Oppdatert 2026-06-12*