ADR 0011: Outputs as npy arrays plus JSON manifest
- Status: Accepted (2026-11-10)
- Date: 2026-11-10
- Deciders: Vincent Mader
- Related: 03-verification.md; ADR 0010, 0012, 0013
Context
Outputs must be readable by numpy/matplotlib (figures), by the browser (web app), and by our own tests, and must carry provenance. Sizes are moderate (N_t × N up to about 10⁷ doubles per run).
Decision
Each run writes a directory with one .npy file per array (little-endian f64, readable by numpy without extra dependencies and parsable in a few lines in Rust/wasm) and a manifest.json with config, config hash, git revision, seed, machine, timings, and diagnostics summaries. Large studies may later add Arrow/Parquet if needed (new ADR).
Alternatives considered
- HDF5: standard in astro, but a heavy C dependency and poor wasm support.
- Parquet/Arrow: good for tables, less natural for N-d arrays; overkill now.
- Plain text (as in the thesis
np.savetxt): slow, large, loses precision.
Consequences
- Simple tooling everywhere; easy to archive on Zenodo.
- Many small files per run; acceptable.