--- name: beslutning description: "Registrerer ja eller nei paa en vurdert stilling i den append-only beslutningsloggen, med begrunnelse fra en lukket enum og scoren slik den stod foer mennesket bestemte seg. Paa ja overleveres saken til sak-skillen. Utloeses av registrer en beslutning, ja på denne stillingen, ja pa denne stillingen, nei på denne stillingen, nei pa denne stillingen og korriger en beslutning." triggers: - registrer en beslutning - ja på denne stillingen - ja pa denne stillingen - nei på denne stillingen - nei pa denne stillingen - korriger en beslutning --- # beslutning Skriver én linje til `beslutninger.jsonl` per stilling operatøren har tatt stilling til. Loggen er append-only og **kan ikke migreres** — det som skrives feil i dag, står feil for alltid, og kan bare rettes av en ny linje. All operatørrettet tekst er norsk bokmål. ## Rekkefølgen 1. Stillingen er allerede vurdert av `kandidatvurdering`. Ta vare på `score`, `delscore`, `vekter` og `vekt_hash` fra den kjøringen — de skal inn i posten. 2. Spør operatøren rett ut: **ja eller nei?** Ikke anbefal ut fra scoren. Et tall er et innspill til beslutningen, ikke beslutningen. 3. Be om én til tre årsaker fra den lukkede enumen, og et notat på **høyst femten ord**. 4. Skriv posten. 5. Er svaret `ja`, overlever til `sak`. ## Skriv posten ``` python3 ${CLAUDE_PLUGIN_ROOT}/scripts/beslutninger.py \ --workspace --json '' ``` På Windows heter tolken `python`, ikke `python3`. Feltene er build-brief 5.4: `id`, `dato`, `kilde`, `url`, `tittel`, `arbeidsgiver`, `beslutning`, `arsak`, `notat`, `score_da`, `delscore`, `vekter`, `vekt_hash`, `korrigerer`. Scriptet legger til `type` og `skjema`. `score_da` er scoren **slik den stod før mennesket bestemte seg**. Den er hele læringssignalet: en høy score paret med et nei er nøyaktig det avviket M6 leter etter. Regn den aldri ut på nytt, og rund den ikke av. `dato` bærer alltid UTC-forskyvning, som ellers i denne pluginen. Blir posten avvist, navngir avvisningen feltet. Rett feltet og skriv på nytt — en avvist post ligger ikke halvveis på disken, valideringen kjører før fila åpnes. ## Årsakene er tolv, og ikke flere Hele enumen med norsk forklaring står i `${CLAUDE_PLUGIN_ROOT}/skills/beslutning/references/arsak.md`. Les den før du foreslår en årsak. Passer ingen, er svaret `annet` pluss et presist notat — ikke en trettende årsak. En årsak utenfor enumen er en kategori `laering` aldri kan telle, verken for eller mot. ## På `ja`: overlever til sak Et `ja` skaper en sak; et `nei` skaper ingenting utover loggposten. Sak-id-en utledes av beslutningen, ikke av skjønn: måneden i `dato`, arbeidsgiveren og tittelen, foldet til ASCII. `sak_id_for(posten)` i `${CLAUDE_PLUGIN_ROOT}/scripts/beslutninger.py` gir den. Beslutningen speiles så inn i saksloggen med `speil_i_sakslogg(...)` fra samme modul. **Dette steget hoppes aldri over.** Uten den speilede posten står saken fast i `vurderer` for alltid — det er den ene posten som tar den til `soker`. Deretter overtar `sak`: mappa, saksfila fra malen, og oppdateringen av hurtigbufferen. ## En retting er en ny linje Rediger aldri en linje som er skrevet. En korrigering er en egen post som navngir beslutningen den retter: ``` python3 ${CLAUDE_PLUGIN_ROOT}/scripts/beslutninger.py \ --workspace --korriger --json '' ``` Den kan rette kilde, url, tittel, arbeidsgiver, beslutning, årsak og notat. Den kan **ikke** rette `score_da`: det tallet er en måling av hva scoren var da valget ble tatt, og en måling endres ikke av at man senere mener noe annet. Begge linjene blir liggende. Det operatøren først mente er en del av materialet, og en logg som slettet det ville vært et dårligere læringssignal enn en som beholder begge. ## 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 posten som ble skrevet ut. Ikke skriv linja for hånd inn i fila — da omgås valideringen, og en ugyldig linje i en append-only logg kan ingen fjerne.