OSVauco/docs/HANDOFF.md

7.8 KiB

HANDOFF — Vauco OS

Sist oppdatert: 2026-06-28 11:52 CEST Skrevet av: Perplexity (Orchestrator) Status: Fase C — Emma lokal agent operativ. Gitea er primær Git. GitHub fasa ut.


⚠️ KRITISKE REGLER — les alltid først

  • Hovedapp: main.py i rot — IKKJE agents/core-logic/app.py
  • Dockerfile: agents/core-logic/Dockerfile — WORKDIR /app, CMD uvicorn main:app
  • Region: us-central1 | Service: osvauco-agent | Prosjekt: propane-will-491900-m5
  • ALDRI --audiences-flag med gcloud auth print-identity-token — det er for service accounts, ikke user accounts
  • IAP identity token: hentes fra GCE metadata server, IKKE fra gcloud CLI
  • Smoke-test: peker alltid på /health
  • Primær Git: http://34.59.131.162:3000/chris/OSVauco — GitHub er IKKJE lenger i bruk
  • Emma rapporterer til: Chris Christiansen chris.christiansen@vauco.no — ingen andre kan gi GO

🔴 KJENT PROBLEM: IAP 401 fra VM — diagnose pågår

Symptom: HTTP/2 401 fra https://opax.vauco.no selv med korrekt audience i metadata-kall.

Allerede avklart — ikke gjenta disse forsøkene:

  • gcloud auth print-identity-token --audiences=... → feiler fordi det er en user account, ikke service account
  • Feil audience (base URL i stedet for IAP Client ID) → allerede fikset i opax-mcp rev 00020

Neste diagnosesteg (kjør i denne rekkefølgen):

# Steg 1: Sjekk om VM-ens service account har IAP-tilgang
gcloud projects get-iam-policy propane-will-491900-m5 \
  --flatten="bindings[].members" \
  --format="table(bindings.role,bindings.members)" \
  --filter="bindings.members:357036551735-compute@developer.gserviceaccount.com"

# Steg 2: Sjekk IAP-spesifikk policy
gcloud iap web get-iam-policy \
  --project=propane-will-491900-m5 \
  --resource-type=backend-services 2>/dev/null || \
gcloud iap web get-iam-policy \
  --project=propane-will-491900-m5

# Steg 3: Print rå token og se om det er tom streng
TOKEN=$(curl -s -H "Metadata-Flavor: Google" \
  "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=357036551735-kq8nt71d38hfqlcfb3n52ef7ala4meo.apps.googleusercontent.com&format=full")
echo "TOKEN lengde: ${#TOKEN} tegn"
echo "TOKEN start: ${TOKEN:0:50}"

# Steg 4: Test med verbose for å se IAP response body
curl -sv https://opax.vauco.no/opax/build-status \
  -H "Authorization: Bearer $TOKEN" 2>&1 | grep -E "< |{|\.html"

Forventet rotårsak: VM-ens compute service account (357036551735-compute@developer.gserviceaccount.com) mangler roles/iap.httpsResourceAccessor på IAP backend.

Fix hvis bekreftet:

gcloud projects add-iam-policy-binding propane-will-491900-m5 \
  --member="serviceAccount:357036551735-compute@developer.gserviceaccount.com" \
  --role="roles/iap.httpsResourceAccessor"
# Vent 60 sek og test på nytt

🎯 NESTE OPPGAVE

To parallelle oppgaver — start med IAP-diagnose, deretter Emma bootstrap.

Oppgave 1: IAP 401-diagnose (se seksjon over)

Kjør de 4 diagnosestegene og rapporter output til Chris.

Oppgave 2: Bootstrap Emma på VM

# Steg 1: Synk Gitea (emma/-filer er på GitHub — sjekk om Gitea har dem)
git -C ~/OSVauco log --oneline -5
# Forventet: skal vise commit 87b2dced (GEMINI.md no-search) eller nyere
# Hvis ikke — kjør synk:
git -C ~/OSVauco remote add github https://github.com/vauco-saas/OSVauco.git 2>/dev/null || true
git -C ~/OSVauco fetch github main
git -C ~/OSVauco merge github/main --ff-only
git -C ~/OSVauco push origin main

# Steg 2: Bootstrap Emma
bash <(curl -s "http://chris:$(gcloud secrets versions access latest \
  --secret=gitea-api-token --project=propane-will-491900-m5 \
  )@34.59.131.162:3000/chris/OSVauco/raw/branch/main/emma/setup.sh")

# Steg 3: Aktiver aliaser
echo 'source ~/.emma_env' >> ~/.bashrc && source ~/.emma_env

# Steg 4: Verifiser
ls -lh ~/OSVauco/emma/data/morphic.db
tail -3 ~/OSVauco/emma/emma_flynn_log.jsonl
emma  # start CLI

Forventet:

  • morphic.db eksisterer med > 20 mønstre
  • emma_flynn_log.jsonl har minst 1 rad
  • emma starter CLI uten feil

Fullført i dag (2026-06-28)

Oppgave Commit Status
emma/emma_seed.py — LEARNINGS 001-016 + boot-minne 6726da23
emma/emma_guardrails.py — 5-nivå risikoscoring 6726da23
emma/emma_opax.py — OPAX-kobling med identity token 6726da23
emma/emma_identity.py — identitet injisert i alle LLM-prompts 31a405ad
emma/emma_gitea.py — direkte Gitea-tilgang 31a405ad
emma/setup.sh — VM-bootstrap én kommando 47ade3d5
.gemini/GEMINI.md — NO-SEARCH-blokk øverst, deduplisert 87b2dced
docs/HANDOFF.md — IAP 401 diagnose dokumentert denne

Fullført tidligere (2026-06-18) — IAP Auth fix for opax-mcp

Oppgave Status
Identifisert rotårsak: feil IAP audience i identity token-kall
Lagt til roles/iap.httpsResourceAccessor for jason-vauger SA
Oppdatert opax-mcp/server.py — ny env var OPAX_IAP_CLIENT_ID
Revisjon opax-mcp-00020 aktiv med 100% trafikk

🖥 Systemstatus

Komponent URL / Referanse Status
osvauco-agent (Cloud Run) https://osvauco-agent-zjbgp3prqg-uc.a.run.app Live
opax-mcp (Cloud Run) https://opax-mcp-357036551735.us-central1.run.app Live (rev 00020)
opax frontend (IAP LB) https://opax.vauco.no Live
Jason (Vertex AI Agent) Agent Engine, us-central1 Live
Gitea (self-hosted) http://34.59.131.162:3000 Live (v1.22.6)
Emma (lokal agent) ~/OSVauco/emma/ på osvauco-dev-vm ⚠️ Ikke bootstrappt
GitHub (legacy) https://github.com/vauco-saas/OSVauco ⚠️ Faset ut

🔑 Credentials

  • Gitea API-token: Secret Manager → gitea-api-token
  • MCP-Secret: Secret Manager → mcp-secret
  • Prosjekt: propane-will-491900-m5
  • IAP OAuth Client ID: 357036551735-kq8nt71d38hfqlcfb3n52ef7ala4meo.apps.googleusercontent.com
  • VM compute SA: 357036551735-compute@developer.gserviceaccount.com

🔨 Gjenstår (prioritert)

  1. IAP 401-diagnose — kjør 4 diagnosesteg, gi IAP-rettighet til compute SA hvis mangler
  2. Bootstrap Emma på VM — synk Gitea + kjør setup.sh
  3. DNS/TLS for Gitea (git.vauco.no)
  4. GPU VM-arbeid (planlagt)

🏗 Arkitektur

Bruker
  └─► Jason (Vertex AI Agent Engine, Gemini 2.5 Pro)
        └─► osvauco-agent (Cloud Run)
              └─► opax-mcp (Cloud Run)
                    └─► [IAP] opax.vauco.no

osvauco-dev-vm
  └─► Gemini CLI (denne agenten)
  └─► Emma (lokal MDP/MCoT-agent, ikke bootstrappt ennå)
        ├─► Morfisk minne (SQLite)
        ├─► Guardrails (5-nivå)
        ├─► OPAX-klient (identity token)
        └─► Gitea-klient

Auth-flyt VM → opax.vauco.no (IAP):

VM (Gemini CLI eller Emma)
  → curl metadata.google.internal → identity token (audience = IAP_CLIENT_ID)
  → curl https://opax.vauco.no -H "Authorization: Bearer $TOKEN"
  → IAP validerer token mot roles/iap.httpsResourceAccessor
  → HTTP 200 (eller 401 hvis SA mangler rollen)

NOTAT: gcloud auth print-identity-token virker KUN for user accounts mot Cloud Run.
       For IAP må du bruke metadata server (GCE) eller service account key.

📚 Relevante docs

Dok Innhold
docs/LEARNINGS.md Append-only lærdomslogg — LEARNING-001 til 016
docs/AGENT_RULEBOOK.md Boot-protokoll, deploy-regler
.gemini/GEMINI.md Instrukser til Gemini CLI på VM (dette er deg)
emma/setup.sh VM-bootstrap — klon, venv, install, seed
docs/DNS-OG-INFRASTRUKTUR.md DNS-kart, IAP-routing, forwarding rules