ADR 0010: One TOML config per run, every assumption a toggle
- Status: Accepted (2026-11-10)
- Date: 2026-11-10
- Deciders: Vincent Mader
- Related: 05-architecture.md section 5; 07-visualization.md
Context
The thesis config (config.toml) already exposed many switches but not all (e.g. the viscosity choice, boundary policy, estimator details were code edits). The research needs to isolate each assumption, and the web UI needs a 1:1 mapping to config keys.
Decision
Each run is described by one TOML file deserialized with serde into typed structs with deny_unknown_fields. Every physical and numerical choice is an explicit key with a documented default; defaults reproduce the thesis setup, and fixes of thesis behavior are separate keys. Convenience units in input are converted at parse time (ADR 0003). The canonical serialized config is hashed and stored in the run manifest. The web UI reads and writes the same format.
Alternatives considered
- Hard-coded settings per experiment script: not reproducible from outputs.
- Command line flags only: unwieldy for dozens of options.
Consequences
- Any figure can be regenerated from its manifest.
- Adding a physics option means adding a config key, a default, a test, and a UI control.