Go to file
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
.gemini chore(docs): konsolider MASTERPLAN/ROADMAP/HANDOFF til én sannhet (#5) 2026-05-31 17:57:13 +02:00
.github/workflows fix(workflow): fjern push-trigger — kjør kun schedule (03:00 UTC) + workflow_dispatch 2026-05-25 11:45:23 +02:00
.vscode feat: osv-startup.ps1 + .vscode/settings.json — auto-unblock, purple/green only palette, clean prompt [Phase 4] 2026-05-22 03:09:36 +02:00
agents fix: serve main.py with static files in Cloud Run container 2026-05-31 13:14:44 +00:00
architecture feat: push all remaining files — agents/, docs/, architecture/, cloudbuild.yaml, README 2026-05-23 02:37:39 +02:00
auth feat(auth): add OAuth2 client flow + token store for GCP client onboarding 2026-05-27 20:01:21 +02:00
data docs: marker C2 komplett, legg til C4.2 auth-gate 2026-05-27 15:38:25 +00:00
dialogflow feat(b6): export Dialogflow CX agents to version control 2026-05-26 04:29:05 +00:00
docs chore(docs): konsolider MASTERPLAN/ROADMAP/HANDOFF til én sannhet (#5) 2026-05-31 17:57:13 +02:00
infrastructure fix(terraform): use google_cloud_run_v2_service data source + hardcode service name in mappings 2026-05-31 15:58:41 +02:00
master_hub feat(ts3): Master Hub v3.2 theme-switcher + docs(bq): Looker Studio setup 2026-05-26 11:54:54 +00:00
ml fix: nettokostnad etter kreditter + anomaly detection + onboarding status 2026-05-29 23:56:22 +00:00
opax-mcp fix: restore executable bit on new scripts 2026-05-26 13:40:07 +00:00
protocols chore: update repo references after transfer to vauco-saas 2026-05-27 19:13:54 +00:00
scripts chore(docs): konsolider MASTERPLAN/ROADMAP/HANDOFF til én sannhet (#5) 2026-05-31 17:57:13 +02:00
static feat: add OPAX operator hub (static/opax.html) 2026-05-31 15:39:13 +02:00
.env.example feat: Cloud Billing API, FCM push, OAuth, AWS billing, historikk, eksport, PWA 2026-05-30 01:20:21 +00:00
.env.prefilled chore: update repo references after transfer to vauco-saas 2026-05-27 19:13:54 +00:00
.gdrive-mirror-state chore(state): oppdater .gdrive-mirror-state SHA=598e47a 2026-05-26 03:02:09 +00:00
.geminiignore chore(docs): konsolider MASTERPLAN/ROADMAP/HANDOFF til én sannhet (#5) 2026-05-31 17:57:13 +02:00
.gitignore chore(docs): konsolider MASTERPLAN/ROADMAP/HANDOFF til én sannhet (#5) 2026-05-31 17:57:13 +02:00
.python-version fix(deploy): bruk Python 3.13, pin litellm>=1.67 for 3.13-støtte 2026-05-26 00:44:35 +02:00
AGENTS.md feat(ml): add ML layer — Dask DAG, Parameter Server state, telemetry, AGENTS.md [ML-1] 2026-05-26 01:13:19 +02:00
cloudbuild.base.yaml docs: clarify cloudbuild.base.yaml is reference template only 2026-05-26 04:31:44 +00:00
cloudbuild.yaml feat(rag): connect agent to rag corpus 2026-05-30 21:27:42 +00:00
CNAME feat(cg3): migrate costguard to github pages (docs/) 2026-05-27 18:53:07 +00:00
dev-startup.sh Skip auth steps if already authenticated 2026-05-29 23:40:07 +02:00
main.py feat(C2): admin panel /admin med create-customer endpoint 2026-05-30 15:07:10 +00:00
MASTERPLAN.md chore(docs): konsolider MASTERPLAN/ROADMAP/HANDOFF til én sannhet (#5) 2026-05-31 17:57:13 +02:00
opax.sh auto: sync 2026-05-30 19:44:04 +00:00
README.md feat: Cloud Billing API, FCM push, OAuth, AWS billing, historikk, eksport, PWA 2026-05-30 01:20:21 +00:00
requirements.txt fix: add missing itsdangerous dependency 2026-05-30 01:42:17 +00:00

OSVauco — GCP Agent Master Repo

Prosjekt: propane-will-491900-m5 | Region: us-central1

Status

Komponent Status
Cloud Run Agent Live
Service URL https://osvauco-agent-357036551735.us-central1.run.app
CI/CD Trigger Auto-deploy ved push til main
ADK Versjon 1.x (google-adk>=1.0.0,<2.0.0)
Siste revisjon osvauco-agent-00006-mvb

Hurtigtest

TOKEN=$(gcloud auth print-identity-token)
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"user_id":"chris","session_id":"test-1","message":"Hei, hvem er du?"}' \
  https://osvauco-agent-357036551735.us-central1.run.app/run | jq

Repo-struktur

├── agents/
│   └── core-logic/        # Live agent: app.py (FastAPI + ADK Runner)
├── infrastructure/
│   ├── 01-setupenv.sh     # ✅ Ferdig
│   ├── 05-cloudrun-deploy.sh  # ✅ Ferdig
│   ├── 06-cicd-setup.sh   # ✅ Ferdig
│   ├── 07-rag-setup.sh    # ⏳ Neste
│   └── 08-memorybank-setup.sh # ⏳ Planlagt
├── docs/
├── scripts/
├── cloudbuild.yaml        # CI/CD pipeline
└── .env.example

Service Account roller (osvauco-agent-sa)

Rolle Formål
roles/aiplatform.user Vertex AI / Gemini
roles/secretmanager.secretAccessor Secrets
roles/logging.logWriter Logging
roles/cloudtrace.agent Tracing
roles/monitoring.metricWriter Monitoring
roles/run.invoker Cloud Run kall
roles/iam.serviceAccountUser Deploy
roles/artifactregistry.writer Docker push
roles/run.developer Cloud Run deploy

Cloud Scheduler for Daglig Fakturering

For å automatisk generere daglige kostnads-snapshots, må en Cloud Scheduler-jobb konfigureres til å kalle /billing/snapshot-endepunktet.

Oppsett med gcloud:

  1. Service URL: https://osvauco-agent-357036551735.us-central1.run.app
  2. Service Account: osvauco-agent-sa@propane-will-491900-m5.iam.gserviceaccount.com
gcloud scheduler jobs create http daily-billing-snapshot \
  --schedule="0 5 * * *" \
  --uri="https://osvauco-agent-357036551735.us-central1.run.app/billing/snapshot" \
  --http-method=POST \
  --oidc-service-account-email="osvauco-agent-sa@propane-will-491900-m5.iam.gserviceaccount.com" \
  --oidc-token-audience="https://osvauco-agent-357036551735.us-central1.run.app" \
  --location="us-central1" \
  --time-zone="Etc/UTC" \
  --description="Kaller /billing/snapshot for å lagre daglig kostnadsdata."

Denne kommandoen oppretter en jobb som kjører hver dag kl. 05:00 UTC.