--- name: sak description: "Oppretter og vedlikeholder saksmapper i arbeidsmappa: sak-id, saksfila fra malen, en tom kontakter.md og den append-only hendelsesloggen. Delegerer hvert statusspoersmaal til statusmaskinen og utleder aldri status i prosa. Utloeses av opprett en sak, lag sak for denne stillingen, hva er status på saken, hva er status pa saken, legg til en hendelse i saken og oppdater saksmappa." triggers: - opprett en sak - lag sak for denne stillingen - hva er status på saken - hva er status pa saken - legg til en hendelse i saken - oppdater saksmappa --- # sak Eier `saker//` i arbeidsmappa. Skriver saksfila, den tomme `kontakter.md` og hendelsesloggen — og **utleder aldri status selv**. Statusmaskinen er et script, ikke en vurdering. All operatørrettet tekst er norsk bokmål. ## Løs opp arbeidsmappa først Samme rekkefølge som overalt ellers: `--workspace`, så `JOBBSOK_WORKSPACE`, så en `workspace:`-linje i `jobbsok.conf` under plugin-datamappa. Svarer ingen av de tre, si det og be om stien. Ingen hjemmekatalog gjettes. ## Sak-id Formatet er `YYYY-MM--`, og året og måneden er den måneden saken opprettes. Bygg den aldri for hånd — kall `sak_id(...)` fra `${CLAUDE_PLUGIN_ROOT}/scripts/jobbsok_lib/paths.py`. Den folder `æ`, `ø` og `å` til ASCII og normaliserer først, slik at et navn skrevet dekomponert på macOS ikke blir en annen mappe enn det samme navnet skrevet komponert. Finnes id-en fra før, er det samme sak. En sak som starter på nytt er en **ny** sak med ny id — statusmaskinen nekter å åpne en avsluttet sak igjen. ## Opprett saken 1. Lag `saker//`. 2. Skriv `sak.md` fra `${CLAUDE_PLUGIN_ROOT}/templates/sak.md`. Bytt ut hver `{{...}}`-plassholder. Det som ikke er kjent, skrives `null` — aldri et gjett, og aldri en tom verdi. 3. Lag en tom `kontakter.md`. Den er tom med vilje: den fylles av `korrespondanse` og tømmes av `datahygiene`. 4. Lag `logg.jsonl` og legg til `opprettet` som første hendelse. 5. Kjør oppdateringen under. Frontmatteren er kontrakten fra build-brief 5.2 og har alle tretten nøklene, også de som er `null`. `status` og `ventende_part` står som `vurderer` og `meg` i malen fordi det er nøyaktig det en sak med bare `opprettet` utleder — ikke fordi de er skrevet av skjønn. Kroppen er operatørens. Fyll «Hvorfor denne» fra beslutningens begrunnelse, ikke fra annonsens egen selvbeskrivelse. ## Hendelsesloggen `logg.jsonl` er append-only. En retting er en **ny** linje, aldri en redigering av en gammel. Én hendelse er én linje: ```json {"ts": "2026-09-03T12:00:00+02:00", "hendelse": "soknad_sendt", "kilde": "e-post", "ref": "soknad-v1.md", "notat": null} ``` `ts` bærer alltid UTC-forskyvning. Norsk lokaltid gjentar 02:30 den siste søndagen i oktober, og uten forskyvningen er to hendelser en time fra hverandre umulige å sortere i etterkant. Vokabularet er lukket på elleve hendelser. Hele lista, tilstandene og de tre stillhetsreglene står i `${CLAUDE_PLUGIN_ROOT}/skills/sak/references/status.md`. Les den før du skriver en hendelse du ikke har skrevet før. En hendelse utenfor lista blir avvist ved navn når loggen leses — den blir ikke stille droppet. Beslutningen `ja` speiles inn i saksloggen av `beslutning` som en beslutnings-post, ikke som en hendelse. Uten den kommer saken aldri videre fra `vurderer`. ## Etter hver tilføyde hendelse: oppdater hurtigbufferen Dette steget hoppes aldri over: ``` python3 ${CLAUDE_PLUGIN_ROOT}/scripts/sak_status.py \ --workspace --sak --oppdater ``` Den skriver tilbake nøyaktig fire nøkler i frontmatteren — `status`, `ventende_part`, `sist_aktivitet` og `neste_frist` — og rører ingenting annet. Frontmatteren er en hurtigbuffer over loggen; en hurtigbuffer ingen oppdaterer er bare permanent avvik med bedre manerer. En utledning som er tom overskriver ikke det som står der. `neste_frist` i `vurderer` og `soker` er søknadsfristen, som er operatørens egne data og som ingen maskin kan regne ut på nytt. ## Statusspørsmål besvares av scriptet Spør operatøren om status, ventende part, frist eller stillhet, så **kjør scriptet og gjengi det**. Ikke les loggen og resonner deg fram til et svar: ``` python3 ${CLAUDE_PLUGIN_ROOT}/scripts/sak_status.py \ --workspace --today --format json ``` På Windows heter tolken `python`, ikke `python3`; alt annet i kommandoen er likt. `--check` svarer på et annet spørsmål: den avslutter med kode 1 hvis en hurtigbuffer er uenig med loggen, og navngir saken. Er svaret 1, kjør `--oppdater` og si hva som flyttet seg — ikke rett i `sak.md` for hånd. Står det `ingen innkommende hendelse er registrert`, gjengi det som det er. Det betyr ikke at ingen har svart; e-postserveren er utsatt, og fraværet av en registrering er ikke et fravær i verden. ## Grenser - Ingen overgang utledes av tonen i en e-post. En tilstand endrer seg på en eksplisitt bekreftelse fra operatøren eller på et entydig strukturelt signal. - Ingenting eskalerer, sendes eller lukkes av seg selv. - Ingenting skrives utenfor arbeidsmappa. ## Uten verktøyserveren Er `jobbsok-tools` ikke tilgjengelig, degraderer skillen i stedet for å stoppe: be operatøren kjøre kommandoene over fra kommandolinja, og les svaret som ble skrevet ut. Ikke regn ut status selv som en mellomløsning — da er den ikke lenger reproduserbar, og hele poenget med å ha en statusmaskin er borte.