From 9783ed10f8c65a97f7ad85a5d51af360a9618d05 Mon Sep 17 00:00:00 2001 From: chrischristiansen-glitch Date: Fri, 12 Jun 2026 16:19:36 +0200 Subject: [PATCH] docs: korriger mappestruktur i MASTERPLAN + oppdater HANDOFF med faktisk repo-layout [2026-06-12] --- docs/HANDOFF.md | 138 ++++++-------- docs/MASTERPLAN.md | 434 +++++++++++++++++---------------------------- 2 files changed, 217 insertions(+), 355 deletions(-) diff --git a/docs/HANDOFF.md b/docs/HANDOFF.md index ccd5c00..2d37b9b 100644 --- a/docs/HANDOFF.md +++ b/docs/HANDOFF.md @@ -1,8 +1,8 @@ # HANDOFF — Vauco OS -**Sist oppdatert:** 2026-06-12 16:09 CEST +**Sist oppdatert:** 2026-06-12 16:16 CEST **Skrevet av:** Perplexity (stand-in) via GitHub MCP -**Sprint:** CostGuard prismodell v2 + push-first arkitektur + delivery layer definert +**Sprint:** Mappestruktur korrigert — main.py er hovudapp, opax-mcp/ er MCP-server --- @@ -10,15 +10,11 @@ | Task | Detalj | |------|--------| -| **MASTERPLAN seksjon 10** | Prismodell v2 godkjent og pushet — Starter $499 / Guard $999 / Shield $1.999 / Enterprise $3.500+ | -| **Tier-grenser** | Basert på kundens GCP-spend (ikke token-volum) — $0–3k / $3–15k / $15–50k / >$50k | -| **Feature-spec per tier** | Full feature-liste per tier definert og låst i MASTERPLAN | -| **Push-first arkitektur** | Konsept: "Jason finner kunden — ikke omvendt". Delivery layer definert | -| **Delivery layer** | Tre kanaler: CG5a webhook / CG5b e-post / CG5c SMS | -| **Nye endepunkter definert** | `POST /notify/webhook`, `POST /notify/email`, `POST /notify/sms` — ikke bygget ennå | -| **Markedsposisjon** | Dokumentert mot Kubecost ($199) / Cloudability ($1.930) / CloudHealth ($5.400+) | -| **ROADMAP oppdatert** | CG4d + CG5a + CG5b + CG5c + CG5-onboard lagt til som 🔴 NOW | -| **Commit** | [`c312f4a`](https://github.com/vauco-saas/OSVauco/commit/c312f4a7274f65eb213477956854977df10d7a7a) | +| **MASTERPLAN seksjon 10** | Prismodell v2: Starter $499 / Guard $999 / Shield $1.999 / Enterprise $3.500+ | +| **Push-first arkitektur** | Delivery layer: CG5a webhook + CG5b e-post + CG5c SMS | +| **Mappestruktur korrigert** | Verifisert mot GitHub API — main.py er hovudapp, opax-mcp/ er MCP-mappa | +| **MASTERPLAN seksjon 4** | Korrekt repo-layout dokumentert med alle faktiske mapper | +| **Commits** | [`c312f4a`](https://github.com/vauco-saas/OSVauco/commit/c312f4a7274f65eb213477956854977df10d7a7a) + [`7aa7384`](https://github.com/vauco-saas/OSVauco/commit/7aa73842d46b2b65610358c0ff8e456b2189e7f4) | --- @@ -26,34 +22,21 @@ | Task | Detalj | |------|--------| -| **CG4b** | Chart.js donut live — `renderDonut()`, 8-farge palett, DOM-safe | -| **Build 2f385fe3** | ✅ Grønt — commit `87345b1` | -| **Medioteq presisert** | Joint venture, ikke SaaS-kunde — alle filer oppdatert | -| **C4 deprioritert** | Partnerstrategimøte, aktiveres etter CostGuard klient-flow | +| **CG4b** | Chart.js donut live — build 2f385fe3 ✅ | +| **Medioteq** | Joint venture presisert — ikke SaaS-kunde | --- -## 🔴 NOW — Neste oppgaver (prioritert rekkefølge) +## 🔴 NOW — Neste oppgaver (prioritert) -| ID | Oppgave | Prioritet | Byggetid | Notat | -|----|---------|-----------|----------|-------| -| **CG5a** | Delivery layer + webhook — `POST /notify/webhook` → Slack/Teams/Chat/Discord | 🔴 Høy | 2–3t | Gir Starter-tieren verdi umiddelbart | -| **CG4d** | Prisingskalkulator i `opax.html` — GCP-spend slider, tier-highlight, ROI | 🔴 Høy | 2t | Selger produktet visuelt | -| **CG5b** | E-post digest — SendGrid, daglig + månedlig rapport | 🔴 Høy | 2t | Starter-tier inkludert | -| **CG5c** | SMS-varsler — Twilio, kun kritiske spikes | 🔴 Medium | 2t | Guard+ | -| **CG5-onboard** | Klient-onboarding flow — provisjonering + kanal-oppsett | 🔴 Høy | 1–2d | Kobler alt sammen | -| **CG6** | Klient-dashboard på `costguard.oss.vauco.no` | 🔴 Høy | 2–3d | Frontend mot eksisterende API | - ---- - -## 🟠 NEXT (etter Fase B) - -| ID | Oppgave | -|----|---------| -| CI1 | OPAX-MCP full CI/CD-kanal (CI1a–e) | -| ML-3a | GPU-VM for Emma (Gemma 4) + `emma.vauger@vauco.no` | -| C4 | Medioteq partnerstrategimøte | -| C5 | Salgsdemo | +| ID | Oppgave | Fil | Byggetid | +|----|---------|-----|----------| +| **CG5a** | `POST /notify/webhook` — Jason poster til Slack/Teams/Chat/Discord | `main.py` | 2–3t | +| **CG4d** | Prisingskalkulator — GCP-spend slider + tier + ROI | `static/opax.html` | 2t | +| **CG5b** | `POST /notify/email` — SendGrid digest | `main.py` | 2t | +| **CG5c** | `POST /notify/sms` — Twilio spikes [Guard+] | `main.py` | 2t | +| **CG5-onboard** | Klient-onboarding + kanal-oppsett | `main.py` + `static/` | 1–2d | +| **CG6** | Klient-dashboard `costguard.oss.vauco.no` | `static/` | 2–3d | --- @@ -61,21 +44,16 @@ | Komponent | Status | |-----------|--------| -| Cloud Run `osvauco-agent` | ✅ Live, `us-central1` | -| `opax.vauco.no` (LB + SSL + IAP) | ✅ Live | -| `static/opax.html` | ✅ Live — OPAX Hub inkl. billing donut | -| `static/jason.html` | ✅ Live — Jason fullskjerm | -| Cloud Build trigger | ✅ Operativt | -| BQ token-logging | ✅ CG3e live | -| Chart.js donut (billing) | ✅ CG4b live | -| `POST /notify/webhook` | 🔴 Ikke bygget — CG5a | -| `POST /notify/email` | 🔴 Ikke bygget — CG5b | -| `POST /notify/sms` | 🔴 Ikke bygget — CG5c | -| Prisingskalkulator | 🔴 Ikke bygget — CG4d | -| Klient-onboarding | 🔴 Ikke bygget — CG5-onboard | -| Klient-dashboard | 🔴 Ikke bygget — CG6 | -| Emma (Gemma GPU-VM) | 🔮 ML-3a ikke utløst | -| OPAX-MCP server | 🔮 CI1 | +| Cloud Run `osvauco-agent` | ✅ Live `us-central1` | +| `opax.vauco.no` | ✅ Live | +| `main.py` | ✅ Hovudapp — alle ruter her | +| `static/opax.html` | ✅ Live | +| `static/jason.html` | ✅ Live | +| `opax-mcp/` | ✅ MCP-server mappe | +| `POST /notify/webhook` | 🔴 CG5a — ikke bygget | +| `POST /notify/email` | 🔴 CG5b — ikke bygget | +| `POST /notify/sms` | 🔴 CG5c — ikke bygget | +| `docs/gemma/world.md` | ❌ Mangler — blokkerer ML-3a | --- @@ -86,55 +64,57 @@ | GCP Project | `propane-will-491900-m5` | | Region (LÅST) | `us-central1` | | Cloud Run service | `osvauco-agent` | -| Cloud Run URL (direkte) | `https://osvauco-agent-zjbqp3prqq-uc.a.run.app` | +| Direct URL | `https://osvauco-agent-zjbqp3prqq-uc.a.run.app` | | Public URL | `https://opax.vauco.no` | +| Hovudapplikasjon | `main.py` (rot i repo) | +| MCP-server | `opax-mcp/` | +| Static filer | `static/` | | Jason chat | `https://opax.vauco.no/static/jason.html` | -| OPAX Hub | `https://opax.vauco.no/` | | LB IP | `34.98.77.173` | -| VM | `osvauco-dev-vm` · `us-central1-b` · `e2-standard-2` | -| AI-modell | `gemini-2.5-pro` via Vertex | | Repo | `vauco-saas/OSVauco` | | Eier | `chris.christiansen@vauco.no` | -| Jason (kundeagent) | `jason.vauger@vauco.no` | -| Emma (intern agent) | `emma.vauger@vauco.no` — 🔮 ML-3a | +| Jason | `jason.vauger@vauco.no` | +| Emma | `emma.vauger@vauco.no` — 🔮 ML-3a | --- -## CostGuard — prismodell v2 (fasit for neste agent) +## CostGuard — prismodell v2 (fasit) -| Tier | GCP-spend/mnd | Pris | Kjernefunksjon | -|------|--------------|------|----------------| -| Starter | $0–$3k | $499/mnd | Dashboard + e-postvarsler + 1 webhook-kanal | -| Guard | $3k–$15k | $999/mnd | + sanntid spikes + AI-anbefalinger + SMS + interaktiv Jason i chat | -| Shield | $15k–$50k | $1.999/mnd | + auto-remediation + multi-prosjekt + CUD-anbefalinger | -| Enterprise | >$50k | $3.500+/mnd | + dedikert Jason-agent + CI/CD cost gates + SSO + custom subdomain | +| Tier | GCP-spend/mnd | Pris | +|------|--------------|------| +| Starter | $0–$3k | $499/mnd | +| Guard | $3k–$15k | $999/mnd | +| Shield | $15k–$50k | $1.999/mnd | +| Enterprise | >$50k | $3.500+/mnd | -**Push-first prinsipp:** Jason leverer til kunden der de er (webhook/e-post/SMS). Kunden setter opp kanal ved onboarding. -**Salgspitch:** *"Du trenger ikke lære et nytt verktøy. Jason finner deg."* +**Push-first:** Jason leverer til webhook/e-post/SMS — kunden setter opp kanal ved onboarding. --- -## ⚠️ Regler — ikke gjør disse feilene +## ⚠️ Regler -- **Ikke opprett nye HANDOFF_YYYYMMDD-filer.** Kun denne. Overskriv. -- **Ikke bytt til Claude før kvote + `MODEL APPROVED`.** -- **Ikke migrer fra us-central1** — regionen er låst. -- **Ikke rør IAP/OAuth/Secret Manager** uten `DEPLOY GODKJENT`. -- **Ikke opprett nye repos** uten `REPO APPROVED`. -- **Medioteq er joint venture** — ikke behandle som vanlig SaaS-kunde. -- **Prismodell er låst** — ikke endre uten `PLAN APPROVED` fra Chris. +- **Hovudapp er `main.py`** — ikke `agents/core-logic/app.py` +- **MCP-server er `opax-mcp/`** — ikke `agents/mcp_server/` +- **Absolutte stier i Python** — `Path(__file__).parent / "..."` +- **Ikke migrer fra us-central1** +- **Ikke rør IAP/OAuth** uten `DEPLOY GODKJENT` +- **Ikke opprett repos** uten `REPO APPROVED` +- **Medioteq = joint venture** — ikke SaaS-kunde +- **Prismodell låst** — ikke endre uten `PLAN APPROVED` +- **Verifiser alltid mappestruktur** via GitHub API før du bygger --- -## 📁 Viktige filer (i denne rekkefølgen) +## 📁 Filer (i prioritert rekkefølge) 1. `docs/MASTERPLAN.md` — autoritativ sannhet -2. `docs/ROADMAP.md` — hva som skjer akkurat nå +2. `docs/ROADMAP.md` — hva skjer nå 3. `docs/HANDOFF.md` — denne filen -4. `docs/AGENT_RULEBOOK.md` — agent-regler -5. `docs/UNIVERSAL_BOOT_PROMPT.md` — boot-protokoll v1.4 -6. `docs/gemma/world.md` — Emma sin kontekstpakke ❌ mangler +4. `CLAUDE.md` — kontekst for Claude (rot) +5. `docs/AGENT_RULEBOOK.md` +6. `docs/UNIVERSAL_BOOT_PROMPT.md` v1.4 +7. `docs/gemma/world.md` ❌ mangler --- -*Vauco AS · propane-will-491900-m5 · us-central1 · Jason live · Emma 🔮 · Perplexity stand-in · Sesjon 2026-06-12* +*Vauco AS · propane-will-491900-m5 · us-central1 · Sesjon 2026-06-12* diff --git a/docs/MASTERPLAN.md b/docs/MASTERPLAN.md index a24be51..9cd81e7 100644 --- a/docs/MASTERPLAN.md +++ b/docs/MASTERPLAN.md @@ -14,7 +14,10 @@ - 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. +- **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 @@ -22,31 +25,23 @@ 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) +└── 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 under Vauco AS (parkert til etter Modul #1 + #2 lever): -└── Proof of Curiosity (egen identitet, ikke en OPAX-modul) +Separat merkevare (parkert): +└── Proof of Curiosity ``` -**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) | +| **vauco.no (apex)** | Bedriftens salgsportal | Alle | +| Vauco OS | Plattformen Chris bygger | Internt | | 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 +| Modul | Det kundene kjøper | Kunder | **Ikke selg Vauco OS. Ikke selg OPAX. De er interne verktøy.** @@ -54,50 +49,19 @@ Separat merkevare under Vauco AS (parkert til etter Modul #1 + #2 lever): ## 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 | -| `.vauco.no` | LB + IAP via Terraform | 🔮 Fase C2 | OPAX/Multi-tenant | +| 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 | -**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. +**Email-infra:** MX + SPF/DKIM/DMARC ✅ Live 2026-06-10 --- @@ -105,122 +69,115 @@ Separat merkevare under Vauco AS (parkert til etter Modul #1 + #2 lever): ### 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` | +| 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 — intern mappestruktur (fasit) +## 4. OSVauco — FAKTISK mappestruktur (verifisert 2026-06-12) + +> **VIKTIG:** Denne seksjonen er verifisert mot GitHub API. Ikke anta struktur — alltid verifiser. ``` -OSVauco/ -├── MASTERPLAN.md -├── README.md +OSVauco/ (root) +├── main.py (26 KB) ⭐ HOVUDAPPLIKASJON — FastAPI app + alle ruter ├── AGENTS.md -├── Dockerfile / cloudbuild.yaml +├── 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/ -│ ├── core-logic/ OPAX orchestrator + FastAPI app -│ │ ├── agent.py -│ │ ├── app.py -│ │ └── token_logger.py -│ ├── mcp_server/ -│ ├── rag/ -│ ├── memory/ -│ ├── multi_agent/ -│ ├── eval/ -│ ├── tests/ -│ └── tools/ -│ -├── auth/ -├── ml/ -├── infrastructure/ -├── scripts/ -├── static/ -│ ├── opax.html -│ ├── jason.html -│ ├── billing-dashboard.html -│ ├── command-hub.html -│ └── admin.html -├── docs/ +├── 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 -│ ├── gemma/ -│ │ ├── world.md -│ │ └── README.md -│ └── [øvrige tema-docs] -├── protocols/sessions/ -└── data/ +│ ├── 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 + ├── jason.html + ├── billing-dashboard.html + ├── command-hub.html + └── admin.html ``` +**Kritiske korrекsjoner 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 (Vauco AS apex) - -> Eget repo: `vauco-saas/vauco-site` — LIVE 2026-06-05 på GCS+LB. - -### Versjons-evolusjon +## 4b. vauco.no — salgsportal | 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 | +| 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 — én kilde til sannhet +## 5. Dokumenthierarki -| 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_.md` | Detaljerte protokoller | Append-only | +| 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å (Vertex AI, løper ut kreditter) +### 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` | -| 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 - -| Parameter | Verdi | Merknad | -|-----------|-------|---------| -| **Emma (intern)** | `gemma-4-12b-it` int4 | GCP `g2-standard-4` Spot VM (~$120–150/mnd) | -| **Serving** | Ollama (utvikling) → vLLM (produksjon) | | -| **Jason (kunder)** | `gemini-2.5-flash` via Vertex | Uendret | -| **Kontekst** | `docs/gemma/world.md` lastet som system-prompt | | +### 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 | --- @@ -229,35 +186,27 @@ OSVauco/ > Full status i `docs/ROADMAP.md`. ### 🔴 NOW -- [x] CG4b — Token dashboard breakdown per modul ✅ -- [x] OX1c — Jason fullskjerm-chat LIVE ✅ -- [x] CI5+CI6 — OPAX-MCP live ✅ -- [ ] CG4d — Kundeprisingskalkulator (GCP-spend-basert) -- [ ] CG5a — Delivery layer: webhook-kanal onboarding -- [ ] CG5b — E-postvarsler (SendGrid) -- [ ] CG5c — SMS-varsler (Twilio) [Guard+] +- [ ] CG4d — Prisingskalkulator i `static/opax.html` +- [ ] CG5a — Delivery layer: `POST /notify/webhook` i `main.py` +- [ ] CG5b — E-postvarsler: `POST /notify/email` via SendGrid +- [ ] CG5c — SMS-varsler: `POST /notify/sms` via Twilio [Guard+] +- [ ] CG5-onboard — Klient-onboarding flow +- [ ] CG6 — Klient-dashboard ### 🟠 NEXT -- CG6 — Klient-dashboard -- CI1 — OPAX-MCP full CI/CD-kanal -- ML-3a — GPU-VM for Emma +- CI1 — opax-mcp/ full CI/CD-kanal +- ML-3a — GPU-VM for Emma + `docs/gemma/world.md` opprettes - C4 — Medioteq partnerstrategimøte -### 🟡 LATER -- ML-3c — Hybrid agent -- T1–T4 — 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 | ✅ Live | -| Emma Vauger | `emma.vauger@vauco.no` | `gemma-4-12b-it` (lokal GPU-VM) | Intern agent for Chris | 🔮 ML-3a | -| Fremtidig gruppe | `billing@vauco.no` | — | `billing.viewer` (Fase C) | 🔮 Fase C | +| 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. @@ -265,27 +214,25 @@ OSVauco/ ## 9. Cloud Run — live endepunkter -**Service:** `osvauco-agent` | **Region:** `us-central1` | **Project:** `propane-will-491900-m5` +**Service:** `osvauco-agent` · `us-central1` · `propane-will-491900-m5` **Public URL:** `https://opax.vauco.no` -**Jason UI:** `https://opax.vauco.no/static/jason.html` ✅ -**OPAX UI:** `https://opax.vauco.no/` ✅ -| Endepunkt | Status | -|-----------|--------| -| `GET /` | ✅ opax.html | -| `GET /health` | ✅ | -| `POST /run` | ✅ | -| `GET /static/jason.html` | ✅ | -| `GET /billing/tokens/by-module` | ✅ | -| `GET /billing/tokens/estimate` | ✅ | -| `GET /billing/summary` | ✅ | -| `GET /billing/anomalies` | ✅ | -| `GET /billing/history` | ✅ | -| `GET /billing/budget` | ✅ | -| `POST /billing/budget` | ✅ | -| `POST /notify/webhook` | 🔴 CG5a | -| `POST /notify/email` | 🔴 CG5b | -| `POST /notify/sms` | 🔴 CG5c | +| 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 | +| `POST /notify/email` | `main.py` | 🔴 CG5b | +| `POST /notify/sms` | `main.py` | 🔴 CG5c | --- @@ -293,123 +240,58 @@ OSVauco/ ### CostGuard — prismodell v2 (godkjent 2026-06-12) -> **Prinsipp:** "Meet them where they are" — CostGuard push-first. Jason finner kunden, ikke omvendt. - -#### Tier-oversikt +> **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 — du vet hva du bruker | -| **Guard** | $3k – $15k | **$999/mnd** | Kontroll — du stopper sløsing før det skjer | -| **Shield** | $15k – $50k | **$1.999/mnd** | Automatisering — Jason handler, ikke bare varsler | -| **Enterprise** | > $50k | **$3.500+/mnd** | Platform — Vauco er din interne FinOps-funksjon | - -#### Hva er inkludert per tier - -**Starter — $499/mnd** -- CostGuard dashboard (read-only) -- Daglig kostnadsoversikt per GCP-tjeneste -- Anomali-varsler → e-post (månedlig rapport) -- 1 bruker-login -- Webhook til én kanal (Slack/Teams/Chat/etc.) - -**Guard — $999/mnd** -- Alt i Starter, pluss: -- Budsjett-enforcement (Jason setter og overvåker grenser) -- AI-anbefalinger: årsak + handling per anomali -- Sanntids spike-varsler -- E-post ukentlig digest -- SMS-varsler ved kritiske spikes (Twilio) -- Interaktiv Jason i valgt chat-kanal -- 3 bruker-logins -- Slack + Teams + Google Chat støtte - -**Shield — $1.999/mnd** -- Alt i Guard, pluss: -- Automatisk remediation (Jason stopper overforbruk) -- Multi-GCP-prosjekt (opp til 5) -- CUD-anbefalinger (Committed Use Discounts) -- FinOps-rapport til CFO/styret -- Tagging-enforcement -- 10 bruker-logins -- Dedikert onboarding med Chris -- SLA: respons innen 4 timer - -**Enterprise — $3.500+/mnd** -- Alt i Shield, pluss: -- Ubegrenset GCP-prosjekter + multi-org -- Jason som dedikert FinOps-agent (tilpasset kundens stack) -- Terraform cost gates (blokkerer deploys over budsjett) -- CI/CD cost gates -- Custom rapportering + BI-eksport -- BankID / SSO -- Dedikert subdomain: `costguard..no` -- SLA: 99.9% uptime, respons innen 1 time -- Kvartalsvis strategimøte med Chris - -#### Push-first arkitektur — Delivery layer +| **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 analyserer → Delivery layer → Kanal - ├── Webhook (Slack/Teams/Chat/Discord/etc.) [CG5a] - ├── E-post (SendGrid) [CG5b] - ├── SMS (Twilio) [Guard+] [CG5c] - └── In-app (CG6 dashboard) +GCP-event → Jason → Delivery layer → Webhook (CG5a) / E-post (CG5b) / SMS (CG5c) ``` -Kunden setter opp sin foretrukne kanal ved onboarding — Jason finner dem der. +**Markedsposisjon:** -#### 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 | -| Konkurrent | Pris | Svakhet | CostGuard vinner på | -|-----------|------|---------|--------------------| -| Kubecost Business | $199/mnd | Kun K8s, ingen AI | GCP-native + Jason AI | -| Apptio Cloudability | $1.930/mnd | Komplekst, enterprise-only | Enklere, raskere, billigere | -| CloudHealth | $5.400+/mnd | Overkill for SMB | Pris + push-first UX | - -**Salgspitch:** *"Du trenger ikke lære et nytt verktøy. Jason finner deg."* - -### Produkt #2: Threadstone (Q3 2026) -Definisjon låses når Modul #1 har første kunde. - -### Medioteq — Joint Venture (ikke en vanlig kunde) -> Medioteq er et partnersamarbeid. **Ikke** standard SaaS-kundeforhold. C4 er partnerstrategimøte. +### Medioteq — Joint Venture +> Partnersamarbeid, ikke SaaS-kunde. C4 = partnerstrategimøte. --- ## 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 | +| 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 | --- -## 12. OPAX — fremtidig visjon +## 12. OPAX — status **Ferdig:** -- ✅ opax.html LIVE via `GET /` +- ✅ opax.html LIVE via `GET /` (main.py) - ✅ Jason-chat LIVE - ✅ Billing dashboard + Chart.js donut (CG4b) -- ✅ Cloud Build live-widget - ✅ Token Intelligence endepunkter -- ✅ CI5+CI6 — OPAX-MCP live +- ✅ CI5+CI6 — opax-mcp live -**Gjenstår:** -- CG4d — Prisingskalkulator -- CG5a/b/c — Delivery layer -- CG6 — Klient-dashboard -- OX2 — Command Hub -- CI1 — OPAX-MCP full CI/CD - ---- - -## 13. TUI-bridge — reaktivert som OX1b ✅ +**Gjenstår:** CG4d / CG5a–c / CG5-onboard / CG6 / CI1 / ML-3a ---