handoff: oppdatert 2026-06-13 09:03 — kreditt env-vars satt, BQ migrert, devtools-fix pushet

This commit is contained in:
chrischristiansen-glitch 2026-06-13 09:04:17 +02:00
parent 66119278bf
commit ec75a4a5d7

View File

@ -1,6 +1,6 @@
# HANDOFF — Vauco OS # HANDOFF — Vauco OS
**Sist oppdatert:** 2026-06-13 08:29 CEST **Sist oppdatert:** 2026-06-13 09:03 CEST
**Skrevet av:** Perplexity (stand-in) via GitHub MCP **Skrevet av:** Perplexity (stand-in) via GitHub MCP
**Sprint:** Alle OQ-er lukket ✅ — venter på CG7-direktiv fra Chris **Sprint:** Alle OQ-er lukket ✅ — venter på CG7-direktiv fra Chris
@ -13,52 +13,46 @@ Neste steg bestemmes av Chris — CG7 er ikke definert uten direktiv.
--- ---
## ✅ Levert 2026-06-13 (full sesjon) ## ✅ Levert 2026-06-13 (oppdatert sesjon)
| Commit | Task | Detalj | | Commit | Task | Detalj |
|--------|------|--------| |--------|------|---------|
| [`6611927`](https://github.com/vauco-saas/OSVauco/commit/66119278bf202a0a326e40880dc9cf6ca61b3941) | **Hotfix** `requirements.txt` + BQ-migrering | `google-cloud-build>=3.24.0` lagt til — fikser `ModuleNotFoundError: google.cloud.devtools`. BQ-skript `scripts/migrate_bq_add_caller_type.sh` pushet og kjørt ✅ |
| [`c114f6c`](https://github.com/vauco-saas/OSVauco/commit/c114f6c32800c5de63430775e6d8fc7f23fd07d4) | **Frontend** `static/billing-dashboard.html` | Tre pool-bars, Free Trial topbar-banner, `Promise.allSettled()` | | [`c114f6c`](https://github.com/vauco-saas/OSVauco/commit/c114f6c32800c5de63430775e6d8fc7f23fd07d4) | **Frontend** `static/billing-dashboard.html` | Tre pool-bars, Free Trial topbar-banner, `Promise.allSettled()` |
| [`bc501c1`](https://github.com/vauco-saas/OSVauco/commit/bc501c13ea9fb9da785885fea57b880cca2b07db) | **OQ-31** `ml/billing_agent.py` | `credit_pools[]`, `effective_days`, `badge_class`, `warning: bool`, `expires_days` fra env | | [`bc501c1`](https://github.com/vauco-saas/OSVauco/commit/bc501c13ea9fb9da785885fea57b880cca2b07db) | **OQ-31** `ml/billing_agent.py` | `credit_pools[]`, `effective_days`, `badge_class`, `warning: bool` |
| [`055a482`](https://github.com/vauco-saas/OSVauco/commit/055a4823205f8255dfa98be1553f833c0a13521d) | **OQ-29** `main.py` | `GET /notify/channels` — env-var-basert, IAP-beskyttet, verifisert i prod | | [`055a482`](https://github.com/vauco-saas/OSVauco/commit/055a4823205f8255dfa98be1553f833c0a13521d) | **OQ-29** `main.py` | `GET /notify/channels` — verifisert i prod |
| [`62d691d`](https://github.com/vauco-saas/OSVauco/commit/62d691dd97068cd7b7974337b468635ef30f3775) | **HANDOFF** `docs/HANDOFF.md` | cloud-run-proxy-regel låst | | [`4693fea`](https://github.com/vauco-saas/OSVauco/commit/4693fea) | **CI-fix** `cloudbuild.yaml` | Fjernet `--audiences` fra smoke-test token |
| [`4693fea`](https://github.com/vauco-saas/OSVauco/commit/4693fea) | **CI-fix** `cloudbuild.yaml` | Fjernet `--audiences` fra smoke-test token — fikset 404 i Cloud Build |
--- ---
## ✅ OQ-logg — alle lukket og verifisert ## ✅ Manuelt utført 2026-06-13
| OQ | Beskrivelse | Status | Verifisert | | Handling | Status |
|----|-------------|--------|------------| |----------|--------|
| **OQ-29** | `GET /notify/channels` | ✅ **LØST** | Prod ✅ `{"channels": [{"type":"email",...},{"type":"sms",...},{"type":"webhook",...}]}` | | Kreditt env-vars satt i Cloud Run (rev `00469-p96`) | ✅ Ferdig |
| **OQ-30** | Browser-panel `opax.html` | ✅ **LØST** | Panel + `/docs/`-proxy leverte i `a773ec2` | | BQ-migrering kjørt — `caller_type`, `module_name`, `session_id` lagt til `llm_token_usage` | ✅ Ferdig |
| **OQ-31** | `credit_pools[]` i `get_credits_status()` | ✅ **LØST** | Struktur verifisert — env-vars ikke satt i Cloud Run ennå | | `google-cloud-build` lagt til `requirements.txt` | ✅ Pushet — ⏳ venter på Cloud Build deploy |
--- ---
## 🔴 Chris sin handleliste før CG7 ## ✅ OQ-logg — alle lukket
```bash | OQ | Beskrivelse | Status |
# 1. Sett kreditt env-vars i Cloud Run (GCP Console → osvauco-agent → Edit & Deploy) |----|-------------|--------|
GOOGLE_CREDIT_INFRA_NOK=<beløp> # f.eks. 5000 | **OQ-29** | `GET /notify/channels` | ✅ Verifisert i prod |
GOOGLE_CREDIT_INFRA_EXPIRES=<dato> # f.eks. 2026-07-10 | **OQ-30** | Browser-panel `opax.html` | ✅ Løst |
VERTEX_CREDIT_NOK=<beløp> | **OQ-31** | `credit_pools[]` + kreditt env-vars satt | ✅ Komplett |
VERTEX_CREDIT_EXPIRES=<dato>
DIALOGFLOW_CREDIT_NOK=<beløp>
DIALOGFLOW_CREDIT_EXPIRES=<dato>
# 2. Verifiser credit_pools etter deploy ---
gcloud run services proxy osvauco-agent \
--region=us-central1 --project=propane-will-491900-m5 --port=8080
curl http://localhost:8080/billing/credits?days=90 | \
python3 -m json.tool | grep -E '"label"|"effective_days"|"badge_class"'
# Forventet: 3 pools med configured: true og runway_days ikke null
# 3. Sett varslings-env-vars når du er klar ## ⚠️ Gjenstår for Chris
SENDGRID_API_KEY=SG.xxxx
NOTIFY_EMAIL_TO=chris.christiansen@vauco.no | # | Handling | Prioritet |
TWILIO_ACCOUNT_SID=ACxxxx |---|----------|-----------|
NOTIFY_WEBHOOK_URL=https://hooks.slack.com/... | 1 | Verifiser Cloud Build ferdig: `gcloud builds list --project=propane-will-491900-m5 --limit=3` | Høy |
``` | 2 | Sjekk `costguard.oss.vauco.no` fungerer etter ny deploy (OAuth `MismatchingStateError` løses ved å tømme cookies / inkognito etter hver deploy) | Høy |
| 3 | Sett varslings-env-vars når klar: `SENDGRID_API_KEY`, `NOTIFY_EMAIL_TO`, `TWILIO_ACCOUNT_SID`, `NOTIFY_WEBHOOK_URL` | Lav |
| 4 | Bestem CG7-scope | Venter på Chris |
--- ---
@ -66,15 +60,17 @@ NOTIFY_WEBHOOK_URL=https://hooks.slack.com/...
| Komponent | Status | | Komponent | Status |
|-----------|--------| |-----------|--------|
| Cloud Run `osvauco-agent` | ✅ Live `us-central1` rev `00465-b7m` | | Cloud Run `osvauco-agent` | ✅ Live `us-central1` rev `00469-p96` |
| `opax.vauco.no` | ✅ Live | | `opax.vauco.no` | ✅ Live |
| `costguard.oss.vauco.no` | ✅ Live — ⚠️ tøm cookies etter deploy |
| `main.py` | ✅ Hovudapp — alle ruter her | | `main.py` | ✅ Hovudapp — alle ruter her |
| `GET /billing/credits` | ✅ Levert — ⚠️ env-vars ikke satt ennå | | `GET /billing/credits` | ✅ Levert + kreditt env-vars satt |
| `GET /notify/channels` | ✅ OQ-29 — verifisert i prod | | `GET /notify/channels` | ✅ OQ-29 — verifisert |
| `ml/billing_agent.py` `get_credits_status()` | ✅ `credit_pools[]` levert | | `ml/billing_agent.py` | ✅ `credit_pools[]` komplett |
| `static/billing-dashboard.html` | ✅ Tre pool-bars + Free Trial banner | | `static/billing-dashboard.html` | ✅ Tre pool-bars + Free Trial banner |
| `static/opax.html` | ✅ Live — browser-panel OK | | `static/opax.html` | ✅ Live — browser-panel OK |
| `static/costguard-dashboard.html` | ✅ Live — CG6 | | `BQ llm_token_usage` | ✅ Migrert — `caller_type`, `module_name`, `session_id` på plass |
| `/opax/build-status` `devtools`-feil | ⏳ Fikset i kode — venter på Cloud Build |
| `POST /notify/webhook` | ✅ CG5a | | `POST /notify/webhook` | ✅ CG5a |
| `POST /notify/email` | ✅ CG5b | | `POST /notify/email` | ✅ CG5b |
| `POST /notify/sms` | ✅ CG5c (Guard+) | | `POST /notify/sms` | ✅ CG5c (Guard+) |
@ -91,9 +87,8 @@ NOTIFY_WEBHOOK_URL=https://hooks.slack.com/...
| Cloud Run service | `osvauco-agent` | | Cloud Run service | `osvauco-agent` |
| Direct URL | `https://osvauco-agent-zjbqp3prqq-uc.a.run.app` | | Direct URL | `https://osvauco-agent-zjbqp3prqq-uc.a.run.app` |
| Public URL | `https://opax.vauco.no` | | Public URL | `https://opax.vauco.no` |
| CostGuard | `https://costguard.oss.vauco.no` |
| Hovudapplikasjon | `main.py` (rot i repo) | | Hovudapplikasjon | `main.py` (rot i repo) |
| MCP-server | `opax-mcp/` |
| Static filer | `static/` |
| IAP-test | `gcloud run services proxy`**se regler** | | IAP-test | `gcloud run services proxy`**se regler** |
| LB IP | `34.98.77.173` | | LB IP | `34.98.77.173` |
| Repo | `vauco-saas/OSVauco` | | Repo | `vauco-saas/OSVauco` |
@ -103,16 +98,16 @@ NOTIFY_WEBHOOK_URL=https://hooks.slack.com/...
--- ---
## Env-vars påkrevd ## Env-vars i Cloud Run (satt ✅)
``` ```
# Kreditter — NOK-beløp og utløpsdatoer (ikke satt ennå) # Kreditter — satt 2026-06-13
GOOGLE_CREDIT_INFRA_NOK=5000 GOOGLE_CREDIT_INFRA_NOK=2911.27
GOOGLE_CREDIT_INFRA_EXPIRES=2026-07-10 GOOGLE_CREDIT_INFRA_EXPIRES=2026-07-10 ← 🔴 utløper om ~27 dager!
VERTEX_CREDIT_NOK=2000 GOOGLE_CREDIT_VERTEX_NOK=9704.21
VERTEX_CREDIT_EXPIRES=2026-09-01 GOOGLE_CREDIT_VERTEX_EXPIRES=2027-04-11
DIALOGFLOW_CREDIT_NOK=1500 GOOGLE_CREDIT_DIALOGFLOW_NOK=5822.53
DIALOGFLOW_CREDIT_EXPIRES=2026-09-01 GOOGLE_CREDIT_DIALOGFLOW_EXPIRES=2027-04-11
USDNOK=10.8 USDNOK=10.8
# Varsling (ikke satt ennå) # Varsling (ikke satt ennå)
@ -136,31 +131,31 @@ DOCS_BRANCH=main
- **MCP-server er `opax-mcp/`** — ikke `agents/mcp_server/` - **MCP-server er `opax-mcp/`** — ikke `agents/mcp_server/`
- **Absolutte stier i Python**`Path(__file__).parent / "..."` - **Absolutte stier i Python**`Path(__file__).parent / "..."`
- **Ikke migrer fra us-central1** - **Ikke migrer fra us-central1**
- **IAP-test: bruk alltid `cloud-run-proxy`** — aldri `--audiences`, aldri manuell IAP client ID: - **IAP-test: bruk alltid `cloud-run-proxy`** — aldri `--audiences`:
```bash ```bash
gcloud run services proxy osvauco-agent \ gcloud run services proxy osvauco-agent \
--region=us-central1 --project=propane-will-491900-m5 --port=8080 --region=us-central1 --project=propane-will-491900-m5 --port=8080
curl http://localhost:8080/<endepunkt> curl http://localhost:8080/<endepunkt>
``` ```
- **OAuth `MismatchingStateError`** etter deploy = normalt — tøm cookies eller bruk inkognito
- **Ikke rør IAP/OAuth** uten `DEPLOY GODKJENT` - **Ikke rør IAP/OAuth** uten `DEPLOY GODKJENT`
- **Ikke opprett repos** uten `REPO APPROVED` - **Ikke opprett repos** uten `REPO APPROVED`
- **Medioteq = joint venture** — ikke SaaS-kunde - **Medioteq = joint venture** — ikke SaaS-kunde
- **Prismodell låst** — ikke endre uten `PLAN APPROVED` - **Prismodell låst** — ikke endre uten `PLAN APPROVED`
- **CG7 er ikke definert** — ikke start uten direktiv fra Chris - **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) ## 📁 Filer (prioritert rekkefølge)
1. `docs/MASTERPLAN.md` — autoritær sannhet 1. `docs/MASTERPLAN.md` — autoritær sannhet
2. `docs/ROADMAP.md` — hva skjer nå 2. `docs/ROADMAP.md`
3. `docs/HANDOFF.md` — denne filen 3. `docs/HANDOFF.md` — denne filen
4. `CLAUDE.md` — kontekst for Claude (rot) 4. `CLAUDE.md`
5. `docs/AGENT_RULEBOOK.md` 5. `docs/AGENT_RULEBOOK.md`
6. `docs/UNIVERSAL_BOOT_PROMPT.md` v1.4 6. `docs/UNIVERSAL_BOOT_PROMPT.md` v1.4
7. `docs/gemma/world.md` ❌ mangler 7. `docs/gemma/world.md` ❌ mangler
--- ---
*Vauco AS · propane-will-491900-m5 · us-central1 · Sesjon lukket 2026-06-13 08:29 CEST* *Vauco AS · propane-will-491900-m5 · us-central1 · Sesjon oppdatert 2026-06-13 09:03 CEST*