From 811c73a956706b08f128adee0b404bae0bcdfa53 Mon Sep 17 00:00:00 2001 From: chrischristiansen-glitch Date: Wed, 27 May 2026 23:05:43 +0200 Subject: [PATCH] reset: autoritativ MASTERPLAN med domeneoversikt, repo-struktur og roadmap --- MASTERPLAN.md | 441 +++++++++++++++++++++++--------------------------- 1 file changed, 205 insertions(+), 236 deletions(-) diff --git a/MASTERPLAN.md b/MASTERPLAN.md index c15ee52..d2e325b 100644 --- a/MASTERPLAN.md +++ b/MASTERPLAN.md @@ -1,281 +1,250 @@ -# VAUCO MASTERPLAN — Chris Christiansen - -**Sist oppdatert: 2026-05-27 20:30 CEST** -**Status: ✅ FASE A | ✅ FASE B | ✅ ML-1 | ✅ CG1+CG2 live | ✅ OAuth live | CG3 neste** - -> **Les dette først:** Autoritativ arkitektur er `vauco-os/VAUCO_OS_DOMAIN_ARCHITECTURE.md`. -> Ikke overstyr beslutninger som allerede er dokumentert der. +# VAUCO OS — MASTERPLAN RESET +**Versjon:** 2026-05-27 | **Eier:** Chris Christiansen | **Status:** Autoritativ --- -## ARKITEKTUR-HIERARKI (autoritetivt) +## 1. SITUASJONSANALYSE — Hvor er vi nå? + +Du har bygget mye bra, men jobbet utenfra inn i stedet for innenfra ut. Det har skapt: + +- **Dobbelt opp:** To CostGuard-implementasjoner, dupliserte MD-filer, overlappende repos +- **Repo-kaos:** 9 repos for det som egentlig er 1 kjerne + 1 produkt +- **Tapt tråd:** TUI-bridge → OPAX → Pages → CostGuard-landing — hvert sprang tok deg vekk fra planen +- **Manglende kryssjekk:** MASTERPLAN, ROADMAP og HANDOFF er ikke synkroniserte + +**Det gode:** Alt ligger nå på `vauco-saas`. Grunnmuren (Cloud Run, RAG, Memory, OAuth) er solid. + +--- + +## 2. SANNHETEN OM HVA DU HAR + +### To separate ting — hold dem adskilt ``` -Vauco AS (935 989 779) -├── Vauco OS ← internt operativsystem (kun Chris) -│ ├── os.vauco.no ← LIVE PROD -│ ├── oss.vauco.no ← STAGING (nåværende arbeidsområde) -│ ├── Jason (autonom agent) -│ ├── Vauco OS Hub (orchestrator) -│ └── Cloud Console ← salgsmoduler bygges herfra -│ └── CostGuard ← modul #1 (use case + første salgbar modul) -│ costguard.oss.vauco.no ← nåværende -│ costguard.os.vauco.no ← når live +Vauco AS +├── VAUCO OS (intern plattform — kun Chris) +│ └── Formål: operere, bygge og selge fra │ -└── Threadstone ← separat SaaS-produkt til kunder - threadstone.vauco.no - app.threadstone.vauco.no +└── THREADSTONE (eksternt SaaS-produkt — til kunder) + └── Formål: selges til bedrifter ``` -**CostGuard er et use case som beviste OPAX-arkitekturen.** -Det bygges simultant med OPAX som modul #1 i Cloud Console. -Medioteq og fremtidige kunder onboardes av deg selv via OPAX innenfra — ikke her. +Og et tredje prosjekt under utvikling: + +``` +└── PROOF OF CURIOSITY (separat merkevare/prosjekt) + └── Domener registrert, ikke lansert ennå +``` + +Disse skal ALDRI blandes i samme repo, samme deploy eller samme domenestruktur. --- -## REPO-OVERSIKT +## 3. REGISTRERTE DOMENER -| Repo | Hva det er | -|---|---| -| `OSVauco` | Kjerne: Cloud Run agent, GCP-scripts, ml/, auth/ | -| `vauco-gemini-tui-bridge` | TUI-cockpit (langt arbeid → bruk Gemini TUI) | -| `vauco-os` | Arkitektur og kundedok (authoritative) | -| `vauco-bootstrap` | Terraform-modul for kunde-provisjonering | -| `deep-dream` | Strategisk visjon — aldri deploy herfra | +### Vauco (hos Proisp) + +| Domene | Prosjekt | Status | +|--------|----------|--------| +| `vauco.no` | Vauco OS / alle Vauco-tjenester | ✅ Aktiv, verifisert på GitHub | + +**Aktive subdomener under vauco.no:** + +| Subdomen | Teknologi | Status | +|----------|-----------|--------| +| `opax.vauco.no` | CNAME → Cloud Run | ✅ Live | +| `oss.vauco.no` | Staging-miljø | ✅ Aktiv | +| `os.vauco.no` | Prod-miljø | 🔮 Fase C | +| `costguard.oss.vauco.no` | CNAME → Cloud Run | ⏳ CG3 | +| `costguard.os.vauco.no` | Promoveres fra oss | 🔮 Fase C | +| `threadstone.vauco.no` | GitHub Pages | ✅ Live | +| `app.threadstone.vauco.no` | GitHub Pages | ✅ Live | +| `kunde1.vauco.no` | LB + IAP via Terraform | 🔮 Fase C | + +### Proof of Curiosity (hos Proisp) + +| 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 | + +> **Notat:** Proof of Curiosity er et separat prosjekt/merkevare. Ingen repos eller infrastruktur er knyttet til disse domenene ennå. Prioriteres etter CG3 + første Vauco-kunde. --- -## AGENT-IDENTITET +## 4. REPO-STRUKTUR — Fasit -| Identitet | E-post | Rolle | Formål | -|---|---|---|---| -| Eier / admin | `chris.christiansen@vauco.no` | `billing.admin` + `billing.viewer` | Full kontroll | -| Agent (OPAX) | `jason.vauger@vauco.no` | `billing.viewer` | Hente og rapportere kostnadsdata autonomt | -| Fremtidig gruppe | `billing@vauco.no` | `billing.viewer` (Fase C) | Delt innboks for team og kunder | +### Behold (4 repos) -**Agent-kapabiliteter med `billing.viewer`:** -- Svare på «Hva koster dette prosjektet denne måneden?» -- Sende ukentlig kostnadsrapport til chat-appen -- Reagere på Pub/Sub budget-alerts (via `10-cost-guard.sh`) -- **Ikke:** endre IAM, budsjetter eller koble prosjekter +| Repo | Formål | Synlighet | +|------|--------|-----------| +| `OSVauco` | Alt kjerne: Cloud Run, GCP-scripts, ml/, auth/, docs/ | Privat | +| `vauco-bootstrap` | Terraform-modul for kunde-provisjonering | Privat | +| `threadstone-landing` | threadstone.vauco.no landingsside | Public | +| `vauco-saas.github.io` | app.threadstone.vauco.no (Threadstone-app) | Public | + +### Arkiver (5 repos) — flytt innhold først + +| Repo | Innhold flyttes til | Deretter | +|------|---------------------|----------| +| `vauco-os` | `OSVauco/docs/architecture/` | Arkiver | +| `vauco-gemini-tui-bridge` | `OSVauco/tui/` | Arkiver | +| `command-hub` | `OSVauco/static/command-hub.html` | Arkiver | +| `threadstone-instructions` | `OSVauco/docs/threadstone/` | Arkiver | +| `deep-dream` | Rør ikke — arkiver direkte | Arkiver | --- -## DNS / DOMENE-ARKITEKTUR +## 5. OSVauco — INTERN MAPPESTRUKTUR (fasit) -> **Arkitekturavgjørelse — 2026-05-26** - -| Domene | Type | Teknologi | Fase | -|---|---|---|---| -| `opax.vauco.no` | Intern cockpit (kun Chris) | CNAME → Cloud Run (gratis) | B1 nå | -| `costguard.oss.vauco.no` | Standalone app | CNAME → osvauco-agent-357036551735.europe-west1.run.app | CG3 | -| `kunde1.vauco.no` / kundedomener | Kunde-instanser | LB + IAP (Terraform) | Fase C | - -**Begrunnelse:** -- `opax.vauco.no` er et internt arbeidsverktøy for én bruker — Load Balancer ($18-20/mnd) er unødvendig overhead. -- Kundeinstanser provisjoneres via `vauco-bootstrap` Terraform-modul i Fase C. LB + IAP bakes inn i modulen én gang og kjøres automatisk per kunde med `terraform apply -var="customer_id=X"`. -- Terraform-modulen (Fase C) skal inkludere: Cloud Run, Cloud Build, IAP, LB, budsjett, SA, Dialogflow CX, ML state store. - ---- - -## CLOUD SHELL QUICK-START (kopi-klipp) - -> Bruk Cloud Shell: https://shell.cloud.google.com - -```bash -# Steg 1: Klon og sett opp miljø -gcloud config set project propane-will-491900-m5 -git clone https://github.com/vauco-saas/OSVauco.git ~/OSVauco -cd ~/OSVauco - -# Steg 2: Kopier og rediger .env -cp .env.example .env -nano .env -# Fyll ut: BILLING_ACCOUNT_ID, ALERT_EMAIL, GITHUB_APP_INSTALLATION_ID - -# Steg 3: Installer Python-avhengigheter -pip install google-adk google-cloud-aiplatform>=1.111.0 --quiet - -# Steg 4: Kjør i rekkefølge -source .env -bash infrastructure/00-authcheck.sh -bash infrastructure/01-setupenv.sh -bash infrastructure/07-rag-setup.sh -# *** Kopier RAG_CORPUS_NAME fra output inn i .env *** -nano .env && source .env - -bash infrastructure/08-memorybank-setup.sh -# *** Kopier MEMORY_ENGINE_NAME fra output inn i .env *** -nano .env && source .env - -gcloud run deploy osvauco-agent - --source . --region europe-west1 - --project propane-will-491900-m5 - --set-secrets RAG_CORPUS=rag-corpus-name:latest - --set-env-vars GOOGLE_GENAI_USE_VERTEXAI=1,GOOGLE_CLOUD_PROJECT=propane-will-491900-m5,GOOGLE_CLOUD_LOCATION=global,MEMORY_ENGINE_NAME=$MEMORY_ENGINE_NAME - --no-allow-unauthenticated - -bash infrastructure/04-observability-setup.sh -bash infrastructure/11-billing-iam-hardening.sh -bash scripts/smoke-test.sh - -# Om kvelden (OBLIGATORISK): -bash infrastructure/03-teardown.sh +``` +OSVauco/ +├── infrastructure/ # GCP-scripts (00-11) +├── scripts/ # smoke-test, utils +├── ml/ # billing_agent, anomaly_detector, feedback_loop +├── auth/ # OAuth2-flow +├── tui/ # ← vauco-gemini-tui-bridge flyttes hit +├── static/ # HTML-filer servert av Cloud Run +│ ├── billing-dashboard.html +│ ├── costguard.html ← CG3 (bygges her, ikke GitHub Pages) +│ └── command-hub.html ← fra command-hub repo +├── docs/ +│ ├── MASTERPLAN.md ← autoritativ (denne filen) +│ ├── ROADMAP.md ← én roadmap, ikke to +│ ├── HANDOFF.md ← alltid én fil, overskrives per sesjon +│ ├── architecture/ ← fra vauco-os repo +│ ├── threadstone/ ← fra threadstone-instructions repo +│ └── [alle andre MD-filer] +├── .gemini/ # Gemini TUI konfig +├── .env.example +├── Dockerfile +├── main.py +└── MASTERPLAN.md ← denne filen (rot-nivå) ``` --- -## CLOUD RUN — LIVE ENDEPUNKTER +## 6. DOKUMENTHIERARKI — Én kilde til sannhet + +| Fil | Rolle | Oppdateres | +|-----|-------|------------| +| `MASTERPLAN.md` | Arkitektur, domener, agent-identitet, infrastruktur — **aldri slett** | Ved arkitekturendringer | +| `docs/ROADMAP.md` | Fasestatus, neste steg, backlog — **levende dokument** | Hver sesjon | +| `docs/HANDOFF.md` | Alltid kun én fil — hva ble gjort, hva er neste, kjente hull | Overskrives hver sesjon | + +**Regel:** Arkitektur → MASTERPLAN. Oppgave → ROADMAP. Sesjonsstatus → HANDOFF. Aldri dobbelt opp. + +--- + +## 7. ROADMAP — Prioritert rekkefølge + +### 🔴 UMIDDELBART — Rydding (gjør én gang) + +| # | Oppgave | Tid | +|---|---------|-----| +| R1 | Flytt `vauco-os` → `OSVauco/docs/architecture/` | 30 min | +| R2 | Flytt `vauco-gemini-tui-bridge` → `OSVauco/tui/` | 20 min | +| R3 | Flytt `command-hub` → `OSVauco/static/command-hub.html` | 10 min | +| R4 | Arkiver de 5 reposene på GitHub | 10 min | +| R5 | Slett duplikat-MD-filer i `docs/` | 15 min | +| R6 | Synkroniser ROADMAP til faktisk repo-state | 30 min | + +### 🟡 NESTE — CG3 (CostGuard landingsside) + +| # | Oppgave | +|---|---------| +| CG3a | Bygg `static/costguard.html` i OSVauco (OAuth-knapp + billing embed) | +| CG3b | Sett CNAME `costguard.oss.vauco.no` → Cloud Run i Proisp | +| CG3c | Verifiser at `/static/costguard.html` er tilgjengelig via Cloud Run | +| CG3d | Test OAuth-flow fra landingssiden | + +### 🟢 GO-TO-MARKET — CostGuard + +| Fase | Innhold | +|------|---------| +| C4 | Medioteq HITL-møte → `terraform apply` → første betalende kunde | +| C5 | Salgsdemo: costguard.os.vauco.no + demo-video | +| DX5 | Dialogflow Messenger live på costguard-landingssiden | +| ML-2 | Adaptiv intelligens (trigger: >500 telemetri-kall) | + +### 🔵 FREMTID — Proof of Curiosity + +| # | Oppgave | +|---|---------| +| POC-1 | Definer hva Proof of Curiosity er (produkt, merkevare, community?) | +| POC-2 | Velg primærdomene (anbefaling: `proofofcuriosity.io`) | +| POC-3 | Opprett repo under `vauco-saas` eller separat org | +| POC-4 | Bygg landing/MVP | + +> **Trigger:** Ikke start POC før CG3 er live og første Vauco-kunde er onboardet. + +--- + +## 8. AGENT-IDENTITET + +| Identitet | E-post | Rolle | +|-----------|--------|-------| +| Eier / admin | `chris.christiansen@vauco.no` | Full kontroll | +| Agent (OPAX / Jason) | `jason.vauger@vauco.no` | `billing.viewer` — hente og rapportere kostnadsdata | +| Fremtidig gruppe | `billing@vauco.no` | `billing.viewer` (Fase C) | + +--- + +## 9. CLOUD RUN — LIVE ENDEPUNKTER **Service:** `osvauco-agent` | **Region:** `europe-west1` **URL:** `https://osvauco-agent-357036551735.europe-west1.run.app` -**Siste revisjon:** `osvauco-agent-00064-p9h` -| Endepunkt | Status | Beskrivelse | -|---|---|---| -| `GET /health` | ✅ | Health check | -| `POST /run` | ✅ | Agent (light/heavy) | -| `POST /run/dag` | ✅ | Parallell DAG | -| `GET /billing/summary` | ✅ | Kostnad per tjeneste siste 30d | -| `GET /billing/forecast` | ✅ | Prognose 7d snitt | -| `GET /billing/anomalies` | ✅ | Anomali-deteksjon + Pub/Sub | -| `GET /auth/login?client_id=X` | ✅ | Start OAuth2-flow | -| `GET /auth/callback` | ✅ | Google redirect → token | -| `GET /static/billing-dashboard.html` | ✅ | Billing dashboard UI | -| `GET /state` | ✅ | Agent state | -| `GET /telemetry/history` | ✅ | Telemetri | - -**OAuth (Vauco OS Web App):** -- Client ID: `357036551735-ka7t2fv9ue2jp01bs826hpdctlvispuo.apps.googleusercontent.com` -- Redirect URI: `https://osvauco-agent-357036551735.europe-west1.run.app/auth/callback` -- Secrets: `OAUTH_CLIENT_ID`, `OAUTH_CLIENT_SECRET` (Secret Manager) - -**BigQuery:** `propane-will-491900-m5:billing_export` — tabell ventes innen 24t fra 2026-05-27 +| Endepunkt | Status | +|-----------|--------| +| `GET /health` | ✅ | +| `POST /run` | ✅ | +| `POST /run/dag` | ✅ | +| `GET /billing/summary` | ✅ | +| `GET /billing/forecast` | ✅ | +| `GET /billing/anomalies` | ✅ | +| `GET /auth/login` | ✅ | +| `GET /auth/callback` | ✅ | +| `GET /static/billing-dashboard.html` | ✅ | +| `GET /state` | ✅ | +| `GET /telemetry/history` | ✅ | --- -## FASE CG — CostGuard (OPAX modul #1) ← AKTIV +## 10. TUI-BRIDGE — Status -``` -[x] CG1 — ml/billing_agent.py: /billing/summary, /forecast -[x] CG2 — ml/anomaly_detector.py: anomali → Pub/Sub -[x] AUTH — OAuth2 flow live +Planen var lokal TUI for å kode fra hvor som helst. +Det som skjedde: OPAX + Cloud Shell + Gemini TUI løste behovet. -[ ] CG3 — costguard.oss.vauco.no landingsside - static/costguard.html i OSVauco-repo - "Koble til GCP" → /auth/login - Billing dashboard embed - CNAME costguard.oss.vauco.no → Cloud Run - (promoveres til costguard.os.vauco.no når klar) - -[ ] CG4 — Første ekstern kunde via vauco-bootstrap -[ ] CG5 — Salgsdemo klar -``` +**Konklusjon:** Koden bevares i `OSVauco/tui/`. Reaktiveres etter CG3 + første kunde hvis behovet melder seg igjen. --- -## FASE A — ✅ KOMPLETT +## 11. GO-TO-MARKET — Enkel og konkret -``` -[x] A1-A9 + SMOKE 10/10 ✅ (2026-05-26 01:45 CEST) -RAG: projects/357036551735/locations/europe-west1/ragCorpora/6917529027641081856 -Memory: projects/357036551735/locations/us-central1/reasoningEngines/2260229219579592704 -``` +**Produkt #1: CostGuard** +- **Hvem:** Norske bedrifter med GCP-kostnader de ikke kontrollerer +- **Hva:** Autonomt kostnadsovervåkningsverktøy med AI-anomali-deteksjon +- **Pris:** $300-500/mnd per kunde (breakeven ved 1 kunde) +- **Salgskanal:** Chris selv via OPAX → HITL-møte → `terraform apply` + +**Ikke selg Vauco OS. Ikke selg OPAX. De er interne verktøy.** --- -## FASE A2 — Dialogflow CX (Jason-v1 FAQ) +## 12. KJENTE HULL -``` -[x] DX1-DX3 — Agent live, Data Store, norsk systemprompt -[x] DX4 — Parkert (Cloud Run-webhook til C4) -[ ] DX5 — Dialogflow Messenger (trigger: CG3) -[ ] DX6 — Budsjett-alert -[ ] DX7 — Voice-kanal (trigger: etter DX5) -[ ] B6 — Eksporter Dialogflow CX til versjonskontroll -``` +| ID | Problem | Løsning | Prioritet | +|----|---------|---------|-----------| +| OQ-15 | BQ billing_export tabell | Venter på aktivering — sjekk neste sesjon | Medium | +| OQ-16 | Duplikat CostGuard-implementasjoner | Slett gammel, behold `ml/billing_agent.py` | Høy | +| 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-19 | MASTERPLAN/ROADMAP ikke synkronisert | Gjøres som del av R6 | Høy | --- -## FASE ML - -``` -[x] ML-1 — DAG, state store, telemetri ✅ (2026-05-25) -[ ] ML-2 — Adaptiv intelligens (trigger: >500 telemetri-kall) -[ ] ML-3 — Strategisk innsikt (trigger: ML-2 + første kunde) -``` - ---- - -## FASE B — ✅ KOMPLETT - -``` -[x] B1-B5, B1-IAP (opax.vauco.no CNAME live) -[ ] B6 — Dialogflow CX versjonskontroll (se DX-lista) -``` - ---- - -## FASE C — Kunde-onboarding - -> Medioteq og fremtidige kunder håndteres av deg selv via OPAX. - -``` -[x] C1 — vauco-bootstrap Terraform-modul (validate: PASS) -[x] C2 — CUSTOMER_API.md -[x] C3 — billing@vauco.no Google Group -[ ] C4 — Medioteq: HITL-møte → project_id → terraform apply -``` - ---- - -## INFRASTRUKTUR - -| Script | Rolle | -|--------|-------| -| `00-authcheck.sh` | Verifiser innlogging | -| `01-setupenv.sh` | APIs, SA, IAM, Pub/Sub | -| `03-teardown.sh` | Riv ned Cloud Run (kjør hver kveld) | -| `04-observability-setup.sh` | Cloud Monitoring | -| `07-rag-setup.sh` | RAG corpus | -| `08-memorybank-setup.sh` | Memory Bank | -| `10-cost-guard.sh` | Auto-teardown + GCS telemetri | -| `11-billing-iam-hardening.sh` | IAM hardening | -| `scripts/smoke-test.sh` | 10-case røyktest | - ---- - -## KJENTE HULL - -| ID | Hva | Status | -|---|---|---| -| OQ-01 | Memory Bank — ingen gcloud CLI | Python SDK only | -| OQ-02 | RAG regional | Auto-fallback us-east1 | -| OQ-15 | billing_export BQ-tabell | Venter — aktivert 2026-05-27 | - ---- - -## DRIFTSKOSTNADER - -| Scenario | Kostnad/mnd | -|---|---| -| Dev (teardown daglig) | ~$25-75 | -| Dev + Dialogflow CX (10k req) | ~$145-195 | -| 1 betalende kunde | ~$115-280 | - -Breakeven: 1 kunde à $300-500/mnd. - ---- - -## LLM-RUTING - -| Modell | Bruksområde | -|---|---| -| `gemini-2.5-flash` | light — alle enkle kall | -| `gemini-2.5-pro` | heavy — reasoning, compliance | - -`LOCATION=global` | Autoriserte heavy: `opax`, `admin` - ---- - -*OSVauco | propane-will-491900-m5 | europe-west1* +*OSVauco | propane-will-491900-m5 | europe-west1 | Autoritativ fra 2026-05-27*