den-dynamiske-rettsstaten/CHANGELOG.md
Kjell Tore Guttormsen 2badc25e51
feat(forlop): start the time course in the backlog given in the file
forlop.py now puts the backlog from the input file straight into the
model at the time the numbers apply, instead of letting the model build
it up itself (which reached at most 15 months and left larger backlogs
"ikke regnet"). It carries its own copy of the simulate_endo loop
(simuler, policies koord and sched) and checks on every run that the
copy matches sim.py bit for bit. sim.py and paper/data are untouched
(22/22 data files identical after a fresh run).

The example file gives the same numbers as before (+19 %, +12 %, 1,31;
8,3 / 0,74 / 1,10 / +31 % / 3,5; 68,7 / 0,65 / 1,26). A copy with
backlog 3000 now gives a course starting at 3 000 (+119 %). The course
is not computed when crime falls below 0,80 or police effort below 0,50
in the model while the backlog is cleared.

Independent review before commit: 8 findings, 7 fixed (the eighth is an
older column-width issue for seven-digit numbers).

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-10 18:01:55 +01:00

6.4 KiB
Raw Blame History

Changelog

All notable changes to this project will be documented in this file.

2026-11-10 — forløpet starter i dagens restanse

  • paper/forlop.py legger nå restansen i fila rett inn i modellen, så forløpet starter i restansen du oppgir. Før måtte modellen bygge opp restansen selv, og var den større enn modellen rakk på 15 måneder, ble forløpet ikke regnet. En kopi av eksempelfila med restanse 3 000 ga før «ikke regnet» og gir nå et forløp som starter i 3 000 (119 % mer kapasitet i første vedtak, som i diagnose.py). En restanse under målet legges også inn som den er, ned til modellens minste restanse.
  • Eksempelfila gir samme tall som før: 19 % nå, 12 % året etter og kapasitet 1,31 til slutt. For de norske tallene starter fengselsforløpet nå i køen på 596 dommer i stedet for i 686 (61 over målet på 625). Første vedtak er fortsatt 15 % og neste 7 %; høyeste kapasitet blir 22 % over utgangsnivået (før 23 %).
  • paper/sim.py er ikke endret, og figurdataene er de samme (22 av 22 filer byte for byte like etter ny kjøring). For å kunne legge inn restansen har forlop.py sin egen utgave av regnestegene for den koordinerte regelen og for kjøringen uten tiltak. Hver kjøring kontrollerer at den gir nøyaktig samme svar som sim.py når restansen ikke legges inn.
  • Nye forbehold i utskriften: når restansen er større enn modellens forhistorie kan forklare, når kriminaliteten i modellen faller under nivået før økningen mens restansen avvikles, og hvor sammenligningen uten tiltak starter. Faller kriminaliteten i modellen under 0,80 eller politiets innsats under 0,50 av nivået før økningen mens restansen avvikles, regnes forløpet ikke.

2026-11-10 — forløp over tid med egne tall

  • Nytt skript paper/forlop.py: leser samme fil som diagnose.py, sjekker om styringen tåler sin egen forsinkelse, og viser måned for måned hva som skjer når anbefalingen følges, sammenlignet med å ikke gjøre noe i kjeden. Det viser også hva tiltaket gjør med resten av kjeden: politiets innsats, andelen ledet utenom, og om skranken flytter seg til leddene etter. Eksempelfila gjenskaper avsnitt 9.5 (19 % nå, 12 % året etter, kapasitet 1,31 til slutt). Bare leddet som binder, har kø i modellen. Skriptet regner ikke forløpet når styringen er ustabil eller for nær grensen, eller når restansen i fila er større enn modellen rekker å bygge opp før første vedtak.
  • paper/eksempel_domstol.json har fått feltet "styring" (forsinkelse og reaktivitet). diagnose.py gir samme svar som før, og avviser nå true og false der det skal stå tall.
  • README sier nå nøkternt hvem som har gjort hva: forfatteren ga temaet, utgangspunktet og kommentarer underveis, og kunstig intelligens laget i praksis teksten, matematikken, simuleringene og koden. Forfatteren har ikke selv etterprøvd all matematikken.
  • paper/sim.py: fire henvisninger i kommentarer og én overskrift i utskriften viste til gamle lignings- og tabellnumre. De er rettet til (12), (28) og tabell 3. Datafilene er uendret (22 av 22 byte for byte like).

2026-11-10 — kvalitetssjekk før publisering

  • Rettet fengselsanslaget i paper/norge_2025.json: avgangen var regnet fra «saker håndtert» og er nå regnet fra iverksatte saker (Kriminalomsorgen, Årsrapport 2025, s. 70). Køen til fengsel er skilt fra køen til fotlenke. Restansen i politiet er hentet direkte fra POD-rapporten (31 908 mot 30 295), og sidetallene til Domstoladministrasjonens årsrapport er rettet (s. 15 og 18).
  • Nytt resultat av den første norske diagnosen: fengsel og politi og påtale ligger likt (utnyttelse 1,09), og verktøyet peker på fengsel fordi køen der vokser raskest. Forskjellen er mindre enn usikkerheten i tallene. README sier dette og har flere forbehold.
  • paper/diagnose.py: forståelige feilmeldinger på norsk ved feil i inndata, samme terskel for utvidelse som i sim.py, melding når to ledd har samme utnyttelse, og riktigere tekst når ingen prognose er oppgitt, når skranken er første ledd, og når restansen vokser uten at noe ledd er over full utnyttelse.
  • Notatet (nå 58 sider): rettet formelen for politimetning i (13′), som manglet en faktor og bare stemte i referanselikevekten, laveste tillit i vedlegg C (0,33, ikke 0,47), ni tall som var avrundet eller gjengitt feil, én setning om følsomhet som var feil for en av parameterne, og sammendragets påstand om at mer politiinnsats ikke gir færre lovbrudd. Nedbyggingsregelen er beskrevet slik koden har den. Tre referanser er rettet og én lagt til.
  • Sammendraget og lysarkene: «ikke testet mot norske data» er erstattet med det som stemmer nå, lysark 8 beskriver mekanismen som i notatet, og lysark 16 oppgir adressen til repoet.

2026-11-10 — flaskehalsdiagnose med egne tall

  • Nytt skript paper/diagnose.py (første versjon): fra innstrømning, kapasitet, restanse og mål per ledd til leddet som binder, tiltakstypen og kapasitetsbehovet, etter notatets metode. Eksempelfila gjenskaper avsnitt 9.5. Forløpet over tid er ikke med ennå.
  • Første diagnose på offentlige norske tall (paper/norge_2025.json, med kilde per tall). Resultatet i denne første utgaven (politi og påtale 1,09, fengsel 1,06, tingrett 1,04) bygde på et feil fengselsanslag og er rettet i oppføringen over. diagnose.py godtar nå akseptabel restanse og saker som avsluttes uten behandling.

2026-11-10 — PDF-ene bygd på nytt fra kilden

  • Notatet (57 sider), sammendraget og lysarkene er bygd fra LaTeX-kilden i repoet og erstatter de første PDF-ene.
  • Notatet leder med modellen som et verktøy for å finne løsninger og har et gjennomregnet eksempel fra tall til anbefaling (avsnitt 9.5).
  • Nytt vedlegg C kobler hver ligning til koden i sim.py.
  • «Forholdet til tidligere arbeid» viser hva som finnes fra før, og hva som er nytt.
  • Rettet: intervallet for elastisiteten mellom politiinnsats og kriminalitet er nå gjengitt etter Chalfin og McCrary (2017).
  • Lysarkene (16) viser verktøyet og eksempelet før funnene. Arket om et fullt ledd i kjeden er erstattet av eksempelet.

2026-11-10 — konseptnotat versjon 2

  • Første publiserte versjon i repoet: konseptnotatet (49 sider), sammendraget og lysarkene som PDF, LaTeX-kilden og simuleringen sim.py med figurdata.
  • Versjon 2 kaller arbeidet et konseptnotat, presiserer at straffebud og strafferammer ligger fast, gjør domstolen til et gjennomregnet eksempel, legger til en avdempet styringsregel (regime E) og har et nytt avsnitt 10 om begrensninger og en veiplan.