Everything is a plain script. No service, no database, no build step.
``bash python3 scripts/fetch_price_history.py --region eu # 90 days per item, ~1 min python3 scripts/price_bands.py --write # re-value the plan across all of it ``
--only-missing skips items already on disk. price_bands.py without --write just prints the band and the largest exposures.
``bash python3 scripts/build_dashboard.py \ --data docs/assets/dashboard_data.json \ --basemap docs/assets/basemap.png \ --empire out/eu_300cp_v2/optimized_empire.json \ --out dashboard/silver_atlas.html python3 scripts/check_dashboard.py # 44 expectations in a real browser ``
The output is one self-contained file - open it directly, no server needed. scripts/serve.py exists if you want one anyway.
``bash python3 scripts/run_optimizer.py --budget 300 --prices inputs/prices_eu_vp.json \ --out out/my_run ``
Expect minutes to hours depending on budget and how tight you set the MIP gap. The 300 CP run was proven optimal.
``bash python3 scripts/build_wiki.py ``
Every figure in these pages is read from the payload, so they cannot drift. Do not hand-edit - the next run overwrites you.
| script | what it does |
|---|---|
fetch_order_book.py | both sides of the order ladder, for sellability |
compare_runs.py | diff two solves - which nodes changed hands |
tax_sensitivity.py | how the plan responds to your tax rate |
report.py | per-node breakdown on the command line |
model_probe.py | where a re-solve can realistically run |