OSVauco/MASTERPLAN.md
Chris Christiansen dc3f0d4f27 feat(c4): set Medioteq project-ID and billing_account_id
- DX4: Dialogflow CX agent e75327ce + webhook 9f77dc05 opprettet
- C4.1: project_id=medioteq-prod-eun1, billing_account_id=0171F6-057E6B-A260BA
2026-05-27 16:02:00 +00:00

14 KiB
Raw Blame History

VAUCO MASTERPLAN — Chris Christiansen

Sist oppdatert: 2026-05-27 CEST Status: FASE A KOMPLETT | FASE B (B1-B5) KOMPLETT | ML-1 live | Røyktest 10/10 | Fase C 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

DNS / DOMENE-ARKITEKTUR

Arkitekturavgjørelse — 2026-05-26

Domene Type Teknologi Fase
opax.vauco.no Intern cockpit (kun Chris) CNAME → Cloud Run (gratis) B1 nå
kunde1.vauco.no / kundedomener Kunde-instanser LB + IAP (Terraform) Fase C

Begrunnelse:

  • opax.vauco.no er et internt arbeidsverktøy for én bruker — Load Balancer ($18-20/mnd) er unødvendig overhead.
  • Kundeinstanser provisjoneres via vauco-bootstrap Terraform-modul i Fase C. LB + IAP bakes inn i modulen én gang og kjøres automatisk per kunde med terraform apply -var="customer_id=X".
  • Terraform-modulen (Fase C) skal inkludere: Cloud Run, Cloud Build, IAP, LB, budsjett, SA, Dialogflow CX, ML state store.

CLOUD SHELL QUICK-START (kopi-klipp)

Bruk Cloud Shell: https://shell.cloud.google.com

# 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

# Steg 3: Installer Python-avhengigheter
pip install google-adk google-cloud-aiplatform>=1.111.0 --quiet

# 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

bash infrastructure/08-memorybank-setup.sh
# *** Kopier MEMORY_ENGINE_NAME fra output inn i .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/04-observability-setup.sh
bash infrastructure/11-billing-iam-hardening.sh
bash scripts/smoke-test.sh

# Om kvelden (OBLIGATORISK):
bash infrastructure/03-teardown.sh

FASE A — Ferdigstill kjernen KOMPLETT

[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
[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.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:
        - 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

Kreditt: kr 5 822 + $1 000 Playbooks-trial

SCOPE-AVKLARING (2026-05-27): Jason-v1 FAQ er et internt verktøy for operatøren (deg) i første fase — brukes som kunnskapsbase og salgsmodul-assistent i OPAX. Ingen ekstern publisering ennå. Voice-støtte planlagt i DX7.

[x] DX1 — Opprett Playbook-agent i Conversational Agents Console (2026-05-27)
        Agent: OSVauco FAQ
        Plattform: Conversational Agents CX Agent Studio
        Region: us-central1
        Prosjekt: propane-will-491900-m5 (Jason-v1)
[x] DX2 — Last opp FAQ-innhold som Data Store (2026-05-27)
        - FAQ-fil: data/threadstone_faq.csv, 39 Q&A-par, ~9 KB
        - GCS: gs://vauco-faq-store/threadstone_faq.csv
        - Data Store: threadstone-faq-store (FAQ-type, us multi-region)
[x] DX3 — Konfigurer Playbook med norsk systemprompt (2026-05-27)
        - Status: Norsk instrukssett satt i Default Generative Playbook
        - Svar: Fungerer — kortfattet norsk FAQ-respons med billing@vauco.no
[x] DX4 — Webhook mot OSVauco Cloud Run
        - AVKLARING: Jason-v1 FAQ er en ren Data Store-agent (ingen runtime-kall til Cloud Run).
        - Cloud Run-webhook håndteres i OSVauco API-laget (C2/C3), ikke i FAQ-agenten.
        - Cloud Run URL (funnet): https://osvauco-agent-zjbqp3prqq-uc.a.run.app
        - → Parkert til C2/C4 (Medioteq-integrasjon).
[ ] DX5 — Publiser via Dialogflow Messenger
        Trigger: Første ekstern kunde (C4 Medioteq) eller salgsmodul klar
[ ] DX6 — Sett budsjett-alert for Dialogflow CX
[ ] DX7 — Voice-kanal for OSVauco FAQ
        Fase 1: Web-mikrofon (WebRTC) for intern bruk (deg)
        Fase 2: Telefoni-kanal (Dialogflow CX telephony gateway / PSTN)
        Samme FAQ data store og playbook gjenbrukes — kun kanal endres
        Trigger: Etter DX5 / første ekstern bruker
[ ] B6 — Eksporter Dialogflow CX agent til versjonskontroll

FASE ML — ML-lag for OPAX

[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
        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

[ ] 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
Miljø Telemetri-lokasjon Arkivering
Lokal dev /tmp/vauco_telemetry/ Manuell
Cloud Run /tmp/vauco_telemetry/ B5: GCS sink
Prod gs://propane-will-491900-m5-telemetry/ Auto

FASE B — Sikring og CI/CD KOMPLETT

[x] B1 — Cloud Run deploy live (osvauco-agent-00065-z7t, us-central1)
        IAP opax.vauco.no: CNAME-metode (se B1-IAP nedenfor)
[x] B2 — GitHub PAT i Secret Manager (github-pat)
[x] B3 — Cloud Build 2nd gen pipeline
        Connection: osvauco-github-conn
        Trigger: osvauco-agent-deploy (ID: 2fdd789f-a4dc-4f4a-8297-5e91674d2178)
        Push til main → auto build + deploy
[x] B4 — Webhook (løst av 2nd gen GitHub App — ingen manuell webhook nødvendig)
[x] B5 — Cost guard + GCS ML-telemetri
        Budget: osvauco-monthly-guard (500 NOK/mnd, 50/90/100% alerts)
        Bucket: gs://osvauco-ml-telemetry (90-dagers lifecycle)
        Sink: osvauco-ml-sink → Cloud Run logger → GCS
[x] B1-IAP — opax.vauco.no via CNAME → Cloud Run domain mapping (2026-05-27)
        Status: ✅ KOMPLETT
[ ] B6 — Eksporter Dialogflow CX agent til versjonskontroll

FASE C — Første salgsmodul

[x] C1 — Pakk vauco-bootstrap som Terraform-modul ✅ KOMPLETT (2026-05-27)
        - infrastructure/modules/vauco-bootstrap/: main.tf, variables.tf, outputs.tf, versions.tf
        - Terraform validate: PASS
        - Inkludert: Dialogflow CX (google_dialogflow_cx_agent), dialogflow_region=europe-west1
[x] C2 — Pakk vauco-os som kundeflate (2026-05-27) - KOMPLETT
        Note: API-dokumentasjon (docs/CUSTOMER_API.md) opprettet.
[x] C3 — Opprett billing@vauco.no som Google Group (2026-05-27)
        - Note: Billing Alerts (billing@vauco.no) eksisterte fra før  verifisert medlem/eierrskap.
[ ] C4 — Første kunde: Medioteq
        - FASE 1 (Design/plan): PLAN KLAR  AVVENTER C4.1 + COST GODKJENT
        - [x] C4.1  Velg endelig Medioteq-prosjekt-ID og billing_account_id
              - project_id velges i eget HITL-møte (forslag i medioteq.tf-kommentarene)
              - billing_account_id dokumenteres og lagres i .env/.secrets
              - ingen terraform plan/apply før C4.1 er krysset av
        - [ ] C4.2 — Auth-strategi sluttfase (HITL-gate per kundeprosjekt)
                 Fase 1: Google login på godkjente enheter
                 Sluttfase: Vurder BankID / endelig OAuth-provider per kunde

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 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
scripts/smoke-test.sh 10-case røyktest: health/light/heavy/legacy/400/403/DAG/state/telemetri Ny

KJENTE HULL

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
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
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 LØST — B5: GCS sink
OQ-14 LB vs CNAME for domene-routing LØST — CNAME for opax (intern), LB i Terraform for kunder (Fase C)

BEKREFTET GA-API

API Status
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
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

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 (per 1M) Tilgang Bruksområde
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.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: opax, admin Legacy A / A+ normaliseres automatisk til light / heavy.


TERRAFORM-VEIKART (Fase C)

Når Hva
Fase C: Medioteq vauco-bootstrap → Terraform-modul
Per kunde terraform apply -var="customer_id=X"
Ressurser Cloud Run, Cloud Build, IAP (LB), budsjett, SA, Dialogflow CX, ML state store
State-backend GCS (TF_STATE_BUCKET)
Fase D Terraform Cloud

OSVauco-NMTMD-GCOS | propane-will-491900-m5 | global (modell) / europe-west1 (infra)