docs: oppdater HANDOFF + ROADMAP etter CI1-bygg — ingen 3part
This commit is contained in:
parent
2b791452f9
commit
03880812ea
121
docs/HANDOFF.md
121
docs/HANDOFF.md
|
|
@ -1,91 +1,98 @@
|
|||
# HANDOFF — Vauco OS
|
||||
|
||||
**Sist oppdatert:** 2026-06-15 07:05 CEST
|
||||
**Skrevet av:** Sonar/Perplexity (Orchestrator 2)
|
||||
**Status:** Fase 2 — aktiv sesjon
|
||||
**Sist oppdatert:** 2026-06-15 17:42 CEST
|
||||
**Skrevet av:** Perplexity (Orchestrator)
|
||||
**Status:** Fase B — aktiv sesjon
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ KRITISKE REGLER — les alltid først
|
||||
|
||||
- **Hovudapp:** `main.py` i rot — IKKJE `agents/core-logic/app.py`
|
||||
- **Dockerfile:** `agents/core-logic/Dockerfile` — skal ha `WORKDIR /app` og `CMD ["uvicorn", "main:app", ...]`
|
||||
- **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
|
||||
- **Smoke-test:** skal peke på `/health` (ikkje `/debug-health`)
|
||||
- **Curl mot prod:** Bruk alltid identity token — `TOKEN=$(gcloud auth print-identity-token)` — IAP blokkerer utan
|
||||
- **GITHUB_PAT** → migrerer til eigen MCP (planlagt, ikkje kritisk no)
|
||||
- **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/GitHub.
|
||||
- **MCP-server** (`opax-mcp/`) er intern binding mellom Jason/Emma og OPAX — ikke en ekstern klientintegrasjon.
|
||||
|
||||
---
|
||||
|
||||
## ✅ Levert — kumulative commits
|
||||
## ✅ Levert denne sesjonen (2026-06-15)
|
||||
|
||||
| SHA | Commit | Dato |
|
||||
|-----|--------|------|
|
||||
| (denne) | `feat: onboard.html + fix len(agents) i /run/dag + HANDOFF` | 2026-06-15 |
|
||||
| `6367683` | `fix(CG6): loadChannels() matcher /notify/channels API-format (OQ-29)` | 2026-06-15 |
|
||||
| `0e066d8` | `feat(vm): SSH-nøkkel-knapp + modal i opax.html` | 2026-06-15 |
|
||||
| `afc878b` | `feat(terminal): koble frontend til POST /terminal/exec` | 2026-06-15 |
|
||||
| `1e6bc5b` | `fix: replace sync httpx.get with async client in build-status + terminal` | 2026-06-13 |
|
||||
| `beb466e` | `fix(docker): start main:app fra /app` | 2026-06-13 |
|
||||
| `3cc6a83` | `fix(opax): Docs Browser, marked.js render` | 2026-06-13 |
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Panel-status opax.vauco.no
|
||||
|
||||
| Panel | Status | Notat |
|
||||
|-------|--------|-------|
|
||||
| Jason chat | ✅ Fungerer | |
|
||||
| Kalkulator | ✅ Fungerer | |
|
||||
| VM-er | ✅ Fungerer | |
|
||||
| Sites & Moduler | ✅ Fungerer | |
|
||||
| Cloud Build | ⚠️ Viser tom liste | IAP-problem, ikkje app-feil |
|
||||
| CostGuard | ⚠️ Ingen data | `GOOGLE_CREDIT_TOTAL_USD` env-var ikkje satt |
|
||||
| Terminal | ✅ Frontend kobla | |
|
||||
| MD-panel | ⚠️ Ikkje verifisert | |
|
||||
| Docs Browser | ⚠️ Ikkje verifisert | |
|
||||
| SHA | Commit | Hva |
|
||||
|-----|--------|-----|
|
||||
| `2b79145` | `feat(CI1): opax-mcp server — full OPAX tool coverage + Dockerfile + cloudbuild` | MCP-server med 20 tools + CI/CD |
|
||||
| `4f3a802` | `feat(CG5-onboard): token-basert invite-system + offentlig onboard-flow` | Invite-tokens, offentlig onboard, e-post |
|
||||
| `099c1cc` | `feat(OQ-26): docs/gemma/world.md — Emma boot context` | Emma sin kontekstpakke |
|
||||
|
||||
---
|
||||
|
||||
## ✅ Lukkede issues denne sesjonen
|
||||
|
||||
| ID | Kva | Løysing |
|
||||
| ID | Hva | Løsning |
|
||||
|----|-----|---------|
|
||||
| OQ-29 | `GET /notify/channels` feil format i dashboard | `loadChannels()` fiksa i `costguard-dashboard.html` |
|
||||
| CG5-onboard UI | `static/onboard.html` mangla | Oppretta — 4-stegs wizard |
|
||||
| len(agents)-bug | `/run/dag` kræsja på lengde-mismatch | `build_agent_dag()` i `task_graph.py` hardna mot mismatch |
|
||||
| OQ-26 | `docs/gemma/world.md` mangler — Emma blokkert | Opprettet ✅ |
|
||||
| CG5-onboard | Ingen salgsflyt for kunde-onboarding | Token-invite system ✅ |
|
||||
| CI1 (kode) | `opax-mcp/` var tom | server.py + Dockerfile + cloudbuild.mcp.yaml ✅ |
|
||||
|
||||
---
|
||||
|
||||
## 🔴 Gjenstår (prioritert)
|
||||
## 🔴 CI1 — Siste steg (manuelt i GCP Console)
|
||||
|
||||
| # | Oppgåve | Prioritet |
|
||||
|---|---------|----------|
|
||||
| 1 | Sett env-vars: `SENDGRID_API_KEY`, `TWILIO_ACCOUNT_SID`, `GOOGLE_CREDIT_TOTAL_USD` på Cloud Run | 🔴 Høy |
|
||||
| 2 | Verifiser Terminal + MD-panel + Docs Browser i nettlesar | 🔴 Høy |
|
||||
| 3 | `docs/gemma/world.md` — blokkerer ML-3a / Emma | 🟡 Medium |
|
||||
| 4 | Cloud Build IAP-bypass for `iap.httpsResourceAccessor` | 🟡 Medium |
|
||||
| 5 | CI1 — opax-mcp full CI/CD-kanal | 🟡 Medium |
|
||||
| 6 | CG5c — SMS (Twilio) — krev TWILIO_* env-vars | ⏳ Venter på env-vars |
|
||||
| 7 | CG7-scope | ⏳ Venter på Chris |
|
||||
`cloudbuild.mcp.yaml` er klar. Trigger må opprettes **av Chris** i GCP Console:
|
||||
|
||||
**GCP Console → Cloud Build → Triggers → Create trigger**
|
||||
|
||||
| Felt | Verdi |
|
||||
|------|-------|
|
||||
| Navn | `opax-mcp-deploy` |
|
||||
| Repo | `vauco-saas/OSVauco` |
|
||||
| Branch | `^main$` |
|
||||
| Build config | `cloudbuild.mcp.yaml` |
|
||||
| Included files | `opax-mcp/**` |
|
||||
| Service account | `osvauco-agent-sa@propane-will-491900-m5.iam.gserviceaccount.com` |
|
||||
|
||||
Alt kjører i ditt eget GCP — ingen tredjeparter.
|
||||
|
||||
---
|
||||
|
||||
## 🟠 Gjenstår (prioritert)
|
||||
|
||||
| # | Oppgave | Blokkering |
|
||||
|---|---------|------------|
|
||||
| 1 | Opprett Cloud Build-trigger for `opax-mcp` (se over) | Manuelt i GCP Console |
|
||||
| 2 | Sett env-vars som mangler på `osvauco-agent` Cloud Run | GCP Console / gcloud |
|
||||
| 3 | ML-3a VM — GPU Spot VM for Emma | Planlegging |
|
||||
| 4 | C4 — Medioteq partnerstrategimøte | Aktiveres nå |
|
||||
| 5 | CG5c — SMS (Twilio) | Venter på TWILIO_* env-vars |
|
||||
| 6 | Verifiser Terminal + MD-panel + Docs Browser i nettleser | Manuell test |
|
||||
|
||||
---
|
||||
|
||||
## 🏗 Systemstatus
|
||||
|
||||
- **Cloud Run osvauco-agent:** ✅ Live `us-central1`
|
||||
- **opax.vauco.no:** ✅ Live
|
||||
- **Kreditt:** 2911 NOK utløper 2026-07-10
|
||||
- **Env-vars på Cloud Run (satt):** `GOOGLE_CLOUD_PROJECT`, `GOOGLE_CLOUD_LOCATION`, `GOOGLE_GENAI_USE_VERTEXAI`, `BILLING_TABLE`, `RAG_CORPUS`, `RAG_LOCATION`, `GOOGLE_CLIENT_ID`, `SESSION_SECRET`, `GOOGLE_CLIENT_SECRET`, `MCP_SECRET`
|
||||
- **Env-vars som MANGLER:** `SENDGRID_API_KEY`, `TWILIO_ACCOUNT_SID`, `TWILIO_AUTH_TOKEN`, `TWILIO_FROM_NUMBER`, `GOOGLE_CREDIT_TOTAL_USD`, `NOTIFY_EMAIL_TO`, `NOTIFY_WEBHOOK_URL`, `VAUCO_INTERNAL_WEBHOOK`
|
||||
| Komponent | Status |
|
||||
|-----------|--------|
|
||||
| `osvauco-agent` Cloud Run | ✅ Live `us-central1` |
|
||||
| `opax.vauco.no` | ✅ Live |
|
||||
| `opax-mcp/` kode | ✅ Pushet, venter på Cloud Build trigger |
|
||||
| `docs/gemma/world.md` | ✅ Opprettet |
|
||||
| Emma boot | ✅ Laster world.md ved oppstart |
|
||||
| Invite-system | ✅ Live (`/onboard/invite/{token}`) |
|
||||
| Kreditt | 2911 NOK, utløper 2026-07-10 |
|
||||
|
||||
**Env-vars som MANGLER på Cloud Run:**
|
||||
`SENDGRID_API_KEY`, `TWILIO_ACCOUNT_SID`, `TWILIO_AUTH_TOKEN`, `TWILIO_FROM_NUMBER`,
|
||||
`GOOGLE_CREDIT_TOTAL_USD`, `NOTIFY_EMAIL_TO`, `NOTIFY_WEBHOOK_URL`, `VAUCO_INTERNAL_WEBHOOK`
|
||||
|
||||
---
|
||||
|
||||
## 📌 Neste sesjon — start her
|
||||
|
||||
1. Sett manglende env-vars via Cloud Console eller gcloud
|
||||
2. Verifiser Terminal, MD-panel, Docs Browser i nettlesar
|
||||
3. Test `/onboard` — `costguard.oss.vauco.no/onboard` eller via proxy
|
||||
4. Neste kode-oppgave: `docs/gemma/world.md` for ML-3a
|
||||
1. GCP Console → Cloud Build → opprett trigger `opax-mcp-deploy`
|
||||
2. Sett manglende env-vars på `osvauco-agent`
|
||||
3. Test invite-flow: `POST /onboard/invite` → link → `GET /onboard/invite/{token}`
|
||||
4. Neste kode: C4-forberedelse eller ML-3a VM
|
||||
|
|
|
|||
|
|
@ -24,8 +24,8 @@
|
|||
## Fase B — CostGuard klient-flow (🟠 IN PROGRESS)
|
||||
|
||||
> **Fokus:** Bygg CostGuard som et produkt klienter faktisk kan bruke og betale for.
|
||||
> Prismodell v2 godkjent 2026-06-12. Push-first arkitektur: Jason finner kunden — ikke omvendt.
|
||||
> C4 (Medioteq) er deprioritert og er et partnerstrategimøte (joint venture), ikke salg.
|
||||
> Prismodell v2 godkjent 2026-06-12. Push-first arkitektur.
|
||||
> **Prinsipp:** Ingen tredjepartsverktøy. Alt eies og kjøres i eget GCP/GitHub.
|
||||
|
||||
### CG4 — Kalkulator & UI
|
||||
|
||||
|
|
@ -34,7 +34,7 @@
|
|||
| **CG4d** | Prisingskalkulator — GCP-spend slider, tier-highlighter, ROI-beregning | ✅ | Høy |
|
||||
| **CG6** | Klient-dashboard `costguard.oss.vauco.no` | ✅ 2026-06-15 | Høy |
|
||||
|
||||
### CG5 — Delivery layer (push-first)
|
||||
### CG5 — Delivery layer
|
||||
|
||||
| ID | Oppgave | Status | Tier | Prioritet |
|
||||
|----|---------|--------|------|-----------|
|
||||
|
|
@ -46,24 +46,36 @@
|
|||
|
||||
| ID | Oppgave | Status | Prioritet |
|
||||
|----|---------|--------|-----------|
|
||||
| **CG5-onboard** | `onboard.html` 4-stegs wizard + `POST /onboard/complete` | ✅ 2026-06-15 | Høy |
|
||||
| **CG5-onboard** | 4-stegs wizard + token-invite system + `POST /onboard/complete` | ✅ 2026-06-15 | Høy |
|
||||
| **OQ-29** | `GET /notify/channels` — korrekt format i dashboard | ✅ 2026-06-15 | Lav |
|
||||
| **OQ-26** | `docs/gemma/world.md` — Emma boot context | ✅ 2026-06-15 | Høy |
|
||||
|
||||
### CI1 — opax-mcp CI/CD
|
||||
|
||||
| ID | Oppgave | Status | Prioritet |
|
||||
|----|---------|--------|-----------|
|
||||
| **CI1-kode** | `opax-mcp/server.py` — 20 tools, Dockerfile, requirements | ✅ 2026-06-15 | Høy |
|
||||
| **CI1-cicd** | `cloudbuild.mcp.yaml` — CI/CD pipeline | ✅ 2026-06-15 | Høy |
|
||||
| **CI1-trigger** | Cloud Build trigger opprettes i GCP Console av Chris | 🔴 Manuelt steg | Høy |
|
||||
|
||||
> **Prinsipp CI1:** opax-mcp er intern binding mellom Jason/Emma og OPAX-plattformen.
|
||||
> Ingen tredjepartsverktøy (Cursor, Copilot o.l.). Alt eies 100% av Vauco AS i eget GCP.
|
||||
|
||||
### Infrastruktur (parallelt)
|
||||
|
||||
| ID | Oppgave | Status | Prioritet |
|
||||
|----|---------|--------|-----------|
|
||||
| OX2 | OPAX Hub: koble gjenværende funksjoner | 🟠 | Medium |
|
||||
| CI1 | OPAX-MCP: full CI/CD-kanal (CI1a–e) | 🟠 | Medium |
|
||||
| **ML-3a** | GPU-VM for Emma + `docs/gemma/world.md` | 🟠 world.md ✅ 2026-06-15 — VM gjenstår | Medium |
|
||||
| **ML-3a** | GPU-VM for Emma + world.md | 🟠 world.md ✅ — VM gjenstår | Medium |
|
||||
|
||||
### Gjenstår før Fase B er ferdig
|
||||
|
||||
| ID | Oppgave | Blokkering |
|
||||
|----|---------|------------|
|
||||
| CI1-trigger | Cloud Build trigger for opax-mcp | Manuelt i GCP Console |
|
||||
| CG5c | SMS-varsler | `TWILIO_*` env-vars |
|
||||
| Verifisering | Terminal, MD-panel, Docs Browser i opax.vauco.no | Manuell test |
|
||||
| ML-3a VM | GPU Spot VM oppsett for Emma | Planlegging |
|
||||
| ML-3a VM | GPU Spot VM for Emma | Planlegging |
|
||||
| Env-vars | `SENDGRID_API_KEY`, `GOOGLE_CREDIT_TOTAL_USD` m.fl. | GCP Console |
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -71,7 +83,7 @@
|
|||
|
||||
| ID | Oppgave | Status | Notat |
|
||||
|----|---------|--------|-------|
|
||||
| **C4** | Medioteq partnerstrategimøte (joint venture) | 🟡 | Aktiveres når CG-klient-flow er klar |
|
||||
| **C4** | Medioteq partnerstrategimøte (joint venture) | 🟡 Klar å aktivere | Aktiveres etter CI1-trigger |
|
||||
| **C5** | Salgsdemo | 🟡 | Avventer C4 |
|
||||
| ML-3c | Hybrid agent: Emma internt / Jason for kunder | 🟡 | |
|
||||
| T1–T4 | Threadstone full app | 🟡 | |
|
||||
|
|
@ -105,12 +117,13 @@
|
|||
- Push-first: Jason finner kunden der de er
|
||||
- Delivery layer: CG5a + CG5b + CG5c
|
||||
|
||||
### 2026-06-15 — Fase B hoveddel levert
|
||||
### 2026-06-15 — Fase B hoveddel + CI1 + eierskap-prinsipp
|
||||
- CG5a `POST /notify/webhook` ✅
|
||||
- CG5b `POST /notify/email` ✅
|
||||
- CG5-onboard `onboard.html` 4-stegs wizard ✅
|
||||
- CG5-onboard token-invite system ✅
|
||||
- CG6 `costguard-dashboard.html` ✅
|
||||
- OQ-29 `loadChannels()` fix ✅
|
||||
- `len(agents)`-bugfix i `ml/task_graph.py` ✅
|
||||
- `docs/gemma/world.md` opprettet — ML-3a delvis ✅
|
||||
- ROADMAP og HANDOFF oppdatert
|
||||
- OQ-26 `docs/gemma/world.md` ✅
|
||||
- CI1 `opax-mcp/server.py` 20 tools ✅
|
||||
- CI1 `cloudbuild.mcp.yaml` ✅
|
||||
- **Prinsipp fastslått:** Ingen tredjepartsverktøy. Alt eies i eget GCP/GitHub.
|
||||
- CI1-trigger gjenstår — manuelt steg i GCP Console av Chris
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user