Skip to content

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 init creates only a nameless workspace container; named checkouts and their configs come from forest checkout create <name>.
  • No auto-detection of data types. forest add STAGE PATH registers a stage by name; forest never inspects the data to guess what it is.
  • A stage's schema field 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.