Spesifiser selvdokumenterende system: Synops dokumenterer seg selv som noder
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>
This commit is contained in:
parent
91a80d49a6
commit
c9f7b8ce17
2 changed files with 177 additions and 1 deletions
|
|
@ -44,7 +44,8 @@ CLAUDE.md er eneste startdokument. Alt annet ligger under `docs/`:
|
||||||
- `docs/concepts/` — Brukeropplevelser/produktområder:
|
- `docs/concepts/` — Brukeropplevelser/produktområder:
|
||||||
- `studioet.md`, `møterommet.md`, `redaksjonen.md`, `podcastfabrikken.md`,
|
- `studioet.md`, `møterommet.md`, `redaksjonen.md`, `podcastfabrikken.md`,
|
||||||
`kunnskapsgrafen.md`, `valgomaten.md`, `den_asynkrone_gjesten.md`,
|
`kunnskapsgrafen.md`, `valgomaten.md`, `den_asynkrone_gjesten.md`,
|
||||||
`publisering.md`, `adminpanelet.md`, `arbeidstavlen.md`
|
`publisering.md`, `adminpanelet.md`, `arbeidstavlen.md`,
|
||||||
|
`selvdokumenterende_system.md`
|
||||||
- `docs/features/` — Tekniske byggeklosser:
|
- `docs/features/` — Tekniske byggeklosser:
|
||||||
- Se individuelle filer for chat, kanban, kalender, meldingsboks,
|
- Se individuelle filer for chat, kanban, kalender, meldingsboks,
|
||||||
kunnskapsgraf, whiteboard, live transkripsjon, ressursforbruk, m.fl.
|
kunnskapsgraf, whiteboard, live transkripsjon, ressursforbruk, m.fl.
|
||||||
|
|
|
||||||
175
docs/concepts/selvdokumenterende_system.md
Normal file
175
docs/concepts/selvdokumenterende_system.md
Normal file
|
|
@ -0,0 +1,175 @@
|
||||||
|
# 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:
|
||||||
|
|
||||||
|
1. **Rotner.** Koden endres, docs oppdateres ikke. Ingen kobling
|
||||||
|
mellom spec og implementasjon.
|
||||||
|
2. **Frakoblet.** Docs kan ikke lenkes fra chat, work items eller
|
||||||
|
andre noder via `n:`-referanser.
|
||||||
|
3. **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
|
||||||
|
```bash
|
||||||
|
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:
|
||||||
|
```markdown
|
||||||
|
## 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
|
||||||
|
|
||||||
|
1. Opprett Synops rot-node og undersamlinger (CLI, Arkitektur,
|
||||||
|
Features, Retninger, Erfaringer).
|
||||||
|
2. Seed `cli_tool`-noder fra eksisterende verktøy.
|
||||||
|
3. Seed dokumentasjonsnoder fra `docs/`-filene.
|
||||||
|
4. Oppdater `synops-context` til å traversere Synops-noden.
|
||||||
|
5. Oppdater `synops-snapshot` til å generere docs/ fra noder.
|
||||||
|
6. 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 |
|
||||||
Loading…
Add table
Reference in a new issue