den-dynamiske-rettsstaten/CLAUDE.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

3.8 KiB

den-dynamiske-rettsstaten

Context

Concept note (Norwegian, LaTeX) and its simulation code. The principle: enforcement effort should track how much, and how seriously, laws are actually broken. Published as open, non-commercial material. Readers are Norwegian, so README and paper are in Norwegian (bokmål); CLAUDE.md and code comments may stay as they are.

Stack

  • paper/sim.py: Python 3, numpy + scipy (pinned in requirements.txt). Writes paper/data/*.dat, which pgfplots in the LaTeX source reads.
  • paper/*.tex: LaTeX. main.tex and notat.tex build with pdflatex, karusell.tex with xelatex (font Inter from TeX Live). main.tex = the note (inputs part1-part4, refs), notat.tex = 2-page summary, karusell.tex = slides. Shared preamble.tex. Bibliography is a hand-written thebibliography in refs.tex.
  • pdf/: the published PDFs. They are build output committed on purpose; rebuild and replace them together with source changes.

Conventions

  • The core sentence must be quoted verbatim everywhere: «Innsatsen for å håndheve lover og regler bør løpende stå i forhold til hvor mye, og hvor alvorlig, de faktisk brytes.» Short form of the clarification: «Straffebud og strafferammer ligger fast.»
  • Any change to sim.py must keep paper/data/ byte-identical unless the change is meant to alter results; then text, figures and PDFs change in the same commit.
  • Licensing is split: text (pdf/, paper/*.tex, README.md, CHANGELOG.md, CLAUDE.md) is CC BY 4.0 (LICENSE-CC-BY-4.0.txt); code and data (paper/sim.py, paper/diagnose.py, paper/forlop.py, paper/eksempel_domstol.json, paper/norge_2025.json, requirements.txt, paper/data/) are MIT (LICENSE). New files follow the same split.
  • Never commit working documents; private/ is ignored for that purpose.

Commands

  • Setup: python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
  • Run simulation (about 2 min, from paper/): ../.venv/bin/python sim.py
  • Bottleneck diagnosis from own numbers (stdlib only, from paper/): python3 diagnose.py eksempel_domstol.json; must reproduce section 9.5 (utilization 1,28, +19 % capacity). python3 diagnose.py norge_2025.json must match the table in README (1,09 / 1,04 / 0,88 / 1,09).
  • Time course and stability check from own numbers (needs the venv, from paper/): ../.venv/bin/python forlop.py eksempel_domstol.json; must reproduce section 9.5 and table 10 (critical delay 7,2; +19 % now, +12 % after 12 months, capacity 137,9 = 1,31; with measures 8,3 / 0,74 / 1,10 / +31 % / 3,5; without 68,7 / 0,65 / 1,26). A copy of the example with restanse 3000 for Domstol must give a course that starts at 3 000 (first decision +119 %, as diagnose.py). forlop.py imports sim.py and must never require a change there. It has its own copy of the simulate_endo loop (simuler, policies koord and sched only) so that the backlog in the file can be put in directly; every run checks that the copy matches simulate_endo bit for bit, so a change to simulate_endo must be mirrored in simuler.
  • Reproduction check after a run: git status paper/data shows no changes (verified 2026-11-10: 22/22 files identical with Python 3.14.0, numpy 2.5.4, scipy 1.18.1)
  • LaTeX build (from paper/, TeX Live 2026 in /Library/TeX/texbin): pdflatex main.tex and pdflatex notat.tex three times each, xelatex karusell.tex twice; copy to pdf/ (verified 2026-11-10: main 58 pages, notat 2, karusell 16, no undefined references). Build in a scratch copy of paper/ to keep aux files out of the repo, and give each run a time limit: one pdflatex run has been seen to hang.

Workflow

  • Published at https://git.fromaitochitta.com/open/den-dynamiske-rettsstaten. Visibility, description and moves are the operator's decisions.
  • Run the repo-standard gate before pushing changes to README.md or the files the standard requires.