Spec: feature feedback — levende spesifikasjoner med brukertilbakemelding

This commit is contained in:
vegard 2026-03-18 01:38:11 +00:00
parent 20b07131da
commit 88f51dc487

View file

@ -0,0 +1,118 @@
# Feature Feedback — Levende spesifikasjoner med brukertilbakemelding
## Konsept
Hver feature har to koblede noder:
1. **Spec-node** (`node_kind: 'content'`, `metadata.feature_spec: true`) —
markdown-spesifikasjon synlig for brukerne
2. **Feedback-chat** (`node_kind: 'communication'`) — chattråd der brukere
gir tilbakemelding, foreslår endringer, rapporterer bugs
Koblet via `discusses`-edge: `feedback-chat --discusses--> spec-node`.
Spec-noden vises som første/pinned melding i chatten (eller som eget panel
i arbeidsflaten ved siden av chatten).
## Prinsipp
**Alle features er gjenstand for tilbakemelding.** Ingen feature er "ferdig"
— den har bare en gjeldende spec som brukerne kan påvirke.
## Datamodell
```
spec-node (content, feature_spec: true)
├── belongs_to → samling (f.eks. "Synops Platform")
└── <-- discusses -- feedback-chat (communication)
├── owner → feature-eier (utvikler/admin)
└── member_of → relevante brukere/team
```
### Spec-noden
- `node_kind: 'content'`
- `metadata.feature_spec: true`
- `metadata.feature_key: 'lydstudio'` (unik nøkkel for kobling til kode)
- `content`: markdown-spesifikasjon (samme format som docs/features/*.md)
- `visibility: 'readable'` — alle innloggede brukere kan lese
### Feedback-chatten
- Standard kommunikasjonsnode
- Claude er `member_of` og kan delta i diskusjonen
- Brukerroller: alle med tilgang til samlingen kan delta
## Brukeropplevelse
### For brukere
1. I arbeidsflaten eller mottaket: se liste over features med "Gi feedback"-knapp
2. Klikk → åpner feedback-chatten med spec-noden synlig øverst
3. Skriv kommentar, forslag, bug-rapport — vanlig chat
4. Claude kan svare, oppsummere, og foreslå spec-endringer
### For utviklere/Claude
1. Les feedback-chatten for å forstå brukerbehov
2. Oppdater spec-noden basert på feedback
3. Commit oppdatert spec til disk (md-fil) for kodebruk
## Synk: database ↔ disk
Feature-specs lever to steder:
- **Database** (spec-node): autoritativ for brukere og feedback
- **Disk** (`docs/features/*.md`): autoritativ for kode og Claude Code
### DB → disk (eksport)
`GET /query/feature_specs` returnerer alle spec-noder som markdown.
Periodisk jobb eller manuell trigger: maskinrommet skriver spec-noder
til `docs/features/` med frontmatter:
```markdown
---
feature_key: lydstudio
node_id: 019cfda5-...
last_synced: 2026-03-18T12:00:00Z
---
# Lydstudio
...
```
### Disk → DB (import)
Ved oppstart eller manuell trigger: maskinrommet leser `docs/features/*.md`,
matcher på `feature_key`, og oppdaterer spec-noden hvis disk-versjonen er nyere
(basert på git commit-tidspunkt vs node updated_at).
### Konflikthåndtering
- Disk vinner ved kodeendringer (utvikler oppdaterer spec)
- DB vinner ved bruker-feedback som Claude har integrert
- Ved ekte konflikt: opprett merge-node med begge versjoner, flagg for manuell løsning
## Claude sin rolle
Claude er deltaker i feedback-chatten og kan:
1. **Oppsummere** tilbakemeldinger: "3 brukere har bedt om X"
2. **Foreslå** spec-endringer basert på feedback
3. **Integrere** godkjente endringer i spec-noden
4. **Synke** oppdatert spec til disk (md-fil) og committe
Trigger: `agent_respond`-jobben (eksisterende mekanisme) eller
dedikert `feature_feedback_digest`-jobb som kjører periodisk.
## Implementering
### Fase 1: Grunnlag
- Opprett spec-noder for eksisterende features (migrer fra docs/features/*.md)
- Opprett feedback-chat per feature
- Vis spec + chat i frontend
### Fase 2: Synk
- Eksport-endepunkt (`GET /query/feature_specs`)
- Import ved oppstart
- Periodisk synk-jobb
### Fase 3: Claude-integrasjon
- Claude som deltaker i feedback-chatter
- Digest-jobb som oppsummerer ny feedback
- Automatisk spec-oppdatering ved godkjenning
## Bygger på
- Kommunikasjonsnoder (fase 5)
- Claude som chat-deltaker (fase 8 / `docs/infra/claude_agent.md`)
- Arbeidsflaten (fase 19) — spec + chat som to paneler side om side