OSVauco/MASTERPLAN.md

328 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# VAUCO MASTERPLAN — Chris Christiansen
**Sist oppdatert: 2026-05-26 CEST**
**Status: Cloud Run live (light/heavy) | A5 Memory Bank gjenstår | ML-1 implementert | B-fasen neste**
---
## KONTEKST — Hva vi bygger
Ett AI-drevet operativsystem (OPAX) som kjører på Google Cloud.
Du er første kunde. Når det virker for deg → selg det til andre.
**Repo-oversikt:**
| Repo | Hva det er |
|---|---|
| `OSVauco` | Regler, GCP-scripts, agenter, docs — KJERNEN |
| `vauco-gemini-tui-bridge` | Din TUI-cockpit |
| `vauco-os` | Det kundene bruker |
| `vauco-bootstrap` | Onboarding av nye kunder (→ Terraform-modul i Fase C) |
| `deep-dream` | Strategisk visjon — aldri deploy herfra |
---
## AGENT-IDENTITET
| Identitet | E-post | Rolle | Formål |
|---|---|---|---|
| Eier / admin | `chris.christiansen@vauco.no` | `billing.admin` + `billing.viewer` | Full kontroll |
| Agent (OPAX) | `jason.vauger@vauco.no` | `billing.viewer` | Hente og rapportere kostnadsdata autonomt |
| Fremtidig gruppe | `billing@vauco.no` | `billing.viewer` (Fase C) | Delt innboks for team og kunder |
**Agent-kapabiliteter med `billing.viewer`:**
- Svare på «Hva koster dette prosjektet denne måneden?»
- Sende ukentlig kostnadsrapport til chat-appen
- Reagere på Pub/Sub budget-alerts (via `10-cost-guard.sh`)
- **Ikke:** endre IAM, budsjetter eller koble prosjekter
---
## CLOUD SHELL QUICK-START (kopi-klipp)
> Bruk Cloud Shell: https://shell.cloud.google.com
```bash
# Steg 1: Klon og sett opp miljø
gcloud config set project propane-will-491900-m5
git clone https://github.com/chrischristiansen-glitch/OSVauco.git ~/OSVauco
cd ~/OSVauco
# Steg 2: Kopier og rediger .env
cp .env.example .env
nano .env
# Fyll ut: BILLING_ACCOUNT_ID, ALERT_EMAIL, GITHUB_APP_INSTALLATION_ID
# Alle andre verdier er ferdig-forhåndsutfylt
# Steg 3: Installer Python-avhengigheter
pip install google-adk google-cloud-aiplatform>=1.111.0 --quiet
# Steg 4: Kjør i rekkefølge (kilde .env først)
source .env
bash infrastructure/00-authcheck.sh
bash infrastructure/01-setupenv.sh
bash infrastructure/07-rag-setup.sh
# *** Kopier RAG_CORPUS_NAME fra output inn i .env ***
nano .env
source .env
bash infrastructure/08-memorybank-setup.sh
# *** Kopier MEMORY_ENGINE_NAME fra output inn i .env ***
nano .env
source .env
bash infrastructure/05-cloudrun-deploy.sh
bash infrastructure/04-observability-setup.sh
bash infrastructure/11-billing-iam-hardening.sh
# Om kvelden (OBLIGATORISK — unngå 24/7-fakturering):
bash infrastructure/03-teardown.sh
```
---
## FASE A — Ferdigstill kjernen (GCP oppe)
**Mål: Agenten din er live på Google Cloud | Tid: Ca. 2 timer**
```
[x] A1 — cp .env.example .env og fyll inn verdier
[x] A2 — bash infrastructure/00-authcheck.sh
[x] A3 — bash infrastructure/01-setupenv.sh
[x] A4 — bash infrastructure/07-rag-setup.sh
RAG corpus: projects/357036551735/locations/europe-west1/ragCorpora/6917529027641081856
[ ] A5 — bash infrastructure/08-memorybank-setup.sh
OQ-01: Python SDK only (auto-installert av script)
ACTION: Kopier MEMORY_ENGINE_NAME til .env
[x] A6 — Cloud Run live: osvauco-agent (europe-west1)
URL: https://osvauco-agent-357036551735.europe-west1.run.app
Modes: light (gemini-2.0-flash) | heavy (gemini-2.5-pro)
Env: GOOGLE_CLOUD_LOCATION=us-central1 for modellkall
[x] A7 — bash infrastructure/04-observability-setup.sh
TELEMETRI-KOORDINERING: A7 (Cloud Monitoring/Logging) og ml/telemetry.py er komplementære:
- ml/telemetry.py: JSONL til /tmp/vauco_telemetry/ — agent-nivå (latens, mode, suksess)
- A7 Cloud Monitoring: GCP-nivå (CPU, minne, request-rate, feil-rate)
- I prod: GCS sink fra /tmp/ → gs://propane-will-491900-m5-telemetry/ (se 10-cost-guard.sh)
Ingen konflikt — to lag, ulik granularitet. Begge beholdes.
[x] A8 — bash infrastructure/03-teardown.sh (kjør hver kveld)
[x] A9 — bash infrastructure/11-billing-iam-hardening.sh
```
---
## FASE A2 — Dialogflow CX FAQ-agent (parallelt med A4A9)
**Mål: Generativ FAQ-agent live på OSVauco | Tid: Ca. 35 timer**
**Kreditt: kr 5 822 (dialogflow_cx_credit_v2-0171F6-057E6B-A260BA) + $1 000 Playbooks-trial**
**Detaljer: se `docs/dialogflow-cx-budget-plan.md`**
```
[ ] DX1 — Opprett Playbook-agent i Conversational Agents Console
[ ] DX2 — Last opp FAQ-innhold som Data Store
[ ] DX3 — Konfigurer Playbook med norsk systemprompt
[ ] DX4 — Koble webhook mot OSVauco Cloud Run (etter A6)
[ ] DX5 — Publiser via Dialogflow Messenger (web-widget)
[ ] DX6 — Sett budsjett-alert for Dialogflow CX
```
---
## FASE ML — ML-lag for OPAX (parallelt med B/C)
**Mål: Agentene kjører parallelt, lærer fra bruk, gir strategisk innsikt**
**Filer: `ml/`, `AGENTS.md`, `docs/ml-integration.md`**
```
[x] ML-1 — Grunnlag (implementert 2026-05-25)
Komponenter:
ml/task_graph.py — Dask DAG for parallell agent-kjøring
ml/state_store.py — Parameter Server state (in-memory)
ml/telemetry.py — JSONL-logging per agent-kall og DAG-kjøring
Endepunkter i main.py:
POST /run — enkelt kall med telemetri + state push
POST /run/dag — parallell DAG over liste av meldinger
GET /state — live Parameter Server snapshot
GET /telemetry/history — siste N state-operasjoner
Telemetri-koordinering: se A7-notat over
[ ] ML-2 — Adaptiv intelligens (planlagt)
ml/feedback_loop.py — inkrementell feedback-loop (vauco-gemini-tui-bridge)
ml/hypertuner.py — ASHA hyperparametertuning (vauco-bootstrap)
ml/heavy_predictor.py — heavy-mode prediksjon basert på historikk (OSVauco)
Krav: dask-ml>=2024.4.0, ray[tune]>=2.10.0
Trigger: nok telemetri-data fra ML-1 (> 500 kall)
[ ] ML-3 — Strategisk innsikt (planlagt)
ml/agent_importance.py — XGBoost feature importance (OSVauco)
experiments/pbt.py — Population-Based Training (deep-dream)
Krav: xgboost>=2.0.0
Trigger: ML-2 ferdig + Fase C første kunde
```
**Telemetri-ruting (ML-lag):**
| Miljø | Lokasjon | Arkivering |
|---|---|---|
| Lokal dev | `/tmp/vauco_telemetry/` | Manuell |
| Cloud Run | `/tmp/vauco_telemetry/` | `10-cost-guard.sh` cron → GCS |
| Prod skala | `gs://propane-will-491900-m5-telemetry/` | Auto via GCS sink |
---
## FASE B — Sikring og CI/CD
**Mål: Begrenset tilgang og aktiv CI/CD | Tid: 1 time**
```
[ ] B1 — bash infrastructure/02-deploy.sh (IAP på opax.vauco.no)
[ ] B2 — Opprett GitHub PAT og legg i Secret Manager
[ ] B3 — bash infrastructure/06-cicd-setup.sh
[ ] B4 — Legg til webhook URL i Secret Manager
[ ] B5 — bash infrastructure/10-cost-guard.sh
Aktiverer auto-teardown Cloud Function + chat-varsling
OBS: 10-cost-guard.sh skal også sette opp GCS sink for ML-telemetri
[ ] B6 — Eksporter Dialogflow CX agent til versjonskontroll
```
---
## FASE C — Første salgsmodul
**Mål: Ny kunde onboardet på 30 minutter | Tid: Ukentlig arbeid**
```
[ ] C1 — Pakk vauco-bootstrap som Terraform-modul
[ ] C2 — Pakk vauco-os som kundeflate
[ ] C3 — Opprett billing@vauco.no som Google Group
[ ] C4 — Første kunde: Medioteq
```
---
## INFRASTRUKTUR
| Script | Rolle | Status |
|--------|-------|--------|
| `00-authcheck.sh` | Verifiser gcloud-innlogging | Klar |
| `01-setupenv.sh` | Aktiver APIs, SA, IAM, budsjetter, Pub/Sub | Klar |
| `02-deploy.sh` | IAP-deploy på eget domene | Klar |
| `03-teardown.sh` | Riv ned Cloud Run | Klar |
| `04-observability-setup.sh` | Cloud Monitoring + alerting (GCP-nivå) | Klar |
| `05-cloudrun-deploy.sh` | ADK-agent til Cloud Run | Klar |
| `06-cicd-setup.sh` | GitHub → Cloud Build 2nd gen | Oppdatert |
| `07-rag-setup.sh` | RAG Engine corpus + fallback | Oppdatert |
| `08-memorybank-setup.sh` | Memory Bank + auto-install | Oppdatert |
| `09-cost-check.sh` | Kostnadsoversikt + Artifact Registry | Klar |
| `10-cost-guard.sh` | Cloud Function auto-teardown + GCS ML-telemetri sink | **Ny** |
| `11-billing-iam-hardening.sh` | Billing IAM: viewer-roller + fjern domain Creator | **Ny** |
---
## KJENTE HULL
| ID | Hva | Workaround / Status |
|---|---|---|
| OQ-01 | Memory Bank — ingen gcloud CLI | Python SDK only |
| OQ-02 | RAG Engine regional availability | Auto-fallback til us-east1 |
| OQ-03 | CMEK ikke for RAG Engine | VPC-SC only |
| OQ-04 | Cloud Build GitHub OAuth | **LØST** — 2nd gen programmatisk connection |
| OQ-05 | gcloud alpha monitoring ustabil | Fallback til true |
| OQ-06 | Memory Bank auto-discovery | Eksplisitt env var |
| OQ-07 | Monitoring email flag-format | Teste i dev |
| OQ-08 | VPC connector e2-micro regional | Default us-central1 |
| OQ-09 | GCP billing: 0 viewers | **LØST**`11-billing-iam-hardening.sh` |
| OQ-10 | GCP billing: Creator på domenet | **LØST** — fjernes når ORG_DOMAIN er satt |
| OQ-11 | Dialogflow CX Data Store norsk indeksering | Teste med nb-NO locale i DX2 |
| OQ-12 | gemini-2.0-flash ikke tilgjengelig europe-west1 | **LØST** — GOOGLE_CLOUD_LOCATION=us-central1 for modellkall |
| OQ-13 | ML-telemetri /tmp/ flyktig i Cloud Run | B5: GCS sink via 10-cost-guard.sh |
---
## BEKREFTET GA-API
| API | Status |
|-----|--------|
| `google.adk.Agent` (ikke LlmAgent) | Bekreftet GA-API |
| `load_memory_tool` | Bekreftet fra adk-python samples |
| Cloud Build 2nd gen (`cloudbuildv2`) | Bekreftet GA |
| CMEK ikke for RAG Engine | Ikke støttet (OQ-03) |
| Idempotente scripts | Trygt å kjøre flere ganger |
| `03-teardown.sh` hver kveld | Agent Runtimes koster 24/7 |
| Conversational Agents (Dialogflow CX) | Playbooks GA |
| Dask `scheduler="threads"` i Cloud Run | Bekreftet — ingen worker-prosesser nødvendig |
---
## DRIFTSKOSTNADER
| Scenario | Kostnad/mnd |
|---|---|
| Bare deg (dev, teardown daglig) | ~$25-75 |
| Dev + Dialogflow CX FAQ (10k req) | ~$145-195 |
| 1 betalende kunde (lett prod) | ~$115-280 |
| Medioteq-type (klinisk, compliance) | ~$220-350 |
Breakeven: 1 kunde til $300-500/mnd dekker alle kostnader.
---
## LLM-RUTINGSSTRATEGI
**Prinsipp:** Lett modell i front (light), tung modell ved behov (heavy).
| Modell | Pris input/output (per 1M) | EU-tilgang | Bruksområde |
|---|---|---|---|
| `gemini-2.0-flash` | $0.10 / $0.40 | Ja (europe-west4) | light — alle enkle kall |
| `gemini-2.5-pro` | $1.25 / $10.00 | Ja (europe-west4) | heavy — kompleks reasoning, compliance |
| `gemini-3.5-flash` | $1.50 / $9.00 | Nei (kun US/global) | heavy reasoning, Fase C |
**Rutetabell per modul:**
| Modul / Agent | light | heavy | Trigger |
|---|---|---|---|
| OPAX billing-agent | `gemini-2.0-flash` | `gemini-2.5-pro` / `gemini-3.5-flash` | `mode: heavy` |
| RAG retrieval | `gemini-2.0-flash` | `gemini-2.5-pro` | Komplekse flertrinns-spørsmål |
| Memory Bank oppslag | `gemini-2.0-flash` | — | Aldri |
| TUI-cockpit | `gemini-2.0-flash` | `gemini-3.5-flash` | Dyp analyse |
| vauco-os (kundeflate) | `gemini-2.0-flash` | `gemini-2.5-pro` | Compliance |
| Dialogflow CX Playbooks | Gemini (managed) | — | Native |
| Fase C: Terraform-gen | `gemini-3.5-flash` | — | Standard for modulen |
| ML-2 heavy predictor | `gemini-2.0-flash` | — | Predikerer heavy-behov |
**Request-format:**
```json
{
"message": "...",
"user_id": "opax",
"session_id": "opax-proj-001",
"mode": "heavy"
}
```
**Modellfordeling:**
| Parameter | light | heavy |
|---|---|---|
| Orchestrator | `gemini-2.0-flash` | `gemini-2.5-pro` |
| Sub-agenter | `gemini-2.0-flash` | `gemini-2.5-pro` |
| Reasoning | `gemini-2.0-flash` | `gemini-3.5-flash` |
| Multi-agent pipeline | Nei | Ja |
| Budsjettgrense | $1/task | $3/task |
**Autoriserte brukere for heavy mode:** `opax`, `admin`
Legacy-verdier `A` og `A+` aksepteres og normaliseres automatisk.
---
## TERRAFORM-VEIKART (Fase C)
| Når | Hva |
|---|---|
| Fase C: Medioteq | `vauco-bootstrap` → Terraform-modul |
| Per kunde | `terraform apply -var="customer_id=X"` |
| Ressurser per modul | Cloud Run, Cloud Build 2nd gen, IAP, budsjett, SA, Dialogflow CX agent, ML state store |
| State-backend | GCS bucket (`TF_STATE_BUCKET`) |
| Fase D | Terraform Cloud for sentralisert state |
---
*OSVauco-NMTMD-GCOS | propane-will-491900-m5 | us-central1 (modell) / europe-west1 (infra)*