Some checks are pending
Check Python Version Consistency / Check Python Version (push) Waiting to run
# Conflicts: # docs/HANDOFF.md
7.8 KiB
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.pyi rot — IKKJEagents/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 medgcloud 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.dbeksisterer med > 20 mønstreemma_flynn_log.jsonlhar minst 1 rademmastarter 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 (opax backend):
357036551735-kq8nt7ld38hfqlcfb3n52ef7tala4meo.apps.googleusercontent.com - VM compute SA:
357036551735-compute@developer.gserviceaccount.com
🎯 Gjenstår (prioritert)
- IAP 401-diagnose — kjør 4 diagnosesteg, gi IAP-rettighet til compute SA hvis mangler
- Bootstrap Emma på VM — synk Gitea + kjør setup.sh
- DNS/TLS for Gitea (
git.vauco.no) - 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 |