OSVauco/docs/GDRIVE_MIRROR_BOOT.md

405 lines
18 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.

# VAUCO OS — GDRIVE MIRROR BOOT
> **CONNECTOR-PRIORITET:**
> ```
> GITHUB > GOOGLE DRIVE
> ```
> GitHub (`OSVauco/main/docs/AGENT_RULEBOOK.md`) er **alltid** ground truth.
> Denne filen er auto-generert av `sync-gdrive-mirror.sh`.
> Ved enhver konflikt: stol på GitHub. Oppdater ved å kjøre scriptet på nytt.
---
## ⚠️ STALENESS-VARSEL — LES DETTE FØRST
```
╔══════════════════════════════════════════════════════════════╗
║ SIST SYNKRONISERT: 2026-05-25T11:11 UTC ║
║ HEAD: d3daa49 ║
║ Kilde: OSVauco/main · Synkronisert av: sync-gdrive-mirror.sh ║
╠══════════════════════════════════════════════════════════════╣
║ ⚠️ TERSKEL: 12 TIMER (aktiv dev-runde) ║
║ HVIS MER ENN 12T HAR GÅTT: STOPP og verifiser mot GitHub ║
╠══════════════════════════════════════════════════════════════╣
║ VERIFISER: https://github.com/chrischristiansen-glitch/ ║
║ OSVauco/blob/main/docs/AGENT_RULEBOOK.md ║
╚══════════════════════════════════════════════════════════════╝
```
---
## PROSJEKTINDEKS — AUTO-GENERERT 2026-05-25T11:11 UTC · HEAD d3daa49
---
## TODO
# OSVauco / OPAX TODO
> Managed by PLAN thread. Update when phases move between sections.
> Last updated: 2026-05-25
---
## NOW
- [ ] **Phase 4** — Docs hardening: oppdater `LEARNINGS.md`, `SECRETS-SETUP.md`, `IAP-SETUP.md` med nåværende state.
- [ ] Verifiser at `source scripts/osvauco-opax-boot.sh` printer NESTE OPPGAVE i grønt (Cloud Shell).
- [ ] Legg til `## SLUTTRAPPORT Phase 3` + `## NESTE OPPGAVE` blokk i `docs/OSVAUCO_OPAX_SESSION_LOG.md`.
- [ ] **GDrive backup — IAM-oppsett** (HITL: `IAM_GODKJENT` gitt 2026-05-25)
- Opprett service account: `vauco-gdrive-backup@propane-will-491900-m5.iam.gserviceaccount.com`
- Last ned JSON-nøkkel
- Del GDrive-mapper `vauco-mirror/` + `vauco-backup/` med service account (Editor)
- Se: `docs/GDRIVE_SETUP.md` for copy-paste-sekvens
- [ ] **GDrive backup — GitHub Secrets** (krever IAM-steget over)
- `RCLONE_GDRIVE_SA_JSON` — innhold av service account JSON
- `GDRIVE_BACKUP_FOLDER_ID` — mappe-ID for `vauco-backup/` fra GDrive URL
- Legg inn på: https://github.com/chrischristiansen-glitch/OSVauco/settings/secrets/actions
- [ ] **Første `mirror-sync`** — kjør etter merge for å opprette `.gdrive-mirror-state` og aktivere dashboard-status
---
## NEXT
- [ ] IAP på `opax.vauco.no` (kun `@vauco.no` accounts) — blokkerer prod-sikring.
- [ ] `opax-mcp/` restruktureres som ordentlig modul-subtree.
- [ ] Full boot cycle acceptance test (automatisert).
- [ ] VS Code ↔ Cloud Shell workflow — preflight-script for lokal utvikling.
- [ ] **Gemini TUI-output logging**`script -a`-wrapper for `gemini`
- Alias `gemini-log` starter gemini inne i terminal-recorder
- `opax-logg-slutt` appender siste 50 linjer (stripped escape-koder) til session-log
- Gjør Gemini-dialog søkbar i `OSVAUCO_OPAX_SESSION_LOG.md`
---
## LATER
- [ ] Medioteq — kun idéfase, ingenting implementeres før OPAX er fullt operasjonelt.
- [ ] BankID på `medioteq-os.vauco.no`.
- [ ] Multi-klient onboard-mønster (`<client>-oss-core` → `<client>-os-core`).
- [ ] OPS agent + BigQuery live logging.
- [ ] Green OSVauco-prompt med ANSI glow.
- [ ] Nattlig GDrive-backup aktiveres etter IAM + Secrets er satt opp.
---
## BLOCKED
*(ingen blokkerte punkter)*
---
## ✅ Fullførte faser
- [x] **Phase 0** — Baseline: `opax-mcp-core` live, OSVauco canonical repo, `.gemini/` grunnmur, boot-script, sessionslogg.
- [x] **Phase 1**`MCP_NAME`, `MCP_PROTOCOL`, `ROOT_DOMAIN` locked; domenekonvensjon + klientmodell i `ARCHITECTURE.md`; `VAUCO_OS_ROADMAP.md` opprettet.
- [x] **Phase 2**`opax.vauco.no` LIVE: Cloud Run domain mapping + CNAME + SSL cert. `HUB_URL` locked. Boot-script peker på prod.
- [x] **Phase 3** — Nemotron session loop i `.gemini/GEMINI.md`. `docs/TODO.md` opprettet. Phase 1+2 SLUTTRAPPORT i session log.
- [x] **GDrive/GitHub paritet**`GDRIVE_MIRROR_BOOT.md` + `sync-gdrive-mirror.sh` + nattlig backup-workflow + PROMPT_COMMAND terminal-logging (2026-05-25).
---
## SESJONSLOGG
# Sessions Index
| Dato | Emne | Fil |
|------|------|-----|
| 2026-05-21 | OSVauco/OPAX platform bootstrap — naming, domenekonvensjon, Nemotron TODO | [2026-05-21_osvauco-opax-platform-naming-domains.md](./2026-05-21_osvauco-opax-platform-naming-domains.md) |
| 2026-05-22 | osv-startup.ps1 — banner design, farger, prompt og gcloud-fix | [2026-05-22_osv-startup-banner-styling.md](./2026-05-22_osv-startup-banner-styling.md) |
| 2026-05-24 | OPAX heavy mode + LLM-ruting + RAG re-indeksering | [2026-05-24_opax-heavy-mode-llm-ruting-rag.md](./2026-05-24_opax-heavy-mode-llm-ruting-rag.md) |
| 2026-05-24 | RAG corpus setup — Vertex AI serverless debugging | [2026-05-24_rag-corpus-setup-vertexai.md](./2026-05-24_rag-corpus-setup-vertexai.md) |
| 2026-05-24 | RAG restriction + operator suite heavy lifts + docs hardening | [2026-05-24_osvauco-rag-operator-suite.md](./2026-05-24_osvauco-rag-operator-suite.md) |
| 2026-05-25 | GDrive/GitHub mirror + backup, PS1 prompt, opax-logg-slutt fix, IAM setup | [2026-05-25_gdrive-mirror-sync.md](./2026-05-25_gdrive-mirror-sync.md) |
---
## ROADMAP
# VAUCO OS — ROADMAP.md
# Eier: PLAN-Claude-Architect
# Sist oppdatert: 2026-05-22 CEST
# Godkjent av: Chris Christiansen
---
## NOW — Aktiv nå
- [ ] **Phase 4** — Docs hardening
- Owner: OPS / Gemini TUI
- HITL gate: `MERGE APPROVED`
- Filer: `LEARNINGS.md`, `SECRETS-SETUP.md`, `IAP-SETUP.md` — oppdater med nåværende state
- Done: alle tre filer har seksjon `## Status 2026-05-22` med verifisert info
---
## NEXT — Neste opp
- [ ] **Phase 5** — IAP på `opax.vauco.no`
- Begrens til `@vauco.no` Google-kontoer
- Owner: EXEC-Gemini / Chris
- HITL gate: `DEPLOY GODKJENT`
- Done: uautentiserte requests → 403, `chris.christiansen@vauco.no` → 200
- [ ] **Phase 6** — VS Code ↔ Cloud Shell workflow
- Preflight-script + dokumentasjon for lokal utvikling mot OSVauco-repoet
- Owner: OPS
- HITL gate: `MERGE APPROVED`
---
## LATER — Backlog
- [ ] `opax-mcp/` restruktureres som ordentlig modul-subtree
- [ ] Full boot cycle acceptance test (automatisert)
- [ ] OPS agent + BigQuery live logging
- [ ] Multi-klient onboard-mønster
- [ ] **Medioteq** — kun idéfase, ingenting implementeres før OPAX er fullt operasjonelt
---
## BLOCKED
*(ingen blokkerte punkter)*
---
## ✅ Fullførte faser
- [x] **Phase 0** — Baseline: `opax-mcp-core` live, OSVauco repo, `.gemini/` grunnmur, boot-script, sessionslogg
- [x] **Phase 1** — MCP_NAME/MCP_PROTOCOL/ROOT_DOMAIN locked; ARCHITECTURE.md + ROADMAP.md opprettet · `6ae1a25` `4a971dd` `c4149e7` · 2026-05-21
- [x] **Phase 2**`opax.vauco.no` LIVE: domain mapping + CNAME + SSL + HUB_URL locked · `f3bf419` · 2026-05-21
- [x] **Phase 3** — Nemotron session loop i GEMINI.md; docs/TODO.md; Phase 1+2 SLUTTRAPPORT i session log · `77ed501` · 2026-05-21
---
EOF v2.0 — 2026-05-22 — synkronisert med faktisk repo-state
---
## AGENT_RULEBOOK
# VAUCO OS — AGENTRLEBOOK.md
# Eier: OPS-Computer-Hub
# Sist oppdatert: 2026-05-21 CEST
# Godkjent av: Chris Christiansen
---
## Hensikt
Immutable regler for alle 4 tråder. Ingen tråd kan overstyre disse.
Endringer krever eksplisitt godkjenning fra Chris.
---
## LOCK LIST — ALDRI ENDRE
| Parameter | Verdi |
|-------------------|-----------------------------------------------------------------------|
| GCP Account | chris.christiansen@vauco.no |
| Forbudte kontoer | tinius.vauger, ccv, jason.vauger |
| GCP Project | propane-will-491900-m5 (Jason-v1) |
| Billing | 0171F6-057E6B-A260BA |
| Org | vauco.no / 155051211891 |
| Region | us-central1 — ALDRI us-west1 |
| SDK | `from google import genai` — ALDRI `vertexai.generative_models` |
| Agent-rammeverk | Google ADK (tillatt) — andre må eksplisitt `ADK_GODKJENT` av Chris |
| GitHub user | chrischristiansen-glitch |
| Canonical repo | OSVauco |
| Canonical branch | main |
| MCP_NAME | OPAX-MCP |
| MCP_PROTOCOL | OPAX Protocol |
| MCP_SERVICE | opax-mcp-core (Cloud Run, us-central1) |
| ROOT_DOMAIN | vauco.no |
| HUB_URL | https://opax.vauco.no ✅ LIVE 2026-05-21 |
---
## DOMENEKONVENSJON — LOCKED
| Subdomain | Type | Formål |
|-------------------------|----------|-----------------------------------------------------|
| `opax.vauco.no` | Hub/MCP | OPAX-MCP operator hub — kun Vauco internt |
| `<klient>-os.vauco.no` | Prod OS | Kundens live produksjonssystem |
| `<klient>-oss.vauco.no` | Stage OS | Kundens staging/demo-system (pre-go-live) |
> `-os` = produksjon. `-oss` = staging. Aldri omvendt.
**Auth-strategi:**
- Nå: Google OAuth på alle miljøer
- Senere: BankID på `-os`-domener for kliniske kunder (Medioteq først)
**Kjente/planlagte domener:**
| Domene | Status | Cloud Run-tjeneste |
|---------------------------|------------------|-----------------------|
| `opax.vauco.no` | ✅ LIVE | `opax-mcp-core` |
| `medioteq-oss.vauco.no` | Planlagt | `medioteq-oss-core` |
| `medioteq-os.vauco.no` | Planlagt | `medioteq-os-core` |
---
## HITL-GATES — STOPP OG SPØR ALLTID
1. `DEPLOY GODKJENT` — før deploy til Cloud Run
2. `MERGE APPROVED` — før merge til main
3. `DEEP DREAM GODKJENT` — før strategisk vokabular eksponeres
4. `COST GODKJENT` — før endringer som påvirker billing
5. `IAM_GODKJENT` — før IAM-endringer eller ny service account
6. `NEWREPO` — før opprettelse av ny repo
---
## BOOT-PROTOKOLL — kjøres av ALLE tråder ved oppstart
1. Branch-discovery: list alle branches, finn mest aktiv (ahead av default)
- Hvis 1+ branch er 10+ commits ahead: STOPP og spør Chris
- Standard: OSVauco/main er canonical for dette prosjektet
2. Les eid fil + MASTER_HANDOFF_v2 + ROADMAP fra riktig branch
3. Bekreft i én linje: `Boot OK — branch X, HEAD Y, oppgave Z`
---
## VOCABULARY FIREWALL
| Type | Ord | Regel |
|---|---|---|
| Offentlig (OK overalt) | Token Ledger, VVN, Provenance, File signature, Client identity record, Cognitive contribution, The system | Fritt bruk |
| Strategisk (KUN internt) | Pregeverdi, Deep Dream, Vauco-arv, Pregesignatur, T-konto, Work of Living, Pregeverk | KUN i `deep-dream/`-mappe |
---
## KOST-DISIPLIN
- $3/dag hard cap per tråd
- `gemini-2.5-flash` for enkle steg, `pro` for komplekse
- ALDRI rekursive modell-loops
- Hvis tråden bruker $1 på én oppgave: STOPP, rapporter, spør
- 80%/95%/100% quota stops aktive
---
## FRICTION-REGLER (kodifisert lærdom)
### TASK-FRICTION-001: Branch-discovery-before-read
Preflight må advare hvis non-default branch er 10+ commits ahead.
Implementer i: `scripts/preflight-check.sh`
### TASK-FRICTION-002: SYSTEM_STATE_AGENT_BOOT autogenerering
Boot-script skriver fersk state-fil ved hver tråd-oppstart.
Implementer i: `scripts/boot-state.sh` (EXEC eier)
### TASK-FRICTION-003: Eierskap-matrise håndhevet i pre-commit
Pre-commit hook avviser commit hvis fil endres av feil tråd.
Implementer i: `.githooks/pre-commit` (OPS eier)
---
## KORREKSJONS-REGEL
Ground truth wins always.
1. Innrøm direkte i én setning
2. Oppdater eid fil med korreksjon
3. Fortsett
ALDRI forsvar gamle posisjoner.
---
## KOMMUNIKASJON MELLOM TRÅDER
- ML-TRÅD: Chris kopierer melding over
- Filer flyter via GitHub (`OSVauco` + tjeneste-repoer)
- Aldri direkte tråd-til-tråd — alt via committed MD eller Chris
---
## EIERSKAP-MATRISE
| Fil | Eier | Andre kan |
|---|---|---|
| VAUCO_OS_MASTER_HANDOFF_v2.md | OPS | lese |
| VAUCO_OS_ROADMAP.md | PLAN | lese, foreslå patch via PR |
| SYSTEM_STATE_AGENT_BOOT.md | EXEC | lese |
| docs/AGENTRLEBOOK.md | OPS | lese |
| docs/ARCHITECTURE.md | PLAN | lese, foreslå patch via PR |
| docs/LEARNINGS.md | OPS | lese, foreslå append |
| docs/RISKREGISTER.md | AUDIT | lese |
| docs/PLANBOARD.md | AUDIT | lese |
| CHANGELOG.md | OPS | lese |
| TODO.md | EXEC | lese |
Regel: én fil — én eier. Andre foreslår via PR, eier merger.
---
EOF v1.2 — 2026-05-21 — OPS-Computer-Hub (Phase 2: HUB_URL locked LIVE, domain status updated)
---
## LEARNINGS — siste oppføringer
Kontekst: Phase A scratchpad sjekket kun `main`-branch i vauco-os. `autoflow-lag-1` var canonical med full operativ kode. Hele Phase A-analysen ble feil, og Phase B-planen ble bygget på feil premiss.
Lærdom: Default branch er ALDRI automatisk canonical. Alltid sjekk alle branches og finn den med mest aktive commits.
Regel: Boot-protokoll starter ALLTID med branch-discovery. Hvis 1+ branch er 10+ commits ahead av default: STOPP og spør Chris.
Implementert i: `docs/AGENTRLEBOOK.md` — BOOT-PROTOKOLL steg 1
---
### LEARNING-002: Handoff-MD er ferskvare — utdatert på 13 timer
Dato: 2026-05-18
Kontekst: VAUCO_BOOTSTRAP_HANDOFF_NEMOTRON.md ble utdatert samme dag den ble skrevet. MASTER_HANDOFF_v2 måtte lages for å reconcile motstridende info.
Lærdom: Statiske handoff-filer divergerer fort fra live state. SYSTEM_STATE_AGENT_BOOT.md (EXEC eier) må regenereres ved hver tråd-boot for å være autoritet på hva som er sant nå.
Regel: EXEC-tråden kjører `scripts/boot-state.sh` ved hver sesjon og skriver fersk SYSTEM_STATE_AGENT_BOOT.md.
Implementert i: TASK-FRICTION-002 — `scripts/boot-state.sh` (Day 2)
---
### LEARNING-003: 40% av Phase B var nyttig — resten død/avfeilet
Dato: 2026-05-18
Kontekst: Phase B-plan var bygget på feil premiss (tom remote repo), men inneholdt gode design-elementer: task manager, dev-orchestrate.sh, doc-consolidation layout.
Lærdom: Selv feil-premiss-planer kan inneholde nyttige sub-komponenter. Skill økten mellom premiss-validering og løsnings-design.
Regel: Før ny plan: verifiser alle premisser eksplisitt. Ground truth wins always. Innrøm direkte, oppdater eid fil, fortsett.
Implementert i: `docs/AGENTRLEBOOK.md` — KORREKSJONS-REGEL
---
### LEARNING-004: Pre-commit hook kan ikke skille regel-definisjon fra regelbrudd
Dato: 2026-05-18
Kontekst: `.githooks/pre-commit` bruker innholdsbasert regex-gate. Fanger `vertexai.generative_models` overalt — inkludert i NEVER-lister og kommentarer.
Lærdom: Semantisk korrekt bypass (`--no-verify` eller `git config --unset core.hooksPath`) er riktig for commits som inneholder regel-definisjoner, ikke regelbrudd.
Regel: Hook v2 må implementere Argument C: kun match uncommented lines i .py/.sh, og kun utenfor NEVER/blocked/forbid-kontekst i .md.
Implementert i: TASK-FRICTION-003 — hook v2 (Day 2)
---
### LEARNING-005: Verdivurdering før commit — tråden kan absorbere korreksjon raskt
Dato: 2026-05-18
Kontekst: Doc-konsolidering ble nødvendig (LEARNINGS.md, AGENTRLEBOOK.md). Ground-truth-vinner-alltid-prinsippet fungerte raskt i praksis.
Lærdom: Kjør verdivurdering ved slutten av hver økt: hva produserte vi, hva er nyttig vs dødt, hvilken læring overlever?
Regel: Før tråd-økt avsluttes: oppdater LEARNINGS.md (append), og friction → TASK-FRICTION-NNN i ROADMAP.
Implementert i: `docs/AGENTRLEBOOK.md` — FRICTION-REGLER
---
EOF — append videre under denne linjen
---
### LEARNING-006: gcloud-CLI deler quota med system-prosesser (32555940559)
Dato: 2026-05-18
Kontekst: gcloud CLI bruker shared project 32555940559 for cloudresourcemanager API. Loop-scripts trigget 2400 RPM cap. Årsak: boot-script eller watch-prosess listet prosjekter/billing i loop.
Lærdom: Quota-hit på shared gcloud-prosjekt er ikke-fatal, forsvinner etter 60s. Sjekk alltid ps aux for spam-prosesser før loop-operasjoner.
Regel: 1) Skriv Y ved quota-prompt → 2) vent 60s → 3) kjør preflight.sh på nytt. Ved 429: `ps aux | grep -E "(gcloud|gemini|watch)" | grep -v grep` → kill -9 <PID> ved looping prosess.
---
### LEARNING-007: Vertex AI RAG Engine Spanner Restriction & Graceful Degradation
Dato: 2026-05-24
Kontekst: Forsøk på å opprette serverless RAG Engine corpus i `us-central1` feilet med 400 INVALID_ARGUMENT. Årsak: Nye prosjekter i visse regioner er hard-begrenset til Spanner-modus (som krever allowlist). PATCH på `ragEngineConfig` med `basic` tier og fjerning av `spanner`-nøkkel via REST fungerte ikke (merging, ikke clearing). Fallback til `europe-west4` gav samme resultat.
Lærdom: RAG Engine er ikke universelt tilgjengelig som serverless ennå. SDK 1.153.1 har også bugs som krasjer ved bruk av `backend_config`.
Regel: Implementer alltid "Graceful Degradation" for RAG. Hvis corpus-opprettelse feiler pga. plattform-restriksjoner, sett en flagg, logg situasjonen til operatøren, og fortsett uten RAG i stedet for å krasje.
Implementert i: `agents/rag/setup_corpus.py`, `agents/rag/sync_corpus.py`
---
*Oppdater ved å kjøre: `bash scripts/sync-gdrive-mirror.sh` — last deretter opp til GDrive.*
**EOF · GDRIVE_MIRROR_BOOT · 2026-05-25T11:11 UTC · HEAD d3daa49 · auto-generert**