From f83337e070a79411a6dee3d9a11a4a47ef70fc3f Mon Sep 17 00:00:00 2001 From: chrischristiansen-glitch Date: Tue, 26 May 2026 01:52:39 +0200 Subject: [PATCH] =?UTF-8?q?docs(masterplan):=20Fase=20A=20komplett=20?= =?UTF-8?q?=E2=80=94=20A5=20ferdig,=20modeller=20oppdatert=20til=20gemini-?= =?UTF-8?q?2.5-flash/pro,=20LOCATION=3Dglobal,=20smoke=2010/10?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MASTERPLAN.md | 194 ++++++++++++++++++++------------------------------ 1 file changed, 77 insertions(+), 117 deletions(-) diff --git a/MASTERPLAN.md b/MASTERPLAN.md index 8e8b8c7..057bf03 100644 --- a/MASTERPLAN.md +++ b/MASTERPLAN.md @@ -1,7 +1,7 @@ # 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** +**Status: ✅ FASE A KOMPLETT | ML-1 live | Røyktest 10/10 | B-fasen neste** --- @@ -51,38 +51,40 @@ cd ~/OSVauco 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) +# Steg 4: Kjør i rekkefølge source .env bash infrastructure/00-authcheck.sh bash infrastructure/01-setupenv.sh bash infrastructure/07-rag-setup.sh # *** Kopier RAG_CORPUS_NAME fra output inn i .env *** -nano .env -source .env +nano .env && source .env bash infrastructure/08-memorybank-setup.sh # *** Kopier MEMORY_ENGINE_NAME fra output inn i .env *** -nano .env -source .env +nano .env && source .env + +gcloud run deploy osvauco-agent \ + --source . --region europe-west1 \ + --project propane-will-491900-m5 \ + --set-secrets RAG_CORPUS=rag-corpus-name:latest \ + --set-env-vars GOOGLE_GENAI_USE_VERTEXAI=1,GOOGLE_CLOUD_PROJECT=propane-will-491900-m5,GOOGLE_CLOUD_LOCATION=global,MEMORY_ENGINE_NAME=$MEMORY_ENGINE_NAME \ + --no-allow-unauthenticated -bash infrastructure/05-cloudrun-deploy.sh bash infrastructure/04-observability-setup.sh bash infrastructure/11-billing-iam-hardening.sh +bash scripts/smoke-test.sh -# Om kvelden (OBLIGATORISK — unngå 24/7-fakturering): +# Om kvelden (OBLIGATORISK): bash infrastructure/03-teardown.sh ``` --- -## FASE A — Ferdigstill kjernen (GCP oppe) - -**Mål: Agenten din er live på Google Cloud | Tid: Ca. 2 timer** +## FASE A — Ferdigstill kjernen ✅ KOMPLETT ``` [x] A1 — cp .env.example .env og fyll inn verdier @@ -90,95 +92,78 @@ bash infrastructure/03-teardown.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) +[x] A5 — bash infrastructure/08-memorybank-setup.sh + Memory Engine: projects/357036551735/locations/us-central1/reasoningEngines/2260229219579592704 + export MEMORY_ENGINE_NAME="projects/357036551735/locations/us-central1/reasoningEngines/2260229219579592704" +[x] A6 — Cloud Run live: osvauco-agent (europe-west1) revision 00006-282 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 + Modes: light (gemini-2.5-flash) | heavy (gemini-2.5-pro) + Env: GOOGLE_CLOUD_LOCATION=global (krav for gemini-2.5-*) [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) + TELEMETRI-KOORDINERING: + - ml/telemetry.py: JSONL /tmp/vauco_telemetry/ — agent-nivå + - A7 Cloud Monitoring: GCP-nivå (CPU, request-rate, feil-rate) + - Prod: GCS sink via 10-cost-guard.sh (B5) +[x] A8 — bash infrastructure/03-teardown.sh (kjør hver kveld) [x] A9 — bash infrastructure/11-billing-iam-hardening.sh +[x] SMOKE — scripts/smoke-test.sh: 10/10 ✅ (2026-05-26 01:45 CEST) ``` --- -## FASE A2 — Dialogflow CX FAQ-agent (parallelt med A4–A9) +## FASE A2 — Dialogflow CX FAQ-agent -**Mål: Generativ FAQ-agent live på OSVauco | Tid: Ca. 3–5 timer** -**Kreditt: kr 5 822 (dialogflow_cx_credit_v2-0171F6-057E6B-A260BA) + $1 000 Playbooks-trial** -**Detaljer: se `docs/dialogflow-cx-budget-plan.md`** +**Kreditt: kr 5 822 + $1 000 Playbooks-trial** ``` [ ] 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) +[ ] DX4 — Koble webhook mot OSVauco Cloud Run +[ ] DX5 — Publiser via Dialogflow Messenger [ ] 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`** +## FASE ML — ML-lag for OPAX ``` -[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 +[x] ML-1 — Grunnlag (2026-05-25) + ml/task_graph.py — Dask DAG parallell agent-kjøring + ml/state_store.py — Parameter Server state + ml/telemetry.py — JSONL per agent-kall og DAG + POST /run | POST /run/dag | GET /state | GET /telemetry/history + Røyktest: DAG 2 meldinger parallelt ✅ 4.6s -[ ] 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) +[ ] ML-2 — Adaptiv intelligens + Trigger: > 500 telemetri-kall fra ML-1 + ml/feedback_loop.py, ml/hypertuner.py, ml/heavy_predictor.py 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 +[ ] ML-3 — Strategisk innsikt Trigger: ML-2 ferdig + Fase C første kunde + ml/agent_importance.py (XGBoost), experiments/pbt.py + Krav: xgboost>=2.0.0 ``` -**Telemetri-ruting (ML-lag):** -| Miljø | Lokasjon | Arkivering | +| Miljø | Telemetri-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 | +| Cloud Run | `/tmp/vauco_telemetry/` | B5: GCS sink | +| Prod | `gs://propane-will-491900-m5-telemetry/` | Auto | --- ## 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 + Auto-teardown Cloud Function + GCS sink for ML-telemetri [ ] B6 — Eksporter Dialogflow CX agent til versjonskontroll ``` @@ -186,8 +171,6 @@ bash infrastructure/03-teardown.sh ## 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 @@ -205,7 +188,7 @@ bash infrastructure/03-teardown.sh | `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 | +| `04-observability-setup.sh` | Cloud Monitoring + alerting | 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 | @@ -213,26 +196,27 @@ bash infrastructure/03-teardown.sh | `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** | +| `scripts/smoke-test.sh` | 10-case røyktest: health/light/heavy/legacy/400/403/DAG/state/telemetri | **Ny** | --- ## KJENTE HULL -| ID | Hva | Workaround / Status | +| ID | Hva | 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-04 | Cloud Build GitHub OAuth | **LØST** — 2nd gen | | 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 | +| OQ-09 | GCP billing: 0 viewers | **LØST** | +| OQ-10 | GCP billing: Creator på domenet | **LØST** | +| OQ-11 | Dialogflow CX Data Store norsk indeksering | Teste nb-NO i DX2 | +| OQ-12 | gemini-2.0-flash/gemini-2.0-flash-001 ikke tilgjengelig nye prosjekter | **LØST** — gemini-2.5-flash/pro + LOCATION=global | +| OQ-13 | ML-telemetri /tmp/ flyktig i Cloud Run | B5: GCS sink | --- @@ -240,14 +224,15 @@ bash infrastructure/03-teardown.sh | 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) | +| `google.adk.Agent` | Bekreftet GA | +| `load_memory_tool` | Bekreftet | +| Cloud Build 2nd gen | Bekreftet GA | +| CMEK ikke for RAG Engine | Ikke støttet | | 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 | +| Dialogflow CX Playbooks | GA | +| Dask `scheduler="threads"` i Cloud Run | Bekreftet | +| `gemini-2.5-flash` / `gemini-2.5-pro` via `LOCATION=global` | **Bekreftet 2026-05-26** | --- @@ -268,47 +253,22 @@ Breakeven: 1 kunde til $300-500/mnd dekker alle kostnader. **Prinsipp:** Lett modell i front (light), tung modell ved behov (heavy). -| Modell | Pris input/output (per 1M) | EU-tilgang | Bruksområde | +| Modell | Pris (per 1M) | 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:** +| `gemini-2.5-flash` | $0.30 / $2.50 | global | light — alle enkle kall | +| `gemini-2.5-pro` | $1.25 / $10.00 | global | heavy — reasoning, compliance | | 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 | +| Orchestrator | `gemini-2.5-flash` | `gemini-2.5-pro` | +| Sub-agenter | `gemini-2.5-flash` | `gemini-2.5-pro` | +| Reasoning | `gemini-2.5-flash` | `gemini-2.5-flash` | +| Multi-agent | Nei | Ja | | Budsjettgrense | $1/task | $3/task | +| `LOCATION` | `global` | `global` | -**Autoriserte brukere for heavy mode:** `opax`, `admin` -Legacy-verdier `A` og `A+` aksepteres og normaliseres automatisk. +**Autoriserte brukere for heavy:** `opax`, `admin` +Legacy `A` / `A+` normaliseres automatisk til `light` / `heavy`. --- @@ -318,10 +278,10 @@ Legacy-verdier `A` og `A+` aksepteres og normaliseres automatisk. |---|---| | 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 | +| Ressurser | Cloud Run, Cloud Build, IAP, budsjett, SA, Dialogflow CX, ML state store | +| State-backend | GCS (`TF_STATE_BUCKET`) | +| Fase D | Terraform Cloud | --- -*OSVauco-NMTMD-GCOS | propane-will-491900-m5 | us-central1 (modell) / europe-west1 (infra)* +*OSVauco-NMTMD-GCOS | propane-will-491900-m5 | global (modell) / europe-west1 (infra)*