Nytt konseptdokument: systemdokumentasjon (arkitektur, features, CLI-verktøy, retninger) lever som noder i grafen — ikke bare markdown-filer. Én offentlig Synops-rotnode med undersamlinger. - Claude traverserer via synops-context, ikke fillesing - Nye utviklere navigerer fra én rotnode i webgrensesnittet - CLAUDE.md krymper til bootstrap-peker + fallback - docs/-filer migreres i faser: seed → dobbeltliv → noder er kilden - synops-snapshot genererer docs fra noder (ikke omvendt) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
5.9 KiB
Konsept: Selvdokumenterende system
Filsti: docs/concepts/selvdokumenterende_system.md
1. Konsept
Synops dokumenterer seg selv som noder i seg selv. Arkitektur, features, CLI-verktøy, retninger og erfaringer er noder i grafen — ikke bare markdown-filer i et repo. En offentlig synlig Synops-node er roten, og alt systemrelevant henger under den via edges.
2. Hvorfor
Markdown-filer i docs/ har tre problemer:
- Rotner. Koden endres, docs oppdateres ikke. Ingen kobling mellom spec og implementasjon.
- Frakoblet. Docs kan ikke lenkes fra chat, work items eller
andre noder via
n:-referanser. - Dobbeltvedlikehold. Samme informasjon lever i docs-filer OG i kode/database. Endring ett sted glemmes det andre.
Løsningen: docs er noder. De deltar i grafen, lenkes med
n:-referanser, traverseres av bot og brukere, og oppdateres
der de lever.
3. Synops-noden
Én rot-node som er inngangspunkt til alt systemrelevant:
Synops (collection, visibility: readable)
│
├── Synops CLI (collection)
│ ├── synops-transcribe (cli_tool)
│ ├── synops-render (cli_tool)
│ ├── synops-audio (cli_tool)
│ ├── synops-tasks (cli_tool)
│ ├── synops-snapshot (cli_tool)
│ └── ...
│
├── Synops Arkitektur (collection)
│ ├── Portvokteren (content)
│ ├── Datalaget (content)
│ ├── Noder og edges (content)
│ ├── Trait-systemet (content)
│ └── ...
│
├── Synops Features (collection)
│ ├── Nodereferanser (content)
│ ├── Kanban (content)
│ ├── Lydstudio (content)
│ ├── Universell overføring (content)
│ └── ...
│
├── Synops Retninger (collection)
│ ├── Unix-filosofi (content)
│ ├── Arbeidsflaten (content)
│ ├── Noder er sentrum (content)
│ └── ...
│
├── Arbeidstavlen (collection, kanban-trait)
│ └── (work_items)
│
└── Synops Erfaringer (collection)
├── SpacetimeDB-integrasjon (content)
├── Authentik OIDC (content)
└── ...
visibility: readable — alle autentiserte brukere kan se
systemdokumentasjonen. Skrivetilgang via admin-edge.
4. Hva dette gir
For Claude
synops-context --node-id <synops-uuid>
→ Hele systemdokumentasjonen via grafen
→ Traverserer edges til CLI-verktøy, arkitektur, features
→ Alltid oppdatert — leser fra PG, ikke stale filer
For ny utvikler
Åpner Synops-noden i web → navigerer alt via klikkbare
n:-referanser. Ingen "les CLAUDE.md, deretter docs/arkitektur.md,
deretter docs/retninger/README.md" — bare én node som rot.
For CLAUDE.md
Krymper til:
## Systemkontekst
Synops-noden er n:<uuid>. Start der.
Bruk `synops-context --node-id <uuid>` for full oversikt.
Resten av denne filen er fallback ved PG-nedetid.
CLAUDE.md beholder arkitektur-oversikten som fallback (jf.
synops-snapshot), men den autoritative kilden er grafen.
For oppdateringer
Endre en feature-spec → oppdater noden. Alle n:-referanser
til den fra chat, work items og andre docs peker til oppdatert
versjon. Ingen stale lenker.
5. Innholdsformat
Dokumentasjonsnoder bruker content for ren tekst (søkbar)
og metadata.document for strukturert innhold (TipTap JSON).
Samme format som artikler og notater — redigerbart i editoren
på web, lesbart via CLI.
For lange spesifikasjoner: noden er dokumentet. Ingen separat fil å vedlikeholde.
6. Edge-modell
| Edge | Source → Target | Betydning |
|---|---|---|
belongs_to |
child → Synops | Del av systemdokumentasjonen |
belongs_to |
cli_tool → Synops CLI | Verktøy i verktøykassen |
belongs_to |
feature → Synops Features | Feature-spec |
mentions |
work_item → feature | Arbeid relatert til feature |
mentions |
chat-melding → cli_tool | Diskusjon om verktøy |
source_material |
feature → retning | Feature bygger på retning |
7. Migrering fra docs/
Fase 1: Seed fra markdown
Script leser docs/-filene, oppretter noder med innholdet,
bygger edge-strukturen. Deterministiske UUID-er (uuid5 fra
filsti) for idempotent kjøring.
Fase 2: Dobbeltliv
Markdown-filer og noder lever parallelt. synops-snapshot
genererer markdown fra noder — docs-filene blir output, ikke
input.
Fase 3: Noder er kilden
Docs-filer fjernes eller erstattes med genererte snapshots. Redigering skjer i grafen. CLAUDE.md beholder kun bootstrap-info og fallback.
8. Avgrensning
- CLAUDE.md forsvinner ikke. Den er bootstrap-loader for Claude Code — lastes automatisk og må være en fil i repo. Men den krymper til en peker + fallback.
- Git-historikk bevares. Markdown-filer i docs/ har verdifull git-historikk. De slettes ikke — de fryses og erstattes av genererte snapshots.
- Ikke alt er noder. Kode er kode (Rust, Svelte, SQL). Bare dokumentasjon, spesifikasjoner og prosjektstyring migreres til noder.
9. Utviklingsfaser
- Opprett Synops rot-node og undersamlinger (CLI, Arkitektur, Features, Retninger, Erfaringer).
- Seed
cli_tool-noder fra eksisterende verktøy. - Seed dokumentasjonsnoder fra
docs/-filene. - Oppdater
synops-contexttil å traversere Synops-noden. - Oppdater
synops-snapshottil å generere docs/ fra noder. - Oppdater CLAUDE.md til minimal bootstrap + fallback.
10. Komponenter
| Feature | Rolle |
|---|---|
| Synops-noden | Rot for all systemdokumentasjon |
n:-referanser |
Lenking mellom docs, verktøy, work items |
synops-context |
CLI-traversering av dokumentasjonsgrafen |
synops-snapshot |
Genererer fallback-filer fra noder |
| Editoren (web) | Redigering av docs-noder i nettleseren |
| KanbanTrait | Arbeidstavlen som del av Synops-treet |