OSVauco/docs/HANDOFF.md

8.8 KiB

HANDOFF — Vauco OS

Sist oppdatert: 2026-06-28 11:40 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
  • Test via proxy: gcloud run services proxy osvauco-agent --region us-central1 --project propane-will-491900-m5 --port 8181
  • ALDRI --audiences-flag i smoke-tests
  • Smoke-test: peker på /health
  • Curl mot prod: alltid identity token — TOKEN=$(gcloud auth print-identity-token)
  • Ingen tredjepartsverktøy: Cursor, Copilot og lignende skal IKKE brukes. Alt eies og kjøres i eget GCP/Gitea.
  • Primær Git: http://34.59.131.162:3000/chris/OSVauco — GitHub er IKKJE lenger i bruk.
  • Git remote på VM: http://chris:<TOKEN>@34.59.131.162:3000/chris/OSVauco.git
  • Emma rapporterer til: Chris Christiansen chris.christiansen@vauco.no — ingen andre kan gi GO

Fullført i dag (2026-06-28) — Emma bootstrap + OPAX-kobling

Oppgave Commit Status
emma/emma_seed.py — LEARNINGS 001-016 + 7 ekstra mønstre som boot-minne 6726da23
emma/emma_guardrails.py — 5-nivå risikoscoring (SAFE/LOW/MEDIUM/HIGH/CRITICAL) 6726da23
emma/emma_opax.py — OPAX-kobling med identity token og retry 6726da23
emma/emma_identity.py — Emma vet hvem hun er og at hun rapporterer til Chris 31a405ad
emma/emma_gitea.py — direkte tilgang til alle Gitea-repoer (les + skriv) 31a405ad
emma/emma_backend_ollama.py — identitet injisert i alle LLM system-prompts 31a405ad
emma/setup.sh — VM-bootstrap: klon Gitea, venv, seed (én kommando) 47ade3d5
.gemini/GEMINI.md — oppdatert med Emma, Gitea, guardrails, nye hard rules d2b0c6ac

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 som audience
Rettet env var navn til OPAX_IAP_CLIENT_ID i Cloud Run — revisjon 00020 deployed
Revisjon opax-mcp-00020-w6j aktiv med 100% trafikk

Fullført tidligere (2026-06-15)

Oppgave Status
agents/tools/opax_mcp_client.py — REST-klient alle 25 tools
Jason deployet til Vertex AI Agent Engine
Jason svarer på norsk og kallar tools automatisk
Gitea installert på VM (34.59.131.162:3000) som systemd-teneste
2867 commits pusha frå GitHub → Gitea
GitHub fasa ut — Gitea er no primær

🖥 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
Emma (lokal agent) ~/OSVauco/emma/ på osvauco-dev-vm ⚠️ Ikke bootstrappt ennå
GitHub (legacy) https://github.com/vauco-saas/OSVauco ⚠️ Fasa ut

🔑 Credentials

  • Gitea login: chris / se Secret Manager
  • Gitea API-token: Secret Manager → gitea-api-token
  • MCP-Secret: Secret Manager → mcp-secret
  • Prosjekt: propane-will-491900-m5
  • IAP OAuth Client ID (opax backend): 357036551735-kq8nt71d38hfqlcfb3n52ef7ala4meo.apps.googleusercontent.com
  • Emma venv: ~/emma-venv (opprettes av setup.sh)

🎯 NESTE OPPGAVE

Bootstrap Emma på osvauco-dev-vm og verifiser ende-til-ende.

Kjør fra VM:

# Steg 1: Bootstrap Emma (én kommando)
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 2: Aktiver aliaser permanent
echo 'source ~/.emma_env' >> ~/.bashrc && source ~/.emma_env

# Steg 3: Verifiser at seed er utført
ls -lh ~/OSVauco/emma/data/morphic.db
tail -3 ~/OSVauco/emma/emma_flynn_log.jsonl

# Steg 4: Verifiser Gitea-tilkobling fra Emma
cd ~/OSVauco/emma && ~/emma-venv/bin/python -c "
from emma_gitea import GiteaClient
g = GiteaClient()
print(g.verify_boot())
"

# Steg 5: Verifiser OPAX-tilkobling fra Emma
cd ~/OSVauco/emma && ~/emma-venv/bin/python -c "
from emma_opax import OpaxClient
c = OpaxClient()
print(c.health())
"

# Steg 6: Start Emma CLI
emma

Forventet etter bootstrap:

  • morphic.db eksisterer med > 20 mønstre
  • Gitea-tilkobling returnerer status: ok med repo-liste
  • OPAX health returnerer status: ok eller unreachable (akseptabelt fra dev-vm uten metadata-server)

🔨 Gjenstår (prioritert)

  1. Bootstrap Emma på VM — kjør setup.sh (se NESTE OPPGAVE over)
  2. Verifiser IAP auth end-to-end — bekreft HTTP/2 200 fra opax.vauco.no
  3. Synk Gitea ←→ GitHub — push emma/-modulene til Gitea (de er for øyeblikket kun på GitHub)
  4. DNS/TLS for Gitea (git.vauco.no)
  5. GPU VM-arbeid (planlagt)

🚀 Neste sesjon — start her

0. Boot-sjekk (kjør alltid først)

# 1. Hvem er du og hvilken branch er canonical?
git -C ~/OSVauco remote -v
git -C ~/OSVauco log --oneline -5

# 2. GCP auth
gcloud auth list
gcloud config get-value project

# 3. Emma-status
ls -la ~/OSVauco/emma/data/morphic.db ~/OSVauco/emma/emma_flynn_log.jsonl 2>/dev/null || echo 'Emma ikke bootstrappt'

# 4. Gitea oppe?
curl -s http://34.59.131.162:3000/api/v1/version | python3 -m json.tool

1. IAP auth-verifisering (fortsatt åpen)

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")

curl -si https://opax.vauco.no/opax/build-status \
  -H "Authorization: Bearer $TOKEN" | head -5
# Forventet: HTTP/2 200

2. Synk emma/ til Gitea

# emma/-modulene ble pushet til GitHub — sjekk om Gitea er oppdatert
git -C ~/OSVauco log --oneline -3  # skal vise d2b0c6ac eller nyere

# Hvis ikke: pull fra GitHub og push til Gitea
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

🏗 Arkitektur

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

osvauco-dev-vm
  └─► Emma (lokal MDP/MCoT-agent)
        ├─► Morfisk minne (SQLite, ~/OSVauco/emma/data/morphic.db)
        ├─► Guardrails (5-nivå, blokkerer HIGH/CRITICAL uten GO)
        ├─► OPAX-klient (identity token → opax.vauco.no)
        └─► Gitea-klient (alle repoer på 34.59.131.162:3000)

Auth-flyt for opax-mcp → opax.vauco.no:

opax-mcp container
  → GCE Metadata Service
  → identity token med audience = IAP_CLIENT_ID
  → Authorization: Bearer <token>
  → IAP validerer token
  → Request videresendt til OPAX backend

Emma-mønster:

Input → Guardrails → MDP → Morphic Recall → MCoT → OPAX/Gitea → Flynn-tracker → Output

📚 Relevante docs (les ved behov)

Dok Innhold
docs/LEARNINGS.md Append-only lærdomslogg — LEARNING-001 til 016
docs/AGENT_RULEBOOK.md Boot-protokoll, korreksjonsregler, friction-regler
docs/MASTERPLAN.md Fase-oversikt og mål
docs/ROADMAP.md Prioritert oppgaveliste
docs/ARCHITECTURE.md Systemarkitektur
docs/DNS-OG-INFRASTRUKTUR.md DNS-kart, IAP-routing, forwarding rules
.gemini/GEMINI.md Instrukser til Gemini på VM (dette er deg)
emma/README.md Emma-dokumentasjon — filer, bootstrap, guardrails
emma/emma_identity.py Emmas identitet og ansettelsesforhold
emma/emma_guardrails.py Guardrails-logikk — risikonivåer og regler
emma/emma_gitea.py Gitea-klient — les/skriv repoer
emma/emma_seed.py Boot-minne frø — kjøres én gang
emma/setup.sh VM-bootstrap — klon, venv, install, seed