OSVauco/docs/HANDOFF.md
chrischristiansen-glitch 70eced385f
chore(docs): konsolider MASTERPLAN/ROADMAP/HANDOFF til én sannhet (#5)
* 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...@>
2026-05-31 17:57:13 +02:00

176 lines
6.9 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-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:** V1aV1e (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`*