* chore(docs): konsolider MASTERPLAN/ROADMAP/HANDOFF til én sannhet
Bakgrunn: revisjon 2026-05-31 avdekket at vi hadde to MASTERPLAN-er som
ikke matchet, en deprecated VAUCO_OS_ROADMAP som fortsatt ble brukt, tre
parallelle HANDOFF-filer, AGENT_RULEBOOK med feil region (us-central1)
og feil MCP_SERVICE (opax-mcp-core), og committed Git merge-konflikt-
markører i selve session-loggen.
Endringer:
- Ny docs/MASTERPLAN.md (autoritativ, erstatter både rot-MASTERPLAN.md og
forrige docs-versjon). Tydeligere hierarki:
Vauco AS → Vauco OS (plattform) → OPAX (engine) → Moduler
- Ny docs/ROADMAP.md (erstatter docs/VAUCO_OS_ROADMAP.md som var deprecated)
- Ny docs/HANDOFF.md — én fil, overskrives per sesjon (per planregelen)
- Oppdatert docs/AGENT_RULEBOOK.md:
Region: us-central1 → europe-west1
AI-modell: gemini-2.5-pro (midlertidig, venter på Claude EU-kvote)
Vertex AI loc: europe-west1
MCP_SERVICE: opax-mcp-core → osvauco-agent
- Fjernet Git merge-konfliktmarkører i docs/OSVAUCO_OPAX_SESSION_LOG.md
- Flyttet HANDOFF_20260526/20260531/20260531_claude47 → docs/archive/handoffs/
- Slettet duplikat-filer i docs/archive/ (Cost_Management_Rules,
GCPBestPractices, OSVAUCO_OPAX_SESSION_LOG — alle dekket av live-filer)
- Slettet rot-MASTERPLAN.md (erstattet av peker-fil), VAUCO_OS_ROADMAP.md,
Procfile (legacy fra POC, ikke brukt av Cloud Run)
- docs/TODO.md → peker-fil mot ROADMAP
Repo-strategi (fra MASTERPLAN §3):
- 4 aktive repos: OSVauco (mono), vauco-bootstrap, threadstone-landing,
vauco-saas.github.io
- 3 arkiverte: vauco-os, vauco-gemini-tui-bridge, command-hub
- 2 parkerte (lever videre, ikke aktivt jobb): threadstone-instructions,
deep-dream — venter på hver sin trigger (Threadstone-app pilot / første
betalende kunde på CostGuard)
Etter merge: neste oppgave er F8 (browser-end-to-end på opax.vauco.no).
Co-authored-by: Perplexity <noreply@perplexity.ai>
* docs: inkorporer vauco.no salgsportal (apex) i planen
Hovedhull avdekket: vauco.no viser fortsatt Proisp 'Under construction'
placeholder. Planen manglet helt et spor for apex-siden — bedriftens
ansikt utad og portalen som leder besøkende til riktig modul.
MASTERPLAN endringer:
- §1 Plattformhierarki: utvidet fra 3 til 4 nivåer; vauco.no apex
lagt til som egen kunde-flate (over Vauco OS i hierarkiet)
- §2 Domener: vauco.no/www.vauco.no markert som placeholder (skal
erstattes), reserverte subdomener (status./docs./careers.)
dokumentert, email-infra-status notert
- §3 Repos: vauco-site lagt til som 5. aktive repo (public,
GitHub Pages — eget repo fordi sidens kildekode skal være public
mens mono-repoet må forbli privat)
- §4b NY: vauco.no salgsportal — full spec for formål, IA,
visuell retning, salgs-flow, teknisk stack, versjons-evolusjon
V1 → V4
- §11 Kjente hull: OQ-23..OQ-26 lagt til (apex-placeholder,
SPF/DKIM/DMARC, personvern/vilkår, statuspage)
ROADMAP endringer:
- NEXT-seksjon utvidet med V-spor: V1a–V1e (vauco.no MVP)
kan kjøres parallelt med CG3
- KJENTE HULL-seksjon lagt til
HANDOFF oppdatert med oppsummering av nye tillegg.
NY FIL: docs/vauco-site/DESIGN.md
- Klar-til-plukk-opp build-spec for V1 MVP
- Sidekart, copy-utkast, farger, typografi, layout, performance-mål
- DNS-tabell for å flytte vauco.no fra Proisp-parking til GitHub Pages
- SPF/DKIM/DMARC oppskrift
- Bygg-rekkefølge med konkrete gh/git-kommandoer
- Akseptkriterier for V1 APPROVED
Etter merge har vi to parallelle spor:
- Spor A: F8 (OPAX end-to-end) + CG3 (CostGuard frontend)
- Spor B: V1 (vauco.no MVP)
Begge har egne HITL gates.
* chore(scripts): konsolider boot/opax/opax2 + hotkeys + README
- boot.sh: ny daglig VM-starter (rename fra osvauco-opax-boot.sh)
* auto-fornyer gcloud auth + ADC (>8t)
* git pull current branch
* spør: opax (Gemini 2.5 Pro) / opax2 (Claude) / hopp over
* setter aliaser: pf hc st at ca cl cg costs ms logg mp rl ho rb sl osv sol
* printer NESTE OPPGAVE fra docs/HANDOFF.md
- opax.sh: region europe-west1, model gemini-2.5-pro, peker på docs/HANDOFF.md
- opax2.sh: peker på docs/HANDOFF.md (ikke arkivert handoff), advarer om kvote
- scripts/README.md: hotkey-tabell + bashrc-snippet + lock-tabell
- Slettet: scripts/archived/ (7 filer i git-historikk), osvauco-health-check.sh
* fix(scripts): OS VAUCO-header, github-status, auto-context, exit-hook
boot.sh:
- Ny header: OS VAUCO (stort) + Vauco OS subtitle
- [ REPO + GITHUB ] viser: fetch, pull, ahead/behind, uncommitted, last commit,
gh CLI auth-status, åpne PRs på branchen
- 'ghs' alias = gh pr list + gh issue list
- NESTE OPPGAVE regex case-insensitive (matcher 'NESTE OPPGAVE' og 'Neste oppgave')
opax.sh / opax2.sh:
- Ny header: OS VAUCO / OPAX (cyan) og OS VAUCO / OPAX2 (Claude) (magenta)
- Sjekker MASTERPLAN + ROADMAP + RULEBOOK + HANDOFF + gh auth i preflight
- Auto-laster RULEBOOK + MASTERPLAN + ROADMAP + HANDOFF inn i CLI som kontekst
ved oppstart (gemini -p / claude -p, fallback til stdin)
- Exit-hook: spør 'Vil du logge sesjonen nå?' når TUI avsluttes, kjører sol()
- ABSOLUTT REGEL (ingen handling uten PLAN APPROVED) injiseres i kontekst
* fix(scripts): NESTE OPPGAVE-parsing + gemini sandbox workaround
- Bytt awk(IGNORECASE) → sed-pipeline som funker på både gawk og mawk
(HANDOFF.md har '## 🔄 Neste oppgave: ...' — emoji + capitalized)
- Flytt auto-context fra /tmp/ → $OSVAUCO_DIR/.gemini/context/ og .claude/context/
Gemini CLI sandboxer alt utenfor workspace; /tmp er blokkert.
- Send relativ sti (.gemini/context/session-PID.md) til 'gemini -p @...'
- Rydd context-filer eldre enn 1 dag ved oppstart
- .gitignore: ekskluder .gemini/context/ + .claude/context/
* fix(scripts): flytt context til tmp-context/ (Gemini respekterer .gitignore)
Gemini CLI nekter å lese filer som er git-ignored. .gemini/context/ var
ignored, så context-fil ble blokkert.
- Ny mappe: tmp-context/ (innenfor workspace, ikke gitignored som dir)
- Kun session-*.md er gitignored (selve filene), ikke mappen
- tmp-context/README.md beholder mappen i git
- Ny .geminiignore: lar Gemini lese tmp-context/ men ignorerer
node_modules, .terraform, dist osv.
* fix(scripts): bytt context-filnavn til ctx-*.md (Gemini respekterer .gitignore)
Gemini CLI blokkerer enhver fil som matcher et .gitignore-mønster, selv
om den ikke er i .geminiignore. Vi hadde 'tmp-context/session-*.md' i
.gitignore som blokkerte session-PID.md.
Løsning:
- Fjern session-pattern fra .gitignore helt
- Bytt filnavn: session-$$.md → ctx-$$.md
- Mappen ryddes uansett av find -mtime +1 -delete ved hver opax-oppstart
- Kommentar i .gitignore forklarer hvorfor og hvordan skippe lokalt
* fix(scripts): start gemini/claude TUI uten -p (TUI bombet pga non-interactive mode)
Problem: 'gemini -p "..."' kjører non-interactive (svarer + avslutter) —
det er derfor TUI ikke kom opp etter at vi la til auto-context.
Løsning: Gemini CLI auto-laster .gemini/GEMINI.md ved hver TUI-start.
- Oppdaterte .gemini/GEMINI.md: model=gemini-2.5-pro (var Claude 4.6),
boot-prompt peker på MASTERPLAN/ROADMAP/HANDOFF (var slettet ROADMAP)
- opax.sh og opax2.sh: fjernet -p flag, kjører bare 'gemini'/'claude' = full TUI
- Slettet tmp-context/ (ikke nødvendig — GEMINI.md gjør jobben)
- Modellen får LOCKED DEFS automatisk fra GEMINI.md
- For full kontekst-load, skriv 'BOOT' i TUI
* chore(session): logg 20260531-153243 — git pull origin chore/consolidate-2026-05-31
* feat(opax): auto-kjør BOOT-prompt ved hver TUI-start
---------
Co-authored-by: Perplexity <noreply@perplexity.ai>
Co-authored-by: Chris Christiansen <chris.christian...@>
176 lines
6.9 KiB
Markdown
176 lines
6.9 KiB
Markdown
# HANDOFF — Vauco OS
|
||
|
||
**Sist oppdatert:** 2026-05-31 ~16:30 CEST
|
||
**Skrevet av:** Perplexity (Sonnet 4.6) på vegne av Chris Christiansen
|
||
**Status:** Repo-konsolidering pågår. Klar for Fase 8 verifisering rett etter merge.
|
||
|
||
> **Regel:** Dette er **den eneste** HANDOFF-filen. Overskrives hver sesjon. Tidligere handoffs er flyttet til `docs/archive/handoffs/`.
|
||
|
||
---
|
||
|
||
## 🔴 ABSOLUTT REGEL #1
|
||
|
||
**Du gjør ingenting uten at Chris eksplisitt skriver `PLAN APPROVED` eller et tilsvarende godkjenningssignal.**
|
||
Du er en assistent, ikke en autonom agent. Foreslå. Vent. Utfør kun etter godkjenning.
|
||
Self-modifisering av infrastruktur, secrets, IAM eller produksjonsmiljø uten godkjenning = **hard stop**.
|
||
|
||
---
|
||
|
||
## 🏗 Hva er dette prosjektet?
|
||
|
||
Se `docs/MASTERPLAN.md` for full sannhet. Kortversjonen:
|
||
|
||
```
|
||
Vauco OS (plattform)
|
||
└── OPAX (engine på Cloud Run europe-west1)
|
||
├── CostGuard (Modul #1 — live på costguard.oss.vauco.no)
|
||
├── Threadstone (Modul #2 — Q3 2026)
|
||
└── [Modul #3+]
|
||
```
|
||
|
||
Første betalende produkt: **CostGuard** (GCP-kostnadsanalyse via AI).
|
||
|
||
---
|
||
|
||
## ✅ Hva er faktisk ferdig (ikke spør om dette igjen)
|
||
|
||
| Komponent | Status |
|
||
|---|---|
|
||
| Cloud Run `osvauco-agent` | ✅ Live, `europe-west1` |
|
||
| `opax.vauco.no` (LB + SSL) | ✅ Live, IP `34.98.77.173` |
|
||
| IAP (`@vauco.no` only) | ✅ Aktivert |
|
||
| CI/CD Cloud Build → Cloud Run | ✅ Operativt (auto-deploy på push til main) |
|
||
| RAG corpus `osvauco-corpus` | ✅ Populert, `europe-west4` |
|
||
| OAuth2 (Google) | ✅ I Secret Manager |
|
||
| Budget guard (500 NOK/mnd) | ✅ Live |
|
||
| AI-modell | ✅ `gemini-2.5-pro` via Vertex AI EU (midlertidig — venter på Claude-kvote) |
|
||
| `costguard.oss.vauco.no` | ✅ Live (Cloudflare Pages) |
|
||
| Terraform bootstrap-modul | ✅ I `infrastructure/terraform/modules/` |
|
||
| BigQuery dataset + sink | ⏳ Oppe, men tabell ikke populert ennå |
|
||
|
||
---
|
||
|
||
## 🟡 Denne sesjonen (2026-05-31) — Konsolidering + vauco.no inkorporert
|
||
|
||
PR `chore/consolidate-2026-05-31` rydder:
|
||
|
||
- ✅ Ny `docs/MASTERPLAN.md` (autoritativ, erstatter både rot-`MASTERPLAN.md` og gammel docs-versjon)
|
||
- **Ny seksjon §4b:** `vauco.no` salgsportal — formål, IA, visuell retning, salgs-flow, evolusjon V1→V4
|
||
- **Hierarkiet utvidet til 4 nivåer:** apex (`vauco.no`) lagt til som egen kunde-flate
|
||
- **Nye reserverte subdomener** dokumentert: `status.`, `docs.`, `careers.`
|
||
- ✅ Ny `docs/ROADMAP.md` (erstatter `docs/VAUCO_OS_ROADMAP.md`)
|
||
- **V-spor lagt til:** V1a–V1e (vauco.no MVP) — kan kjøres parallelt med CG3
|
||
- ✅ Ny `docs/HANDOFF.md` (denne filen — eneste handoff fra nå)
|
||
- ✅ Ny `docs/vauco-site/DESIGN.md` (klar-til-plukk-opp spec for V1)
|
||
- ✅ Oppdatert `docs/AGENT_RULEBOOK.md` (region, modell, MCP_SERVICE rettet)
|
||
- ✅ Slettet `docs/archive/{Cost_Management_Rules.md,GCPBestPractices.md,OSVAUCO_OPAX_SESSION_LOG.md}` (duplikater)
|
||
- ✅ Fjernet Git merge-konfliktmarkører i `docs/OSVAUCO_OPAX_SESSION_LOG.md`
|
||
- ✅ Flyttet `HANDOFF_20260526.md`, `HANDOFF_20260531.md`, `HANDOFF_20260531_claude47.md` → `docs/archive/handoffs/`
|
||
- ✅ Slettet `Procfile` (legacy, ikke brukt av Cloud Run)
|
||
- ✅ Slettet `docs/VAUCO_OS_ROADMAP.md` (erstattet av ROADMAP.md)
|
||
- ✅ Oppdatert `docs/TODO.md` til å peke på ROADMAP
|
||
|
||
**Andre hull avdekket og dokumentert i MASTERPLAN §11 + ROADMAP:**
|
||
- OQ-23: `vauco.no` viser "Under construction" — fikses i V1
|
||
- OQ-24: Mangler SPF/DKIM/DMARC — salgsmail havner i spam
|
||
- OQ-25: Mangler personvern.html/vilkar.html — GDPR-krav før betalende kunde
|
||
- OQ-26: Ingen statuspage — trust-signal etter første kunde
|
||
|
||
**Etter merge — to spor parallelt:**
|
||
- **F8** (end-to-end test av OPAX)
|
||
- **V1** (vauco.no MVP)
|
||
|
||
---
|
||
|
||
## 🔄 Neste oppgave: Fase 8 — End-to-end test (browser)
|
||
|
||
Cloud Run og IAP er allerede verifisert (`/health` OK via Cloud Run, IAP blokkerer uautentisert).
|
||
|
||
**Det som gjenstår:**
|
||
|
||
### Steg 1 — Verifiser modell-config
|
||
```bash
|
||
# Sjekk at app bruker gemini-2.5-pro, ikke Claude
|
||
gcloud run services describe osvauco-agent --region europe-west1 \
|
||
--format='value(spec.template.spec.containers[0].env[?(@.name=="VERTEX_MODEL")].value)'
|
||
# Forventet: gemini-2.5-pro
|
||
```
|
||
|
||
### Steg 2 — Test Vertex Gemini direkte
|
||
```bash
|
||
curl -X POST \
|
||
"https://europe-west1-aiplatform.googleapis.com/v1/projects/propane-will-491900-m5/locations/europe-west1/publishers/google/models/gemini-2.5-pro:generateContent" \
|
||
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"contents":[{"role":"user","parts":[{"text":"ping"}]}]}'
|
||
# Forventet: JSON med tekst-svar
|
||
```
|
||
|
||
### Steg 3 — Full end-to-end
|
||
Logg inn på `https://opax.vauco.no` med `chris.christiansen@vauco.no` → send en melding → verifiser at agenten svarer.
|
||
|
||
**HITL gate:** Skriv `FASE8 APPROVED` i denne filen + i ROADMAP når alle steg er verifisert.
|
||
|
||
---
|
||
|
||
## 🔜 Etter Fase 8 — to spor parallelt
|
||
|
||
**Spor A — CG3 (CostGuard frontend wiring)** — inntektsmotor
|
||
**Spor B — V1 (vauco.no salgsportal)** — ansiktet utad, må være live før første kundeklage om "hvem er Vauco?"
|
||
|
||
Se `docs/ROADMAP.md` seksjon NEXT for full sjekkliste og `docs/vauco-site/DESIGN.md` for V1 design-spec.
|
||
|
||
---
|
||
|
||
## 📋 Nøkkelinformasjon
|
||
|
||
| Nøkkel | Verdi |
|
||
|---|---|
|
||
| GCP Project | `propane-will-491900-m5` |
|
||
| Region | `europe-west1` |
|
||
| Vertex AI endpoint | `europe-west1` (EU) |
|
||
| Cloud Run service | `osvauco-agent` |
|
||
| Cloud Run URL (direkte) | `https://osvauco-agent-357036551735.europe-west1.run.app` |
|
||
| Public URL | `https://opax.vauco.no` |
|
||
| LB IP | `34.98.77.173` |
|
||
| AI-modell | `gemini-2.5-pro` (midlertidig — venter på Claude EU-kvote) |
|
||
| Repo | `vauco-saas/OSVauco` |
|
||
| Kontakt | `chris.christiansen@vauco.no` |
|
||
|
||
---
|
||
|
||
## 📁 Viktige filer å lese (i denne rekkefølgen)
|
||
|
||
1. `docs/MASTERPLAN.md` — autoritativ sannhet
|
||
2. `docs/ROADMAP.md` — hva som skjer akkurat nå
|
||
3. `docs/HANDOFF.md` — denne filen
|
||
4. `docs/AGENT_RULEBOOK.md` — regler for hvordan agenter oppfører seg
|
||
5. `.gemini/GEMINI.md` — locked definitions og boot-protokoll
|
||
6. `docs/ARCHITECTURE.md` — teknisk arkitektur
|
||
7. `docs/OSVAUCO_OPAX_SESSION_LOG.md` — append-only sesjonshistorikk
|
||
|
||
---
|
||
|
||
## ⚠️ Vanlige feil — ikke gjør disse
|
||
|
||
- **Ikke opprett nye HANDOFF_YYYYMMDD-filer.** Det er kun denne. Overskriv den.
|
||
- **Ikke gjenopplive `VAUCO_OS_ROADMAP.md`.** Den er slettet 2026-05-31. Bruk `ROADMAP.md`.
|
||
- **Ikke bytt til Claude før kvote er bekreftet** av Google Cloud-team + `MODEL APPROVED` fra Chris.
|
||
- **Ikke foreslå å migrere fra europe-west1** — regionen er låst.
|
||
- **Ikke rør IAP, OAuth, eller Secret Manager** uten eksplisitt `DEPLOY GODKJENT` fra Chris.
|
||
- **Ikke opprett nye repos.** Vurder mappe i `OSVauco` først. Krever `REPO APPROVED`.
|
||
- **Ikke hopp over HITL gates** — hver fase avsluttes med et godkjenningssignal.
|
||
|
||
---
|
||
|
||
## 📜 Tidligere handoffs
|
||
|
||
Arkivert i `docs/archive/handoffs/`:
|
||
- `HANDOFF_20260526.md`
|
||
- `HANDOFF_20260531.md`
|
||
- `HANDOFF_20260531_claude47.md`
|
||
|
||
---
|
||
|
||
*Vauco AS · propane-will-491900-m5 · `europe-west1`*
|