docs: korriger mappestruktur i MASTERPLAN + oppdater HANDOFF med faktisk repo-layout [2026-06-12]
This commit is contained in:
parent
7aa73842d4
commit
9783ed10f8
138
docs/HANDOFF.md
138
docs/HANDOFF.md
|
|
@ -1,8 +1,8 @@
|
||||||
# HANDOFF — Vauco OS
|
# 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
|
**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 |
|
| Task | Detalj |
|
||||||
|------|--------|
|
|------|--------|
|
||||||
| **MASTERPLAN seksjon 10** | Prismodell v2 godkjent og pushet — Starter $499 / Guard $999 / Shield $1.999 / Enterprise $3.500+ |
|
| **MASTERPLAN seksjon 10** | Prismodell v2: 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 |
|
| **Push-first arkitektur** | Delivery layer: CG5a webhook + CG5b e-post + CG5c SMS |
|
||||||
| **Feature-spec per tier** | Full feature-liste per tier definert og låst i MASTERPLAN |
|
| **Mappestruktur korrigert** | Verifisert mot GitHub API — main.py er hovudapp, opax-mcp/ er MCP-mappa |
|
||||||
| **Push-first arkitektur** | Konsept: "Jason finner kunden — ikke omvendt". Delivery layer definert |
|
| **MASTERPLAN seksjon 4** | Korrekt repo-layout dokumentert med alle faktiske mapper |
|
||||||
| **Delivery layer** | Tre kanaler: CG5a webhook / CG5b e-post / CG5c SMS |
|
| **Commits** | [`c312f4a`](https://github.com/vauco-saas/OSVauco/commit/c312f4a7274f65eb213477956854977df10d7a7a) + [`7aa7384`](https://github.com/vauco-saas/OSVauco/commit/7aa73842d46b2b65610358c0ff8e456b2189e7f4) |
|
||||||
| **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) |
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -26,34 +22,21 @@
|
||||||
|
|
||||||
| Task | Detalj |
|
| Task | Detalj |
|
||||||
|------|--------|
|
|------|--------|
|
||||||
| **CG4b** | Chart.js donut live — `renderDonut()`, 8-farge palett, DOM-safe |
|
| **CG4b** | Chart.js donut live — build 2f385fe3 ✅ |
|
||||||
| **Build 2f385fe3** | ✅ Grønt — commit `87345b1` |
|
| **Medioteq** | Joint venture presisert — ikke SaaS-kunde |
|
||||||
| **Medioteq presisert** | Joint venture, ikke SaaS-kunde — alle filer oppdatert |
|
|
||||||
| **C4 deprioritert** | Partnerstrategimøte, aktiveres etter CostGuard klient-flow |
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🔴 NOW — Neste oppgaver (prioritert rekkefølge)
|
## 🔴 NOW — Neste oppgaver (prioritert)
|
||||||
|
|
||||||
| ID | Oppgave | Prioritet | Byggetid | Notat |
|
| ID | Oppgave | Fil | Byggetid |
|
||||||
|----|---------|-----------|----------|-------|
|
|----|---------|-----|----------|
|
||||||
| **CG5a** | Delivery layer + webhook — `POST /notify/webhook` → Slack/Teams/Chat/Discord | 🔴 Høy | 2–3t | Gir Starter-tieren verdi umiddelbart |
|
| **CG5a** | `POST /notify/webhook` — Jason poster til Slack/Teams/Chat/Discord | `main.py` | 2–3t |
|
||||||
| **CG4d** | Prisingskalkulator i `opax.html` — GCP-spend slider, tier-highlight, ROI | 🔴 Høy | 2t | Selger produktet visuelt |
|
| **CG4d** | Prisingskalkulator — GCP-spend slider + tier + ROI | `static/opax.html` | 2t |
|
||||||
| **CG5b** | E-post digest — SendGrid, daglig + månedlig rapport | 🔴 Høy | 2t | Starter-tier inkludert |
|
| **CG5b** | `POST /notify/email` — SendGrid digest | `main.py` | 2t |
|
||||||
| **CG5c** | SMS-varsler — Twilio, kun kritiske spikes | 🔴 Medium | 2t | Guard+ |
|
| **CG5c** | `POST /notify/sms` — Twilio spikes [Guard+] | `main.py` | 2t |
|
||||||
| **CG5-onboard** | Klient-onboarding flow — provisjonering + kanal-oppsett | 🔴 Høy | 1–2d | Kobler alt sammen |
|
| **CG5-onboard** | Klient-onboarding + kanal-oppsett | `main.py` + `static/` | 1–2d |
|
||||||
| **CG6** | Klient-dashboard på `costguard.oss.vauco.no` | 🔴 Høy | 2–3d | Frontend mot eksisterende API |
|
| **CG6** | Klient-dashboard `costguard.oss.vauco.no` | `static/` | 2–3d |
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🟠 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 |
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -61,21 +44,16 @@
|
||||||
|
|
||||||
| Komponent | Status |
|
| Komponent | Status |
|
||||||
|-----------|--------|
|
|-----------|--------|
|
||||||
| Cloud Run `osvauco-agent` | ✅ Live, `us-central1` |
|
| Cloud Run `osvauco-agent` | ✅ Live `us-central1` |
|
||||||
| `opax.vauco.no` (LB + SSL + IAP) | ✅ Live |
|
| `opax.vauco.no` | ✅ Live |
|
||||||
| `static/opax.html` | ✅ Live — OPAX Hub inkl. billing donut |
|
| `main.py` | ✅ Hovudapp — alle ruter her |
|
||||||
| `static/jason.html` | ✅ Live — Jason fullskjerm |
|
| `static/opax.html` | ✅ Live |
|
||||||
| Cloud Build trigger | ✅ Operativt |
|
| `static/jason.html` | ✅ Live |
|
||||||
| BQ token-logging | ✅ CG3e live |
|
| `opax-mcp/` | ✅ MCP-server mappe |
|
||||||
| Chart.js donut (billing) | ✅ CG4b live |
|
| `POST /notify/webhook` | 🔴 CG5a — ikke bygget |
|
||||||
| `POST /notify/webhook` | 🔴 Ikke bygget — CG5a |
|
| `POST /notify/email` | 🔴 CG5b — ikke bygget |
|
||||||
| `POST /notify/email` | 🔴 Ikke bygget — CG5b |
|
| `POST /notify/sms` | 🔴 CG5c — ikke bygget |
|
||||||
| `POST /notify/sms` | 🔴 Ikke bygget — CG5c |
|
| `docs/gemma/world.md` | ❌ Mangler — blokkerer ML-3a |
|
||||||
| 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 |
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -86,55 +64,57 @@
|
||||||
| GCP Project | `propane-will-491900-m5` |
|
| GCP Project | `propane-will-491900-m5` |
|
||||||
| Region (LÅST) | `us-central1` |
|
| Region (LÅST) | `us-central1` |
|
||||||
| Cloud Run service | `osvauco-agent` |
|
| 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` |
|
| 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` |
|
| Jason chat | `https://opax.vauco.no/static/jason.html` |
|
||||||
| OPAX Hub | `https://opax.vauco.no/` |
|
|
||||||
| LB IP | `34.98.77.173` |
|
| 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` |
|
| Repo | `vauco-saas/OSVauco` |
|
||||||
| Eier | `chris.christiansen@vauco.no` |
|
| Eier | `chris.christiansen@vauco.no` |
|
||||||
| Jason (kundeagent) | `jason.vauger@vauco.no` |
|
| Jason | `jason.vauger@vauco.no` |
|
||||||
| Emma (intern agent) | `emma.vauger@vauco.no` — 🔮 ML-3a |
|
| Emma | `emma.vauger@vauco.no` — 🔮 ML-3a |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## CostGuard — prismodell v2 (fasit for neste agent)
|
## CostGuard — prismodell v2 (fasit)
|
||||||
|
|
||||||
| Tier | GCP-spend/mnd | Pris | Kjernefunksjon |
|
| Tier | GCP-spend/mnd | Pris |
|
||||||
|------|--------------|------|----------------|
|
|------|--------------|------|
|
||||||
| Starter | $0–$3k | $499/mnd | Dashboard + e-postvarsler + 1 webhook-kanal |
|
| Starter | $0–$3k | $499/mnd |
|
||||||
| Guard | $3k–$15k | $999/mnd | + sanntid spikes + AI-anbefalinger + SMS + interaktiv Jason i chat |
|
| Guard | $3k–$15k | $999/mnd |
|
||||||
| Shield | $15k–$50k | $1.999/mnd | + auto-remediation + multi-prosjekt + CUD-anbefalinger |
|
| Shield | $15k–$50k | $1.999/mnd |
|
||||||
| Enterprise | >$50k | $3.500+/mnd | + dedikert Jason-agent + CI/CD cost gates + SSO + custom subdomain |
|
| 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.
|
**Push-first:** Jason leverer til webhook/e-post/SMS — kunden setter opp kanal ved onboarding.
|
||||||
**Salgspitch:** *"Du trenger ikke lære et nytt verktøy. Jason finner deg."*
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## ⚠️ Regler — ikke gjør disse feilene
|
## ⚠️ Regler
|
||||||
|
|
||||||
- **Ikke opprett nye HANDOFF_YYYYMMDD-filer.** Kun denne. Overskriv.
|
- **Hovudapp er `main.py`** — ikke `agents/core-logic/app.py`
|
||||||
- **Ikke bytt til Claude før kvote + `MODEL APPROVED`.**
|
- **MCP-server er `opax-mcp/`** — ikke `agents/mcp_server/`
|
||||||
- **Ikke migrer fra us-central1** — regionen er låst.
|
- **Absolutte stier i Python** — `Path(__file__).parent / "..."`
|
||||||
- **Ikke rør IAP/OAuth/Secret Manager** uten `DEPLOY GODKJENT`.
|
- **Ikke migrer fra us-central1**
|
||||||
- **Ikke opprett nye repos** uten `REPO APPROVED`.
|
- **Ikke rør IAP/OAuth** uten `DEPLOY GODKJENT`
|
||||||
- **Medioteq er joint venture** — ikke behandle som vanlig SaaS-kunde.
|
- **Ikke opprett repos** uten `REPO APPROVED`
|
||||||
- **Prismodell er låst** — ikke endre uten `PLAN APPROVED` fra Chris.
|
- **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
|
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
|
3. `docs/HANDOFF.md` — denne filen
|
||||||
4. `docs/AGENT_RULEBOOK.md` — agent-regler
|
4. `CLAUDE.md` — kontekst for Claude (rot)
|
||||||
5. `docs/UNIVERSAL_BOOT_PROMPT.md` — boot-protokoll v1.4
|
5. `docs/AGENT_RULEBOOK.md`
|
||||||
6. `docs/gemma/world.md` — Emma sin kontekstpakke ❌ mangler
|
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*
|
||||||
|
|
|
||||||
|
|
@ -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.
|
- 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 — 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 — 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
|
## 1. Plattformhierarki — sannheten i én modell
|
||||||
|
|
||||||
|
|
@ -22,31 +25,23 @@
|
||||||
Vauco AS (selskap, eier alle merkevarer)
|
Vauco AS (selskap, eier alle merkevarer)
|
||||||
│
|
│
|
||||||
├── vauco.no (APEX — bedriftens salgs- og portalside; ansiktet utad)
|
├── 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)
|
└── OPAX (engine — Cloud Run, RAG, agentic arkitektur, IAP)
|
||||||
├── Modul #1 · CostGuard (live på costguard.oss.vauco.no)
|
├── Modul #1 · CostGuard (live på costguard.oss.vauco.no)
|
||||||
├── Modul #2 · Threadstone (landingsside live, app i bygg)
|
├── Modul #2 · Threadstone (landingsside live, app i bygg)
|
||||||
└── Modul #3 · [navngis senere]
|
└── Modul #3 · [navngis senere]
|
||||||
|
|
||||||
Separat merkevare under Vauco AS (parkert til etter Modul #1 + #2 lever):
|
Separat merkevare (parkert):
|
||||||
└── Proof of Curiosity (egen identitet, ikke en OPAX-modul)
|
└── Proof of Curiosity
|
||||||
```
|
```
|
||||||
|
|
||||||
**Fire nivåer, fire formål:**
|
|
||||||
|
|
||||||
| Nivå | Hva | Hvem ser det |
|
| 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.no (apex)** | Bedriftens salgsportal | Alle |
|
||||||
| Vauco OS | Plattformen Chris bygger og selger fra | Internt (Chris + agenter) |
|
| Vauco OS | Plattformen Chris bygger | Internt |
|
||||||
| OPAX | Engine som driver modulene | Internt + utviklere |
|
| OPAX | Engine som driver modulene | Internt + utviklere |
|
||||||
| Modul (CostGuard / Threadstone / …) | Det kundene faktisk kjøper | Kunder |
|
| Modul | Det kundene 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.**
|
**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
|
## 2. Registrerte domener — fasit
|
||||||
|
|
||||||
### Vauco (hos Proisp)
|
|
||||||
|
|
||||||
| Domene | Prosjekt | Status |
|
|
||||||
|--------|----------|--------|
|
|
||||||
| `vauco.no` | Rot for alle Vauco-tjenester | ✅ Aktiv, live på GCS+LB |
|
|
||||||
|
|
||||||
**Aktive subdomener:**
|
**Aktive subdomener:**
|
||||||
|
|
||||||
| Domene/subdomen | Teknologi | Status | Eier-flate |
|
| Domene/subdomen | Teknologi | Status |
|
||||||
|----------|-----------|--------|------------|
|
|----------|-----------|--------|
|
||||||
| `vauco.no` (apex) | GCS + GCP Load Balancer + Cloud CDN | ✅ LIVE · 2026-06-05 | Vauco AS apex |
|
| `vauco.no` (apex) | GCS + LB + CDN | ✅ LIVE 2026-06-05 |
|
||||||
| `www.vauco.no` | Følger apex | ✅ LIVE | Vauco AS apex |
|
| `opax.vauco.no` | LB + IAP → Cloud Run | ✅ Live (IP 34.98.77.173) |
|
||||||
| `opax.vauco.no` | LB + IAP → Cloud Run `osvauco-agent` | ✅ Live (IP 34.98.77.173) | OPAX |
|
| `oss.vauco.no` | Staging | ✅ Aktiv |
|
||||||
| `oss.vauco.no` | Staging-miljø | ✅ Aktiv | OPAX |
|
| `costguard.oss.vauco.no` | Cloud Run via IAP | ✅ Live |
|
||||||
| `os.vauco.no` | Prod-miljø | 🔮 Fase C | OPAX |
|
| `threadstone.vauco.no` | GitHub Pages | ✅ Live |
|
||||||
| `costguard.oss.vauco.no` | Cloud Run via IAP | ✅ Live | CostGuard |
|
| `app.threadstone.vauco.no` | GitHub Pages | ⚠️ CNAME satt, side mangler |
|
||||||
| `costguard.os.vauco.no` | Promoteres fra oss | 🔮 Fase C | CostGuard |
|
| `os.vauco.no` | Prod-miljø | 🔮 Fase C |
|
||||||
| `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:**
|
**Email-infra:** MX + SPF/DKIM/DMARC ✅ Live 2026-06-10
|
||||||
|
|
||||||
| 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.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -105,122 +69,115 @@ Separat merkevare under Vauco AS (parkert til etter Modul #1 + #2 lever):
|
||||||
|
|
||||||
### Aktive repos (5)
|
### Aktive repos (5)
|
||||||
|
|
||||||
| Repo | Formål | Synlighet | Eier-flate |
|
| Repo | Formål | Synlighet |
|
||||||
|------|--------|-----------|------------|
|
|------|--------|-----------|
|
||||||
| `OSVauco` | Mono-repo: OPAX-engine, infra, Terraform, all dokumentasjon | Privat | OPAX (rot) |
|
| `OSVauco` | Mono-repo: OPAX-engine, infra, Terraform, all dokumentasjon | Privat |
|
||||||
| `vauco-bootstrap` | Terraform-modul for kunde-provisjonering | Privat | OPAX |
|
| `vauco-bootstrap` | Terraform-modul for kunde-provisjonering | Privat |
|
||||||
| `vauco-site` | `vauco.no` salgsportal | Public | Vauco AS apex |
|
| `vauco-site` | `vauco.no` salgsportal | Public |
|
||||||
| `threadstone-landing` | `threadstone.vauco.no` landingsside | Public | Threadstone |
|
| `threadstone-landing` | `threadstone.vauco.no` landingsside | Public |
|
||||||
| `vauco-saas.github.io` | `app.threadstone.vauco.no` Threadstone-app frontend | Public | Threadstone |
|
| `vauco-saas.github.io` | Threadstone-app frontend | Public |
|
||||||
|
|
||||||
### 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.
|
> **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/
|
OSVauco/ (root)
|
||||||
├── MASTERPLAN.md
|
├── main.py (26 KB) ⭐ HOVUDAPPLIKASJON — FastAPI app + alle ruter
|
||||||
├── README.md
|
|
||||||
├── AGENTS.md
|
├── 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/
|
├── agents/ ← Agent-logikk (ikke hovudapp)
|
||||||
│ ├── core-logic/ OPAX orchestrator + FastAPI app
|
├── architecture/ ← Arkitekturdokumenter
|
||||||
│ │ ├── agent.py
|
├── auth/ ← Auth-logikk
|
||||||
│ │ ├── app.py
|
├── data/
|
||||||
│ │ └── token_logger.py
|
├── dialogflow/ ← Dialogflow-integrasjon
|
||||||
│ ├── mcp_server/
|
├── docs/ ← All dokumentasjon
|
||||||
│ ├── 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/
|
|
||||||
│ ├── MASTERPLAN.md
|
│ ├── MASTERPLAN.md
|
||||||
│ ├── ROADMAP.md
|
│ ├── ROADMAP.md
|
||||||
│ ├── HANDOFF.md
|
│ ├── HANDOFF.md
|
||||||
│ ├── AGENT_RULEBOOK.md
|
│ ├── AGENT_RULEBOOK.md
|
||||||
│ ├── gemma/
|
│ ├── UNIVERSAL_BOOT_PROMPT.md
|
||||||
│ │ ├── world.md
|
│ ├── LEARNINGS.md
|
||||||
│ │ └── README.md
|
│ ├── ARCHITECTURE.md
|
||||||
│ └── [øvrige tema-docs]
|
│ ├── AGENTIC_CONTRACT_MCP_PROVISIONING.md
|
||||||
├── protocols/sessions/
|
│ ├── DNS-OG-INFRASTRUKTUR.md
|
||||||
└── data/
|
│ ├── 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)
|
## 4b. vauco.no — salgsportal
|
||||||
|
|
||||||
> Eget repo: `vauco-saas/vauco-site` — LIVE 2026-06-05 på GCS+LB.
|
|
||||||
|
|
||||||
### Versjons-evolusjon
|
|
||||||
|
|
||||||
| Versjon | Inneholder | Trigger |
|
| Versjon | Inneholder | Trigger |
|
||||||
|---------|------------|---------|
|
|---------|------------|---------|
|
||||||
| V1 (MVP) ✅ | Hero + modul-grid + om-oss + kontakt + personvern | LIVE 2026-06-05 |
|
| V1 (MVP) ✅ | Hero + modul-grid + om-oss + kontakt | LIVE 2026-06-05 |
|
||||||
| V2 | Sales-CTA + CostGuard ROI-kalkulator | Etter første betalende kunde |
|
| V2 | Sales-CTA + ROI-kalkulator | Etter første betalende kunde |
|
||||||
| V3 | Blogg, kundereferanser, status-widget | Når 3+ kunder |
|
| V3 | Blogg, kundereferanser | Når 3+ kunder |
|
||||||
| V4 | Internasjonalt (`vauco.no/en`), Proof of Curiosity i footer | Etter Modul #3 |
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 5. Dokumenthierarki — én kilde til sannhet
|
## 5. Dokumenthierarki
|
||||||
|
|
||||||
| Fil | Rolle | Oppdateres |
|
| Fil | Rolle |
|
||||||
|-----|-------|------------|
|
|-----|-------|
|
||||||
| `docs/MASTERPLAN.md` | Arkitektur, domener, repos, agent-identitet | Ved arkitekturendringer |
|
| `docs/MASTERPLAN.md` | Autoritativ sannhet |
|
||||||
| `docs/ROADMAP.md` | Faser, status, backlog | Hver sesjon |
|
| `docs/ROADMAP.md` | Faser og status |
|
||||||
| `docs/HANDOFF.md` | Hva ble gjort, hva er neste | Overskrives hver sesjon |
|
| `docs/HANDOFF.md` | Sesjonsstatus — overskrives hver sesjon |
|
||||||
| `docs/AGENT_RULEBOOK.md` | Locked definitions for agent-boot | Ved infrastruktur-låsing |
|
| `docs/AGENT_RULEBOOK.md` | Locked agent-regler |
|
||||||
| `docs/gemma/world.md` | Emmas verden — kontekstpakke for lokal Gemma-modell | Bygges simultant med alt annet |
|
| `docs/UNIVERSAL_BOOT_PROMPT.md` | Boot-protokoll v1.4 |
|
||||||
| `protocols/sessions/YYYY-MM-DD_<tema>.md` | Detaljerte protokoller | Append-only |
|
| `CLAUDE.md` | Kontekst for Claude-agenter (rot) |
|
||||||
|
| `docs/gemma/world.md` | Emma sin kontekstpakke ❌ mangler |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 6. AI-modell — tofase-strategi
|
## 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 |
|
### Fase 2 — Gemma (trigger: kreditter < 20% eller første kunde)
|
||||||
|-----------|-------|---------|
|
| Parameter | Verdi |
|
||||||
| **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 |
|
| Emma (intern) | `gemma-4-12b-it` int4 · GCP `g2-standard-4` Spot VM |
|
||||||
| **Kundemodell (Jason)** | `gemini-2.5-flash` | Via Vertex AI — kunder betaler indirekte |
|
| Jason (kunder) | `gemini-2.5-flash` via Vertex — uendret |
|
||||||
| **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 | |
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -229,35 +186,27 @@ OSVauco/
|
||||||
> Full status i `docs/ROADMAP.md`.
|
> Full status i `docs/ROADMAP.md`.
|
||||||
|
|
||||||
### 🔴 NOW
|
### 🔴 NOW
|
||||||
- [x] CG4b — Token dashboard breakdown per modul ✅
|
- [ ] CG4d — Prisingskalkulator i `static/opax.html`
|
||||||
- [x] OX1c — Jason fullskjerm-chat LIVE ✅
|
- [ ] CG5a — Delivery layer: `POST /notify/webhook` i `main.py`
|
||||||
- [x] CI5+CI6 — OPAX-MCP live ✅
|
- [ ] CG5b — E-postvarsler: `POST /notify/email` via SendGrid
|
||||||
- [ ] CG4d — Kundeprisingskalkulator (GCP-spend-basert)
|
- [ ] CG5c — SMS-varsler: `POST /notify/sms` via Twilio [Guard+]
|
||||||
- [ ] CG5a — Delivery layer: webhook-kanal onboarding
|
- [ ] CG5-onboard — Klient-onboarding flow
|
||||||
- [ ] CG5b — E-postvarsler (SendGrid)
|
- [ ] CG6 — Klient-dashboard
|
||||||
- [ ] CG5c — SMS-varsler (Twilio) [Guard+]
|
|
||||||
|
|
||||||
### 🟠 NEXT
|
### 🟠 NEXT
|
||||||
- CG6 — Klient-dashboard
|
- CI1 — opax-mcp/ full CI/CD-kanal
|
||||||
- CI1 — OPAX-MCP full CI/CD-kanal
|
- ML-3a — GPU-VM for Emma + `docs/gemma/world.md` opprettes
|
||||||
- ML-3a — GPU-VM for Emma
|
|
||||||
- C4 — Medioteq partnerstrategimøte
|
- C4 — Medioteq partnerstrategimøte
|
||||||
|
|
||||||
### 🟡 LATER
|
|
||||||
- ML-3c — Hybrid agent
|
|
||||||
- T1–T4 — Threadstone
|
|
||||||
- Fase C — Multi-tenant
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 8. Agent-identitet
|
## 8. Agent-identitet
|
||||||
|
|
||||||
| Identitet | E-post | Modell | Rolle | Status |
|
| Identitet | E-post | Modell | Status |
|
||||||
|-----------|--------|--------|-------|--------|
|
|-----------|--------|--------|--------|
|
||||||
| Eier / admin | `chris.christiansen@vauco.no` | — | Full kontroll | ✅ Aktiv |
|
| Eier | `chris.christiansen@vauco.no` | — | ✅ Aktiv |
|
||||||
| Jason Vauger | `jason.vauger@vauco.no` | `gemini-2.5-flash` via Vertex | Kundevendt agent | ✅ Live |
|
| Jason Vauger | `jason.vauger@vauco.no` | `gemini-2.5-flash` | ✅ Live |
|
||||||
| Emma Vauger | `emma.vauger@vauco.no` | `gemma-4-12b-it` (lokal GPU-VM) | Intern agent for Chris | 🔮 ML-3a |
|
| Emma Vauger | `emma.vauger@vauco.no` | `gemma-4-12b-it` | 🔮 ML-3a |
|
||||||
| Fremtidig gruppe | `billing@vauco.no` | — | `billing.viewer` (Fase C) | 🔮 Fase C |
|
|
||||||
|
|
||||||
**Forbudte kontoer:** `tinius.vauger`, `ccv` — aldri gi tilganger.
|
**Forbudte kontoer:** `tinius.vauger`, `ccv` — aldri gi tilganger.
|
||||||
|
|
||||||
|
|
@ -265,27 +214,25 @@ OSVauco/
|
||||||
|
|
||||||
## 9. Cloud Run — live endepunkter
|
## 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`
|
**Public URL:** `https://opax.vauco.no`
|
||||||
**Jason UI:** `https://opax.vauco.no/static/jason.html` ✅
|
|
||||||
**OPAX UI:** `https://opax.vauco.no/` ✅
|
|
||||||
|
|
||||||
| Endepunkt | Status |
|
| Endepunkt | Fil | Status |
|
||||||
|-----------|--------|
|
|-----------|-----|--------|
|
||||||
| `GET /` | ✅ opax.html |
|
| `GET /` | `main.py` | ✅ Serverer opax.html |
|
||||||
| `GET /health` | ✅ |
|
| `GET /health` | `main.py` | ✅ |
|
||||||
| `POST /run` | ✅ |
|
| `POST /run` | `main.py` | ✅ |
|
||||||
| `GET /static/jason.html` | ✅ |
|
| `GET /static/jason.html` | `main.py` | ✅ |
|
||||||
| `GET /billing/tokens/by-module` | ✅ |
|
| `GET /billing/tokens/by-module` | `main.py` | ✅ |
|
||||||
| `GET /billing/tokens/estimate` | ✅ |
|
| `GET /billing/tokens/estimate` | `main.py` | ✅ |
|
||||||
| `GET /billing/summary` | ✅ |
|
| `GET /billing/summary` | `main.py` | ✅ |
|
||||||
| `GET /billing/anomalies` | ✅ |
|
| `GET /billing/anomalies` | `main.py` | ✅ |
|
||||||
| `GET /billing/history` | ✅ |
|
| `GET /billing/history` | `main.py` | ✅ |
|
||||||
| `GET /billing/budget` | ✅ |
|
| `GET /billing/budget` | `main.py` | ✅ |
|
||||||
| `POST /billing/budget` | ✅ |
|
| `POST /billing/budget` | `main.py` | ✅ |
|
||||||
| `POST /notify/webhook` | 🔴 CG5a |
|
| `POST /notify/webhook` | `main.py` | 🔴 CG5a |
|
||||||
| `POST /notify/email` | 🔴 CG5b |
|
| `POST /notify/email` | `main.py` | 🔴 CG5b |
|
||||||
| `POST /notify/sms` | 🔴 CG5c |
|
| `POST /notify/sms` | `main.py` | 🔴 CG5c |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -293,123 +240,58 @@ OSVauco/
|
||||||
|
|
||||||
### CostGuard — prismodell v2 (godkjent 2026-06-12)
|
### CostGuard — prismodell v2 (godkjent 2026-06-12)
|
||||||
|
|
||||||
> **Prinsipp:** "Meet them where they are" — CostGuard push-first. Jason finner kunden, ikke omvendt.
|
> **Prinsipp:** Push-first — Jason finner kunden, ikke omvendt.
|
||||||
|
> **Pitch:** *"Du trenger ikke lære et nytt verktøy. Jason finner deg."*
|
||||||
#### Tier-oversikt
|
|
||||||
|
|
||||||
| Tier | GCP-spend/mnd | Pris | Kjerneløfte |
|
| Tier | GCP-spend/mnd | Pris | Kjerneløfte |
|
||||||
|------|--------------|------|-------------|
|
|------|--------------|------|-------------|
|
||||||
| **Starter** | $0 – $3k | **$499/mnd** | Synlighet — du vet hva du bruker |
|
| **Starter** | $0–$3k | $499/mnd | Synlighet |
|
||||||
| **Guard** | $3k – $15k | **$999/mnd** | Kontroll — du stopper sløsing før det skjer |
|
| **Guard** | $3k–$15k | $999/mnd | Kontroll |
|
||||||
| **Shield** | $15k – $50k | **$1.999/mnd** | Automatisering — Jason handler, ikke bare varsler |
|
| **Shield** | $15k–$50k | $1.999/mnd | Automatisering |
|
||||||
| **Enterprise** | > $50k | **$3.500+/mnd** | Platform — Vauco er din interne FinOps-funksjon |
|
| **Enterprise** | >$50k | $3.500+/mnd | Platform |
|
||||||
|
|
||||||
#### 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.<kunde>.no`
|
|
||||||
- SLA: 99.9% uptime, respons innen 1 time
|
|
||||||
- Kvartalsvis strategimøte med Chris
|
|
||||||
|
|
||||||
#### Push-first arkitektur — Delivery layer
|
|
||||||
|
|
||||||
|
**Delivery layer:**
|
||||||
```
|
```
|
||||||
GCP-event → Jason analyserer → Delivery layer → Kanal
|
GCP-event → Jason → Delivery layer → Webhook (CG5a) / E-post (CG5b) / SMS (CG5c)
|
||||||
├── Webhook (Slack/Teams/Chat/Discord/etc.) [CG5a]
|
|
||||||
├── E-post (SendGrid) [CG5b]
|
|
||||||
├── SMS (Twilio) [Guard+] [CG5c]
|
|
||||||
└── In-app (CG6 dashboard)
|
|
||||||
```
|
```
|
||||||
|
|
||||||
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å |
|
### Medioteq — Joint Venture
|
||||||
|-----------|------|---------|--------------------|
|
> Partnersamarbeid, ikke SaaS-kunde. C4 = partnerstrategimøte.
|
||||||
| 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.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 11. Kjente hull
|
## 11. Kjente hull
|
||||||
|
|
||||||
| ID | Problem | Løsning | Prioritet |
|
| ID | Problem | Prioritet |
|
||||||
|----|---------|---------|-----------|
|
|----|---------|----------|
|
||||||
| OQ-15 | BQ billing_export tabell | Venter på aktivering | Medium |
|
| OQ-15 | BQ billing_export tabell | Medium |
|
||||||
| OQ-17 | `github-token` secret mangler | Opprett alias fra `github-pat` | Medium |
|
| OQ-17 | `github-token` secret mangler | Medium |
|
||||||
| OQ-18 | VM alltid-på kostnad | Kjør `03-teardown.sh` hver kveld | Høy |
|
| OQ-18 | VM alltid-på kostnad | Høy |
|
||||||
| OQ-21 | `app.threadstone.vauco.no` CNAME uten side | Bygg T2 eller fjern CNAME | Lav |
|
| OQ-21 | `app.threadstone.vauco.no` CNAME uten side | Lav |
|
||||||
| OQ-22 | Claude EU-kvote | Vent på Google Cloud-team | Medium |
|
| OQ-26 | `docs/gemma/world.md` mangler | Høy (ML-3a blokkert) |
|
||||||
| OQ-26 | Ingen statuspage | Etter første kunde | Lav |
|
| 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:**
|
**Ferdig:**
|
||||||
- ✅ opax.html LIVE via `GET /`
|
- ✅ opax.html LIVE via `GET /` (main.py)
|
||||||
- ✅ Jason-chat LIVE
|
- ✅ Jason-chat LIVE
|
||||||
- ✅ Billing dashboard + Chart.js donut (CG4b)
|
- ✅ Billing dashboard + Chart.js donut (CG4b)
|
||||||
- ✅ Cloud Build live-widget
|
|
||||||
- ✅ Token Intelligence endepunkter
|
- ✅ Token Intelligence endepunkter
|
||||||
- ✅ CI5+CI6 — OPAX-MCP live
|
- ✅ CI5+CI6 — opax-mcp live
|
||||||
|
|
||||||
**Gjenstår:**
|
**Gjenstår:** CG4d / CG5a–c / CG5-onboard / CG6 / CI1 / ML-3a
|
||||||
- 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 ✅
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user