# Feature: Responskvalitet (intelligens og innsats)

## Konsept

Hvert bot-svar har to synlige dimensjoner: **intelligens** (hvilken
modell) og **innsats** (hvor grundig). Brukeren ser en diskret
indikator og har én knapp for å be om bedre svar.

## Nivåer

### Intelligens (modellvalg)

| Nivå | Indikator | Modell | Bruk |
|------|-----------|--------|------|
| 1 | `🧠●○○` | Haiku | Klassifisering, triage, enkle oppslag |
| 2 | `🧠●●○` | Sonnet | Chat-svar, oppsummering, daglig bruk |
| 3 | `🧠●●●` | Opus | Arkitektur, analyse, koderevisjoner |

### Innsats (resonnering)

| Nivå | Indikator | Effort | Bruk |
|------|-----------|--------|------|
| 1 | `💪●○○` | low | Kort svar, ja/nei, lookup |
| 2 | `💪●●○` | medium | Normal respons, noe resonnering |
| 3 | `💪●●●` | high | Grundig analyse, lang gjennomgang |

## Brukeropplevelse

### Indikator

Diskret visning i bot-svarens header:

```
┌──────────────────────────────────────┐
│ @bot  🧠●●○ 💪●○○                 [↑] │
│                                      │
│ Click-through rate — andel som       │
│ klikker på en lenke.                 │
└──────────────────────────────────────┘
```

### ↑-knappen

Én knapp. Trykk = bedre svar. Ingen meny, ingen konfigurasjon.

```
Første svar:    🧠●○○ 💪●○○  [↑]
Trykk ↑:        🧠●●○ 💪●●○  [↑]   (nytt svar erstatter)
Trykk ↑ igjen:  🧠●●● 💪●●●  [↑ dimmet]  (maks)
```

Knappen bumper begge dimensjoner ett nivå. Ved maks er den
dimmet/deaktivert.

### Ingen ↓-knapp

Ingen ber om dårligere svar. Systemet starter lavt,
brukeren eskalerer ved behov. Kostnad øker bare når noen
faktisk vil ha mer.

## Automatisk nivåvalg

Portvokteren velger startnivå basert på heuristikker:

| Signal | Intelligens | Innsats |
|--------|-------------|---------|
| Kort spørsmål (< 20 ord) | 1 | 1 |
| Normalt spørsmål | 2 | 2 |
| Refererer til arkitektur/kode | 2 | 3 |
| Eksplisitt "grundig"/"detaljert" | 3 | 3 |
| Work item med tag "bug" | 2 | 2 |
| Work item med tag "feature" | 2 | 3 |

Brukeren kan alltid overstyre med ↑-knappen.

## Metadata på svar-noden

```jsonc
{
  "bot_response": true,
  "intelligence": 2,
  "effort": 2,
  "model": "claude-sonnet-4-6",
  "tokens_in": 1240,
  "tokens_out": 580,
  "retry_of": null
}
```

Ved ↑-bump:
```jsonc
{
  "bot_response": true,
  "intelligence": 3,
  "effort": 3,
  "model": "claude-opus-4-6",
  "tokens_in": 2100,
  "tokens_out": 1450,
  "retry_of": "uuid-av-forrige-svar"
}
```

## Edge-modell

```
nytt svar ──retry_of──→ forrige svar (erstattet)
```

Det nye svaret tar plassen til det gamle i samtalen — det
dukker **ikke** opp som en ny melding under. Samtalen forlenges
ikke. Forrige svar får `metadata.replaced: true` og er skjult
som default, men tilgjengelig via en diskret "vis forrige
versjon"-lenke. Som en revisjon, ikke en ny melding.

Visuelt:
```
Før ↑:
  Bruker: "Forklar publiseringsflyten"
  Bot:    "Kort svar..."  [↑]

Etter ↑:
  Bruker: "Forklar publiseringsflyten"
  Bot:    "Grundig svar..."  [↑ dimmet]
          (vis forrige versjon)
```

Ingen ekstra meldinger. Samtalen holder seg ryddig.

## CLI-integrasjon

Portvokteren sender modellvalg til `synops-respond`:

```bash
synops-respond \
  --communication-id <uuid> \
  --message-id <uuid> \
  --model claude-opus-4-6 \
  --effort high
```

`synops-respond` mapper `--model` til Claude CLI sitt
`--model`-flagg og `--effort` til prompt-strategi
(kort/normal/grundig systemprompt).

## cli_tool-noder og default-nivå

Hvert CLI-verktøy har default intelligens/innsats i sin
`cli_tool`-node metadata:

```jsonc
{
  "binary": "synops-respond",
  "default_intelligence": 2,
  "default_effort": 2
}
```

Oppdaterbar i PG uten rekompilering.

## Bygger på
- `docs/infra/robusthet.md` — LLM fallback-kjede
- `docs/concepts/arbeidstavlen.md` — @bot-konvensjonen
- `docs/retninger/unix_filosofi.md` — generisk dispatch, cli_tool-noder
