15. Forest is domain-agnostic¶
Date: 2026-07-01
Status¶
Accepted
Context¶
Forest is the data-management engine extracted from biostore (ADR-0014). To be
reusable across data domains and self-contained, forest must not encode
knowledge of any particular data type. biostore's engine leaked domain terms in
help text, config templates, and a data-type special-case in the add command.
Decision¶
forest/src/ contains no domain terms, names, or comments. Concretely:
- No instrument/assay/domain names in code, strings, help, or comments.
- No built-in config templates that hardcode data-type names.
forest initcreates only a nameless workspace container; named checkouts and their configs come fromforest checkout create <name>. - No auto-detection of data types.
forest add STAGE PATHregisters a stage by name; forest never inspects the data to guess what it is. - A stage's
schemafield is an opaque string forest stores and forwards in its config, never interprets.
A guard test (tests/test_forest_agnostic.py) scans forest/src against a
domain-term denylist and fails on any hit, so the boundary cannot silently
erode.
Consequences¶
- Forest can manage any data trees; no domain knowledge lives in the engine.
- Content-aware behavior (validation, detection, output resolution) is out of scope for forest and handled by a separate tool.
- The guard test must be updated deliberately if a term is ever a false positive, which keeps the decision visible.