Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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.