OSVauco/docs/HANDOFF.md

180 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# HANDOFF — Vauco OS
**Sist oppdatert:** 2026-06-12 18:01 CEST
**Skrevet av:** Perplexity (stand-in) via GitHub MCP
**Sprint:** CG5a · CG5b · CG5c · CG5-onboard · CG6 — levert | OPAX docs-proxy + browser-panel — levert
---
## ✅ Gjort denne sesjonen (2026-06-12 — kveld)
| Commit | Task | Detalj |
|--------|------|--------|
| [`a773ec2`](https://github.com/vauco-saas/OSVauco/commit/a773ec26fcedb2540dc5a04acdf71269d704dc63) | **DOCS PROXY** `main.py` | `GET /docs/{path}` — henter MD-filer fra privat repo via `GITHUB_PAT` (Secret Manager). Feiler pent med `503` hvis token mangler, `504` ved timeout. `DOCS_BRANCH` env-var støtte (default `main`). |
### Neste steg for OPAX browser-panel (ikke pushet ennå)
Frontend-kode er klar men **ikke pushet** til `opax.html`. Gjenstår:
- Nav-item `🌐 Browser` i sidebar
- `#panel-browser` med iframe + URL-bar
- MD-fetch byttes fra `GH_RAW``/docs/` proxy
- `browserNav()` / `browserFrameLoad()` / `browserFrameError()` JS
Årsak ikke pushet: vi avventer YTT-bygg av `/docs`-proxyen for å verifisere at Cloud Run bygger ok — deretter pusher vi `opax.html` i neste sesjon.
---
## ✅ Gjort tidligere i dag (2026-06-12 — formiddag/ettermiddag)
| Commit | Task | Detalj |
|--------|------|--------|
| [`c312f4a`](https://github.com/vauco-saas/OSVauco/commit/c312f4a7274f65eb213477956854977df10d7a7a) | MASTERPLAN seksjon 10 | Prismodell v2: Starter $499 / Guard $999 / Shield $1.999 / Enterprise $3.500+ |
| [`7aa7384`](https://github.com/vauco-saas/OSVauco/commit/7aa73842d46b2b65610358c0ff8e456b2189e7f4) | MASTERPLAN seksjon 4 | Korrekt repo-layout dokumentert |
| [`50490b0`](https://github.com/vauco-saas/OSVauco/commit/50490b071d5b80252ea32e8db3226064ac9c80c0) | **CG5-onboard** `static/onboard.html` | 4-stegs onboarding-wizard (mørkt CostGuard-tema) |
| [`c3357d3`](https://github.com/vauco-saas/OSVauco/commit/c3357d38aa71f13dd06726800a2c57425d6bd1ac) | **CG5-onboard** `main.py` | `GET /onboard` (IAP-exempt) + `POST /onboard/complete` (Firestore + varsler) |
| [`5270166`](https://github.com/vauco-saas/OSVauco/commit/5270166ce13bdbea9e6009e5d1ce3529001afba6) | **CG6** `static/costguard-dashboard.html` | Klient-dashboard — billing summary, anomalier, modul-donut, delivery-kanaler |
| [`f7e64fc`](https://github.com/vauco-saas/OSVauco/commit/f7e64fcea07ea2b1f0c3c898bf798da49a7e2993) | **CG5c** `main.py` | `POST /notify/sms` — Twilio REST via httpx, Guard+-tier, 402 ved feil tier |
| [`4a1e23e`](https://github.com/vauco-saas/OSVauco/commit/4a1e23e077f2bcb508854c41c47a4d26f82f0124) | **CG5a+CG5b** `main.py` | `NotificationService` + `POST /notify/webhook` + `POST /notify/email` |
| [`21efdc4`](https://github.com/vauco-saas/OSVauco/commit/21efdc4e9511376393a8731a7db4568ea756fe8c) | **CG4d** `opax.html` | Prisingskalkulator panel — GCP-spend slider, tier-highlight, ROI-estimat |
### Notification-arkitektur (komplett)
| Endepunkt | Metode | Kanal | Tier |
|-----------|--------|-------|------|
| `POST /notify/webhook` | CG5a | Slack / Teams / Chat / Discord / custom | Alle |
| `POST /notify/email` | CG5b | SendGrid digest | Alle |
| `POST /notify/sms` | CG5c | Twilio SMS — spike-varsler | Guard+ |
**Merk:** `GET /onboard` er IAP-exempt — tilsiktet for nå, skal vurderes ved hardening.
---
## ✅ Gjort forrige sesjon (2026-06-11)
| Task | Detalj |
|------|--------|
| **CG4b** | Chart.js donut live — build 2f385fe3 ✅ |
| **Medioteq** | Joint venture presisert — ikke SaaS-kunde |
---
## 🔴 Kjente OQ-er (Open Questions)
| ID | Beskrivelse | Prioritet |
|----|-------------|-----------|
| **OQ-29** | `GET /notify/channels` mangler — ingen list-endepunkt for å hente konfigurerte delivery-kanaler per kunde | Lav / neste sprint |
| **OQ-30** | `opax.html` browser-panel + MD-proxy-fix ikke pushet — venter på YTT-bygg-verifisering | Høy — neste sesjon |
---
## 🔴 NOW — Neste oppgaver (prioritert)
| ID | Oppgave | Status |
|----|---------|--------|
| **OQ-30** | Push `opax.html` med browser-panel + MD→`/docs/` fix | ⏳ Første oppgave neste sesjon |
| **CG7** | Scope defineres av Chris — **ikke start uten direktiv** | ⏳ Venter på MASTERPLAN-definisjon |
| **OQ-29** | `GET /notify/channels` | Backlog |
| **ML-3a** | `docs/gemma/world.md` mangler — blokkerer Emma | Blokkert |
---
## 🏗 Systemstatus
| Komponent | Status |
|-----------|--------|
| Cloud Run `osvauco-agent` | ✅ Live `us-central1` |
| `opax.vauco.no` | ✅ Live |
| `main.py` | ✅ Hovudapp — alle ruter her |
| `static/opax.html` | ✅ Live — browser-panel MANGLER ennå |
| `static/jason.html` | ✅ Live |
| `static/onboard.html` | ✅ Live — CG5-onboard |
| `static/costguard-dashboard.html` | ✅ Live — CG6 |
| `opax-mcp/` | ✅ MCP-server mappe |
| `GET /docs/{path}` | ✅ Levert — venter på YTT-bygg |
| `POST /notify/webhook` | ✅ CG5a — levert |
| `POST /notify/email` | ✅ CG5b — levert |
| `POST /notify/sms` | ✅ CG5c — levert (Guard+) |
| `GET /notify/channels` | 🔴 OQ-29 — mangler |
| `docs/gemma/world.md` | ❌ Mangler — blokkerer ML-3a |
---
## 📋 Nøkkelinformasjon
| Nøkkel | Verdi |
|--------|-------|
| GCP Project | `propane-will-491900-m5` |
| Region (LÅST) | `us-central1` |
| Cloud Run service | `osvauco-agent` |
| Direct URL | `https://osvauco-agent-zjbqp3prqq-uc.a.run.app` |
| Public URL | `https://opax.vauco.no` |
| Hovudapplikasjon | `main.py` (rot i repo) |
| MCP-server | `opax-mcp/` |
| Static filer | `static/` |
| Jason chat | `https://opax.vauco.no/static/jason.html` |
| Onboarding | `https://opax.vauco.no/onboard` |
| LB IP | `34.98.77.173` |
| Repo | `vauco-saas/OSVauco` |
| Eier | `chris.christiansen@vauco.no` |
| Jason | `jason.vauger@vauco.no` |
| Emma | `emma.vauger@vauco.no` — 🔮 ML-3a |
---
## Env-vars påkrevd
```
# CG5c — Twilio SMS
TWILIO_ACCOUNT_SID=ACxxxx
TWILIO_AUTH_TOKEN=xxxx
TWILIO_FROM_NUMBER=+47xxxxxxxx
# DOCS proxy — hent fra Secret Manager
GITHUB_PAT=ghp_xxxx # repo:read scope på vauco-saas/OSVauco
DOCS_BRANCH=main # valgfri, default main
```
---
## CostGuard — prismodell v2 (fasit)
| Tier | GCP-spend/mnd | Pris |
|------|--------------|------|
| Starter | $0$3k | $499/mnd |
| Guard | $3k$15k | $999/mnd |
| Shield | $15k$50k | $1.999/mnd |
| Enterprise | >$50k | $3.500+/mnd |
**Push-first:** Jason leverer til webhook/e-post/SMS — kunden setter opp kanal ved onboarding.
---
## ⚠️ Regler
- **Hovudapp er `main.py`** — ikke `agents/core-logic/app.py`
- **MCP-server er `opax-mcp/`** — ikke `agents/mcp_server/`
- **Absolutte stier i Python** — `Path(__file__).parent / "..."`
- **Ikke migrer fra us-central1**
- **Ikke rør IAP/OAuth** uten `DEPLOY GODKJENT`
- **Ikke opprett repos** uten `REPO APPROVED`
- **Medioteq = joint venture** — ikke SaaS-kunde
- **Prismodell låst** — ikke endre uten `PLAN APPROVED`
- **CG7 er ikke definert** — ikke start uten direktiv fra Chris
- **Verifiser alltid mappestruktur** via GitHub API før du bygger
---
## 📁 Filer (i prioritert rekkefølge)
1. `docs/MASTERPLAN.md` — autoritativ sannhet
2. `docs/ROADMAP.md` — hva skjer nå
3. `docs/HANDOFF.md` — denne filen
4. `CLAUDE.md` — kontekst for Claude (rot)
5. `docs/AGENT_RULEBOOK.md`
6. `docs/UNIVERSAL_BOOT_PROMPT.md` v1.4
7. `docs/gemma/world.md` ❌ mangler
---
*Vauco AS · propane-will-491900-m5 · us-central1 · Sesjon avsluttet 2026-06-12 18:01 CEST*