paper/diagnose.py takes inflow, capacity, backlog and target time per
link and returns utilization, throughput time and backlog growth per
link, the binding link, the type of measure in Theory of Constraints
order (exploit, subordinate, elevate) and, for the binding link, the
capacity needed under the coordinated rule from sim.py, sized on the
forecast flow rather than the queue.
The example file holds the stylized month-24 values from the coordinated
run and reproduces section 9.5 (utilization 1.28, +19 % capacity);
checked against simulate_endo("koord"), which orders +19 % in month 24.
sim.py and paper/data/ are unchanged. Time paths and the stability check
for the police rule are not in this version.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
26 lines
2.7 KiB
Markdown
26 lines
2.7 KiB
Markdown
# 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`) is CC BY 4.0 (`LICENSE-CC-BY-4.0.txt`); code and data (`paper/sim.py`, `paper/diagnose.py`, `paper/eksempel_domstol.json`, `requirements.txt`, `paper/data/`) are MIT (`LICENSE`). New files follow the same split.
|
|
- Never commit anything under `private/` (working documents: peer review, change list, social-media drafts, original source zip).
|
|
|
|
## 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).
|
|
- 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 57 pages, notat 2, karusell 16, no undefined references). Build in a scratch copy of `paper/` to keep aux files out of the repo.
|
|
|
|
## Workflow
|
|
- Repository starts private under `ktg/`; moving it to `open/` is the operator's decision.
|
|
- Run the repo-standard skill before publishing.
|