1
ADR 006 Preset TOML Format
David Gwilliam edited this page 2026-03-17 23:35:33 -07:00

ADR-006: Preset TOML Format

Date: March 2026 Status: Accepted

Context

Pipeline presets needed configuration format. Avoid external dependencies (no YAML, JSON, etc.).

Decision

TOML format with validation:

[preset]
name = "firehose"
display = "terminal"

[[stages]]
type = "datasource"
source = "headlines"

[[stages]]
type = "effect"
name = "glitch"
intensity = 0.5

[stages.config]
param_bindings = { intensity = { sensor = "mic", transform = "linear" } }

Locations (in order of priority):

  1. ./presets.toml (local override)
  2. ~/.config/mainline/presets.toml (user config)
  3. engine/presets.toml (built-in)

PresetLoader validates structure and signal paths (detects circular deps).

Consequences

  • Positive: No external dependencies (TOML built into Python 3.11+)
  • Positive: Human-readable, easy to edit
  • Positive: Validation prevents runtime errors
  • Negative: Must document TOML schema

References

  • engine/pipeline/preset_loader.py: Loading and validation
  • engine/pipeline/presets.py: Preset dataclasses
  • engine/presets.toml: Built-in presets