# Statusmaskinen: tilstander, hendelser og stillhet Referanse for `sak`. Alt her er implementert i `${CLAUDE_PLUGIN_ROOT}/scripts/sak_status.py` og utledes derfra — denne fila beskriver, den bestemmer ikke. Er de to uenige, er scriptet fasit og uenigheten en feil som skal meldes. ## Tilstander Hovedkjeden, i rekkefølge: | Tilstand | Betyr | Ventende part ved ankomst | |---|---|---| | `vurderer` | Saken finnes, beslutningen er ikke tatt | `meg` | | `soker` | Beslutningen er `ja`, søknaden er ikke sendt | `meg` | | `sendt` | Søknaden er sendt | `dem` | | `dialog` | Det er en toveis samtale i gang | veksler | | `intervju` | Intervju er avtalt eller gjennomført | `ingen` / `dem` | | `tilbud` | Tilbud er mottatt | `meg` | | `avsluttet` | Operatøren har lukket saken | `ingen` | To terminale sidetilstander: `avslag` og `trukket`. Ingenting går ut av en terminal tilstand. En hendelse etter `avsluttet`, `avslag` eller `trukket` er en feil, ikke en gjenåpning: en sak som starter på nytt er en ny sak med ny sak-id. ## Hendelser — lukket vokabular på elleve Build-brief 5.3. Ingen tolvte finnes, og en hendelse utenfor lista blir avvist ved navn når loggen leses. | Hendelse | Skriver seg fra | Lander på | |---|---|---| | `opprettet` | saken lages | `vurderer` | | `soknad_sendt` | søknaden er sendt | `sendt` | | `bekreftelse_mottatt` | automatisk kvittering | `sendt` | | `henvendelse_mottatt` | de tok kontakt | `dialog` | | `svar_sendt` | operatøren svarte | `dialog` | | `intervju_avtalt` | tidspunkt er satt | `intervju` | | `intervju_gjennomfort` | intervjuet er holdt | `intervju` | | `tilbud_mottatt` | tilbud foreligger | `tilbud` | | `avslag` | de sa nei | `avslag` | | `trukket` | operatøren trakk seg | `trukket` | | `stille` | operatøren noterer at det er stille | ingen overgang | `stille` flytter ingenting. Den er en notering, ikke en tilstandsendring, og den legges bare til av operatøren — ingenting i denne pluginen skriver den av seg selv. ## To poster som ikke er hendelser To rader i overgangstabellen kommer ikke fra hendelses-enumen, og de skrives med `type` i stedet for `hendelse`: | Post | Form i saksloggen | Lander på | |---|---|---| | Beslutning `ja` | `{"type": "beslutning", "beslutning": "ja", ...}` | `soker` | | Operatøren lukker | `{"type": "utfall", "utfall": "avsluttet", ...}` | `avsluttet` | Begge er poster build-brief 5.7 uansett speiler inn i saksloggen. `beslutning` skriver den første; uten den kommer ingen sak videre fra `vurderer`. En `beslutning: nei` er ingen overgang — et nei skaper ingen sak. ## Stillhet: tre regler Terskler i dager, målt mot den datoen som faktisk står i loggen: | Flagg | Regel | Terskel | |---|---|---| | `sendt_14` | `sendt` uten noe innkommende | 14 dager | | `dialog_7` | `dialog` med ventende part `dem` uten noe innkommende | 7 dager | | `intervju_10` | intervju gjennomført uten utfall | 10 dager | **En automatisk kvittering er ikke kontakt.** `bekreftelse_mottatt` teller ikke som innkommende og nullstiller derfor ikke stillhetsklokka. Det er hele grunnen til at den står utenfor lista over innkommende hendelser. `neste_frist` som statusmaskinen utleder, er den tidligste terskeldatoen blant reglene som gjelder nå — altså **datoen saken går stille**. I `vurderer` og `soker` gjelder ingen regel, og da står operatørens egen søknadsfrist urørt i frontmatteren. ## «Ingen innkommende registrert» er ikke «ingen har svart» Rapporterer scriptet at ingen innkommende hendelse er registrert, er det et utsagn om denne loggen og ikke om verden. E-postserveren er utsatt til M4, så ingenting leser innboksen ennå. Gjengi merknaden som den er, og ikke presenter saken som stille på grunnlag av den.