* 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...@>
253 lines
9.2 KiB
Markdown
253 lines
9.2 KiB
Markdown
# vauco.no — Design & build-spec for V1 (MVP)
|
||
|
||
**Eier:** Chris Christiansen
|
||
**Sist oppdatert:** 2026-05-31
|
||
**Status:** 🟡 Spec klar — venter på V1a (repo-opprettelse)
|
||
**Trigger for å starte build:** Etter Fase 8 approved, eller parallelt hvis Chris vil
|
||
|
||
> **Plassering av denne filen:** Mens `vauco-site`-repoet ikke finnes ennå, lever spec'en her i OSVauco. Når `vauco-saas/vauco-site` opprettes (V1a), flyttes denne filen dit som `README.md` eller `DESIGN.md`.
|
||
|
||
---
|
||
|
||
## 1. Hva siden er
|
||
|
||
Vauco AS sin offisielle bedriftsside på `vauco.no`. Ett formål: **lede besøkende videre til riktig salgs-modul** og samtidig svare på "hvem er Vauco?".
|
||
|
||
Det er ikke en produktside. Det er ikke en blogg. Det er en portal.
|
||
|
||
---
|
||
|
||
## 2. Sidekart V1
|
||
|
||
```
|
||
vauco.no/ (hovedside — én lang side, ankerlenker)
|
||
├── #hero
|
||
├── #moduler Grid av salgs-moduler
|
||
├── #hvorfor
|
||
├── #om
|
||
├── #kontakt
|
||
└── footer
|
||
|
||
vauco.no/personvern.html GDPR personvernerklæring
|
||
vauco.no/vilkar.html Standardvilkår for kunder
|
||
vauco.no/sitemap.xml
|
||
vauco.no/robots.txt
|
||
```
|
||
|
||
V1 er **én HTML-fil** + 2 statiske underdokumenter. Ikke noe mer.
|
||
|
||
---
|
||
|
||
## 3. Innhold per seksjon (utkast — Chris godkjenner copy)
|
||
|
||
### #hero
|
||
- **H1:** "Vauco bygger AI-moduler som leverer målbar verdi."
|
||
- **Sub:** "Norskutviklet. Drevet på Google Cloud. Lansert av operatører som faktisk har drevet plattformer i produksjon."
|
||
- **CTA primær:** "Se CostGuard →" (anchor til #moduler eller direkte til costguard.oss.vauco.no)
|
||
- **CTA sekundær:** "Snakk med Chris →" (mailto:chris.christiansen@vauco.no)
|
||
|
||
### #moduler (kjernen — grid med kort)
|
||
| Kort | Status | Lenke |
|
||
|------|--------|-------|
|
||
| **CostGuard** — AI-drevet GCP-kostnadsovervåkning. Stopp surprise-regninger før de skjer. | 🟢 Live | costguard.oss.vauco.no |
|
||
| **Threadstone** — Generativ AI-assistent for innhold som leverer. | 🟡 I pilot | threadstone.vauco.no |
|
||
| **Modul #3** — *Coming soon.* Meld deg på for tidlig tilgang. | ⏳ Q4 2026 | (mailto med subject "Modul 3 interesse") |
|
||
|
||
### #hvorfor (3 punkter, ikke flere)
|
||
1. **Norsk eierskap, norsk drift.** Data forblir i EU. Vauco AS er norsk-registrert (org.nr 935 989 779).
|
||
2. **GCP-ekspertise i bunn.** Vi har bygget og driftet Google Cloud-plattformer profesjonelt. Det er ingen tilfeldighet at CostGuard er første produkt.
|
||
3. **AI som ikke er hype.** Hver modul har en konkret jobb og et målbart utfall. Hvis vi ikke kan vise ROI, lanserer vi den ikke.
|
||
|
||
### #om
|
||
- Bilde av Chris (kan tas opp senere — V1 kan kjøre uten)
|
||
- Kort tekst: "Vauco AS er grunnlagt av Chris Christiansen i Oslo, 2026. Vi bygger AI-moduler for nordiske bedrifter."
|
||
- LinkedIn-lenke
|
||
|
||
### #kontakt
|
||
- `chris.christiansen@vauco.no`
|
||
- LinkedIn
|
||
- Oslo, Norge
|
||
- (Telefon kun ved forespørsel — ikke list åpent)
|
||
|
||
### footer
|
||
- Vauco AS · Org.nr 935 989 779
|
||
- Lenker: Personvern · Vilkår · Status (placeholder, peker til status.vauco.no når live)
|
||
- © 2026 Vauco AS
|
||
|
||
---
|
||
|
||
## 4. Visuell retning
|
||
|
||
### Stil-anker
|
||
Bygger videre på `threadstone-landing/index.html` sin estetikk:
|
||
- Mørk bakgrunn (`#0a0a0a` eller lignende)
|
||
- Lys tekst (`#f5f5f5`)
|
||
- Monospace for kodeaksenter / labels / footer (`'JetBrains Mono'`, `'SF Mono'`, fallback `ui-monospace`)
|
||
- Sans-serif for body: Inter / SF Pro Display / system-ui
|
||
|
||
### Farger
|
||
| Rolle | Hex | Bruk |
|
||
|-------|-----|------|
|
||
| Bakgrunn | `#0a0a0a` | `<body>` |
|
||
| Tekst primær | `#f5f5f5` | H1, body |
|
||
| Tekst sekundær | `#a0a0a0` | Sub-text, captions |
|
||
| Aksent — Vauco | `#e8d4a3` (varm sand/gull, samme som Threadstone) | Lenker, CTA-knapp |
|
||
| Aksent — CostGuard | TBD (foreslå grønn/blå, ikke samme som Vauco-aksent) | Kun på CostGuard-kortet |
|
||
| Aksent — Threadstone | TBD (foreslå lilla/rose) | Kun på Threadstone-kortet |
|
||
| Border | `rgba(255,255,255,0.08)` | Kort-borders |
|
||
|
||
### Typografi
|
||
- H1: 48–64px, weight 600, line-height 1.1
|
||
- H2: 32–40px, weight 500
|
||
- Body: 16–18px, line-height 1.6
|
||
- Monospace caption: 13px, uppercase letter-spacing 0.1em
|
||
|
||
### Layout
|
||
- Maks bredde: 1100px, sentrert
|
||
- Padding: 24px på mobil, 48px på desktop
|
||
- Grid på #moduler: 1 kolonne mobil, 2 kolonner tablet, 3 kolonner desktop
|
||
- Vertikal rytme: 96px mellom hovedseksjoner
|
||
|
||
### Mobile-first
|
||
Chris demoer fra telefon. Side må fungere perfekt på iPhone 13/14/15. Test både portrait og landscape.
|
||
|
||
### Performance-mål
|
||
- Lighthouse: Performance ≥95, Accessibility ≥95, Best Practices ≥95, SEO ≥95
|
||
- Total page size <100KB (uten bilder)
|
||
- Ingen tracking-piksler i V1
|
||
- Ingen tredjepartsfonter — bruk system-stack med fallback (eller selvhostet Inter via woff2)
|
||
|
||
---
|
||
|
||
## 5. Teknisk
|
||
|
||
### Stack
|
||
- **HTML5 + CSS3** (vanilj — ingen framework)
|
||
- **Ingen JavaScript** i V1 (eller maks 1 KB for smooth-scroll på ankerlenker)
|
||
- **GitHub Pages** for hosting
|
||
- **GitHub Actions** for valider-og-deploy (auto-deploy på push til main)
|
||
|
||
### Filstruktur i `vauco-site/` repo
|
||
```
|
||
vauco-site/
|
||
├── index.html
|
||
├── personvern.html
|
||
├── vilkar.html
|
||
├── style.css (kan inline-es i index.html for V1)
|
||
├── assets/
|
||
│ ├── favicon.svg
|
||
│ ├── og-image.png (1200x630, Open Graph)
|
||
│ └── (evt. Chris-portrett)
|
||
├── CNAME (innhold: vauco.no)
|
||
├── robots.txt
|
||
├── sitemap.xml
|
||
└── README.md (denne filen flyttes hit)
|
||
```
|
||
|
||
### Meta-tags (kritisk for SEO + sosial deling)
|
||
```html
|
||
<title>Vauco — AI-moduler som leverer målbar verdi</title>
|
||
<meta name="description" content="Vauco AS bygger AI-moduler for nordiske bedrifter. CostGuard for GCP-kostnader. Threadstone for innhold.">
|
||
<meta property="og:title" content="Vauco — AI-moduler som leverer">
|
||
<meta property="og:description" content="Norskutviklet. Drevet på Google Cloud. Norsk eierskap.">
|
||
<meta property="og:image" content="https://vauco.no/assets/og-image.png">
|
||
<meta property="og:url" content="https://vauco.no">
|
||
<meta name="twitter:card" content="summary_large_image">
|
||
<link rel="canonical" href="https://vauco.no">
|
||
```
|
||
|
||
### DNS-endringer (i Proisp)
|
||
| Record | Type | Verdi |
|
||
|--------|------|-------|
|
||
| `@` (apex) | A | `185.199.108.153` (GitHub Pages) |
|
||
| `@` (apex) | A | `185.199.109.153` |
|
||
| `@` (apex) | A | `185.199.110.153` |
|
||
| `@` (apex) | A | `185.199.111.153` |
|
||
| `www` | CNAME | `vauco-saas.github.io.` |
|
||
|
||
**Eksisterende A-records (Proisp-parking 104.37.38.95, 104.37.39.71) må fjernes.**
|
||
|
||
### Email-records (V1e — samme runde)
|
||
| Record | Type | Verdi |
|
||
|--------|------|-------|
|
||
| `@` | TXT | `"v=spf1 include:_spf.google.com ~all"` |
|
||
| `google._domainkey` | TXT | (hent fra Google Workspace Admin → Apps → Gmail → Authenticate email) |
|
||
| `_dmarc` | TXT | `"v=DMARC1; p=quarantine; rua=mailto:dmarc@vauco.no; pct=100"` |
|
||
|
||
---
|
||
|
||
## 6. Akseptkriterier for V1
|
||
|
||
Før V1 kan kalles ferdig:
|
||
|
||
- [ ] `https://vauco.no` viser ny side (ikke "Under construction")
|
||
- [ ] `https://www.vauco.no` viser samme side (eller redirect til apex)
|
||
- [ ] Lighthouse mobil: alle 4 ≥95
|
||
- [ ] OG-bilde rendrer korrekt i LinkedIn-deling (test via [LinkedIn Post Inspector](https://www.linkedin.com/post-inspector/))
|
||
- [ ] CostGuard-kort lenker til `costguard.oss.vauco.no` og kortet åpnes som ny tab
|
||
- [ ] Threadstone-kort lenker til `threadstone.vauco.no`
|
||
- [ ] `personvern.html` og `vilkar.html` finnes og er lenket fra footer
|
||
- [ ] SPF + DKIM + DMARC verifisert via [mxtoolbox.com](https://mxtoolbox.com) — alle grønne
|
||
- [ ] Sitemap pinget til Google Search Console
|
||
- [ ] Chris signer av visuelt — `V1 APPROVED`
|
||
|
||
---
|
||
|
||
## 7. V2 og videre — ikke bygg ennå
|
||
|
||
Bare for kontekst:
|
||
|
||
- **V2:** CostGuard ROI-kalkulator inline på siden, første case study
|
||
- **V3:** Blogg/innsikter (`vauco.no/innsikt/`), kundereferanser, live status-widget
|
||
- **V4:** `/en` engelsk versjon, Proof of Curiosity i footer
|
||
|
||
---
|
||
|
||
## 8. Bygg-rekkefølge for V1 (når du eller en agent starter)
|
||
|
||
```bash
|
||
# 1. Opprett repo
|
||
gh repo create vauco-saas/vauco-site --public \
|
||
--description "vauco.no — Vauco AS salgsportal" \
|
||
--add-readme
|
||
|
||
# 2. Klon, lag struktur
|
||
git clone https://github.com/vauco-saas/vauco-site.git
|
||
cd vauco-site
|
||
# (kopier denne DESIGN.md inn som README.md)
|
||
# (bygg index.html, personvern.html, vilkar.html, CNAME, robots.txt, sitemap.xml)
|
||
|
||
# 3. Sett CNAME-fil
|
||
echo "vauco.no" > CNAME
|
||
|
||
# 4. Push
|
||
git add -A
|
||
git commit -m "feat: Vauco AS apex-side V1 MVP"
|
||
git push origin main
|
||
|
||
# 5. Aktiver Pages: Settings → Pages → Source: main / root
|
||
# 6. Vent på SSL-sertifikat (kan ta 24t første gang)
|
||
|
||
# 7. Endre DNS i Proisp (se tabell §5 over)
|
||
# 8. Vent på DNS-propagering, verifiser med:
|
||
dig +short vauco.no A
|
||
# Forventet: 185.199.108-111.153
|
||
|
||
# 9. Sjekk SSL:
|
||
curl -sI https://vauco.no | head -5
|
||
# Forventet: HTTP/2 200, server: GitHub.com
|
||
```
|
||
|
||
---
|
||
|
||
## 9. Referanser
|
||
|
||
- Stilanker: `threadstone-landing/index.html` (samme org)
|
||
- Designinspirasjon: [linear.app](https://linear.app), [resend.com](https://resend.com), [vercel.com](https://vercel.com)
|
||
- GDPR-guide for personvernerklæring: [Datatilsynet — krav til personvernerklæring](https://www.datatilsynet.no/)
|
||
- GitHub Pages custom domain: [docs.github.com/pages/configuring-a-custom-domain](https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site)
|
||
|
||
---
|
||
|
||
*Denne spec'en flyttes til `vauco-saas/vauco-site/README.md` så snart V1a er gjennomført.*
|