plan(ML-3): Gemma-migrering + kontekstbygging dokumentert i MASTERPLAN + ROADMAP

- MASTERPLAN §6: AI-modell-strategi utvidet med tofase-plan (Vertex nå → Gemma lokalt når kreditter brukes)
- MASTERPLAN §12: OPAX-evolusjon utvidet med Gemma-verdenbygging (simultan kontekstlasting)
- ROADMAP: ML-3 Gemma-migrering lagt til under LATER med trigger + deloppgaver ML-3a–ML-3d
This commit is contained in:
chrischristiansen-glitch 2026-06-10 00:57:27 +02:00
parent 7686fc7623
commit 8bc52fc0bb
2 changed files with 191 additions and 317 deletions

View File

@ -1,7 +1,7 @@
# VAUCO OS — MASTERPLAN # VAUCO OS — MASTERPLAN
**Eier:** Chris Christiansen · Vauco AS · Org.nr 935 989 779 **Eier:** Chris Christiansen · Vauco AS · Org.nr 935 989 779
**Sist oppdatert:** 2026-05-31 **Sist oppdatert:** 2026-06-10
**Status:** 🟢 AUTORITATIV — én kilde til sannhet for hele Vauco-økosystemet **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 #1:** Denne filen er sannheten. Hvis en annen fil sier noe annet — denne vinner.
@ -39,7 +39,7 @@ Separat merkevare under Vauco AS (parkert til etter Modul #1 + #2 lever):
**Salgskanal-prinsipp:** **Salgskanal-prinsipp:**
- `vauco.no` = portalen som forteller "hva selger vi" og leder til riktig modul - `vauco.no` = portalen som forteller "hva selger vi" og leder til riktig modul
- Hver modul har sin egen landings-/produktside (`costguard.oss.vauco.no`, `threadstone.vauco.no`, …) - Hver modul har sin egen landings-/produktside
- Vauco OS og OPAX nevnes ikke som produkter på `vauco.no` — de er interne verktøy - 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.**
@ -52,34 +52,34 @@ Separat merkevare under Vauco AS (parkert til etter Modul #1 + #2 lever):
| Domene | Prosjekt | Status | | Domene | Prosjekt | Status |
|--------|----------|--------| |--------|----------|--------|
| `vauco.no` | Rot for alle Vauco-tjenester | ✅ Aktiv, verifisert på GitHub | | `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 | Eier-flate |
|----------|-----------|--------|------------| |----------|-----------|--------|------------|
| `vauco.no` (apex) | Proisp parking-side (placeholder) | ⚠️ "Under construction" — skal erstattes med ekte salgsportal | Vauco AS apex | | `vauco.no` (apex) | GCS + GCP Load Balancer + Cloud CDN | ✅ LIVE · 2026-06-05 | Vauco AS apex |
| `www.vauco.no` | Følger apex | ⚠️ Samme placeholder | 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 | | `opax.vauco.no` | LB + IAP → Cloud Run `osvauco-agent` | ✅ Live (IP 34.98.77.173) | OPAX |
| `oss.vauco.no` | Staging-miljø | ✅ Aktiv | OPAX | | `oss.vauco.no` | Staging-miljø | ✅ Aktiv | OPAX |
| `os.vauco.no` | Prod-miljø | 🔮 Fase C | OPAX | | `os.vauco.no` | Prod-miljø | 🔮 Fase C | OPAX |
| `costguard.oss.vauco.no` | Cloudflare Pages | ✅ Live | CostGuard | | `costguard.oss.vauco.no` | Cloud Run via IAP | ✅ Live | CostGuard |
| `costguard.os.vauco.no` | Promoteres fra oss | 🔮 Fase C | CostGuard | | `costguard.os.vauco.no` | Promoteres fra oss | 🔮 Fase C | CostGuard |
| `threadstone.vauco.no` | GitHub Pages (`threadstone-landing`) | ✅ Live | Threadstone | | `threadstone.vauco.no` | GitHub Pages (`threadstone-landing`) | ✅ Live | Threadstone |
| `app.threadstone.vauco.no` | GitHub Pages (`vauco-saas.github.io`) | ⚠️ CNAME satt, side mangler | 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 | | `<kunde>.vauco.no` | LB + IAP via Terraform | 🔮 Fase C2 | OPAX/Multi-tenant |
**Reservert til senere — ikke opprettet ennå:** **Reservert til senere:**
| Subdomen | Tiltenkt formål | Trigger | | Subdomen | Tiltenkt formål | Trigger |
|----------|------------------|---------| |----------|------------------|---------|
| `status.vauco.no` | Statuspage for alle moduler (Cloud Run uptime, RAG, IAP) | Etter første kunde — trust-signal | | `status.vauco.no` | Statuspage | Etter første kunde |
| `docs.vauco.no` | Offentlig kundedokumentasjon (CostGuard onboarding, API-ref) | CG4 / første kunde | | `docs.vauco.no` | Offentlig kundedok | CG4 / første kunde |
| `careers.vauco.no` | Stillinger (kan bare være redirect til notion-side) | Når Vauco rekrutterer | | `careers.vauco.no` | Stillinger | Når Vauco rekrutterer |
**Email-infra:** **Email-infra:**
- MX: Google Workspace (`smtp.google.com`) - MX: Google Workspace ✅
- TXT-records (SPF/DKIM/DMARC): ⚠️ Mangler — sett opp som del av V1 for å unngå at salgs-mail havner i spam - SPF/DKIM/DMARC: ⚠️ Mangler — sett opp som del av V1e
### Proof of Curiosity (hos Proisp) — egen merkevare ### Proof of Curiosity (hos Proisp) — egen merkevare
@ -91,44 +91,31 @@ Separat merkevare under Vauco AS (parkert til etter Modul #1 + #2 lever):
| `proof-of-curiosity.no` | Registrert — ikke i bruk | | `proof-of-curiosity.no` | Registrert — ikke i bruk |
| `proofofcuriosity.no` | Registrert — ikke i bruk | | `proofofcuriosity.no` | Registrert — ikke i bruk |
> **Trigger:** Ingen POC-arbeid før Modul #1 (CostGuard) har første betalende kunde og Modul #2 (Threadstone) er i pilot. > **Trigger:** Ingen POC-arbeid før Modul #1 + #2 lever.
--- ---
## 3. Repo-struktur — fasit ## 3. Repo-struktur — fasit
### Aktive repos (5 — hold antallet lavt) ### Aktive repos (5)
| Repo | Formål | Synlighet | Eier-flate | | Repo | Formål | Synlighet | Eier-flate |
|------|--------|-----------|------------| |------|--------|-----------|------------|
| `OSVauco` | Mono-repo: OPAX-engine, alle infrastruktur-scripts, Terraform, all dokumentasjon | Privat | OPAX (rot) | | `OSVauco` | Mono-repo: OPAX-engine, infra, Terraform, all dokumentasjon | Privat | OPAX (rot) |
| `vauco-bootstrap` | Terraform-modul for kunde-provisjonering (referert som submodul fra OSVauco) | Privat | OPAX | | `vauco-bootstrap` | Terraform-modul for kunde-provisjonering | Privat | OPAX |
| `vauco-site` | `vauco.no` salgsportal (apex + www) — eget public repo for SEO, ikke skjul kildekoden | Public | Vauco AS apex | | `vauco-site` | `vauco.no` salgsportal | Public | Vauco AS apex |
| `threadstone-landing` | `threadstone.vauco.no` landingsside | Public | Threadstone | | `threadstone-landing` | `threadstone.vauco.no` landingsside | Public | Threadstone |
| `vauco-saas.github.io` | `app.threadstone.vauco.no` Threadstone-app frontend | Public | Threadstone | | `vauco-saas.github.io` | `app.threadstone.vauco.no` Threadstone-app frontend | Public | Threadstone |
> **Hvorfor `vauco-site` får eget repo (ikke i mono-repoet):** ### Arkiverte repos
> 1. Skal være public (mono-repoet er privat og må forbli det — inneholder infra, secrets-referanser, kundedata-mønstre)
> 2. Skal serveres via GitHub Pages eller Cloudflare Pages — egen deploy-pipeline
> 3. Designere/markedsfolk kan jobbe der uten å se OPAX-koden
> 4. Følger samme mønster som `threadstone-landing`
### Arkiverte repos (ikke gjenåpne uten plan-endring)
| Repo | Arkivert | Innholdet finnes nå i | | Repo | Arkivert | Innholdet finnes nå i |
|------|----------|------------------------| |------|----------|------------------------|
| `vauco-os` | ✅ 2026-05-27 | `OSVauco/docs/architecture/` | | `vauco-os` | ✅ 2026-05-27 | `OSVauco/docs/architecture/` |
| `vauco-gemini-tui-bridge` | ✅ 2026-05-27 | (kun arkiv; reaktiveres etter Fase 8 om behov) | | `vauco-gemini-tui-bridge` | ✅ 2026-05-27 | Arkiv — reaktiveres som del av OX1b |
| `command-hub` | ✅ 2026-05-27 | `OSVauco/static/command-hub.html` | | `command-hub` | ✅ 2026-05-27 | `OSVauco/static/command-hub.html` |
### Parkerte repos — leve videre, ikke arkiver, ikke aktivt jobb før trigger > **Regel:** Nytt repo krever eksplisitt `REPO APPROVED` fra Chris.
| Repo | Trigger for å gjenoppta | Hvor det hører hjemme i hierarkiet |
|------|--------------------------|------------------------------------|
| `threadstone-instructions` | Når Threadstone-app går i pilot (Modul #2 fase 2) | Threadstone-modul — boot-prompter + tema-config |
| `deep-dream` | Når Modul #1 har betalende kunde | Strategisk visjon, klassifisert — egen prosess |
> **Regel:** Hvis du vil opprette et nytt repo — `STOP`. Vurder først om det kan leve som mappe i `OSVauco`. Krever eksplisitt `REPO APPROVED` fra Chris.
--- ---
@ -136,140 +123,62 @@ Separat merkevare under Vauco AS (parkert til etter Modul #1 + #2 lever):
``` ```
OSVauco/ OSVauco/
├── MASTERPLAN.md → symlink/peker til docs/MASTERPLAN.md (denne filen) ├── MASTERPLAN.md
├── README.md ├── README.md
├── AGENTS.md ML-roller, ikke rør uten ML-fase-endring ├── AGENTS.md
├── Dockerfile / cloudbuild.yaml CI/CD (auto-deploy på push til main) ├── Dockerfile / cloudbuild.yaml
├── agents/ Python-agentene ├── agents/
│ ├── core-logic/ OPAX orchestrator + FastAPI app (main.py) │ ├── core-logic/ OPAX orchestrator + FastAPI app
│ ├── rag/ RAG-agent │ │ ├── agent.py Kjører Gemini nå → Gemma fra ML-3
│ ├── memory/ Memory-agent │ │ ├── app.py
│ ├── multi_agent/ Sub-orchestrators │ │ └── token_logger.py
│ ├── eval/ Evaluering │ ├── rag/
│ ├── tests/ Pytest │ ├── memory/
│ └── tools/ Hjelpere │ ├── multi_agent/
│ ├── eval/
│ ├── tests/
│ └── tools/
├── auth/ OAuth2-flow ├── auth/
├── ml/ CostGuard-engine (billing_agent, anomaly_detector, telemetry) ├── ml/
├── infrastructure/ GCP-scripts (0012, 99) + terraform/ ├── infrastructure/
│ └── terraform/ IaC (modules, customers, platform.tf) ├── scripts/
├── scripts/ smoke-test, cost-audit, opax-boot, sync-gdrive ├── static/
├── static/ HTML servert av Cloud Run │ ├── opax.html Operator hub — blir Chris sitt cockpit (OX1)
│ ├── opax.html OPAX operator hub
│ ├── billing-dashboard.html │ ├── billing-dashboard.html
│ ├── command-hub.html │ ├── command-hub.html
│ ├── costguard.html ← CG3 bygges her │ ├── costguard.html
│ └── admin.html │ └── admin.html
├── docs/ ├── docs/
│ ├── MASTERPLAN.md ← denne filen, autoritativ │ ├── MASTERPLAN.md ← denne filen
│ ├── ROADMAP.md ← levende, oppdateres hver sesjon │ ├── ROADMAP.md
│ ├── HANDOFF.md ← ÉN fil, overskrives per sesjon │ ├── HANDOFF.md
│ ├── AGENT_RULEBOOK.md ← immutable regler for agent-boot │ ├── AGENT_RULEBOOK.md
│ ├── ARCHITECTURE.md │ ├── gemma/ ← NY: Gemma kontekstpakke (ML-3b)
│ ├── LEARNINGS.md │ │ ├── world.md Vaucos verden — alt Gemma trenger å vite
│ ├── architecture/ fra vauco-os repo │ │ └── README.md
│ ├── threadstone/ (kommer når threadstone-instructions konsolideres)
│ └── [øvrige tema-docs] │ └── [øvrige tema-docs]
├── protocols/ ├── protocols/sessions/
│ └── sessions/ Detaljerte sesjonsprotokoller (én per dag) └── data/
├── data/ RAG-input (threadstone_faq.*)
└── dialogflow/ DX-agent-config
``` ```
--- ---
## 4b. vauco.no — salgsportal (Vauco AS apex) ## 4b. vauco.no — salgsportal (Vauco AS apex)
> Eget repo: `vauco-saas/vauco-site`opprettes som del av V1. > Eget repo: `vauco-saas/vauco-site`LIVE 2026-06-05 på GCS+LB.
### Formål (én linje) ### Formål
Vauco AS sin offisielle bedriftsside. Selger Vaucos AI-moduler ved å lede besokende videre til riktig modul-landingsside. Bygger tillit gjennom å vise hvem som står bak. Vauco AS sin offisielle bedriftsside. Selger moduler ved å lede besøkende til riktig produktside.
### Hvem siden er for (prioritert rekkefølge)
1. **Potensielle CostGuard-kunder** — norske bedrifter med GCP-kostnader de ikke kontrollerer (Chris sin primære salgsmotor)
2. **Threadstone-pilot-kunder** (Q3 2026+)
3. **Partnere og presse** — "hvem er Vauco?"
4. **Fremtidige ansatte** — kandidater som googler firmaet etter et møte
### Informasjonsarkitektur (sidekart)
```
vauco.no (hovedside)
├── #hero "Vauco bygger AI-moduler som leverer målbar verdi"
├── #moduler Grid med levende moduler
│ ├── CostGuard → costguard.oss.vauco.no
│ ├── Threadstone → threadstone.vauco.no
│ └── "Flere kommer" (placeholder med signup)
├── #hvorfor-vauco 3 punkter: norsk eierskap, GCP-ekspertise, AI som ikke er hype
├── #om-oss Chris Christiansen + Vauco AS (org.nr, Oslo)
├── #kontakt chris.christiansen@vauco.no + LinkedIn
└── footer Org.nr, personvern-lenke, status.vauco.no (når live)
/personvern.html Personvernerklæring (GDPR-krav)
/vilkar.html Standardvilkår for kunder
/sitemap.xml For SEO
/robots.txt
```
### Visuell retning (utgangspunkt)
- **Ankret i Threadstone-stilen** (`threadstone-landing/index.html`) — mørk bakgrunn, monospace-aksenter, Inter/SF Pro som hovedtypo
- **Én hovedfarge per modul:** CostGuard får en, Threadstone en annen — visuelt skille så kundene ikke forveksler
- **Ikke generisk SaaS-look.** Vauco er en operatør, ikke et VC-finansiert startup. Tone: rolig, kompetent, norsk.
- **Mobile-first** — Chris demoer ofte fra telefon
- **Lighthouse ≥0.95** på alle 4 akser
- **Ingen tracking-piksler** ved lansering (kan legges til senere som GA4 om nødvendig)
### Salgs-flow (hva siden faktisk skal drive)
```
Google/LinkedIn → vauco.no
#moduler-grid
klikk "CostGuard" → costguard.oss.vauco.no
Magic-link login
(etter CG3-flow): kunden ser sine GCP-kostnader
"Bestill" → Chris ringes opp (OPAX HITL)
```
### Teknisk stack
| Lag | Valg |
|-----|------|
| Hosting | GitHub Pages (samme mønster som `threadstone-landing`) eller Cloudflare Pages |
| Bygg | Vanilj HTML/CSS — ingen framework før vi har en grunn |
| Deploy | Push til main → Pages bygger |
| Domene | `vauco.no` + `www.vauco.no` CNAME |
| SSL | Auto via Pages |
| Skjema | Formspark / Netlify Forms eller `mailto:` (V1 = mailto) |
### Det som IKKE skal være på vauco.no
- Ingen OPAX, Vauco OS, eller intern arkitektur — dette er kundenes side
- Ingen Deep Dream-innhold
- Ingen Proof of Curiosity (egen merkevare, egen side når tiden er inne)
- Ingen demo-credentials, ingen tekniske dypdykk
- Ingen "vi er det neste OpenAI"-retorikk
### Designreferanser å inspireres av (ikke kopiere)
- Linear.app — ren visuell hierarki
- Resend.com — norsk-ish tone, fokus på én ting
- Vercel.com — strukturen på modul-grid (men råere typografi)
- Threadstone-landing.html — vår egen stilreferanse
### Versjons-evolusjon ### Versjons-evolusjon
| Versjon | Inneholder | Trigger | | Versjon | Inneholder | Trigger |
|---------|------------|---------| |---------|------------|---------|
| V1 (MVP) | Hero + modul-grid (CostGuard live, Threadstone "coming soon") + om-oss + kontakt + personvern | NOW — etter Fase 8 | | V1 (MVP) ✅ | Hero + modul-grid + om-oss + kontakt + personvern | LIVE 2026-06-05 |
| V2 | Sales-CTA på hver modul (kalkulator-widget for CostGuard ROI), case study #1 | Etter første betalende kunde | | V2 | Sales-CTA + CostGuard ROI-kalkulator | Etter første betalende kunde |
| V3 | Blogg/innsikter, kundereferanser, status-widget fra `status.vauco.no` | Når 3+ kunder | | V3 | Blogg, kundereferanser, status-widget | Når 3+ kunder |
| V4 | Internasjonalt (`vauco.no/en`), Proof of Curiosity i footer | Etter Modul #3 | | V4 | Internasjonalt (`vauco.no/en`), Proof of Curiosity i footer | Etter Modul #3 |
--- ---
@ -278,104 +187,65 @@ Google/LinkedIn → vauco.no
| Fil | Rolle | Oppdateres | | Fil | Rolle | Oppdateres |
|-----|-------|------------| |-----|-------|------------|
| `docs/MASTERPLAN.md` | Arkitektur, domener, repos, agent-identitet — **denne filen** | Ved arkitekturendringer | | `docs/MASTERPLAN.md` | Arkitektur, domener, repos, agent-identitet | Ved arkitekturendringer |
| `docs/ROADMAP.md` | Faser, status, backlog — **levende dokument** | Hver sesjon | | `docs/ROADMAP.md` | Faser, status, backlog | Hver sesjon |
| `docs/HANDOFF.md` | Hva ble gjort, hva er neste, kjente hull — **alltid kun én fil** | Overskrives hver sesjon | | `docs/HANDOFF.md` | Hva ble gjort, hva er neste | Overskrives hver sesjon |
| `docs/AGENT_RULEBOOK.md` | Locked definitions for agent-boot | Kun ved infrastruktur-låsing | | `docs/AGENT_RULEBOOK.md` | Locked definitions for agent-boot | Ved infrastruktur-låsing |
| `protocols/sessions/YYYY-MM-DD_<tema>.md` | Detaljerte protokoller per sesjon | Append-only | | `docs/gemma/world.md` | Gemmas verden — kontekstpakke for lokal modell | Bygges simultant med alt annet |
| `protocols/sessions/YYYY-MM-DD_<tema>.md` | Detaljerte protokoller | Append-only |
**Regel:** Arkitektur → MASTERPLAN. Oppgave → ROADMAP. Sesjonsstatus → HANDOFF. **Aldri dobbelt opp.**
> **VAUCO_OS_ROADMAP.md er deprecated 2026-05-31.** Erstattet av `docs/ROADMAP.md`.
--- ---
## 6. AI-modell — låst (midlertidig) ## 6. AI-modell — tofase-strategi
### Fase 1 — Nå (Vertex AI, løper ut kreditter)
| Parameter | Verdi | Merknad | | Parameter | Verdi | Merknad |
|-----------|-------|---------| |-----------|-------|---------|
| **Modell** | `gemini-2.5-pro` | Via Vertex AI | | **Intern modell (Jason/Chris)** | `gemini-2.5-pro` / `gemini-2.5-flash` | Via Vertex AI, tærer på kreditter |
| **Endpoint** | `us-central1` | Bruker Vertex-kreditter | | **Kundemodell** | `gemini-2.5-flash` | Via Vertex AI — kunder betaler indirekte |
| **SDK** | `from google import genai` | google-genai >=0.3 | | **Endpoint** | `us-central1` | Vertex-kreditter |
| **Status Claude Opus 4.6/4.7** | ⏳ Venter på kvote-godkjenning fra Google Cloud-team | Bytt når kvote er innvilget | | **SDK** | `google-adk` + `google-genai` | |
| **Status Claude** | ⏳ Venter på EU-kvote | Bytt når kvote innvilget |
**Bytte til Claude krever:** ### Fase 2 — Gemma-migrering (trigger: kreditter < 20% eller første kunde onboardet)
1. Bekreftelse fra Google Cloud-team at kvote er innvilget i `us-central1` eller `eu`-region
2. Eksplisitt `MODEL APPROVED` fra Chris | Parameter | Verdi | Merknad |
3. Oppdatering av denne tabellen, `AGENT_RULEBOOK.md` og `.gemini/GEMINI.md` i samme commit |-----------|-------|---------|
| **Intern modell (Jason/Chris)** | `gemma-4-12b-it` int4 | GCP `g2-standard-4` Spot VM (~$120150/mnd) |
| **Serving** | Ollama (utvikling) → vLLM (produksjon) | |
| **Kundemodell** | `gemini-2.5-flash` via Vertex | Uendret — kunder merker ingenting |
| **Kontekst** | `docs/gemma/world.md` lastet som system-prompt | Gemma forstår Vauco fra dag 1 |
**Prinsipp:** Kunder bruker alltid Gemini via Vertex. Chris/Jason bruker Gemma lokalt.
**Gemma er ikke dum når den starter** — kontekstpakken (`docs/gemma/world.md`) bygges simultant og lastes ved oppstart.
**Bytte til Gemma krever:**
1. ML-3b kontekstpakke ferdigstilt
2. GPU-VM verifisert med smoke-test
3. Eksplisitt `MODEL APPROVED` fra Chris
4. Oppdatering av `agent.py`, `AGENT_RULEBOOK.md` og denne tabellen i samme commit
--- ---
## 7. Roadmap — prioritert rekkefølge ## 7. Roadmap — kortversjon
> Denne seksjonen er kortversjonen. Full status og daglig oppdatering ligger i `docs/ROADMAP.md`. > Full status i `docs/ROADMAP.md`.
### 🔴 NÅ — Konsolidering + Fase 8 verifisering ### 🔴 NOW
- [x] K2, F8, CG6, CG3e — alle done ✅
| # | Oppgave | Eier | Status | ### 🟠 NEXT
|---|---------|------|--------| - V1e — SPF/DKIM/DMARC
| K1 | Slå sammen MASTERPLAN-er, slett duplikater, fjern merge-markører | Chris + Perplexity | 🟡 In progress (denne sesjonen) | - CG4 — Token Intelligence (estimering + prising)
| K2 | Oppdater AGENT_RULEBOOK med korrekt region + modell | Chris | 🟡 In progress | - OX1 — Operator Hub (Cloud Build widget, TUI, Jason-chat som cockpit)
| K3 | Fiks nattlig GDrive backup-workflow | Chris | ⏳ Pending | - ML-3b — Gemma kontekstpakke bygges simultant (starter neste sesjon)
| F8 | End-to-end test: `opax.vauco.no` → login → chat → svar | Chris | ✅ Delvis (Cloud Run + IAP OK, gemini-2.5-pro deployet, browser-flow gjenstår) |
**Nåværende status:** ### 🟡 LATER
- Primary region bekreftet: `us-central1` - C4 — Første betalende kunde
- `gemini-2.5-pro` deployet ✅ - ML-3 — Full Gemma-migrering (trigger: kreditter < 20%)
- Åpne PR-er: #8, #9, #10 - T1T4 — Threadstone
- Fase C — Multi-tenant
### 🟠 V — vauco.no salgsportal (parallelt spor)
| # | Oppgave |
|---|---------|
| V1a | Opprett `vauco-saas/vauco-site` (public repo) |
| V1b | Bygg MVP: hero + modul-grid (CostGuard live, Threadstone "coming soon") + om-oss + kontakt + personvern |
| V1c | Sett CNAME `vauco.no` + `www.vauco.no` → GitHub Pages i Proisp |
| V1d | Erstatt "Under construction" placeholder — deploy MVP |
| V1e | Sett opp SPF + DKIM + DMARC TXT-records på `vauco.no` (e-post fra Workspace) |
| V2 | Sales-CTA + CostGuard ROI-kalkulator (trigger: etter Fase 8 OG første demo) |
### 🟡 NESTE — CG3 (CostGuard frontend wiring)
| # | 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 (Modul #1)
| 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) |
### 🔵 MODUL #2 — Threadstone
| # | Oppgave |
|---|---------|
| T1 | Konsolider `threadstone-instructions``OSVauco/docs/threadstone/` (når app-arbeid starter) |
| T2 | Bygg `app.threadstone.vauco.no` i `vauco-saas.github.io` |
| T3 | Koble til OPAX-engine via `POST /threadstone/generate` |
| T4 | Pilot med første kunde |
### 🟣 STRATEGISK — Deep Dream (klassifisert)
> Innholdet i `deep-dream` repo er strategisk visjon. **Røres ikke** før Modul #1 har betalende kunde. Lever som eget repo for å holde tilgang adskilt.
### 🌐 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 (vurder om det skal under `vauco-saas` eller separat org) |
| POC-4 | Bygg landing/MVP |
> **Trigger:** Ikke start POC før Modul #1 er live med betalende kunde OG Modul #2 er i pilot.
--- ---
@ -384,7 +254,7 @@ Google/LinkedIn → vauco.no
| Identitet | E-post | Rolle | | Identitet | E-post | Rolle |
|-----------|--------|-------| |-----------|--------|-------|
| Eier / admin | `chris.christiansen@vauco.no` | Full kontroll | | Eier / admin | `chris.christiansen@vauco.no` | Full kontroll |
| Agent (OPAX / Jason) | `jason.vauger@vauco.no` | `billing.viewer` + `run.invoker` `osvauco-agent` | | Agent (OPAX / Jason) | `jason.vauger@vauco.no` | `billing.viewer` + `run.invoker` |
| Fremtidig gruppe | `billing@vauco.no` | `billing.viewer` (Fase C) | | Fremtidig gruppe | `billing@vauco.no` | `billing.viewer` (Fase C) |
**Forbudte kontoer:** `tinius.vauger`, `ccv` — aldri gi tilganger. **Forbudte kontoer:** `tinius.vauger`, `ccv` — aldri gi tilganger.
@ -405,22 +275,24 @@ Google/LinkedIn → vauco.no
| `GET /billing/summary` | ✅ | | `GET /billing/summary` | ✅ |
| `GET /billing/forecast` | ✅ | | `GET /billing/forecast` | ✅ |
| `GET /billing/anomalies` | ✅ | | `GET /billing/anomalies` | ✅ |
| `GET /billing/history` | ✅ |
| `GET /billing/budget` | ✅ |
| `POST /billing/budget` | ✅ |
| `GET /billing/tokens/summary` | ✅ (data fra CG3e) |
| `GET /auth/login` | ✅ | | `GET /auth/login` | ✅ |
| `GET /auth/callback` | ✅ | | `GET /auth/callback` | ✅ |
| `GET /static/billing-dashboard.html` | ✅ |
| `GET /static/opax.html` | ✅ |
| `GET /state` | ✅ | | `GET /state` | ✅ |
| `GET /telemetry/history` | ✅ | | `GET /telemetry/history` | ✅ |
--- ---
## 10. Go-to-market — enkelt og konkret ## 10. Go-to-market
**Produkt #1: CostGuard** **Produkt #1: CostGuard**
- **Hvem:** Norske bedrifter med GCP-kostnader de ikke kontrollerer - **Hvem:** Norske bedrifter med GCP-kostnader de ikke kontrollerer
- **Hva:** Autonomt kostnadsovervåkningsverktøy med AI-anomali-deteksjon - **Hva:** Autonomt kostnadsovervåkningsverktøy med AI-anomali-deteksjon
- **Pris:** $300500/mnd per kunde (breakeven ved 1 kunde) - **Pris:** $300500/mnd per kunde (breakeven ved 1 kunde)
- **Salgskanal:** Chris selv via OPAX → HITL-møte → `terraform apply` - **Salgskanal:** Chris selv → HITL-møte → `terraform apply`
**Produkt #2: Threadstone** (Q3 2026) **Produkt #2: Threadstone** (Q3 2026)
- Definisjon låses når Modul #1 har første kunde. - Definisjon låses når Modul #1 har første kunde.
@ -431,43 +303,60 @@ Google/LinkedIn → vauco.no
| ID | Problem | Løsning | Prioritet | | ID | Problem | Løsning | Prioritet |
|----|---------|---------|-----------| |----|---------|---------|-----------|
| OQ-15 | BQ billing_export tabell | Venter på aktivering — sjekk neste sesjon | Medium | | OQ-15 | BQ billing_export tabell | Venter på aktivering | Medium |
| OQ-17 | `github-token` secret mangler | Opprett alias fra `github-pat` | 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-18 | VM alltid-på kostnad | Kjør `03-teardown.sh` hver kveld | Høy |
| OQ-20 | Nattlig GDrive backup feiler hver natt siden 2026-05-25 | Diagnostisere SA-key / folder-ID; fikses i K3 | Høy | | OQ-20 | Nattlig GDrive backup | Fikset K3 · 2026-06-09 ✅ | — |
| OQ-21 | `app.threadstone.vauco.no` CNAME satt, men ingen `index.html` | Bygg som del av T2 eller fjern CNAME | Lav | | OQ-21 | `app.threadstone.vauco.no` CNAME uten side | Bygg T2 eller fjern CNAME | Lav |
| OQ-22 | Claude Opus 4.6/4.7 mangler EU-kvote | Vent på Google Cloud-team; midlertidig på Gemini 2.5 Pro | Medium | | OQ-22 | Claude EU-kvote | Vent på Google Cloud-team | Medium |
| OQ-23 | `vauco.no` viser "Under construction" (Proisp placeholder) | Erstattes av V1-fase | Høy | | OQ-23 | vauco.no placeholder | LIVE 2026-06-05 ✅ | — |
| OQ-24 | Ingen SPF/DKIM/DMARC TXT-records på `vauco.no` | Sett opp som del av V1e — salgsmail havner ellers i spam | Høy | | OQ-24 | Ingen SPF/DKIM/DMARC | V1e | Høy |
| OQ-25 | Ingen `personvern.html` / `vilkar.html` på vauco.no | GDPR-krav før betalende kunder onboardes — del av V1 | Høy | | OQ-25 | Ingen personvern/vilkår | LIVE 2026-06-05 ✅ | — |
| OQ-26 | Ingen statuspage (`status.vauco.no`) | Etter første kunde — trust-signal | Lav | | OQ-26 | Ingen statuspage | Etter første kunde | Lav |
--- ---
## 12. OPAX — fremtidig visjon (parkert, prioriteres etter CG3 + Fase 8) ## 12. OPAX — fremtidig visjon
> Notert 2026-05-28. Ikke bygg dette nå — fokus er Fase 8 + CG3. > Notert 2026-05-28, utvidet 2026-06-10.
OPAX (`opax.vauco.no`) blir Chris sin **mobile salgssentral** — en stille, tekstbasert assistent han kan snakke MED via AirPods mens han er i møte med en potensiell kunde. ### Operator Hub (OX1) — Chris sitt cockpit
OPAX (`opax.vauco.no`) blir Chris sin **komplette arbeidsflate** — aldri trenger VM igjen for daglig drift.
**Inneholder når ferdig:**
- Jason-chat (allerede der)
- Billing dashboard (allerede der)
- Cloud Build live-widget (spinner → ✅/❌ ved push)
- Embedded TUI/terminal (reaktiverer `vauco-gemini-tui-bridge`)
- Token Intelligence dashboard (CG4)
**Flyt:** tale → transkribering → Jason analyserer → genererer kundemodul → Chris reviewer → magic-link til kundens mail. **Flyt:** tale → transkribering → Jason analyserer → genererer kundemodul → Chris reviewer → magic-link til kundens mail.
**Prinsipper:** ### Gemma-verdensbygging (ML-3b) — simultant spor
- OPAX snakker aldri — kun tekst på skjerm
- Voice er kun inn (Web Speech API / Whisper)
- Silent assistant — stille, rask, mørk, monospace
- Provisjonering on-the-go
**Teknisk stack når det bygges:** Web Speech API → Whisper, Gemini 2.5 Pro (eller Claude når kvote kommer), magic link via SendGrid/Resend fra `vauco.no`, ny endepunkt `POST /opax/generate` i `main.py`. **Prinsipp:** Gemma skal ikke være dum når den tar over. Kontekstpakken bygges nå, simultant med alt annet.
**Trigger for å starte:** CG3 live OG `static/` UI/UX-opprydding gjort. ```
docs/gemma/world.md ← bygges løpende fra neste sesjon
├── Hvem er Vauco AS og Chris
├── Plattformhierarkiet (Vauco OS → OPAX → Moduler)
├── Alle aktive domener og endepunkter
├── Agent-identitet og HITL-grenser
├── Alle sesjons-protokoller (komprimert)
├── Teknisk stack og GCP-konfig
├── Gjeldende ROADMAP-status
└── Tone og kommunikasjonsstil (norsk bokmål, direkte)
```
Når Gemma-VM starter → `world.md` lastes som system-prompt → Jason/Gemma forstår konteksten fra første token.
--- ---
## 13. TUI-bridge — parkert ## 13. TUI-bridge — reaktiveres som OX1b
Lokal TUI-plan ble løst av OPAX + Cloud Shell + Gemini TUI. Koden ligger i arkiv (`vauco-gemini-tui-bridge`). Reaktiveres etter Fase 8 + første kunde hvis behovet melder seg igjen — flyttes da til `OSVauco/tui/`. Lokal TUI-plan ble løst av OPAX + Cloud Shell + Gemini TUI. Koden ligger i arkiv (`vauco-gemini-tui-bridge`). Reaktiveres som **OX1b** — embedded terminal i operator hub — når OX1a (Cloud Build widget) er live.
--- ---
*OSVauco | propane-will-491900-m5 | us-central1 | Autoritativ fra 2026-05-31* *OSVauco | propane-will-491900-m5 | us-central1 | Autoritativ fra 2026-05-31 | Oppdatert 2026-06-10*

View File

@ -22,65 +22,43 @@
## NOW — Aktiv akkurat nå ## NOW — Aktiv akkurat nå
- [x] **K2 — AGENT_RULEBOOK retting** - [x] **K2 — AGENT_RULEBOOK retting**
- Region → `us-central1`, modell → `gemini-2.5-pro`, MCP_SERVICE → `osvauco-agent` - [x] **F8 — End-to-end test via opax.vauco.no**
- Done når: AGENT_RULEBOOK matcher MASTERPLAN §6 og §9
- [x] **F8 — End-to-end test via opax.vauco.no**
- Cloud Run `/health` ✅, IAP blokk ✅
- browser-login → chat → svar ✅
- HITL gate: `FASE8 APPROVED`
- [x] **CG6 — Modulært drag+collapse dashboard + nye billing-endepunkter** · 2026-06-10 - [x] **CG6 — Modulært drag+collapse dashboard + nye billing-endepunkter** · 2026-06-10
- `/billing/anomalies` ✅ — live, henter ekte BigQuery-data - [x] **CG3e — Token-logging til BQ med full CG4-labeling** · 2026-06-10
- `/billing/history` ✅ — daglig MTD-historikk for bar-chart
- `/billing/budget` GET+POST ✅ — localStorage frontend, in-memory backend
- Alle dashboard-moduler draggable + collapsible + layout persistert i localStorage
- Compute Engine SKU-duplikater fikset — grupperes nå per tjeneste
- TODO Fase-C: `/billing/budget` migreres til Firestore per bruker
- [x] **CG3e — Tokenmeter: token-logging til BigQuery** · 2026-06-10
- `token_logger.py`: utvidet schema med `module_name`, `caller_type`, `session_id`
- `agent.py`: labeling `jason/light` | `jason/heavy`, `caller_type` propagert fra call-site
- BQ-tabell opprettes automatisk ved oppstart (`create_bq_table_if_not_exists()`)
- `/billing/tokens/summary` endepunkt finnes ✅ — vil nå få data
- Tokenkortet på dashbordet vil vise data ved neste agent-kall
--- ---
## NEXT — Neste opp (etter NOW) ## NEXT — Neste opp
### vauco.no salgsportal (V-spor) ### vauco.no salgsportal (V-spor)
> **ARKITEKTURVALG 2026-06-05:** vauco.no hostes på **GCP** (GCS static bucket + global HTTPS load balancer + Cloud CDN), IKKE GitHub Pages. Stack: bucket `vauco-site-public` → backend-bucket → url-map → managed SSL → global IP **34.13.124.217**. - [x] **V1aV1d** — vauco.no LIVE (GCS+LB, SSL ACTIVE) · 2026-06-05
- [x] **V1a** — Opprett `vauco-saas/vauco-site` (public repo) · 2026-06-05
- [x] **V1b** — Bygg MVP: hero + modul-grid + om-oss + kontakt + personvern + vilkår · 2026-06-05
- [x] **V1c** — DNS i Proisp: apex `vauco.no` + `www` A-record → 34.13.124.217 · 2026-06-05
- [x] **V1d** — V1 LIVE på https://vauco.no (GCS+LB, SSL ACTIVE) · 2026-06-05
- [ ] **V1e** — Sett opp SPF + DKIM + DMARC TXT-records på `vauco.no` - [ ] **V1e** — Sett opp SPF + DKIM + DMARC TXT-records på `vauco.no`
### CostGuard Strategi & Arkitektur ### CostGuard frontend
- [x] **CG3aCG3d** — costguard.html, CNAME, OAuth-flow ✅
- **Dobbelt formål:** Egenbruk (intern kostnadsovervåkning) + Salgsmodus (kundedemoer og pitch)
- **Modellstrategi:** `gemini-2.5-pro` for high-touch, Flash-modell (fremtidig) for bakgrunnsoppgaver
- **Hierarkisk koststruktur:** Kostnader grupperes per tjeneste (ikke flate SKU-labels)
- **Token-logging:** All AI-bruk logges til `llm_token_usage`-tabell med full labeling
### CostGuard frontend wiring
- [x] **CG3a** — Bygg `static/costguard.html`
- [x] **CG3b** — Sett CNAME `costguard.oss.vauco.no` → Cloud Run
- [x] **CG3c** — Verifiser `/static/costguard.html` via Cloud Run
- [x] **CG3d** — Test OAuth-flow
- [ ] **OQ-21** — Bygg `app.threadstone.vauco.no` eller fjern CNAME - [ ] **OQ-21** — Bygg `app.threadstone.vauco.no` eller fjern CNAME
### CG4 — Token Intelligence (neste etter CG3e) ### CG4 — Token Intelligence
> Bygger på `llm_token_usage`-rådata fra CG3e. Formål: full synlighet på AI-kostnader per modul, > Bygger på `llm_token_usage`-rådata fra CG3e. Trigger: minst 50 loggede kall.
> prosjektestimering FØR oppgave startes, og korrekt prising av oppdrag til kunder.
| # | Oppgave | Formål | | # | Oppgave | Formål |
|---|---------|--------| |---|---------|--------|
| CG4a | `/billing/tokens/by-module` endepunkt — aggreger token-bruk per `module_name` og `caller_type` | Vise hvilken komponent som spiser tokens | | CG4a | `/billing/tokens/by-module` — aggreger per `module_name` + `caller_type` | Hvilken komponent spiser tokens |
| CG4b | Dashboard-utvidelse: tokenmodul viser breakdown per `jason/light`, `jason/heavy`, `costguard`, `billing_agent`, `cli/gemini-tui` | Visuell oversikt per kaller | | CG4b | Dashboard breakdown: `jason/light`, `jason/heavy`, `costguard`, `billing_agent`, `cli/gemini-tui` | Visuell oversikt |
| CG4c | Prosjektestimator: historisk snitt-tokens per oppgavetype × kompleksitetsfaktor → estimert kostnad i USD før oppgave startes | Estimer hva et prosjekt koster FØR det bygges | | CG4c | Prosjektestimator: historisk snitt-tokens × kompleksitetsfaktor → USD-estimat FØR oppgave startes | Estimer kostnad før bygg |
| CG4d | Kundeprisingskalkulator: basert på token-historikk per modul → autogenerer prisforslag per oppdrag (basis for CostGuard-faktura til kunder) | Korrekt prising av AI-arbeid | | CG4d | Kundeprisingskalkulator: token-historikk → autogenerer prisforslag per oppdrag | Korrekt prising av AI-arbeid |
**Trigger for CG4:** CG3e live og produserer data (minst 50 loggede kall). ### OX1 — Operator Hub fullføring
> Mål: `opax.vauco.no` blir Chris sitt komplette cockpit — aldri trenger VM igjen.
| # | Oppgave | Formål |
|---|---------|--------|
| OX1a | Cloud Build live-widget i `opax.html` — spinner → ✅/❌ ved push til main | Se deploy-status live |
| OX1b | Embedded terminal / TUI-vindu i operator hub (reaktiver `vauco-gemini-tui-bridge` som iframe/xterm.js) | CLI-tilgang uten VM |
| OX1c | Jason-chat som primærgrensesnitt i opax.html (erstatter VM-tilkobling for daglig drift) | Full kontroll fra browser |
| OX1d | `/opax/build-status` endepunkt mot Cloud Build API | Backend for OX1a |
--- ---
@ -92,6 +70,21 @@
- [ ] **DX5** — Dialogflow Messenger live på costguard-landingssiden - [ ] **DX5** — Dialogflow Messenger live på costguard-landingssiden
- [ ] **ML-2** — Adaptiv intelligens (trigger: >500 telemetri-kall) - [ ] **ML-2** — Adaptiv intelligens (trigger: >500 telemetri-kall)
### ML-3 — Gemma-migrering (lokal modell)
> **Strategi:** Kjør ut Vertex AI-kreditter fullt ut. Bygg Gemmas «verden» simultant.
> Når kreditter er brukt opp → Gemma tar over internt. Kunder fortsetter på Gemini via Vertex.
> **Trigger:** Vertex-kreditter < 20% ELLER første betalende kunde er onboardet.
| # | Oppgave | Detaljer |
|---|---------|----------|
| ML-3a | Klargjør GCP GPU-VM: `g2-standard-4` Spot (1× L4, 24GB VRAM, ~$120150/mnd) | Ollama + Gemma 4 12B int4 |
| ML-3b | **Simultant nå:** Bygg Gemma-kontekst-pakke — last inn MASTERPLAN, ROADMAP, HANDOFF, alle sesjonsprotokoller, AGENT_RULEBOOK som system-prompt/RAG for Gemma | Gemma er ikke dum når den starter — forstår Vauco fra dag 1 |
| ML-3c | Migrer `agent.py` til hybrid: Gemma internt (Jason/Chris-bruk), Gemini via Vertex for kunder | Tofase-arkitektur |
| ML-3d | Fine-tune Gemma 4 på Vauco-sesjonsdata (protokoller + MASTERPLAN + kundeinteraksjoner) | Jason blir virkelig autonom |
> **ML-3b starter NESTE SESJON** — uavhengig av trigger. Kontekstpakken bygges parallelt med alt annet.
### Modul #2 — Threadstone ### Modul #2 — Threadstone
- [ ] **T1** — Konsolider `threadstone-instructions``OSVauco/docs/threadstone/` - [ ] **T1** — Konsolider `threadstone-instructions``OSVauco/docs/threadstone/`
- [ ] **T2** — Bygg `app.threadstone.vauco.no` — migrer fra GitHub Pages til GCP - [ ] **T2** — Bygg `app.threadstone.vauco.no` — migrer fra GitHub Pages til GCP
@ -103,8 +96,7 @@
- [ ] **C2** — Multi-tenant stamp-out (`scripts/onboard-client.sh`) - [ ] **C2** — Multi-tenant stamp-out (`scripts/onboard-client.sh`)
- [ ] **C3** — BQ-2 / Looker Studio kobling - [ ] **C3** — BQ-2 / Looker Studio kobling
- [ ] **CG6-Fase-C** — Migrer `/billing/budget` fra in-memory til Firestore per bruker - [ ] **CG6-Fase-C** — Migrer `/billing/budget` fra in-memory til Firestore per bruker
- [ ] Full boot cycle acceptance test (automatisert) - [ ] **CI1** — MCP-native CI/CD: GCP Cloud Build/Deploy
- [ ] **CI1** — MCP-native CI/CD: GCP Cloud Build/Deploy, fjern GitHub-avhengighet for deploy
### OPAX-evolusjon ### OPAX-evolusjon
- [ ] Voice-input på `opax.vauco.no` (Web Speech API → Whisper) - [ ] Voice-input på `opax.vauco.no` (Web Speech API → Whisper)
@ -125,7 +117,7 @@
## KJENTE HULL ## KJENTE HULL
- [x] **OQ-23**`vauco.no` LIVE (GCS+LB) · 2026-06-05 - [x] **OQ-23**`vauco.no` LIVE · 2026-06-05
- [ ] **OQ-24** — SPF/DKIM/DMARC mangler på `vauco.no` → V1e - [ ] **OQ-24** — SPF/DKIM/DMARC mangler på `vauco.no` → V1e
- [x] **OQ-25** — Personvern + vilkår publisert · 2026-06-05 - [x] **OQ-25** — Personvern + vilkår publisert · 2026-06-05
- [ ] **OQ-26** — Ingen statuspage → etter første kunde - [ ] **OQ-26** — Ingen statuspage → etter første kunde
@ -134,23 +126,16 @@
## ✅ Fullførte faser ## ✅ Fullførte faser
- [x] **Phase 0** — Baseline: repo, `.gemini/`-struktur, boot-script, sesjonslogg - [x] **Phase 07** — Baseline, domener, Cloud Run, IAP, CI/CD, RAG · 2026-05-2130
- [x] **Phase 1** — Domain/protocol locking, `ARCHITECTURE.md` - [x] **GDrive/GitHub paritet** · 2026-05-25
- [x] **Phase 2**`opax.vauco.no` LIVE: Cloud Run, CNAME, SSL · 2026-05-21 - [x] **Repo-konsolidering trinn 1** · 2026-05-27
- [x] **Phase 3** — Nemotron session loop, `docs/TODO.md`, Phase 1+2 rapport · 2026-05-21
- [x] **Phase 4** — Docs hardening · 2026-05-25
- [x] **Phase 5** — Cloud Run IAM-autentisering · 2026-05-25
- [x] **Phase 5 IAP** — IAP migrering til GCP Load Balancer (IP 34.98.77.173) · 2026-05-30
- [x] **Phase 6** — CI/CD: auto-deploy på push til main · 2026-05-30
- [x] **Phase 7** — RAG corpus `osvauco-corpus` populert i `europe-west4` · 2026-05-30
- [x] **GDrive/GitHub paritet** — mirror-script, PS1 prompt, IAM/Secrets · 2026-05-25
- [x] **Repo-konsolidering trinn 1** — arkivert 3 repos · 2026-05-27
- [x] **Terraform bootstrap-modul** · 2026-05-26 - [x] **Terraform bootstrap-modul** · 2026-05-26
- [x] **OPAX operator hub** `static/opax.html` deployet · 2026-05-31 - [x] **OPAX operator hub** · 2026-05-31
- [x] **K1 — Repo-konsolidering** · 2026-06-09 - [x] **K1 — Repo-konsolidering** · 2026-06-09
- [x] **K3 — Fiks nattlig GDrive backup** · 2026-06-09 - [x] **K3 — Fiks nattlig GDrive backup** · 2026-06-09
- [x] **CG6 — Modulært dashboard, anomalier, historikk, budsjett** · 2026-06-10 - [x] **CG6 — Modulært dashboard, anomalier, historikk, budsjett** · 2026-06-10
- [x] **CG3e — Token-logging til BQ med full CG4-labeling** · 2026-06-10 - [x] **CG3e — Token-logging til BQ med full CG4-labeling** · 2026-06-10
- [x] **ML-3 plan — Gemma-migrering dokumentert, kontekstbygging planlagt** · 2026-06-10
--- ---